SSL(Secure Socket Layer) 프로토콜은 Netscape 사에서 웹서버와 브라우저 사이의 보안을 위해 만들었다. SSL은 Certificate Authority(CA)라 불리는 서드파티로 부터 서버와 클라이언트 인증을 하는데 사용된다. SSL은 암호화된 통신을 하고 서버와 클라이언트 사이에 데이터는 대칭 키로 암호화된 데이터를 전송하고 해당 암호화된 데이터를 복호화하기 위한 키값은 공개키 암호화를 사용하여 교환한다. 공개 키만으로 통신을 하게 되면 안전성은 높지만 컴퓨터에 자원사용이 심하여 통신 속도가 저하된다.
SSL handshake protocol |
SSL cipher change protocol |
SSL alert protocol |
Application Protocol |
SSL Record Protocol |
|||
TCP |
|||
IP |
<SSL 아키텍처 구조>
· SSL 데이터 통신 과정
1. [Client hello 과정] Handshake 과정을 통하여 서로가 상대방이 존재하는지 올바른 상대가 맞는지 확인한다. 먼저 클라이언트가 어떤 암호화 방식을 사용할 수 있는지, SSL/TLS의 버전 정보와 랜덤한 숫자를 전송하게 된다. 만약 같은 서버에 이미 접속한 이력이 있다면 기존 세션을 재활용하게 되고 이때 사용할 연결에 대한 식별자를 서버에 전송한다.
2. [Server hello 과정] 클라이언트가 사용할 수 있는 암호화 방식 중 서버도 사용 가능한 방식을 선택하여 클라이언트에게 전달하고 클라이언트와 맞는 SSL/TLS 버전과 랜덤한 숫자를 전송한다. 이 과정을 통해 암호화 방식에 대한 협상은 종료되고 선택된 암호화 방식을 이용하여 정보를 교환하게 된다. 서버는 클라이언트 측으로 서버의 인증서를 전송하게 된다.
3. [인증 과정] 클라이언트는 서버 측에서 전송한 인증서가 CA에 등록된 인증서인지 클라이언트 측의 CA 리스트에서 확인한다. 만약 CA 리스트에 서버 측에서 전송한 인증서에 맞는 공개키가 없다면 사용자에게 경고 메시지를 출력한다. 그리고 CA 리스트에 서버 측에서 전송한 인증서에 맞는 공개키가 있다면 인증서를 복호화하고 복호화에 성공했다면 해당 인증서는 CA의 개인 키로 암호화된 문서인 것이 보증된 것이다. 해당 절차로 서버를 신뢰할 수 있게 된다.
4. [pre master secret 과정] 클라이언트는 하나 이상의 임의의 바이트 문자열인 pre master secret을 전송한다. pre master secret은 공개키로 암호화되며 해당 공개키는 서버의 SSL 인증서에서 가져온다. 서버는 개인 키로 복호화할 수 있다.
5. 클라이언트는 pre master secret을 이용하여 세션 키를 생성하고 해당 세션 키를 사용하여 암호화된 메시지를 서버에 전송한다. 세션 키로 암호화된 완료 메시지를 서버에 전송한다.
6. 클라이언트에서 최종적으로 통신 협상을 검증하고 생성된 세션 키로 통신한다.
7. 클라이언트에서 전송한 pre master secret을 서버의 개인 키로 복호화하여 pre master secret을 확인한다. 해당 과정을 통하여 서버와 클라이언트는 세션 키로 변환할 pre master secret을 안전하게 교환하게 된다.
8. 서버에서도 세션 키로 암호화된 완료 메시지를 클라이언트에 전송하고 최종적으로 통신 협상에 대해 검증한다.
9. 핸드 셰이크가 완료되고 세션 키를 사용하여 통신이 진행된다.
'Network, Security' 카테고리의 다른 글
SIEM(Security Information and Event Management) (0) | 2020.12.27 |
---|---|
UTM(Unified Threat Management) - 통합 위협 관리 (0) | 2020.12.27 |
FTP [Passive / Active] (0) | 2020.12.26 |
방화벽이란? (0) | 2020.12.25 |
TCP/UDP 차이점 [Network] (0) | 2020.03.24 |