HTTP
HTTP(HyperText Transfer Protocol)는 다양한 시스템 간의 통신을 위한 프로토콜이다. 하지만 서버에서 클라이언트로 전송되는 데이터가 암호화되지 않아 쉽게 도난당할 수 있다.
HTTPS
HTTPS(Hypertext Transfer Protocol Secure)는 HTTP에 SSL/TLS 보안을 추가한 통신 프로토콜이다. HTTPS는 브라우저와 서버 간의 데이터를 암호화한다. HTTPS가 이러한 통신을 안전하게 보호할 수 있게 하는 주요 메커니즘은 Transport Layer Security(TLS)이며, 이는 이전에 Secure Sockets Layer(SSL)로 알려져 있었다.
SSL
SSL은 웹 서버와 웹 브라우저 간의 보안을 위한 프로토콜이다. TLS/SSL은 비대칭 암호화와 대칭 암호화의 조합을 사용하여 클라이언트와 서버 간의 연결을 세션 시작부터 안전하게 보호한다.
-
대칭 암호화
대칭 암호화는 암호화와 복호화에 동일한 키를 사용한다. 이 키는 비밀로 유지되어야 하며 통신 당사자 간에 공유된다. 이 과정은 비교적 빠르기 때문에 대량의 데이터를 암호화하는 데 적합하다.
-
비대칭 암호화
비대칭 암호화는 공개 키와 개인 키의 한 쌍을 사용한다. 공개 키는 공개적으로 공유되지만 개인 키는 비밀로 유지된다. 공개 키로 암호화된 데이터는 해당 개인 키로만 복호화할 수 있다. 비대칭 암호화는 대칭 암호화에 비해 더 많은 시간과 계산 자원을 필요로 한다.
SSL/TLS는 초기에는 비대칭 암호화를 사용하여 대칭 키를 안전하게 전달한 다음, 효율적이고 안전한 데이터 전송을 위해 대칭 암호화로 전환한다.
- A가 B에게 연결 요청을 보낸다.
- B가 자신의 공개 키를 A에게 보낸다.
- A가 대칭 키를 B의 공개 키로 암호화하여 B에게 보낸다.
- B가 자신의 개인 키로 A의 대칭 키를 복호화하여 A의 대칭 키를 획득한다.
- 이 대칭 키를 사용하여 A와 B는 안전하게 통신할 수 있다.
인증서 발급 과정
- 사이트는 인증 기관(CA)에게 사이트 정보와 공개 키가 포함된 인증서 서명 요청(CSR)을 보낸다.
- CA는 사이트 정보의 정확성을 확인한다.
- 확인 후, CA는 사이트 정보와 공개 키가 포함된 인증서를 자신의 개인 키로 서명하여 디지털 인증서를 만든다.
- 생성된 인증서는 사이트에 보내진다.
- CA의 공개 키는 사용자의 브라우저나 운영 체제에 미리 설치된 신뢰할 수 있는 CA 목록의 일부로 포함되어 있다.
SSL/TLS 핸드셰이크
- 사용자가 사이트에 접근 요청을 하면 핸드셰이크 과정이 시작된다.
- SSL/TLS 핸드셰이크 동안 사이트는 클라이언트에게 자신의 인증서를 제공한다.
- 클라이언트는 브라우저에 내장된 CA의 공개 키를 사용하여 사이트의 인증서를 복호화하고 검증한다. 이 검증 과정에서는 인증서의 유효 기간, CA의 서명, 사이트의 도메인을 확인한다.
- 클라이언트는 pre-master secret을 생성하고 이를 사이트의 공개 키로 암호화하여 사이트에 보낸다.
- 사이트는 자신의 개인 키로 암호화된 pre-master secret을 복호화하고, 이 정보를 양 당사자가 생성한 랜덤 값과 함께 사용하여 세션 키를 생성한다.
- 세션 키를 사용하여 사이트와 클라이언트는 암호화된 데이터를 교환하여 안전한 통신을 진행한다.

사진출처: 이해하기-http-vs-https
📁 Reference
HTTPS 동작 과정 (대칭키, 공개키, SSL, TLS, CA)