HTTP와 HTTPS: 두 판 사이의 차이
(CS 용어 정리 - HTTP와 HTTPS 추가) |
(Gemini 벌크 업로더로 자동 업로드) |
||
1번째 줄: | 1번째 줄: | ||
== HTTP와 HTTPS == | == HTTP와 HTTPS == | ||
'''HTTP(HyperText Transfer Protocol)'''는 월드 와이드 웹(WWW)에서 클라이언트(웹 브라우저)와 웹 서버가 데이터를 주고받기 위한 애플리케이션 계층의 프로토콜입니다. 반면, '''HTTPS(HTTP Secure)'''는 HTTP에 '''SSL/TLS(Secure Sockets Layer/Transport Layer Security)''' 프로토콜을 결합하여, 통신 내용을 암호화함으로써 보안을 강화한 버전입니다. | |||
---- | |||
=== 🌐 HTTP (HyperText Transfer Protocol)의 특징 === | |||
* '''비연결성 (Connectionless)''' : 클라이언트가 서버에 요청을 보내고 응답을 받으면 바로 연결을 끊습니다. 이는 서버 자원을 효율적으로 사용하게 하지만, 매번 새로운 연결을 맺어야 하는 단점이 있습니다. (HTTP/1.1의 Keep-Alive로 일부 개선) | |||
* '''무상태성 (Stateless)''' : 서버는 클라이언트의 이전 요청 상태를 기억하지 않습니다. 각 요청은 독립적으로 처리되어 서버의 확장성을 높이지만, 사용자의 상태를 유지하기 위해 쿠키(Cookie)나 세션(Session) 같은 별도의 기술이 필요합니다. | |||
* '''평문(Plain Text) 통신''' : 통신 과정에서 주고받는 데이터가 암호화되지 않아, 중간에서 데이터를 가로채는 '스니핑(Sniffing)' 공격에 매우 취약합니다. | |||
---- | |||
=== | === 🔒 HTTPS (HTTP Secure)의 특징과 동작 원리 === | ||
HTTPS는 HTTP의 모든 특징을 가지면서, SSL/TLS 계층을 통해 다음과 같은 보안 기능을 추가로 제공합니다. | |||
* '''데이터 암호화 (Encryption)''' : 제3자가 데이터를 가로채도 내용을 알 수 없도록 하여 '기밀성'을 보장합니다. | |||
* | * '''데이터 무결성 (Integrity)''' : 데이터가 중간에 위변조되지 않았음을 보장합니다. | ||
* | * '''서버 인증 (Authentication)''' : 접속하려는 서버가 신뢰할 수 있는 서버인지 'SSL/TLS 인증서'를 통해 확인합니다. | ||
'''[SSL/TLS Handshake 동작 과정]''' | |||
1. '''Client Hello''' : 클라이언트가 서버에 접속하며, 지원하는 암호화 방식 목록과 랜덤 데이터를 전송합니다. | |||
2. '''Server Hello''' : 서버가 클라이언트의 암호화 방식 중 하나를 선택하고, 서버의 '공개키'가 포함된 'SSL/TLS 인증서'와 랜덤 데이터를 클라이언트에 전송합니다. | |||
3. '''Client Verification & Key Exchange''' : 클라이언트는 서버의 인증서가 신뢰할 수 있는 CA(Certificate Authority)로부터 발급되었는지 확인합니다. 신뢰할 수 있다면, 앞으로 실제 데이터를 암호화할 '대칭키'를 생성하여 서버의 '공개키'로 암호화한 후 서버에 전송합니다. | |||
4. '''Handshake Finish''' : 서버는 자신의 '개인키'로 암호화된 대칭키를 복호화하여 획득합니다. 이후, 클라이언트와 서버는 공유된 '대칭키'를 사용하여 안전하게 통신합니다. | |||
---- | |||
=== 💡 개발자 핵심 Point === | |||
* HTTPS는 HTTP보다 안전하지만, 암호화/복호화 과정 때문에 약간의 성능 저하가 발생할 수 있습니다. 그러나 현대의 하드웨어 발전으로 그 차이는 거의 무시할 수 있는 수준입니다. | |||
* 개인정보를 다루거나, 로그인/결제 기능이 있는 모든 웹사이트는 반드시 HTTPS를 사용해야 합니다. | |||
* 최신 브라우저들은 HTTP 사이트를 '안전하지 않음'으로 표시하며, 구글 등 검색엔진은 HTTPS 사이트에 SEO(검색엔진 최적화) 가산점을 부여하므로, 이제 '''HTTPS는 선택이 아닌 필수'''입니다. | |||
* SSL/TLS Handshake 과정에서는 안전한 키 교환을 위해 '''비대칭키(공개키/개인키)''' 방식을 사용하고, 실제 데이터 통신은 연산 속도가 빠른 '''대칭키''' 방식을 사용하는 하이브리드 암호화 방식을 채택하여 효율성을 높입니다. | |||
* HTTPS는 | |||
* | |||
* | |||
* | |||
2025년 9월 11일 (목) 16:50 기준 최신판
HTTP와 HTTPS
HTTP(HyperText Transfer Protocol)는 월드 와이드 웹(WWW)에서 클라이언트(웹 브라우저)와 웹 서버가 데이터를 주고받기 위한 애플리케이션 계층의 프로토콜입니다. 반면, HTTPS(HTTP Secure)는 HTTP에 SSL/TLS(Secure Sockets Layer/Transport Layer Security) 프로토콜을 결합하여, 통신 내용을 암호화함으로써 보안을 강화한 버전입니다.
🌐 HTTP (HyperText Transfer Protocol)의 특징
- 비연결성 (Connectionless) : 클라이언트가 서버에 요청을 보내고 응답을 받으면 바로 연결을 끊습니다. 이는 서버 자원을 효율적으로 사용하게 하지만, 매번 새로운 연결을 맺어야 하는 단점이 있습니다. (HTTP/1.1의 Keep-Alive로 일부 개선)
- 무상태성 (Stateless) : 서버는 클라이언트의 이전 요청 상태를 기억하지 않습니다. 각 요청은 독립적으로 처리되어 서버의 확장성을 높이지만, 사용자의 상태를 유지하기 위해 쿠키(Cookie)나 세션(Session) 같은 별도의 기술이 필요합니다.
- 평문(Plain Text) 통신 : 통신 과정에서 주고받는 데이터가 암호화되지 않아, 중간에서 데이터를 가로채는 '스니핑(Sniffing)' 공격에 매우 취약합니다.
🔒 HTTPS (HTTP Secure)의 특징과 동작 원리
HTTPS는 HTTP의 모든 특징을 가지면서, SSL/TLS 계층을 통해 다음과 같은 보안 기능을 추가로 제공합니다.
- 데이터 암호화 (Encryption) : 제3자가 데이터를 가로채도 내용을 알 수 없도록 하여 '기밀성'을 보장합니다.
- 데이터 무결성 (Integrity) : 데이터가 중간에 위변조되지 않았음을 보장합니다.
- 서버 인증 (Authentication) : 접속하려는 서버가 신뢰할 수 있는 서버인지 'SSL/TLS 인증서'를 통해 확인합니다.
[SSL/TLS Handshake 동작 과정] 1. Client Hello : 클라이언트가 서버에 접속하며, 지원하는 암호화 방식 목록과 랜덤 데이터를 전송합니다. 2. Server Hello : 서버가 클라이언트의 암호화 방식 중 하나를 선택하고, 서버의 '공개키'가 포함된 'SSL/TLS 인증서'와 랜덤 데이터를 클라이언트에 전송합니다. 3. Client Verification & Key Exchange : 클라이언트는 서버의 인증서가 신뢰할 수 있는 CA(Certificate Authority)로부터 발급되었는지 확인합니다. 신뢰할 수 있다면, 앞으로 실제 데이터를 암호화할 '대칭키'를 생성하여 서버의 '공개키'로 암호화한 후 서버에 전송합니다. 4. Handshake Finish : 서버는 자신의 '개인키'로 암호화된 대칭키를 복호화하여 획득합니다. 이후, 클라이언트와 서버는 공유된 '대칭키'를 사용하여 안전하게 통신합니다.
💡 개발자 핵심 Point
- HTTPS는 HTTP보다 안전하지만, 암호화/복호화 과정 때문에 약간의 성능 저하가 발생할 수 있습니다. 그러나 현대의 하드웨어 발전으로 그 차이는 거의 무시할 수 있는 수준입니다.
- 개인정보를 다루거나, 로그인/결제 기능이 있는 모든 웹사이트는 반드시 HTTPS를 사용해야 합니다.
- 최신 브라우저들은 HTTP 사이트를 '안전하지 않음'으로 표시하며, 구글 등 검색엔진은 HTTPS 사이트에 SEO(검색엔진 최적화) 가산점을 부여하므로, 이제 HTTPS는 선택이 아닌 필수입니다.
- SSL/TLS Handshake 과정에서는 안전한 키 교환을 위해 비대칭키(공개키/개인키) 방식을 사용하고, 실제 데이터 통신은 연산 속도가 빠른 대칭키 방식을 사용하는 하이브리드 암호화 방식을 채택하여 효율성을 높입니다.