Search
📌

SSL 공개키 대칭키 보충 설명

대칭키 알고리즘

암호화와 복호화할 때 키가 같은 알고리즘
장점
참여자들은 같은 키를 가지고, 암복호화하기 때문에 과정이 단순하여 속도 빠름
단점
안전한 대칭키 분배과정이 필요

공개키(비대칭키) 알고리즘

암호화와 복호화할 때 키가 다른 알고리즘
통신 참여자는 공개키-개인키 쌍을 생성
공개키 : 누구나 볼 수 있는 키
개인키(비밀키) : 공개하면 안되는 키
공개키로 암호화한 메시지는 개인키로만 복호화 가능하며, 반대로 개인키로 암호화한 메시지는 공개키로만 복호화 가능
장점
키 분배가 필요X
공개되어 있는 상대방의 공개키로 암호화하여 메시지 전송
단점
속도 느림

SSL

공개키방식과 대칭키방식의 혼합
통신 시 사용하는 암호화 방식== 대칭키 알고리즘
대칭키를 안전하게 교환하기 위한 암호화 방식 == 공개키 알고리즘
1.
상대방의 공개키로 대칭키 암호화하여 전송
2.
상대방은 자신의 개인키로 암호문을복호화하여 대칭키 획득
SSL Handshake 과정 (추가된 참고 내용은 색칠표시함)
1.
서버 만드는 회사는 공개키와 개인키 생성 후, 공개키를 CA에 위탁
CA
공개키를 저장하는 신뢰기관
서버나 클라이언트가 실재하는 사실을 증명
CA 공개키는 누구나 가지고 있음
2.
CA기업은 그 서버 공개키를 CA개인키로 암호화하여 SSL인증서를 생성 후, 서버회사에 전달
3.
서버는 서버 공개키로 암호화되지 않은 요청이 오면, 이 인증서를 전송
4.
(SSL HandShake 시작)
5.
CLIENT HELLO (서버 공개키로 암호화되지 않은 요청)
클라이언트는 암호 알고리즘과 압축방식 등 정보가 담긴 Client Hello 메시지를 서버에게 전송
6.
SERVER HELLO
서버는 Client Hello의 응답으로, 세션 ID와 서버 공개키 인증서(서버의 SSL 인증서)가 담긴 Server Hello 메시지를 전송
7.
PRE MASTER SECRET
클라이언트는 CA 개인키로 암호화된 서버 인증서를 CA 공개키를 복호화하여 서버의 공개키를 획득
이 키를 이용하여 난수를 암호화하여 예비 마스터 암호를 서버에게 전송
8.
SESSION KEY CREATION
서버는 예비 마스터 암호를 자신의 개인키로 복호화하여, 난수를 획득
이 난수를 획득함으로써, 서버와 클라이언트는 마스터키를 완성
마스터 키를 이용하여 세션키를 생성
9.
CLIENT FINISHED
클라이언트는 지금까지 교환한 내역을 해시 후 세션키로 암호화하여 FINISHED 메시지를 서버에게 전송
10.
SERVER FINISHED
서버도 교환 내역을 해시하고, 그 결과와 클라이언트에게 받은 FINISHED가 일치한지 비교
일치할 경우, 해당 세션키를 대칭키로 사용
11.
EXCHANGE MESSAGES
세션키를 이용하여 메시지를 대칭키 방식으로 암호화한 후, 통신
cf. 태희 질문
Q. 클라이언트 측은 공개키-비밀키 쌍 생성 안해도 되나?
A. 서버도 클라이언트의 SSL 인증서를 요구하는 방식도 있긴 함. 여기서 설명하는 SSL Handshake 과정은 서버 공개키만 이용하는 방식임