HTTPS에 대해 알아보자

HTTPS는 무엇일까?

HTTPS (HyperText Transfer Protocol Secure)는 HTTP에 SSL 또는 TLS 프로토콜에 보안을 더한 프로토콜이다. 웹 브라우저와 서버 간의 데이터 전송을 암호화하여 해커나 제3자가 데이터를 중간에서 가로채거나 변조하는 MITM 공격을 방지하는 목적을 가지고 있다. 구글은 크롬 브라우저에서 HTTPS 프로토콜이 아닌 경우 "안전하지 않음"알림을 보내기도 하고 HTTPS인 경우 SEO 점수에 영향을 준다고 하여 그 중요성이 더욱 커지고 있다.

 

 

HTTPS의 주요 특징

데이터 암호화 

HTTPS는 SSL/TLS(SSL: Secure Sockets Layer, TLS: Transport Layer Security) 프로토콜을 사용하여 데이터를 암호화한다. 이를 통해 전송 중인 데이터가 중간에서 가로채져도 해독할 수 없게 만든다.

 

서버 인증

HTTPS는 서버의 신원을 확인하는 SSL 인증서를 사용한다. 이를 통해 사용자는 자신이 접속한 웹사이트가 진짜인지 신뢰할 수 있는지 확인할 수 있다.

 

데이터 무결성

전송 중인 데이터가 변조되지 않았음을 보장한다. 데이터가 중간에서 수정되거나 손상되지 않았음을 확인할 수 있다.

 

브라우저 신뢰 표시

HTTPS를 사용하는 사이트는 브라우저에서 자물쇠 아이콘으로 표시되어 사용자가 안전한 연결임을 직관적으로 알 수 있다.

 

HTTPS의 목적

HTTPS의 주요 목적은 보안신뢰성을 제공하는 것이다.

  • 정보 보호: HTTPS는 암호화를 통해 사용자와 서버 간에 주고받는 정보를 보호합니다. 특히, 로그인 정보, 신용카드 번호 등 민감한 데이터의 보안을 강화합니다.
  • 사용자 신뢰: 사용자는 HTTPS를 통해 웹사이트의 신뢰성을 확인할 수 있습니다. 이는 피싱 공격이나 스푸핑(spoofing)과 같은 위협으로부터 보호할 수 있게 합니다.
  • SEO 향상: 구글과 같은 주요 검색 엔진은 HTTPS를 사용하는 사이트에 대해 더 높은 검색 순위를 부여합니다. 이는 HTTPS가 사용자에게 안전한 웹 환경을 제공하기 때문입니다.

 

HTTPS의 동작 원리

HTTPS는 SSL/TLS를 사용하여 데이터를 암호화하는 방식으로 동작한다.

 

SSL 핸드셰이크

사용자가 HTTPS 웹사이트에 접속하면 브라우저와 서버 간에 SSL 핸드셰이크(handshake)가 시작된다. 이 과정에서 서버는 SSL 인증서를 브라우저에 전송하고 브라우저는 인증서를 검증한다.

 

세션 키 교환

브라우저와 서버는 대칭 키 암호화를 위해 세션 키(Session Key)를 생성하고 교환한다. 이 세션 키는 이후 통신에서 사용될 데이터를 암호화하는 데 사용된다.

 

데이터 암호화 및 전송 

브라우저와 서버는 세션 키를 사용하여 데이터를 암호화하고 암호화된 데이터를 주고받는다. 이때 데이터는 외부에서 가로채더라도 해독할 수 없다.

 

세션 종료

통신이 끝나면 세션이 종료되고 세션 키는 폐기된다. 이후 새로운 연결이 필요하면 다시 SSL 핸드셰이크가 수행된다.

 

HTTPS에서의 키 교환 과정

HTTPS에서의 키 교환 과정은 비대칭 암호화와 대칭 암호화를 모두 사용하고 이를 통해 안전하고 효율적인 통신을 구현한다.

다음은 HTTPS가 데이터를 전송할 때 어떻게 이 두 가지 암호화를 사용하는지에 대한 설명이다.

 

1. SSL 핸드셰이크 단계에서 비대칭 암호화의 사용

  • 클라이언트 요청: 사용자가 브라우저에서 https://로 시작하는 웹사이트에 접속하면 브라우저는 서버에 HTTPS 연결을 요청한다.
  • 서버 인증서 전송: 서버는 SSL 인증서를 브라우저로 전송한. 인증서에는 서버의 공개 키와 함께 서버의 신원을 확인할 수 있는 정보가 포함되어 있다.
  • 인증서 검증: 브라우저는 서버가 전송한 인증서를 신뢰할 수 있는 인증 기관(CA, Certificate Authority)을 통해 검증한다. 인증서가 유효하다면 브라우저는 서버의 공개 키를 사용하여 대칭 키를 암호화한다.
  • 대칭 키 전송: 브라우저는 생성한 대칭 키(세션 키)를 서버의 공개 키로 암호화한 후 이를 서버로 전송한다. 이 과정에서 비대칭 암호화가 사용된다. 서버는 자신의 개인 키를 사용해 이 대칭 키를 복호화한다.

2. 대칭 암호화의 사용

  • 대칭 암호화로 데이터 전송: 이제 클라이언트와 서버는 동일한 대칭 키를 공유하게 되며 이 키를 사용해 통신 데이터를 암호화하여 주고받는다. 대칭 암호화는 성능이 뛰어나기 때문에 데이터 전송 시 주로 사용된다
  • 데이터 무결성 확인: 전송된 데이터가 도중에 변조되지 않았는지 확인하기 위해 해시 값이 포함될 수 있으며 이를 통해 데이터 무결성을 유지한다.

3. 통신 종료

  • 세션 종료: 통신이 끝나면 브라우저와 서버는 세션 키를 폐기한다. 보안을 강화하기 위한 절차로 이후 새로운 연결이 필요할 때는 다시 SSL 핸드셰이크 과정이 시작된다.
비대칭 암호화와 대칭 암호화의 장점
비대칭 암호화는 대칭 키를 안전하게 교환할 수 있게 해준다. 대칭 키가 네트워크를 통해 전달되는 동안 가로채이더라도 이를 해독할 수 없기 때문에 보안이 유지된다.
대칭 암호화는 빠르고 효율적이기 때문에 실제 데이터 전송 과정에서 성능을 유지하면서 보안을 강화할 수 있다.

'WEB' 카테고리의 다른 글

웹 보안을 위한 정책, CORS?  (0) 2024.08.27
웹 서버 Session 저장  (0) 2024.08.23
웹 브라우저 Storage  (0) 2024.08.23
웹 브라우저 Cookie 알아보기  (0) 2024.08.23