HTTP vs HTTPS
HTTP와 HTTPS과 이 둘의 차이점에 대해서 알아보자
서론
우리가 흔히들 웹 브라우저를 사용하다보면 주소 앞에 http/https 가 붙은 것을 많이 봤을 것이다.
이는 서버와 클라이언트 간의 통신을 위해 어떤 프로토콜을 사용하는지를 나타내고있다.
오늘은 이 통신 프로토콜의 일종인 HTTP 와 HTTPS 그리고 이 둘은 어떤 차이가 있는지 알아보자.
HTTP?
Hyper Text Transfer Protocol
HTTP는 위에서 설명한 것처럼 서버와 클라이언트간의 데이터를 주고 받기 위한 프로토콜이다.
하이퍼 텍스트를 교환하기 위한 통신 규약으로 80번 포트를 사용하고있다.
단점?
HTTP는 따로 데이터에 암호화를 하지 않기때문에 보안에 취약하다.
HTTPS?
Hyper Text Transfer Protocol Secure
HTTP의 보안상의 취약점을 보안하기 위해 데이터 암호화를 추가한 프로토콜이 바로 HTTPS 이다.
HTTP와 다르게 443번 포트를 사용하고, 네트워크상에서 누군가가 정보를 볼 수 없도록 암호화를 지원하고 있다.
암호화 방법
그렇다면 어떻게 암호화를 하는 것일까? 이에 대해 알아보기전 우리는 대칭키 암호화, 비대칭키 암호화에 대해서 먼저 알아야한다.
대칭키 암호화
대칭키 암호화란 클라이언트와 서버가 동일한 Key를 가지고 암호화/복호화를 진행한다.
같은 Key를 사용하기 때문에 하나의 Key만 있어도 암호화 및 복호화가 가능하기때문에 키가 노출되면 보안상으로 매우 취약해진다.
하지만 비대칭키 암호화에 비해 연산속도가 빠르다는 장점이 있다.
비대칭키 암호화
비대칭키 암호화란 1개의 쌍으로된 공개키와 개인키를 사용하여 암호화/복호화를 진행한다.
암호화 및 복호화를 하려면 두개의 키가 필요하기에 대칭키 암호화보다 비교적 안전하지만 연산 속도가 느리다.
두개의 키중 하나의 키로 암호화를 진행하며 나머지 하나의 키로만 복호화를 할 수 있다.
개인키로 암호화 할 경우 공개키로만 복호화를 할 수 있기때문에 인증된 정보임을 알려 신뢰성을 보장할 수 있다.
공개키로 암호화 할 경우 개인키로만 복호화를 할 수 있기때문에 개인키 소유주만 암호를 볼 수 있다.
HTTPS의 암호화 방법
HTTPS는 위의 두가지 방법을 모두 사용하여 빠른 연산 속도와 안정성을 가지고있다.
클라이언트가 서버에 연결을 시도하면 서버는 개인키를 서버에 남기고, 공개키를 브라우저로 전송한다.
브라우저는 세션키를 발급하고 이 세션키를 공개키로 암호화하여 서버로 전송한다.
서버는 브라우저로부터 받은 암호화된 세션키를 개인키를 통해 복호화하여 저장한다.
브라우저와 서버는 동일한 세션키를 가지고 있기때문에 데이터를 전달할때 세션키를 통해 암호화/복호화를 진행한다.
정리해보자면 공개키와 개인키로 세션키를 암호화/복호화 하여 비대칭 암호화를 통해 서로 나눠가진뒤,
그 후는 세션키를 통해 대칭 암호화를 이용하여 데이터를 통신한다.
마치며
HTTP와 HTTPS는 어떤 차이인지 알아보았다.
또한 HTTPS는 어떤 방식으로 작동하는지도 간단하게 알아보았다.
이러한 방식을 알고있다면 앞으로 암호화를 통해 통신하는것을 이해하는데 도움이 될 것이다.