1. SSL
- HTTP는 기본적으로 플레인 텍스트로 전송하기에 보안에 취약
- TLS(Transport Layer Security), 혹은 SSL(Secure Socket Layer) 이라 불리는 프로토콜을 사용하여
전송계층간의 통신시에 데이터를 암호화하는 것으로 데이터 유출을 방지한다. - TCP의 3-way handshaking 절차 이후에 SSL handshaking 과정을 거쳐 암호화 통신이 가능한 상태가 된다.
- SSL handshaking
- Client Hello
- 클라이언트는 서버에 사용 가능한 암호화 방식들과 랜덤 데이터를 전송
- 클라이언트는 서버에 사용 가능한 암호화 방식들과 랜덤 데이터를 전송
- Server Hello
- 서버는 클라이언트가 보낸 암호화 방식중 하나를 선택
- 선택한 암호화 방식을 자신이 생성한 랜덤 데이터와 함께 클라이언트에게 전송
- Certificate
- 서버는 CA(인증기관)에서 발급받은 SSL 인증서를 클라이언트에게 전송
- 이때, 인증서 내에 자신이 발급한 공개키를 첨부(개인키는 자신이 보관)
- Server Key Exchange
- Certificate 과정에서 클라이언트에게 보낸 인증서에 서버의 공개키가 포함되지 않았다면 직접 클라이언트에게 공개키를 전송
- Certificate 과정에서 클라이언트에게 보낸 인증서에 서버의 공개키가 포함되지 않았다면 직접 클라이언트에게 공개키를 전송
- Server Hello Done
- 서버가 행동을 마쳤음을 클라이언트에게 알림
- 서버가 행동을 마쳤음을 클라이언트에게 알림
- Client Key Exchange
- 클라이언트는 CA의 공개키를 사용하여 서버가 보낸 인증서를 검증
- 인증서가 검증되면 실제로 데이터를 암호화하기 위한 대칭키를 생성
- 대칭키를 서버가 보낸 공개키로 암호화하여 서버에게 전송
- 전송된 대칭키는 중간에 가로채더라도 서버의 공개키로 암호화되어있어 서버의 개인키 없이는 복호화가 불가능하므로 서버와 클라이언트는 안전하게 암호화키를 공유하게 됨
- Change Cipher Spec / Finished
- 클라이언트와 서버가 암호화 통신을 위한 준비가 완료되었음을 알리기 위해 서로 번갈아가며 패킷을 전송.
- Client Hello
2. HTTPS
- 기존의 HTTP에 SSL 프로토콜을 추가하여 보안성을 추가한 확장 프로토콜
- 443번 포트를 사용
'CS > 네트워크' 카테고리의 다른 글
#10 네트워크 보안 1 - 암호화 (0) | 2021.12.06 |
---|---|
#9 Wireless Network & Mobile Network (0) | 2021.11.30 |
#8 Link Layer(Data Link Layer + Physical Layer) (0) | 2021.11.25 |
#7 Network Layer (0) | 2021.11.18 |
#6 Transport Layer (0) | 2021.11.16 |