[Network] HTTPS, SSL
HTTPS
보통 웹사이트를 접속하면 URL 주소 맨 앞이 HTTP 또는 HTTPS 로 시작한다.
그 이유는 웹 서버가 클라이언트에게 콘텐츠를 제공해주는 방식이 HTTP 또는 HTTPS 두가지 방식이 있기 때문이다.
먼저 HTTP는 가장 일반적인 웹 콘텐츠 전송 프로 토콜이다. 하지만 HTTP 방식에는 치명적인 단점이 존재하는데 그것이 바로 보안이다.
HTTP는 평문 전송을 하기 때문에 패킷을 수집하는 와이어 샤크 같은 프로그램을 써서 패킷을 수집하면 클라이언트가 요청한 데이터가 그대로 노출돼서 그 내용을 추출해서 악이용 할 수 있는 것이다. 만약 그 정보에 패스워드,개인정보,결제정보 같은것이 들어있다면 아주 치명적인 문제가 되는것이다. 이러한 문제점을 해결하기 위해 HTTPS 프로토콜이 만들어졌다.
HTTPS는 응용계층 프로토콜보다 낮은 계층에서 동작하는 SSL 프로토콜을 통해 전송되는 데이터를 암호화 한다.
이렇게 데이터를 암호화 하면 HTTP에서 겪은 보안적인 문제를 해결할 수 있다. 쉽게 말해서 HTTPS 는 HTTP + 암호화 + 인증으로 이루어져 있다고 생각하면 된다.
SSL
SSL은 Secure Socket Layer의 약자로 암호화 소켓층으로 웹 서버와 클라이언트이 통신 암호화 프로토콜이라고 생각하면된다.
위에서 소개한 HTTPS가 SSL을 통해 데이터가 암호화 된다.
SSL 동작 방식
동 방식 | 설명 |
Client Hello | 클라이언트가 생성한 랜덤 데이터를 서버에게 전송 |
Server Hello | 어떤 암호화 알고리즘을 사용할 것인지 선택하여 클라이언트에게 전송 |
인증서 확인 | 서버가 클라이언트에 전달한 인증서가 CA로부터 발급 받은 인증서인지 웹 브라우저에 내장된 CA 리스트와 CA 인증서를 통해 확인 |
대칭키 및 요청전송 | 대칭키에 대한 정보를 서버로 전송 |
콘텐츠 전송 | 서버는 전달 받은 대칭키를 복호화 한후 클라이언트가 요청한 콘텐츠를 다시 대칭키로 암호화 한 후 클라이언트에게 전송 |
콘텐츠 표시 | 클라이언트는 서버로부터 전달 받은 데이터를 다시 복호화 한 후 웹 브라우저에 표시 |
* 대칭키 : 암호화와 복호화에 쓰이는 키가 같은 암호화 알고리즘
* 공개키: 공개키와 개인키를 같이 사용하는 암호화 알고리즘
* CA: 인증서를 발급해주는 기업 웹 브라우저는 CA리스트가 내장되어 있다.
* 인증서: 위와 같은 통신과정을 보증해주는 전자화된 문서