하이퍼 텍스트 전송 프로토콜(Hypertext Transfer Protocol). 서로 다른 시스템들 사이에서 통신을 주고받게 해주는 기초적인 프로토콜.
HTTPS는 HTTP에다 SSL/TLS를 사용해 보안을 강화한 프로토콜. HTTPS 프로토콜은 SSL(Secure Socket Layer)/TLS(Transport Layer Security Protocol)을 사용함으로써 문제를 해결했습니다. 서버와 브라우저 사이에 안전하게 암호화된 연결을 만들 수 있게 도와주고, 서버 브라우저가 민감한 정보를 주고받을 때 이것이 도난당하는 것을 막아줍니다.
HTTPS란 HTTP에 SSL/TLS를 사용해 보안을 강화한 HTTP기 때문에, 여기서 중점적으로 SSL/TLS를 알아보도록 하겠다.
SSL(Secure Socket Layer)은 SSL 1.0부터 시작해 2.0 , 3.0을 거쳐 TLS(Transport Layer Security Protocol)로 명칭이 변경되고 1.0, 1.1, 1.2, 1.3(최신)으로 발전.
SSL/TLS는 보안 세션을 기반으로 데이터를 암호화하며, 세션이 만들어 질때 다양한 암호화 방법을 사용합니다.
보안세션 : 보안이 시작되고 끝나는 동안 유지되는 세션. SSL/TLS는 Handshake를 통해 보안 세션을 생성하고 이를 기반으로 상태 정보 등을 공유.
대칭키 : 메시지를 암호화 하고 해독하는 키가 하나만 있다. 키를 가지고 있는 사람과 그 키의 복사본이 있는 사람만이 상자를 열고 메시지를 읽을 수 있다.
=> 키 배포 방법에 매우 주의해야 한다.
비대칭키 : 키가 두개 있다. 하나는 public key(공개 키) 하나는 private key(비공개 키)
1. Client Hello
Client가 Server에 연결을 시도하며 전송하는 패킷입니다. 자신이 사용 가능한 Cipher Suite 목록을 전달합니다. Cipher Suite는 SSL Protocol version, 인증서 검정, 데이터 암호화 프로토콜, Hash 방식 등의 정보를 담고 있는 존재로 선택된 Cipher Suite의 알고리즘에 따라 데이터를 암호화하게 됩니다.
<Cipher Suite의 구성>
2. Server Hello
Client가 보내온 ClientHello Packet을 받아 Cipher Suite 중 하나를 선택한 다음 Client에게 이를 알립니다. SSL/TLS버전 및 암호화 알고리즘을 서버의 선호도에 따라 선택하고, 서버의 공개키가 포함된 인증서로 회신하여 '식별'도 가능.
3. Certificate
Server가 자신의 SSL 인증서를 Client에게 전달합니다. 인증서 내부에는 Server가 발행한 공개키가 들어있습니다. Client는 Server가 보낸 CA(Certificate Authority, 인증기관)의 개인키로 암호화된 이 SSL 인증서를 이미 모두에게 공개된 CA(Certificate Authority, 인증기관)의 공개키를 사용하여 복호화합니다. 이때 복호화에 성공하는 것은 인증서를 검증하는 것과 마찬가지.
또한 Client는 데이터 암호화에 사용할 대칭키를 생성 해서 서버의 공개키를 이용해 암호화해 Server에게 보냄.
4. Server Key Exchange / ServerHello Done
'Server Key Exchange'는 Server의 공개키가 SSL 인증서 내부에 없는 경우, Server가 직접 전달함을 의미합니다. 공개키가 SSL 인증서 내부에 있을 경우 Server Key Excahnge는 생략됩니다. 인증서 내부에 공개키가 있다면 Client가 CA(Certificate Authority, 인증기관)의 공개키를 통해 인증서를 복호화한 후 Server의 공개키를 확보할 수 있습니다. 그리고 Server가 행동을 마쳤음을 전달합니다.
5. client Key Exchange
대칭키를 Client가 생성하여 SSL 인증서 내부에서 추출한 Server의 공개키를 이용해 암호화한 후 Server에게 전달합니다. 여기서 전달된 '대칭키'가 바로 SSL Handshake의 목적이자 가장 중요한 수단인 데이터를 실제로 암호화할 대칭키입니다. 이제 키를 통해 Client와 Server가 교환하고자 하는 데이터를 암호화합니다.
ClientHello(암호화 알고리즘 나열 및 전달) - > Serverhello(암호화 알고리즘 선택) - > Server Certificate(인증서 전달) - > Client Key Exchange(데이터를 암호화할 대칭키 만들고 전달) - > Client / ServerHello done (정보 전달 완료) - > Fisnied (SSL Handshake 종료)
인증 메커니즘 : CA에서 유효한 SSL/TLS 인증서를 발급받는다. 이러한 인증서는 사용자와 서버간의 데이터를 암호화를 활성화 하고, 서버 식별의 도구가 된다.
PFS(Perfect Forward Secrecy) 완전한 순방향 비밀성
HSTS(HTTP Strict Transport Security): HSTS는 브라우저가 HTTPS 연결만 사용하도록 하는 보안 기능입니다. 이는 중간자 공격의 위험을 줄이고 암호화되지 않은 HTTP 연결을 방지하는 데 도움이 됩니다.
SEO(Search Engine Optimization) : 검색엔진 최적화를 뜻하며 검색 엔진 결과 페이지(SERP)에서 웹 사이트의 가시성과 순위를 개선하는 과정입니다. SEO의 주요 목표는 사이트의 콘텐츠, 제품 또는 서비스와 관련된 관련 키워드 또는 문구를 검색하는 사용자가 웹사이트를 보다 쉽게 보고 액세스할 수 있도록 하여 웹사이트에 대한 트래픽을 늘리는 것입니다.
사이트 내 모든 요소가 같을 시 HTTPS를 사용하는 서비스가 그렇지 않은(HTTP사용)사이트보다 검색 순위가 높을것이라고 구글에서 공식 적으로 밝혔다. 서비스의 성공을 위해서는 SEO 관리는 필수.