웹에서 데이터를 전송할 때 사용하는 프로토콜인 HTTP와 HTTPS는 중요한 차이점을 가지고 있습니다. 아래에서 이 두 프로토콜의 주요 특징과 차이를 정리해 보겠습니다!
HTTP란?
[HTTP(Hyper Text Transfer Protocol)란?
HTTP(Hyper Text Transfer Protocol)는 서버/클라이언트 모델을 통해 데이터를 주고받기 위한 프로토콜입니다. 즉, HTTP는 인터넷에서 하이퍼텍스트를 교환하기 위한 통신 규약으로, 80번 포트를 사용합니다. HTTP 서버는 80번 포트에서 요청을 기다리고, 클라이언트는 이 포트로 요청을 보냅니다. HTTP는 1989년 팀 버너스 리(Tim Berners Lee)에 의해 처음 설계되었으며, WWW(World-Wide-Web) 기반에서 정보를 공유하는 데 큰 역할을 했습니다.
HTTP의 구조

HTTP는 애플리케이션 레벨의 프로토콜로 TCP/IP 위에서 작동하며, 상태를 가지고 있지 않은 Stateless 프로토콜입니다. HTTP는 Method, Path, Version, Headers, Body 등으로 구성됩니다.
그러나 HTTP는 암호화되지 않은 평문 데이터를 전송하는 프로토콜이기 때문에, 비밀번호나 주민등록번호와 같은 민감한 정보를 주고받으면 제3자가 이를 조회할 수 있습니다. 이러한 문제를 해결하기 위해 HTTPS가 등장했습니다.
HTTPS란?
HTTPS(Hyper Text Transfer Protocol Secure)란?
HTTPS(HyperText Transfer Protocol Secure)는 HTTP에 데이터 암호화가 추가된 프로토콜입니다. HTTPS는 HTTP와 달리 443번 포트를 사용하며, 네트워크에서 중간 제3자가 정보를 볼 수 없도록 암호화를 지원합니다.
대칭키 암호화와 비대칭키 암호화
HTTPS는 대칭키 암호화와 비대칭키 암호화를 모두 사용합니다.
- 대칭키 암호화: 클라이언트와 서버가 동일한 키를 사용해 암호화/복호화를 진행합니다. 키가 노출되면 위험하지만 연산 속도가 빠릅니다.
- 비대칭키 암호화: 공개키와 개인키의 쌍을 사용하여 암호화/복호화를 진행합니다. 키가 노출되어도 비교적 안전하지만 연산 속도가 느립니다.
비대칭키 암호화는 공개키/개인키 암호화 방식을 이용하여 데이터를 암호화합니다.
- 공개키: 모두에게 공개 가능한 키
- 개인키: 나만 가지고 있어야 하는 키
HTTPS의 동작 과정


실제 HTTPS 연결 과정이 성립되는 흐름
- 클라이언트(브라우저)가 서버로 최초 연결 시도
- 서버는 공개키(엄밀히는 인증서)를 브라우저에게 넘겨줌
- 브라우저는 인증서의 유효성을 검사하고 세션키를 발급
- 브라우저는 세션키를 보관하며 추가로 서버의 공개키로 세션키를 암호화하여 서버로 전송
- 서버는 개인키로 암호화된 세션키를 복호화하여 세션키를 얻음
- 클라이언트와 서버는 동일한 세션키를 공유하므로 데이터를 전달할 때 세션키로 암호화/복호화를 진행
HTTPS는 대칭키 암호화와 비대칭키 암호화를 모두 사용하여 빠른 연산 속도와 안정성을 제공합니다.
HTTPS 연결 과정에서는 먼저 서버와 클라이언트 간에 세션키를 교환합니다. 이 세션키는 대칭키로, 이후 데이터 교환에 사용됩니다. 비대칭키는 세션키를 안전하게 교환하는 데 사용됩니다!
HTTPS의 발급 과정
서버는 클라이언트와 세션키를 공유하기 위한 공개키를 생성하고, 인증된 기관(Certificate Authority)으로부터 인증서를 발급받습니다.
- A기업이 공개키/개인키를 발급받습니다.
- CA 기업에게 인증서 발급을 요청합니다.
- CA 기업이 인증서를 생성하여 A기업에게 제공합니다.
- A기업은 클라이언트에게 인증서를 제공하고, 브라우저는 이를 확인합니다.
인증서는 CA의 개인키로 암호화되어 신뢰성을 확보하고, 클라이언트는 A기업의 공개키로 데이터를 암호화하여 A기업만 복호화할 수 있습니다.
HTTP와 HTTPS
HTTP와 HTTPS
HTTP는 암호화가 없어 보안에 취약하지만, HTTPS는 안전하게 데이터를 주고받을 수 있습니다. 그러나 HTTPS는 암호화/복호화 과정으로 인해 HTTP보다 속도가 느릴 수 있습니다. (현재는 거의 차이가 없지만) 또한 HTTPS는 인증서 발급 및 유지에 추가 비용이 발생합니다.
사용 권장 사항
- 개인 정보와 같은 민감한 데이터를 주고받을 경우 HTTPS를 사용해야 합니다.
- 노출이 되어도 괜찮은 정보 조회 등만 처리할 경우 HTTP를 이용할 수 있습니다.
차이점 요약

보안
- HTTP: 데이터를 평문으로 전송하여, 중간에서 가로채일 경우 쉽게 읽힐 수 있습니다. 따라서 중요한 정보(예: 비밀번호, 금융 정보 등) 전송 시 보안이 취약합니다.
- HTTPS: SSL(Secure Sockets Layer) 또는 TLS(Transport Layer Security)로 데이터를 암호화하여 전송합니다. 제3자가 데이터를 가로채더라도 암호화된 상태이기 때문에 내용을 알아낼 수 없습니다.
포트 번호
- HTTP: 기본적으로 80번 포트를 사용합니다.
- HTTPS: 기본적으로 443번 포트를 사용합니다.
SSL/TLS 인증서
- HTTP: SSL/TLS 인증서가 필요하지 않으며, 보안 연결이 제공되지 않습니다.
- HTTPS: SSL/TLS 인증서를 필요로 하며, 이를 통해 서버의 신원을 확인하고 데이터 전송을 암호화하여 보안을 강화합니다.
속도
- HTTP: 암호화 및 복호화 과정이 없기 때문에 일반적으로 HTTPS보다 빠릅니다.
- HTTPS: SSL/TLS 암호화로 인해 약간의 속도 저하가 있을 수 있지만, 현대적인 웹 환경에서는 그 차이가 거의 느껴지지 않을 정도로 개선되었습니다.
SEO 및 신뢰성
- HTTP: SEO(검색 엔진 최적화)에서 HTTPS에 비해 불리합니다. Google 등 검색 엔진은 보안성을 높이 평가하여 HTTPS 웹사이트를 선호합니다.
- HTTPS: HTTPS를 사용하는 웹사이트는 SEO에서 더 높은 평가를 받으며, 사용자에게도 더 큰 신뢰를 줍니다. 브라우저 주소창에 자물쇠 아이콘이 표시되어 보안 연결임을 알려줍니다.
데이터 무결성
- HTTP: 데이터가 전송 중에 손상되거나 변조될 위험이 있습니다.
- HTTPS: SSL/TLS가 데이터 전송 중 무결성을 보장하여, 데이터가 변조되지 않도록 보호합니다.
요약
HTTP는 보안이 필요하지 않은 일반적인 웹페이지 전송에 사용되며, HTTPS는 보안이 필요한 데이터 전송에 사용됩니다. HTTPS는 암호화, 인증, 데이터 무결성 보장 등의 이점을 제공하며, 오늘날 대부분의 웹사이트는 HTTPS를 사용하고 있습니다.
이제 웹사이트를 방문할 때, HTTP와 HTTPS의 차이를 이해하고 보안이 필요한 데이터 전송에는 항상 HTTPS를 사용하는 것이 중요합니다!
Reference
https://velog.io/@bclef25/http%EC%99%80-https%EC%9D%98-%EC%B0%A8%EC%9D%B4
https://stackoverflow.com/questions/188266/how-are-ssl-certificates-verified#:~:text=Your%20web%20browser%20downloads%20the,key%20of%20the%20web%20server.&text=It%20uses%20this%20public%20key,address%20of%20the%20web%20server
https://jeong-pro.tistory.com/89
https://tiptopsecurity.com/how-does-https-work-rsa-encryption-explained/
'CS' 카테고리의 다른 글
세션 vs JWT: 세션을 선택하며 얻은 고찰 (1) | 2024.12.19 |
---|---|
동시성과 병렬성의 개념과 차이 (2) | 2024.07.24 |
프로세스와 스레드의 기본 개념과 멀티스레딩 및 멀티프로세싱 비교 (0) | 2024.07.20 |
HTTP 상태 코드 (0) | 2024.07.19 |
Web Server와 WAS의 차이점 (0) | 2024.07.19 |