HTTPS vs HTTP

홍한솔·2021년 11월 16일
2

네트워크 보안

목록 보기
1/2

HTTPS 란 ?

크롬 브라우저에서 www.naver.com ,www.google.com 에 접속하면 URL 옆 자물쇠 모양을 본적이 있을 것이다.

이 자물쇠가 뜻하는 의미는 해당 웹 사이트가 HTTPS 가 적용된 사이트라는 의미다.

크롬에서는 HTTP 에 기반을 둔 사이트들을 안전하지 못한 사이트 로 표시하고 HTTPS에 기반을 둔 사이트를 안전한 사이트 로 표현하기 위해 자물쇠 모양 아이콘을 URL 왼쪽에 표시하게 되었다.

그렇다면 왜 HTTP 는 안전하지 않을 까?

HTTP는 통신을 하기 위한 가장 기초적인 프로토콜이고 초기 웹사이트에서 기본적으로 사용되었던 프로토콜이다.

하지만 HTTP는 치명적인 문제가 있다.

바로 보안이 전혀 적용되지 않은 프로토콜이라는 문제다.

HTTP는 암호화가 적용 되어있지 않기 떄문에 HTTP 프로토콜로 주고 받는 패킷을 보면 평문으로 되어 있어 패킷을 캡쳐만 한다면 어떤 내용을 주고 받았는지 그대로 확인할 수 있다.

HTTPS 는 ?

HTTPS 는 HTTP 의 보안 이슈 때문에 등장하였으며 HTTP 에서 보안이 강화된 프로토콜이다.

그렇다면 어떻게 보안을 강화했을 까?

바로 기존 HTTP 프로토콜에 SSL 또는 TLS 프로토콜 (버전만 다른 사실상 같은 프로토콜)을 얹어 HTTP 프로토콜의 평문 데이터를 암호화 하여 HTTP의 보안 약점을 커버했다.

HTTPS는 기존의 HTTP와 비교하여 다음과 같은 보안상 장점을 가진다!

1. 기밀성

먼저 HTTPS 는 대칭키를 이용해 HTTP Body 를 암호화 한다.

서버와 클라이언트가 HTTPS를 통해 데이터를 주고받게 되면 Header를 제외한 부분이 대칭키로 암호화 된다.

따라서 서버와 클라이언트를 제외한 다른 사용자들은 해당 암호문을 복호화할 수 있는 대칭키가 없기 떄문에 이 암호문을 해독할 수 없다.

따라서 서버 , 클라이언트에서 암호화,복호화를 가능하게 해주는 대칭키만 있다면 안전하게 HTTPS를 통해 데이터를 주고받을 수 있다.

대칭키는 ..?

HTTPS에서 대칭키는 어떻게 생성되고 어떻게 전달될까?

위 그림은 HTTPS 에서 SSL 프로토콜이 작동하는 과정이다.
대칭키는 SSL 프로토콜을 거쳐 클라이언트에서 생성하여 서버로 전달한다.

그렇다면 이 대칭키가 전달될 때 대칭키를 탈취하면 되지 않을 까? 라는 의문이 들수 있다.

일반적으로 대칭키는 완벽하게 안전하지만 대칭 키를 전달할 때 대칭 키 자체가 탈취될 수 있는 이슈가 존재한다.

그래서 보통 대칭키는 비 대칭키 암호화를 활용해 전달한다.

위 그림에서 클라이언트에서 pre master secret 을 서버로 전달하는 과정을 한번 살펴보자.

pre master secret

pre master secret 은 HTTPS에서 사용되는 대칭키는 아니지만 대칭키를 생성하기 위해 클라이언트와 서버에서 사용되는 재료라고 생각하면 된다.

pre master secret은 대칭키 처럼 다른 사용자에게 탈취가 되면 안되기 떄문에 암호화 되어 전달된다.

이 때 pre master secret 이 서버의 공개키로 암호화가 되어 전달된다 !

그래서 암호화된 pre master secret은 서버만 가지고 있는 개인키로만 복호화가 되기 떄문에 완벽히 안전하다.

그리고 이 pre master secret으로 대칭키를 생성한다면 클라이언트와 서버밖에 모르는 대칭키가 만들어 지는것이다.

결론

HTTPS 에서는 대칭키를 사용하며 대칭키로 암호화 해서 데이터를 안전하게 송*수신 가능하다.

게다가 대칭키의 생성도 안전하게 이루어 지므로 HTTPS가 기밀성을 가지게 되는 것이다.

2. 인증

앞서 HTTPS 의 SSL 프로토콜이 어떤 방식으로 기밀성을 보장하는지 알아봤다.

SSL 프로토콜은 웹 사이트의 인증도 제공해 준다.

위 그림을 다시 살펴보자.

그림에서 3번 과정을 보면 인증서를 확인하는 모습을 볼 수 있다.

인증서는 CA(인증기관)에서 제공해주는 인증서이다.

이 인증서의 의미는 믿을만한 인증기관인 CA에서 이 웹사이트가 변조된 사이트가 아닌 정식 사이트라고 CA에서 인증되었다 라고 알려주는 인증서다.

이 인증서는 전자서명 방식으로 구성되어 있기 때문에 client가 CA의 공개키로 확인하면 접속한 웹사이트의 진위여부를 확인할 수 있다.

따라서 우리는 www.naver.com 에 접속할 때 이 웹사이트가 인증서를 보고 CA에 인증받은 안전한 사이트라고 안심하고 들어갈 수 있는 것이다.

이 때, CA가 믿을만한 인증기관이 아닐 수도 있지 않겠냐고 물을 수도 있지만 CA는 인증된 인증기관이며 업데이트 되고 있다.

믿으면 된다 !

profile
낭만있는 개발자

0개의 댓글