[네트워크] HTTPS가 동작하는 방식

HTTPS가 동작하는 방식

HTTPS와 HTTP

HTTP

HTTPS

SSL 디지털 인증서

클라이언트와 서버간의 통신을 공인된 제 3자 업체(CA)가 보증해주는 전자화된 문서

SSL과 TLS

SSL(Secure Socket Layer)와 TLS(Transport Layer Security)는 같은 것이라고 볼 수 있다. SSL은 TCP/IP 암호화 통신에 사용되는 규약으로써 넷스케이프에서 만들었으며, SSL 3.0 버전에서부터 IETF에서 표준으로 정해서 TLS 1.0이 되었다. 하지만 보통 SSL로 많이 불려진다.

** IETF(Internet Engineering Task Force): 국제 인터넷 표준화 기구로 인터넷의 운영, 관리 개발에 대해 협의하고 프로토콜과 구조적인 사안들을 분석하는 표준화 작업 기구.

인증서의 장점

SSL에서 사용하는 암호화의 종류

대칭키 암호화 방식

** AES(Advanced Encryption Standard): 고급 암호화 표준이라는 용어로 사용되며 높은 안정성과 속도로 많이 사용됨.

공개키 암호화 방식

HTTPS 통신에서 실제 전송되는 데이터의 암호화에는 대칭키 암호화 방식을 사용하고, 키 교환에는 공개키(비대칭키) 암호화를 사용하여 처리 속도가 느린 문제를 해결하고 있다.

디지털 서명

해싱, 서명, 검증 세가지 기본 단계로 이루어진다.

  1. 정보를 해싱한다.
    • 정보 해싱은 필수적인 부분은 아니다.
  2. 해시된 정보에 메시지 발신자의 서명을 작성한다(공개키로 암호화 된다). 이때의 서명에서 개인 키가 포함되지 않는 경우, 메시지 수신자는 유효성을 검증하기 위해 상응하는 공개 키를 사용할 수 없다. 공개키와 개인키는 모두 메시지 발신자에 의해 생성되야하고, 수신자에게는 공개키만 공유된다.
  3. 메시지 수신자는 발신자가 제공한 공개키를 통해 디지털 서명의 유효성을 확인할 수 있다. 이는 발신자만이 공개키에 상응하는 개인키를 가지고 있기 때문이다.

** 디지털 서명이 중요한 이유

인증기간(CA)

HTTPS 통신은 제3자 인증을 사용한다. 인증기관으로부터 공인인증서를 발급받아서 서버에 설치해야 경고 없이 HTTPS 통신이 가능하다. 인증기관의 인증을 받았다는 것은 웹서비스를 제공하는 소유자를 보증해준다는 의미다. 자세히는 웹 서비스 제공자의 공개키가 소유자의 것이라는 것을 보증해주는 말과 같다.

  1. HTTPS로 웹서비스를 제공하려는 사람이 자신의 공개키와 개인키를 생성(공개키와 개인키를 생성하는 작업은 보통 CA에서 대신 생성해주기도 한다.)
  2. 공개키를 인증기관에 송부
  3. 인증기관은 보내온 공개키, 유효기관, 도메인 등의 정보를 포함하여 인증기관의 개인키로 전자서명한 인증서를 발급
  4. 웹 서비스를 제공하려는 사람은 발급 받은 인증서와 자신의 캐인키를 웹 서버에 설정하여 HTTPS 통신을 할 수 있게 한다.

웹 브라우저에는 이미 여러 인증기관의 공개키를 포함한 인증서가 설치되어 있다. 그래서 웹서버와 통신 시 인증기관의 개인키로 서명된 인증서를 받았을 때 이미 설치되어 있는 인증기관의 공개키로 복호화가 가능한것.

개발 목적이나 내부에서 사용할 목적으로 사설 인증서를 만들 경우 웹 브라우저에 인증서를 수동으로 설치해야만 경고 없이 통신이 계속 가능하다.

SSL 동작 방식

컴퓨터와 컴퓨터가 그 사이의 네트워크로 통신을 하기 위해서는 핸드쉐이크 -> 세션 -> 세션종료의 과정을 거친다.

암호화된 HTTP(HTTPS)메세지를 교환하기 전에 클라이언트와 서버는 SSL 핸드쉐이크를 진행한다.

  1. 브라우저가 도메인에 접속하면, 웹 서버는 CA에서 발급받은 인증서를 웹 브라우저에 보낸다.
  2. 이 인증서에는 CA의 개인키로 암호화된 사이트의 정보와 공개키가 들어있다.
  3. 웹 브라우저는 이미 가지고 있는 인증기관의 공개키로 웹 서버에서 받은 인증서를 복호화해서 확인한다.
  4. 웹 브라우저는 실제 데이터의 암호화에 사용될 대칭키를 생성하고, 인증서에서 꺼낸 웹 서버 측의 공개키로 암호화하여 웹 서버로 보낸다.
  5. 웹 서버는 브라우저에서 보내온 암호화된 대칭키를 개인키로 복호화하여 확인한다.
  6. 웹 서버는 복호화한 대칭키를 통하여 데이터를 암호화하여 주고 받는다.

공개키 암호 방식은 알고리즘 계산 방식이 느린 경향이 있으므로 위처럼 공개키와 대칭키방식을 혼합하여 사용한다.

  1. 안전한 의사소통 채널을 수립할 때는 공개키 암호화 방식을 사용
  2. 위를 통해 수립된 대화채널에서는 조금 더 빠른 소통을 위해 무작위 대칭키를 생성하여 전반적으로 빠른 대칭키 암호화 방식을 통한 소통을 이룬다.