HTTP와 HTTPS의 차이점
- HTTP는 따로 암호화 과정을 거치지 않기 때문에 중간에 패킷을 가로챌 수 있고, 수정할 수 있다. 따라서 보안이 취약해짐을 알 수 있다. 이를 보완하기 위해 나온 것이 HTTPS이다.
- HTTPS는 중간에 암호화 계층을 거쳐서 패킷을 암호화한다.
HTTPS, SSL Handshake
- HTTPS는 HTTP에 보안 계층을 추가한 것이다. HTTPS는 제 3자 인증, 공개키 암호화, 비밀키 암호화를 사용한다.
- 제 3자 인증은 믿을 수 있는 인증기관에 등록된 인증서만 신뢰하는 것이다, 공개키 암호화는 비밀키를 공유하기 위해 사용한다. 비밀키 암호화는 통신하는 데이터를 암호화하는데 사용한다.
- 클라이언트는 TCP 3way handshake를 수행한 이후 client hello를 전송한다. 서버는 인증서를 보낸다.
- 클라이언트는 받은 인증서를 신뢰하기 위해서 등록된 인증기관인지 확인한다. 이 인증서는 인증기관의 개인키로 암호화되어있고, 공개키로 검증할 수 있다. 클라이언트는 사이트의 정보와, 서버의 공캐키를 얻을 수 있다.
- 서버의 공개키로 통신에 사용할 비밀키를 암호화해서 서버에 보낸다. 서버는 이를 개인키로 확인하고 이후 통신은 공유된 비밀키로 암호화되어 통신한다.
- 제 3자 인증 : 인증서, 인증기관
- 공개키 암호화: 인증서, 비밀키 공유
- 비밀키 암호화: 통신과정