HTTP
HTTP(HyperText Transfer Protocol)란, Hypertext 인 HTML을 전송하기 위한 통신규약이다.
이 HTTP는 암호화되지 않은 방법으로 데이터를 주고 받는다. 이로 인해 발생할 수 있는 문제점은 다음과 같다.
- 도청: 평문 통신이기에 통신 내용이 공격자에게 노출될 수 있다.
- 변조: 완전성을 증명할 수 없기 때문에 메시지 변조가 가능하다.
- 인터셉트: 클라이언트가 접속하려는 서버를 확인하지 않기 때문에 위장이 가능하다.
cf. 중간자 공격(MitM, Man in the Middle Attacks)
이를 보완한 것이 HTTPS이다.
HTTPS
HTTPS는 HTTP에 SSL(Secure Socket Layer) 를 추가한 통신 방식이다.
HTTP는 원래 Transport Layer (ex: TCP) 와 직접 통신했지만, HTTPS는 HTTP - SSL - Transport Layer 의 구조를 갖는다.
SSL를 추가한 HTTPS는 데이터 보호를 위해 다음 기능들을 제공한다.
- 암호화
- 메시지 다이제스트 (Message Digest)
- 인증 (디지털 인증서)
SSL의 암호화 방식
SSL의 암호화 방식은 대칭키 방식과 공개키 방식을 혼합해서 사용한다.
1. 공개키 방식(대칭키를 주고 받을 때)
2. 대칭키 방식
대칭키 (Symmetric Key)
공개키 (Public Key)
SSL 디지털 인증서
SSL 인증서는 클라이언트-서버 간의 통신을 제 3자가 보증해주는 전자화된 문서이다.
클라이언트가 서버에 접속한 직후에 서버는 클라이언트에게 이 인증서 정보를 전달한다.
클라이언트는 이 인증서 정보가 신뢰할 수 있는 것인지 검증한 이후에 다음 절차를 수행한다.
SSL과 SSL 인증서를 이용했을 때 다음과 같은 이점이 있다.
- 통신 내용이 공격자에게 노출되는 것을 막을 수 있다.
- 통신 내용의 악의적인 변경을 방지할 수 있다.
- 클라이언트가 접속하려는 서버가 신뢰할 수 있는 서버인지 판단할 수 있다.
Reference
'Computer Science > Network' 카테고리의 다른 글
[Network] SSL Handshaking (0) | 2022.05.22 |
---|