본문 바로가기

Programming

HTTPS 에 관하여..

HTTPS 에 관하여..

HTTPS 란?

IP(3계층) 위에 TCP(4계층) 위에 SSL/TSL(5계층) 위에 HTTP(6계층) 를 사용하는데 SSL 로 암호화를 해서 보안성을 높였다.
대칭키를 사용하는데, 이 대칭키를 교환하기 위해서 비대칭키를 사용하여 보안을 유지한다.

과정

  1. RSA 등의 비대칭 암호화 방법을 이용해서 서버에서 개인키(private)/공용키(public) 을 만들어둔다.
  2. 서버의 개인키를 인증기관을 통해 인증기관의 공용키로 감싸 인증서를 받아둔다.
  3. 클라이언트가 접속 시, 인증서를 보내주고 클라이언트는 인증기관의 인증서를 확인하면서 서버의 공용키를 꺼낸다.
  4. 곧바로 서버의 비대칭키를 이용하여 데이터를 암복호화 하여 사용할 수도 있을 것 같으나, 성능 이슈로 대칭키를 사용한다.
  5. 클라이언트에서 대칭키를 만들어서, 서버의 공용키로 암호화하여 서버로 보낸다.
  6. 서버는 개인키로 대칭키를 복호화하여 받아둔다.
  7. 그 이후로는 대칭키로 데이터를 주고 받는다.

Cipher suite

  • SSL/TLS 통신 시, 키 교환 방식/암호화 방식 등의 상세 스펙을 정의해둔다.
  • 클라이언트에서 지원 가능한 내용을 최초에 보내는 내용

Cipher spec

  • Change Cipher Spec 프로토콜은 Handshake 과정에서 데이터 암호화용 대칭키 생성이 완료되고 나면 이후부터 데이터를 암호화하라는 신호
  • 서버에서 보내는 내용

Reference