HTTPS

HTTP와 HTTPS

HTTP

  • HTTP는 텍스트 교환이고 HTML 페이지도 텍스트이다.
  • 바이너리 테이터로 되어 있는 것도 아니고, 단순 텍스트를 주고 받기 때문에 누군가 네트워크에서 신호를 가로채어 본다면 내용이 노출된다. 이런 보안상의 문제를 해결해주기 위해 생긴 것이 HTTPS이다.

HTTPS

  • HTTPS는 인터넷 상에 정보를 암호화하는 SSL(Secure Soket Layer) 프로토콜을 이용하여 클라이언트와 서버가 데이터를 주고 받는 통신규약이다.
  • HTTPS는 HTTP 텍스트를 암호화 하는 것이다.
  • HTTPS의 S는 Secure Socket, 보안 통신망을 의마한다.

HTTPS 암호화 원리

HTTP의 암호화 원리의 핵심은 공개키 암호화 방식이다.

  • 인증서를 발급하여 보내는 메세지를 공개키로 암호화하도록 하고 있다.
  • 암호화된 메세지는 개인키를 가지고 있어야만 가능하기 때문에, 중간에 누구도 원본 데이터를 얻을 수 없다.

HTTPS의 특징

HTTPS는 SSL/TLS 위에서 HTTP 구현되었다.

HTTP,HTTPS Layer

주요 기능

  • 암호화(Encryption)
  • 인증(Authentication)
  • 변경감지 등

URI Scheme 접두사

  • https

사용 포트

  • URL이 http가 아닌 https URI Scheme 접두사를 갖으면, 통상적인 HTTP 80번이 아닌, HTTPS 443번 포트 번호를 사용한다.

표준

SSL/TLS

HTTP 통신에서 암호화 방식인 SSL(Secure Sockets Layer)이나 TLS(Transport Layer Security)를 이용함으로써 웹사이트를 안전하게 사용할 수 있다.

SSL와 TLS은 같은 것이다. 네스케이프에 의해서 SSL이 발명되었고, 이것이 점차 폭넓게 사용되다가 표준화 기구인 IETF의 관리로 변경되면서 TLS라는 이름으로 바뀌었다. TLS 1.0은 SSL 3.0을 계승한다. 하지만 TLS라는 이름보다 SSL이라는 이름이 훨씬 많이 사용되고 있다.

HTTPS 안전 확보의 구조

SSL/TLS에서는 이하의 3개의 구조에 의해 Web 사이트의 안전성을 확보한다.

도청 방지(암호화 통신)

웹사이트 열람에는 몇 대의 서버를 경유하기 때문에, 제3자는 비교적 간단하게 통신 내용을 가로챌 수 있다.
만일 가로채어도 내용을 해독되지 않도록 데이터를 암호화하여 전송함으로써 제3자로부터의 도청을 방지한다.

변조 방지

인터넷 쇼핑에서 상품의 개수를 재기록하는 등의 데이터 변조 대책으로서 “메시지 다이제스트"가 이용된다.
메시지 다이제스트는 특정 데이터에서 고유한 짧은 데이터(해시 값)를 검색하는 계산입니다. 따라서, 데이터를 송수신 할 때 해시 값을 비교하여 변조를 검출 할 수 있다.

스푸핑 방지

Web 서버에 “SSL 서버 인증서"라고 하는 전자 인증서를 배치해 두고, 접속시에 검증하는 것으로 Web 사이트 운영자의 신원을 확인할 수 있다.
또, 이 인증서는 발행을 인정된 “인증 기간"에 의한 운영자의 인증 작업을 거쳐야 한다. 신뢰할 수 없는 발행원의 인증서가 이용되고 있다면 웹 브라우저상에 경고 화면이 표시된다.

HTTPS의 보안 작동 방식

클라이언트(웹브라우저)에서 일반 http가 아닌 https Scheme을 갖는 URL 주소를 입력 받으면, 웹서버에 80번이 아닌 443번 포트번호로 TCP 연결을 하여 바이너리 포멧으로 된 몇몇 보안 매개변수를 교환(핸드세이크, 키 교환)한다. 그러고, 그와 관련된 HTTPS 명령들이 실행하게 된다.

HTTPS 교환

HTTPS에서의 통신을 시작하기 위해서는 크게 나누어 아래의 4개의 페이즈의 교환을 하게 된다.

  1. 암호화 방식 결정
    암호화 방식은 여러가지가 있어서 웹 브라우저와 웹 서버가 모두 이용 가능한 암호화 방식을 결정해야 한다. TLS 버전이나 메시지 다이제스트 방식도 동시에 결정한다.
  2. 통신 상대의 증명
    웹 브라우저가 통신하는 웹 서버가 올바른 대상인지 SSL 서버 인증서로 확인한다. 확인할 수 없으면 웹 브라우저에 경고가 표시된다.
  3. 키 교환
    데이터 전송시에 이용하는 “키"를 교환한다. 키는 데이터를 전송할 때의 암호화, 해독시의 복호화에 이용된다.
  4. 암호화 방식 확인
    실제로 이용하는 암호화 방식의 최종 확인 작업을 실행한다. 이 단계가 완료되면 암호화 통신이 시작된다.

HTTPS에서 이러한 네 단계의 상호 작용을 “SSL/TLS 핸드셰이크"라고 한다.

HTTPS의 서버 인증서

서버 인증서는 서버와 클라이언트 간에 암호화된 통신을 수행하는 전자 인증서로 인증 기관에서 발급한다.

X.509에 기반한 인증서로써, 인증서에 웹 사이트 정보가 추가된다.

서버 인증서에 포함된 주요 필드들

  • 인증서 일련번호 및 유효기간
  • 웹 사이트의 이름
  • 웹 사이트의 DNS 호스트명 (FQDN)
  • 웹 사이트의 공개키
  • 서명 기관(인증기관)의 이름
  • 서명 기관(인증기관)의 디지털서명 등

웹 사이트 정보에 대한 인증서 주요 검사 (웹브라우저가 수행함)

  • 날짜 검사
    • 인증서 유효기간 검사 (만료,활성화 여부 등)
  • 서명자 유효성 검사
    • 올바른 인증기관에서 파생된 인증서인지를 검사 (신뢰 사슬)
  • 서명 검사
    • 인증서 무결성 검사
  • 사이트 신원 검사
    • 인증서에 명시된 도메인명과 실제 도메인명이 부합되는가를 검사
    • 통상, 단일 도메인명이지만, 서버 팜(서버 클러스터)을 위해, 와일드카드(*) 표현 허용
  • 가상 호스팅 검사
    • 하나의 서버에 여러 사이트/호스트를 운용하는 경우로써, 다소 비 보안적이고 부가적인 관리/절차 등이 필요
    • 원칙적으로, (IP주소):(포트번호 443)에 단 하나의 인증서 만을 매핑시켜 암호화하나,
    • 단일 서버에 여러 호스트가 운영되면, 각각을 식별 보안화하기에는 비용적으로 불리하여,
    • 단순 텍스트(Server Name Indication)로 서버명을 노출(평문)시킬 수 있도록 보안성 완화
      • RFC 4366 (Transport Layer Security (TLS) Extensions)

참고