본문 바로가기

CS

[보안]공통키, 공개키, 대칭키, 비밀키, 전자서명, 전자인증서

공통키(대칭 암호)


  • A(요청), B(응답)
  • 암호화와 복호화에 같은 키를 사용하는 방식
  • 문제점 : 공통키 전달 과정에서 해커 X가 키를 훔쳐볼수 있음(키 배송의 문제), 키관리문제(각각 요청마다 공통키를 만들어야함)

공개키(비대칭 암호)


  • A(요청), B(응답)
  • 암호화와 복호화에 다른 키를 사용한느 방식
  • 암호화(공개키)와 복호화(비밀키)로 구분
  • 장점 : 공개키는 인터넷 상에 공개해도 되기 때문에 불특정 다수와 데이터를 교환하기 좋음
  • 단점 1: 공개키의 신뢰도 문제(해커 X가 B가 A에게 공개키를 보낼 때 자신이 만든 X-공개키로 바꿔치기함 -> A가 X-공개키로 암호화한 데이터를 B에게 보낼때 다시 가로채 X-비밀키로 복호화 -> B의 공개키로 암호화 해서 B로 전송), man in the middle 공격
  • 단점 2: 암호화와 복호화에 시간이 오래 걸림
  • 해결 : 단점 1 -> 전자인증서, 단점 2-> 공통키와 공개키 결합

공통키 && 공개키


  • SSL/TLS에서 사용
  • 키 분배 문제는 공개키로 해결하고 암호화와 복호화가 오래 걸리는 문제는 공통키로 해결
  • 공개키로 A에서 B로 공통키를 암호화 하여 전송, B는 비밀키로 복호화하여 그 이후부터는 공통키로 암호화 및 복호화

전자 서명


  • 인증, 변조 검출, 부인 방지 기능(메시지가 중간에 해커에 의해 변조되지 않았는지 확인)
  • A는 메시지, 비밀키, 공개키를 준비해 B에게 공개키를 전달함
  • A는 비밀키를 사용해서 메시지의 요약본을 암호화(이것이 전자 서명), 메시지와 서명을 B에게 전송
  • B는 공개키를 사용해서 서명 복호화
  • 복화한 메시지와 받은 메시지가 일치하는지 확인
  • 암호화 복호화 시간을 줄이기 위해 메시지의 해시값을 암호화 해서 비교함
  • 문제점 : B는 데이터를 보내온 이가 A인지 A를 가장한 해커인지 알 수 없음, 즉 A의 신원 인증이 필요함 -> 전자 인증서로 해결

전자 인증서


  • A는 인증 기관(CA)에 공개키가 자신의 것임을 나타내는 인증서 발행을 요청
  • 인증 기관은 자신의 공개키-CA, 비밀키-CA를 보유
  • A는 공개키-A와 A에 대한 정보를 인증 기관에 보냄
  • 인증 기관은 확인 후 비밀키-CA를 이용해 A의 데이터로부터 전자 서명을 작성
  • 작성한 전자 서명과 데이터를 하나의 파일로 만들어 A에게 보냄
  • 이 파일이 A의 전자 인증서가 됨
  • A는 공개키 대신에 전자 인증서를 B에게 보냄
  • B는 CA의 공개키를 취득, 전자 인증서를 복호화해서 A의 공개키를 획득
  • 신뢰할 수 있는 CA는 브라우저에 저장되어 있음