http 와 https 의 차이

Kyung yup Lee·2021년 6월 8일
1

네트워크

목록 보기
3/3

HTTP는 TCP / IP 계층의 최고층인 4계층인 응용계층에서 사용되는 프로토콜이다. HTTP는 암호화가 전혀 되지 않아 평문으로 데이터를 구성하는데, 일반적인 정보를 전달하는 네트워크 과정이면 크게 문제될 것이 없겠지만, 인증 시스템이나, 결제 시스템 같은 경우 정보를 탈취 당할 경우 개인정보를 잃을 위험이 있다.

이를 해결하기 위해 도입된 것이 HTTPS(secure가 적용) 프로토콜이다. HTTPS 는 SSL(Secure Socket layer)프로토콜 방식으로 HTTP 가 가지고 있던 문제를 해결했다. 현재는 SSL프로토콜에서 더 발전된 프로토콜인 TLS 방식으로 암호화를 한다.

동작방식

이전에 브라우저의 동작방식과 네트워크 프로토콜부터 계층모델까지 라는 글을 작성한 적이 있다.
https://velog.io/@lky9303/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%ED%94%84%EB%A1%9C%ED%86%A0%EC%BD%9C%EB%B6%80%ED%84%B0-%EA%B3%84%EC%B8%B5%EB%AA%A8%EB%8D%B8%EA%B9%8C%EC%A7%80
해당 글에서 전반적인 프로토콜을 통해 클라이언트가 어떻게 서버와 통신하는지를 기술했다.

이제는 HTTP가 어떻게 암호화 되어서 통신을 하는지 적을 예정이다. 먼저 TCP 계층에서 실행되던 3ways-handshake를 마찬가지로 실행한다. 다만 이 과정에서 상대 서버와 암호화 기법을 맞추는 과정이 추가된다. 클라이언트는 본인이 가능한 암호화 방식을 먼저 서버에게 전달해주고, 서버는 해당 클라이언트가 신뢰할 수 있는 클라이언트라면 사용할 암호화 기법과 서버의 인증서를 클라이언트로 전달해준다.

클라이언트는 전달받은 인증서가 CA(Certificate Authority) 에 등록된 인증서인지 확인한다. 브라우저는 기본적으로 CA에 등록된 인증서 목록을 내장하고 있다. 여기에 등록된 공개키를 통해(암호화 방식인데 밑에서 자세하게) 전달받은 인증서를 복호화 하는 것을 통해 이를 인증한다.

클라이언트는 다시 이 공개키를 통해 자신의 대칭키를 암호화 해 서버에 보낸다. 이를 통해 대칭키를 안전하게 서로 교환한다. 이렇게 되면 handshake 가 종료되고 서로 안전하게 https 를 이용해 통신할 수 있다.

암호화 방식

HTTPS 의 암호화 방식을 알기 위해선 반드시 대칭키 비대칭키 개념을 알고 있어야 한다.

profile
성장하는 개발자

0개의 댓글