HTTPS와 SSL 인증서, SSL 동작방법

|

생활코딩의 ‘https와 ssl 인증서’ 수업과 HTTP 완벽가이드 14장 ‘보안 HTTP’을 읽고 정리한 내용입니다. 개인공부 후 자료를 남기기 위한 목적임으로 내용 상에 오류가 있을 수 있습니다.

HTTP & HTTPS

views
HTTPS는 HTTP를 안전하게 만드는 방식이다
  • HTTP
    • 인터넷 상에서 정보를 주고 받기위한 프로토콜(양식과 규칙의 체계)
    • 클라이언트와 서버 사이에 이루어지는 요청/응답 프로토콜
    • 암호화되지 않은 방법으로 데이터를 전송한다. (악의적인 감청, 데이터 변조의 가능성)
  • HTTPS
    • 보안이 강화된 HTTP
    • Hypertext Transfer Protocol Over Secure Socket Layer의 약자
    • 모든 HTTP 요청과 응답 데이터는 네트워크로 보내지기 전에 암호화된다.
    • HTTPS는 HTTP의 하부에 SSL과 같은 보안계층을 제공함으로써 동작한다.
views
HTTPS는 TCP위에 놓인 보안계층(SSL)위의 HTTP이다

SSL 디지털 인증서

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

SSL 인증서의 장점 및 역할

  • 통신 내용이 노출, 변경되는 것을 방지
  • 클라이언트가 접속하려는 서버가 신뢰 할 수 있는 서버인지 확인가능
  • SSL 통신에 사용할 공개키를 클라이언트에게 제공한다.

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

  • 암호 : 텍스트를 아무나 읽지 못하도록 인코딩하는 알고리즘
  • 키 : 암호의 동작을 변경하는 매개변수, 키에 따라서 암호화 결과가 달라지기 떄문에 키를 모르면 복호화가 불가능하다.

대칭키 암호화 방식

  • 인코딩과 디코딩에 같은 키를 사용하는 알고리즘
  • 단점 : 단점은 발송자와 수신자가 서로 대화하려면 둘 다 공유키를 가져야 한다는 것이다.
  • 대칭키를 전달하는 과정에서 키가 유출이 되면 암호의 내용을 복호화할 수 있기 때문에 위험하다
  • 이를 보완하기 위해서 나온 방법이 공개키 암호화 방식이다.

공개키 암호화 방식

  • 인코딩과 디코딩에 다른 키를 사용하는 알고리즘
  • A키로 암호화를 하면 B키로 복호화를 할 수 있고, B키로 암호화 하면 A키로 복호화 할 수 있는 방식
  • 인코딩 키 (public key)는 공개되어 있으며 (그래서 공개키 암호방식이라는 이름이 붙었다.) 보통 디지털 인증서안에 포함되어 있다.
  • 디코딩 키는 (secret key)는 호스트만이 개인 디코딩 키를 알고있다.
  • 공개키와 비공개키의 분리는 메시지의 인코딩은 누구나 할 수 있도록 해주는 동시에, 메시지의 디코딩은 비밀키 소유자에게만 부여한다.
  • 이는 클라이언트가 서버로 안전하게 메시지를 발송하는 것을 쉽게 해준다.
  • 단점 : 공개키 암호화 방식의 알고리즘은 계산이 느린 경향이 있다.

디지털 서명

views
디지털 서명의 동작방식



  • 전자 서명을 통해서 누가 메시지를 썼는지 알려주고, 메시지가 위조되지 않았음을 증명할 수 있다. 전자서명은 SSL 인증서 에서 서비스를 보증하는 방법으로 활용된다.
  • 공개키와 비공개키는 안전한 데이터 전달 이외에도, 데이터 제공자의 신원을 보장 하는데 사용할 수 있다.
  • 비공개키의 소유자가 비공개 키를 이용해서 정보를 암호화 => 공개키와 함께 암호화된 정보를 전송 => 수신자는 공개키로 암호화된 정보를 복호화
  • 암호화된 데이터를 공개키를 가지고 복호화 할 수 있다는 것은 그 데이터가 공개키와 쌍을 이루는 비공개키에 의해서 암호화 되었다는 것을 의미한다.
  • 즉 공개키가 데이터를 제공한 사람의 신원을 보장해주게 되는 것이다. 이러한 것을 전자 서명이라고 부른다.

CA (Certificate Authority)

  • 디지털 인증서를 제공하는 공인된 기업 (Certificate Authority 혹은 Root Certificate)
  • 대표적인 CA 서비스 제공 기업과 시장점유율
    • Symantec (VeriSign, Thawte, Geotrust) with 42.9% market share
    • Comodo with 26%
    • GoDaddy with 14%
    • GlobalSign with 7.7%

SSL 인증서의 서비스 보증방법 및 동작방법

인증서 내용

  • 인증서의 내용은 CA의 비공개 키를 이용해서 암호화 되어 웹브라우저에게 제공된다.
    • 서비스 정보 (인증서 발급자, CA의 디지털 서명,서비스 도메인)
    • 서버측 공개키

SSL 인증서의 서비스 보증방법

  • 웹브라우저가 서버에 접속하면 서버는 제일 먼저 인증서를 제공한다.
  • 브라우저는 인증서를 발급한 CA가 자신이 갖고있는 CA 리스트에 있는지 확인한다.
  • 리스트에 있다면 해당 CA의 공개키를 이용해서 인증서를 복호화 한다.
  • 인증서를 복호화 할 수 있다는 것은 이 인증서가 CA의 비공개키에 의해서 암호화 된 것을 의미한다. 즉 데이터를 제공한 사람의 신원을 보장해주게 되는 것이다.

SSL 동작방법

  • 공개키 암호 방식은 알고리즘 계산방식이 느린 경향이 있다.
  • 따라서 SSL은 암호화된 데이터를 전송하기 위해서 공개키와 대칭키 암호화 방식을 혼합하여 사용한다.
  • 안전한 의사소통 채널을 수립할 때는 공개키 암호를 사용하고, 이렇게 만들어진 안전한 채널을 통해서 임시의 무작위 대칭키를 생성 및 교환한다. 해당 대칭키는 나머지 데이터 암호화에 활용한다.
    • 실제 데이터 암호화 방식 : 대칭키
    • 상기 대칭키를 서로 공유하기 위한 암호화 방식 : 공개키

SSL 통신과정

  • 컴퓨터와 컴퓨터가 네트워크를 통해서 통신을 할때 핸드쉐이크 -> 세션 -> 세션종료 의 과정을 거친다.
  • 암호화된 HTTP 메시지를 교환하기 전에 클라이언트와 서버는 SSL 핸드쉐이크를 진행한다.
  • 핸드쉐이크의 목적은 아래와 같다.
    • 프로토콜 버전번호 교환
    • 양쪽이 알고 있는 pre master secret 키 생성 및 교환
    • 양쪽의 신원 인증
    • 채널을 암호화 하기 위한 임시 세션 키 생성
  • SSL 통신과정을 간단하게 도식화 하면 아래와 같다.
  • 생활코딩 SSL의 동작방법에 아주 쉽게 설명되어 있어서 함께 참고하면 좋다.



views

참고