본문 바로가기
HTTP

[HTTP] HTTPS는 무엇이고 어떻게 작동하는 걸까?

by SeanK 2022. 3. 23.

오늘은 HTTPS 통신에 대해 자세히 살펴보자. 

우선 간단히 HTTP를 설명하자면, 

 

HTTP

HTTP는 Hyper Text Transfer Protocol의 줄임말로, 애플리케이션 계층의 서버-클라이언트 통신 규약이다. HTTP는 HTML 문서와 같은 리소스를 가져올 수 있도록 하는 통신 약속인데 웹에서 이루어지는 모든 데이터 교환의 기초이며 클라이언트-서버 프로토콜이기도 하다. 

 

하지만 HTTP에게는 한 가지 문제가 있었으니... 바로 취약한 보안이었다. 

HTTP는 Man in the middle 공격에 취약한 특징을 가지고 있다. 왜냐하면 중간에서 데이터를 탈취하면 그 내용을 바로 확인 할 수 있기 때문이다. 

 

HTTPS

위와 같은 HTTP의 보안적 위험을 해결하기 위해 고안된 것이 바로 HTTPS이다.

HTTPS는 데이터를 전송할 때 내용을 암호화하기 때문에 설사 데이터를 탈취 당하더라도 안의 내용을 확인할 수 없기 때문에 비교적 안전하다. 

 

암호화 과정

HTTPS의 암호화는 대칭키와 비대칭키 방식을 모두 이용한다. 그렇다면 대칭키와 비대칭키는 무엇일까?

 

대칭키: 암호화와 복호화 모두 같은 키를 사용한다. 장점은 암/복호화가 빠르다는 것이지만 동일한 키를 사용하기 때문에 만약 키를 보내는 과정에서 키가 탈취당한다면 보안상 문제가 발생한다. 

 

비대칭키: 공개키와 개인키로 나누어 공개키로 암호화 한 데이터는 개인키로만 복호화 할 수 있다. 공개키는 외부에 노출이 되더라도 결국 내용을 확인할 수 있는 컴퓨터는 개인키를 가진 컴퓨터이기 때문에 보안면에서 우수하다. 하지만 대칭키에 비해 다소 속도가 느리다. 

 

HTTPS는 대칭키와 비대칭키의 장단점을 모두 이용해 클라이언트-서버 통신을 사용한다. 과정은 아래와 같다. 

 

1. 브라우저는 서버에 데이터를 요청한다. 

2. 서버는 CA 인증이 붙은 공개키(인증서)를 브라우저에게 보낸다. 

3. 브라우저는 CA 인증이 신용할 수 있는지 CA 공개키로 확인하고 세션키(대칭키)를 생성한다. 

4. 브라우저는 세션키(대칭키)를 서버로부터 받은 공개키로 암호화한다.

5. 암호화된 세션 키(대칭키)를 서버에게 보낸다.

6. 서버는 개인키로 암호화된 세션키(대칭키)를 해독한다. 

7. 이후 암호화/복호화는 대칭키를 이용하게 된다.

 

그렇다면 CA는 무엇일까 

CA는 웹사이트가 신뢰할 만한 곳인지 인증을 맡아하는 인증 사업자이다. 웹브라우저는 기본적으로 신뢰할 수 있는 CA리스트와 공개키를 가지고 있기 때문에 서버로부터 온 공개키가 신뢰할 수 있는 공개키인지를 CA 인증으로 가늠할 수 있게 되는 것이다. 

 

반면 서버의 경우 미리 CA에 자신의 공개키를 넘겨주고 해당 공개키에 CA의 개인키를 이용한 인증을 받아야 한다.