
HTTP
HyperText Transfer Protocol의 약자로 쉽게 말해, 웹에서 데이터를 주고받는 약속이다.
HTTPS(HyperText Transfer Protocol Secure)
= HTTP + Secure
HTTP에 보안(SSL/TLS 암호화)을 입힌 버전이다.
HTTP 자체는 평문(암호화 없음)이라 중간에서 패킷을 엿보게 되면 전송하는 데이터가 다 노출이 된다. (스니핑, Sniffing) 그래서 HTTP위에 보안 계층(SSL/TLS)을 얹은 것이다.
SSL(Secure Sockets Layer)
= 보안 소켓 계층
클라이언트와 웹 서버 간의 통신을 암호화하여 데이터가 노출되는 것을 막기 위한 보안 프로토콜을 의미한다.
SSL을 위해서는 SSL 인증서가 필요하다.
SSL 접속은 신뢰할 수 있는 인증 기관에 의해 발행된 인증서를 통해 이루어진다. 웹 사이트가 SSL 인증서를 사용하면, 이는 웹 사이트가 정당하고 신뢰할 수 있는 사이트라는 것을 사용자에게 보여주는 것이다.
비대칭키 암호화 (Asymmetric Encryption)
키가 쌍으로 존재하며, 공개키로 암호화를 진행하고 개인키로 복호화를 진행한다. 연산이 무겁고 느리다는 단점이 있다.

- 공개키 : 모두가 접근할 수 있는 키
- 개인키 : 본인만 보관하는 키
대칭키 암호화 (Symmetric Encryption)
실제 통신에서 사용이 되며, 암호화와 복호화에 '같은 키를 사용'하는 방식을 의미한다. 이 방법은 빠르고 효율적이지만 키를 안전하게 전달하는 것이 어렵다는 단점이 있다.

SSL 수행 과정
1. 3-way handshake 수행 : 클라이언트와 서버 간의 새로운 연결을 하기 위해 서로 인지하고 연결을 준비하는 가정을 수행한다.
2. SSL handshake 수행 : 클라이언트와 서버 간의 통신을 '암호화를 위한 필요한 정보를 교환' 하는 과정을 수행한다.
3. 실제 데이터 통신 수행 : 클라이언트와 서버 간의 연결 준비와 필요한 정보를 교환하는 과정을 마치고, 통신을 위한 비밀키가 생성되어 실제 데이터를 요청하고 응답하는 통신을 수행한다. SSL 통신에서는 'SSL 인증서'를 발급받아서 암호화된 데이터를 주고받는다.
💡 SSL Handshake 과정
사전에 3-way handshake 과정을 통해서 클라이언트와 서버 간의 초기 연결이 확인되어야 SSL Handshake가 수행된다. SSL Handshake의 경우 HTTPS 연결이 설정될 때 수행이 되며, 클라이언트와 서버간의 통신을 암호화하는데 '필요한 정보를 교환' 한다.
1. 클라이언트 → 서버 : Client Hello
브라우저가 서버에게 먼저 말을 건다. 클라이언트는 사용할 수 있는 암호 방식들 리스트와 난수를 하나 전달한다.
2. 서버 → 클라이언트 : Server Hello + Certificate
서버는 암호 방식 중에 하나를 선택하고 난수를 클라이언트에게 전달한다. 그리고 인증서도 함께 전달한다. 이 인증서 안에는 서버의 공개키와 CA의 서명이 들어있다.
3. 클라이어트는 서버가 준 인증서를 확인한다.
이 인증서를 발급한 CA가 믿을 만한 곳인지, 인증서가 만료되지는 않았는지 확인하고 괜찮으면 서버가 진짜임을 신뢰한다.
4. 세션키 생성
클라이언트와 서버는 합의한 방식으로 세션키를 하나 만든다. 그리고 앞으로 주고 받는 내용은 이 세션키로 잠가서 보낸다.
5. 암호화 시작 확인
클라이언트와 서버가 신호를 주고받고, 마지막으로 확인 메시지를 서로 주고 받는다. 이렇게 되면 보안 대화 채널이 완성된다.
이후에는 웹 페이지 요청/응답, 쿠키 같은 실제 모든 데이터가 잠긴 상태로 오간다. 중간에서 봐도 내용을 알아챌 수 없다.
'CS > 네트워크' 카테고리의 다른 글
| [네트워크] OSI 7계층 (0) | 2025.10.14 |
|---|---|
| [네트워크] 데이터 통신 과정 (0) | 2025.10.05 |
| [네트워크] TCP/IP 4계층 (1) | 2025.08.31 |