HTTP (Hypertext Transfer Protocol)

  • 웹 브라우징을 위한 기본 프로토콜로, 웹 브라우저와 웹 서버 간의 데이터 전송을 담당
  • 텍스트 기반의 프로토콜로, 데이터를 평문으로 전송
  • 기본 포트 번호는 80을 사용

 

HTTPS (HTTP  Secure)

  • 말 그대로 HTTP의 보안 버전으로 데이터를 암호화하여 보안을 강화
  • 데이터의 안전한 전송을 위해 SSL/TLS 프로토콜을 사용 (HTTPS = HTTP + SSL/TLS)
  • 데이터 무결성을 보장한다. 데이터가 전송 중에 변경되지 않았음을 확인한다.
  • 기본 포트는 443을 사용

 


 

HTTPS의 동작 원리

 

사전 개념

 

대칭키 암호화 방식

 

하나의 암호화 키(KEY)로 평문 암호화/복호화 모두 할 수 있는 방식이다.

집 대문의 자물쇠를 생각해보자. 열쇠를 통해 문을 잠그고 열고 모두 가능하다.

하지만 열쇠를 잃어버린다면 열쇠를 주운 사람이 우리 집을 마음대로 드나들 수 있다.

마찬가지로 대칭키 방식은 키를 분실하였을 때, 누군가가 나의 정보를 볼 가능성이 있다는 치명적인 단점이 있다

 

 

공개키 암호화 방식

 

공개키, 개인키 2개의 키를 한 쌍 (pair)로 각각 암호화/복호화에 사용한다.

일반적으로 공개키로 데이터를 암호화하고,  개인키로 암호화된 데이터를 복호화한다. 

개인키를 먼저 만들고, 여기서 공개키를 파생하여 한 쌍의 키를 만들기 때문에 키페어라고 한다

공개키 방식은 대칭키 방식에 비해 안전하지만, 계산 과정이 복잡하고 연산 도중 컴퓨터 자원을 많이 사용하기 때문에

안전하게 통신할 수 있지만 속도가 느리다는 단점이 있다. 실제 시스템에서는 공개키 방식과 대칭키 방식을 적절하게 혼합하여 사용한다

 

 

CA (Certificate Authority, 인증 기관)

 

SSL을 적용하기 위해서는 인증서가 필요한데, 인증서를 발급해주는 기업이나 단체를 CA라고 한다. 

인증서에는 서비스의 정보와 서버 측의 공개키를 포함하고 있다. 브라우저는 CA 리스트를 가지고 있다.

대표적으로 Digicert, Sectigo, GlobalSign, Let's Encrypt 등이 있습니다.


 

HTTPS 동작 원리

크게 핸드 셰이크(handshake), 세션, 세션 종료 3단계로 이루어진다

 

핸드 셰이크

1. 클라이언트는 서버에게 인사를 건넨다 (Client Hello). 랜덤한 데이터와 현재 지원할 수 있는 암호화 방식을 서버에게 전달한다. 암호화 방식을 전달하는 이유는 같은 대칭키, 공개키 기법이라도 다양한 암호화 방식이 있기 때문에 서로 어떤 암호화 방식을 사용할지 협의하는 과정이 필요하기 때문이다

 

2. 클라이언트의 인사를 받은 서버는 클라이언트에게 인사를 건넨다 (Server Hello). 서버는 3가지 내용을 전달한다 (랜덤 데이터, 지원 가능한 암호화 방식, 인증서 - CA에서 발급받은 문서로 서버가 신뢰할 수 있는지 보장하는 역할을 한다)

 

3. 인증서를 받은 클라이언트는 유효한 인증서인지 검증하기 위해, CA가 발급한 인증서 목록 중 서버가 전달한 인증서가 있는지 확인한다. 이후 CA에서 공유하는 공개키를 가지고 인증서를 복호화한다. 만약 복호화가 되었다면 인증서는 해당 CA에서 발급되었다는 것을 검증한 것이기 때문에 서버를 신뢰할 수 있다

 

4. 본격적으로 키를 주고받기 위해 클라이언트는 실제 데이터 통신에서 사용할 대칭키를 임시로 만든다. 앞서 클라이언트와 서버가 서로 주고받은 랜덤한 데이터를 조합해 임시 키를 생성하는데, 임시키는 대칭키이기 때문에 절대 제 3자에게 노출되면 안되기 때문에 앞서 갖고 있던 공개키로 암호화해 서버에게 전달한다

 

5. 키를 받은 서버는 자신이 갖고 있던 비밀키로 암호를 해독하여 임시키를 전달받게 된다. 비로소 서버/클라이언트는 같은 키를 공유한다

 

6. 클라이언트와 서버의 임시 키는 일련의 과정을 거쳐 세션키로 바뀌고, 이 세션키를 이용해 통신을 할 수 있다

 

세션과 세션 종료

그 이후 단계인 세션 단계에서는 앞서 생성한 세션키를 이용해 대칭키 기법으로 데이터를 암호화해서 통신하고, 데이터 전송이 끝나면 세션을 종료해 통신을 마친다. 이 때 통신에서 사용한 세션키도 삭제한다.


 

 

두 프로토콜의 가장 큰 차이는 보안이다. HTTP는 데이터를 암호화하지 않기 때문에 중간자 공격과 데이터 도난의 위험이 있다.

HTTPS는 데이터를 암호화하기 때문에 이러한 위험을 최소화한다. - 완벽한 보안은 없다

 

 

HTTPS와 SEO (Search Engine Optimization, 검색 엔진 최적화) 연관성

 

  • 구글과 다른 검색 엔진은 웹사이트의 보안을 고려하여 검색 순위를 조정한다. HTTPS를 사용하는 웹사이트는 일반적으로 검색엔진에서 높은 순위를 받을 가능성이 높은데, HTTPS는 사용자 데이터 보호와 웹 보안을 강화하기 때문
  • HTTPS를 사용하는 웹사이트는 보안 배지 또는 그린 로킹 표시와 같은 시각적 표시를 통해 사용자에게 웹사이트의 신뢰성을 쉽게 전달할 수 있다

HTTPS
HTTP

 


SSL (Secure Sockets Layer)

 

- 넷스케이프(Netscape)에서 개발된 보안 프로토콜로, 데이터의 기밀성과 무결성을 제공

- 데이터를 암호화하고, 클라이언트 및 서버 간의 신뢰성있는 통신을 확립하기 위해 디지털 인증서를 사용

 

TLS (Transport Layer Security)

 

- SSL 3.0 버전을 기반으로 하며, SSL의 취약점을 보완하고 보안 향상을 위해 여러 버전으로 발전

- 데이터 통신을 보호하고, 기밀성, 무결성 및 인증을 제공

 

 

TLS는 SSL의 후속 버전이며, 이제 모든 버전의 SSL은 더 이상 사용되지 않는다고 한다. (대부분 SSL 및 SSL/TLS라는 용어 모두 TLS 프로토콜과 TLS 인증서를 뜻 함, TLS 인증서가 업계 표준)

 

SSL에서 TLS로 이름이 변경된 지 오래됐지만 아직도 사람들은 TLS 대신 SSL이라는 표현을 더 많이 사용하고 있으며 실제로 SSL/TLS의 오픈소스 구현체 프로젝트 명칭은 OpenSSL이라고 한다.

 

 


참고 링크

 

 

그림으로 쉽게 보는 HTTPS, SSL, TLS

SSL과 TLS는 무슨 차이일까 | 지난 포스팅에서 웹 브라우저와 웹 서버 간에 데이터를 주고받기 위해 사용하는 인터넷 프로토콜인 HTTP에 대해 알아봤습니다. 1996년에 탄생한 이후부터 지금까지 HTTP

brunch.co.kr

 

안전한 웹을 위해 HTTPS 이해하기: ①HTTPS의 작동 원리 | 요즘IT

웹에서는 내가 원하는 정보를 열람하는 것뿐만 아니라, 내가 입력한 정보를 웹 사이트를 운영하는 회사의 시스템으로 전달하는 경우도 많습니다. 예를 들어, 포털 사이트에 내 계정 정보를 입력

yozm.wishket.com

 

[네트워크] HTTPS의 개념과 동작 원리

HTTPS는 HTTP에 보안이 강화된 프로토콜이라는 것을 알고있다. 프로젝트를 진행하면서 SSL 인증서를 발급받아 HTTPS로 요청할 수 있도록 했던 경험도 있다. 하지만 정확히 HTTPS가 어떻게 동작하는지

kimmeh1.tistory.com

 

HTTP HTTPS 차이: 당신의 웹 사이트는 안전한가요? - 어센트 코리아

HTTP와 HTTPS의 차이점과 각각의 정의 및 Google 랭킹 팩터 여부에 대한 자세한 내용을 알아보겠습니다.

www.ascentkorea.com

 

SSL/TLS 와 HTTPS

 

www.lesstif.com

 

+ Recent posts