HTTP는 하이퍼 텍스트 전송 프로토콜의(Hypertext Transfer Protocol)의 약자입니다.
서로 다른 시스템들 사이에서 통신을 주고받게 해주는 가장 기초적인 프로토콜로, 웹 서핑을 할 때 서버에서 유저의 브라우저로 데이터를 전송해 주는 용도로 가장 많이 사용됩니다.
인터넷의 초기에 모든 웹사이트에서 기본적으로 사용되었던 프로토콜입니다.
문제점
서버에서부터 브라우저로 전송되는 정보가 암호화되지 않음
=> 데이터가 쉽게 도난당할 수 있음!
SSL(보안 소켓 계층)을 사용해 HTTP의 문제점을 해결한 프로토콜!
SSL은 서버와 브라우저 사이에 안전하게 암호화도니 연결을 만들 수 있게 도와주고, 서버 브라우저가 민감한 정보를 주고 받을 때, 이것이 도난당하는 것을 막아줍니다.
1. 보안성
위에서 말한 것과 같이 SSL 인증서를 통한 보안기능에서 차이점이 있습니다.
이때 SSL 인증서는 사용자가 사이트에 제공하는 정보를 암호화하는데, 쉽게 말해 데이터를 암호로 바군다고 생각하면 됩니다. 이렇게 전송된 데이터는 중간에서 누군가 훔쳐 낸가고 하더라도 암호화되어 있기 때문에 해독할 수 없습니다. 그 외에도 HTTPS는 TLS(전송계층 보안)프로토콜을 통해서도 보안을 유지합니다.
2. SEO(검색 엔진 최적화)
웹 사이트에 전자상거래나 방문자들의 민감한 정보를 다루지 않는다면, HTTPS로 전환할 필요성이 낮다고 느껴지나, 사용자들은 결국 가장 안전하다고 생각하는 사이트를 선호하게 됩니다.
3. 가속화된 모바일 페이지(AMP)
AMP란 모바일 기기에서 훨씬 빠르게 콘텐츠를 로딩 하기 위한 방법으로 구글이 만든 것 입니다. AMP는 HTML에서 불필요한 부분을 없앤 것이라고 볼 수 있으며, 구글의 SERP를 보면 스마트폰과 태블릿의 사용자들이 모바일에서 사용하기 편하도록 AMP 컨텐츠들이 두드러져 보이는 것을 볼 수 있습니다.
이렇듯 모바일 친화적인 웹 사이트를 만드는 것과 모바일 검색 순위 및 지역에 SEO를 증가시키는 것이 점점 더 중요해지고 있는 요즘 HTTP를 HTTPS로 전환하는 것은 필수라고 볼 수 있으며, 이를 사용하기 위해서는 HTTPS 프로토콜을 사용해야만 합니다.
HTTPS는 대칭키 암호화와 비대칭키 암호화를 모두 사용해 빠른 연산 속도와 안정성을 모두 얻고 있습니다. HTTPS 연결 과정(Hand-Shaking)에서는 먼저 서버와 클라이언트 간에 세션키를 교환합니다. 여기서 세션키는 주고 받는 데이터를 암호화하기 위해 사용되는 대칭키이며, 데이터 간의 교환에는 빠른 연산 속도가 필요하므로 세션키는 대칭키로 만들어집니다.
세션키를 클라이언트와 서버가 어떻게 교환하는가? => 비대칭키가 사용된다!
즉, 처음 연결을 성립하여 안전하게 세션키를 공유하는 과정에서 비대칭키가 사용되는 것이고, 이후에 데이터를 교환하는 과정에서 빠른 연산 속도를 위해 대칭키가 사용됩니다.
동작 과정
1. 클라이언트(브라우저)가 서버로 최초 연결 시도
2. 서버는 공개키를 브라우저에게 넘겨줌
3. 브라우저는 인증키의 유효성을 검사하고 세션키를 발급
4. 브라우저는 세션키를 보관하며 추가로 서버의 공개키로 세션키를 암호화하여 서버로 전송
5. 서버는 개인키로 암호화된 세션키를 복호화하여 세션키를 얻음
6. 클라이언트와 서버는 동일한 세션키를 공유하므로 데이터를 전달할 때 암호화/복호화를 진행
참고
https://mangkyu.tistory.com/98
https://blog.wishket.com/http-vs-https-%EC%B0%A8%EC%9D%B4-%EC%95%8C%EB%A9%B4-%EC%82%AC%EC%9D%B4%ED%8A%B8%EC%9D%98-%EB%A0%88%EB%B2%A8%EC%9D%B4-%EB%B3%B4%EC%9D%B8%EB%8B%A4/