1. HTTP? HTTPS?
-
HTTP (HyperText Transfer Protocol)
- 기본적인 특징:
- 클라이언트(브라우저)와 서버 간의 데이터 전송을 위한 프로토콜
- 데이터를 암호화하지 않고 전송하므로 텍스트 형태로 전송됨
- 일반적으로 포트 80을 사용
- 보안:
- 암호화가 적용되지 않아서 전송 중 데이터가 탈취될 가능성이 있음
- 중요한 정보(로그인 정보, 신용카드 정보 등)를 주고 받기에는 부적합
- 주요 용도:
- 보안이 필요하지 않은 일반적인 웹 페이지(예: 블로그, 공지사항 페이지)
-
HTTPS (HyperText Transfer Protocol Secure)
- 기본적인 특징:
- HTTP에 SSL/TLS(보안 프로토콜)를 추가하여 데이터를 암호화
- 데이터를 안전하게 전송하기 위해 HTTPS 사용
- 일반적으로 포트 443 사용
- 보안:
- 데이터 암호화를 통해 전송 중 탈취되어도 내용을 읽을 수 없음
- 데이터 무결성을 보장하여 전송 중 변경이 발생하지 않도록 함
- 서버와 클라이언트 간의 신원을 인증하여 신뢰할 수 있는 통신을 보장
- 주요 용도:
- 로그인, 결제, 개인정보 처리 등 보안이 중요한 웹 서비스
-
핵심 차이점
| 구분 | HTTP | HTTPS |
|---|
| 보안 | 암호화되지 않음 | SSL/TLS를 통해 암호화 |
| 포트 번호 | 80 | 443 |
| 속도 | 빠름 (암호화 없음) | 조금 느림 (암호화로 인한 오버헤드) |
| 사용성 | 보안이 필요 없는 사이트 | 보안이 필요한 사이트 |
| 브라우저 표시 | 일반적인 URL 표시 | 🔒 자물쇠 아이콘 및 "https://" |
2. HTTPS의 원리
HTTPS는 SSL/TLS 프로토콜을 사용해 클라이언트와 서버 간 데이터를 암호화하여 안전하게 통신한다. 이를 위해 공개키 암호화와 대칭키 암호화를 조합한 하이브리드 방식을 사용한다.

※ SSL/TLS?
TLS는 SSL의 업그레이드 버전이다.
| 항목 | SSL | TLS |
|---|
| 풀네임 | Secure Sockets Layer | Transport Layer Security |
| 버전 | SSL 2.0, SSL 3.0 | TLS 1.0, TLS 1.1, TLS 1.2, TLS 1.3 |
| 보안성 | 취약점 발견 (SSL 3.0 이후로 사용 중단) | 더 강력한 암호화 알고리즘과 보안 개선 |
| 암호화 알고리즘 | 상대적으로 오래된 알고리즘 사용 | 최신 암호화 알고리즘 및 키 교환 방식 |
| 핸드셰이크 속도 | 느림 | 개선된 핸드셰이크 속도로 더 빠름 |
| HMAC 방식 | MD5와 SHA-1 같은 약한 해시 사용 | SHA-256 같은 더 강력한 해시 사용 |
| 버전 관리 기관 | Netscape | IETF (Internet Engineering Task Force) |
-
HTTPS 통신 과정
- 클라이언트 요청:
사용자가 브라우저에서 https://로 시작하는 URL을 입력하면, 클라이언트는 HTTPS 연결을 요청한다.
- 서버 인증서 제공:
서버는 SSL/TLS 인증서를 클라이언트에게 전송한다. 이 인증서는 다음 정보를 포함한다.
- 서버의 공개키(Public Key)
- 서버 도메인 정보
- 인증 기관(CA, Certificate Authority)의 서명
- 인증서 검증:
클라이언트는 서버의 인증서가 신뢰할 수 있는 인증 기관(CA)에 의해 발급된 것인지 확인한다. (브라우저는 사전에 신뢰할 수 있는 CA 목록을 보유하고 있음)
- 세션 키 생성:
- 클라이언트는 인증서의 공개키를 사용해 대칭키(세션키)를 암호화하여 서버로 전송한다.
- 서버는 자신의 개인키(Private Key)로 이 암호화된 대칭키를 복호화한다.
- 이제 클라이언트와 서버는 같은 대칭키를 공유하게 된다.
- 데이터 암호화 통신:
- 대칭키를 사용해 데이터 전송 시 모든 데이터를 암호화
- 암호화된 데이터는 중간에서 가로채더라도 복호화할 수 없음
-
사용되는 암호화 기법
- 공개키 암호화 (비대칭키 암호화)
- 역할: 초기 단계에서 대칭키(클라이언트가 생성, 랜덤 알고리즘 사용)를 안전하게 전달하기 위해 사용
- 원리:
- 서버는 공개키(Public Key)를 클라이언트에 제공
- 클라이언트는 공개키로 데이터를 암호화
- 서버는 개인키(Private Key)로 암호화된 데이터를 복호화
- 대칭키 암호화
- 역할: 본격적인 데이터 전송 단계에서 사용
- 원리:
- 동일한 키를 사용해 데이터를 암호화 및 복호화
- 공개키 암호화에 비해 속도가 빠르며, 대량의 데이터 전송에 적합
-
요약
HTTPS는 비대칭키 암호화로 대칭키를 안전하게 교환하고, 이후 데이터 전송에는 대칭키 암호화를 사용하여 효율적이고 안전한 통신을 구현한다. 이러한 구조 덕분에 기밀성과 무결성을 유지하면서도 속도를 보장할 수 있다.