본 게시글은 http와 https에 대한 이해를 함양하기 위한 글로,
주로 AWS의 공식 자료를 참고했습니다.
HTTP와 HTTPS의 차이점은?
HTTP(Hypertext Transfer Protocol)는 클라이언트와 서버 간 통신을 위한 통신 규칙 세트 또는 프로토콜입니다. 사용자가 웹 사이트를 방문하면 사용자 브라우저가 웹 서버에 HTTP 요청을 전송하고 웹 서버 또한 HTTP로 응답합니다. 웹 서버와 사용자 브라우저는 데이터를 일반 텍스트로 교환합니다.
요약하면, HTTP 프로토콜은 네트워크 통신을 작동하게 하는 기본 기술입니다.
HTTPS(HTTP Secure)는 HTTP의 확장 버전 또는 더 안전한 버전입니다. HTTPS에서는 브라우저와 서버가 데이터를 전송하기 전에 안전하고 암호화된 연결을 설정합니다.
HTTP 프로토콜의 작동 원리
HTTP는 OSI(Open Systems Interconnections) 네트워크 통신 모델의 애플리케이션 계층 프로토콜입니다. HTTP는 여러 유형의 요청과 응답을 정의합니다. 웹 사이트의 일부 데이터를 보려는 경우 HTTP GET 요청을, 연락처 양식 작성 같은 일부 정보를 전송하는 경우 HTTP PUT 요청을 전송합니다.
HTTPS 프로토콜 작동 원리
HTTP는 암호화되지 않은 데이터를 전송합니다. 즉, 브라우저에서 전송된 정보를 제3자가 가로채고 읽을 수 있습니다.
이를 방지하기 위해 통신에 또 다른 보안 계층을 추가하기 위해 HTTPS로 확장되었습니다. HTTPS는 HTTP 요청 및 응답을 SSL 및 TLS 기술에 결합합니다.
HTTPS 웹 사이트는 독립된 인증 기관(CA)에서 SSL/TLS 인증서를 획득해야 합니다. 이러한 웹 사이트는 신뢰를 구축하기 위해 데이터를 교환하기 전에 브라우저와 인증서를 공유합니다. SSL 인증서는 암호화 정보도 포함하므로 서버와 웹 브라우저는 암호화된 데이터나 스크램블된 데이터를 교환할 수 있습니다. 프로세스는 다음과 같이 작동합니다.
- 사용자 브라우저의 주소 표시줄에 https://URL 형식을 입력하여 HTTPS 웹 사이트를 방문합니다.
- 브라우저는 서버의 SSL 인증서를 요청하여 사이트의 신뢰성을 검증하려고 시도합니다.
- 서버는 퍼블릭 키가 포함된 SSL 인증서를 회신으로 전송합니다.
- 웹 사이트의 SSL 인증서는 서버 아이덴티티를 증명합니다. 브라우저에서 인증되면, 브라우저가 퍼블릭 키를 사용하여 비밀 세션 키가 포함된 메시지를 암호화하고 전송합니다.
- 웹 서버는 개인 키를 사용하여 메시지를 해독하고 세션 키를 검색합니다. 이후, 세션 키를 암호화하고 브라우저에서 승인 메시지를 전송합니다.
- 이제 브라우저와 웹 서버 모두 동일한 세션 키를 사용하여 메시지를 안전하게 교환하도록 전환합니다.
대칭키와 비대칭키 암호화
HTTPS는 대칭키 암호화 방식과 비대칭키 암호화 방식을 모두 사용하고 있으며, 각각의 암호화 방식은 다음과 같습니다.
- 대칭키 암호화
- 클라이언트와 서버가 동일한 키를 사용해 암호화/복호화를 진행함
- 키가 노출되면 매우 위험하지만 연산 속도가 빠름
- 비대칭키 암호화
- 1개의 쌍으로 구성된 공개키와 개인키를 암호화/복호화 하는데 사용함
- 키가 노출되어도 비교적 안전하지만 연산 속도가 느림
대칭키는 저것만으로 충분히 설명되지만 비대칭키 암호화는 좀 더 세부적인 이해가 필요합니다.
비대칭키 암호화는 서로를 위한 1쌍의 키인 공개키 / 개인키 방식을 이용해 데이터를 암호화합니다.
- 공개키: 모두에게 공개 가능한 키
- 공개키로 암호화하면 개인키로만 복호화 가능함
- 개인키는 소유자 본인만 갖고 있으므로 자신만 확인 가능함
- 개인키: 나만 가지고 알고 있어야 하는 키
- 개인키로 암호화하면 공개키로만 복호화할 수 있음
- 공개키는 모두에게 공개되어 있으므로, 본인이 인증한 정보임을 알려 신뢰성을 보장함
HTTP/2, HTTP/3, HTTPS의 차이점
최초의 HTTP 버전은 HTTP/1.1로, HTTP/2와 HTTP/3은 프로토콜 자체를 업그레이드한 버전입니다. 버전이 상승함에 따라 데이터 전송 시스템이 수정되면서 효율성이 개선되었습니다.
HTTP/2는 기존의 텍스트 형식 대신, 바이너리로 데이터를 교환합니다. 또한, 서버가 새 HTTP 요청을 기다리는 대신, 클라이언트 캐시에 응답을 사전에 전송할 수 있습니다.
HTTP/3은 비교적 최신 버전으로, HTTP/2에서 한 단계 더 발전했습니다. 주로 실시간 스트리밍 및 기타 최신 데이터 전송 요구사항을 보다 효율적으로 지원합니다.
HTTPS는 HTTP에서 데이터 보안 문제를 우선시합니다. 최신 시스템에서는 SSL/TLS와 함께 HTTP/2를 HTTPS로 사용합니다. HTTP/3이 더욱 발전하면 브라우저 및 서버 기술도 HTTPS에 통합될 것입니다.
HTTP | HTTPS | |
의미 | Hypertext Transfer Protocol | Hypertext Transfer Protocol Secure |
기본 프로토콜 | HTTP/1과 HTTP/2는 TCP/IP를, HTTP/3는 QUIC 프로토콜을 사용합니다. | HTTP 요청 및 응답을 추가로 암호화하기 위해 SSL/TLS와 함께 HTTP/2 사용 |
기본 포트 | 80 | 443 |
용도 | 이전 텍스트 기반 웹 사이트 | 모든 최신 웹 사이트 |
보안 | 추가 보안 기능 없음 | 퍼블릭 키 암호화에 SSL 인증서 사용 |
이점 | 인터넷을 통한 통신 지원 | 웹 사이트에 대한 권위, 신뢰성 및 검색 엔진 순위 개선 |
참고 출처
'CS' 카테고리의 다른 글
[CS] JWT란 (0) | 2023.10.27 |
---|---|
[CS] 쿠키 vs. 세션 vs. 토큰 (1) | 2023.10.27 |