HTTPS와 SSL 인증서, SSL 동작방법
11 Mar 2018 | ssl https 인증서 전자서명 ssl 통신과정생활코딩의 ‘https와 ssl 인증서’ 수업과 HTTP 완벽가이드 14장 ‘보안 HTTP’을 읽고 정리한 내용입니다. 개인공부 후 자료를 남기기 위한 목적임으로 내용 상에 오류가 있을 수 있습니다.
HTTP & HTTPS
- HTTP
- 인터넷 상에서 정보를 주고 받기위한 프로토콜(양식과 규칙의 체계)
- 클라이언트와 서버 사이에 이루어지는 요청/응답 프로토콜
- 암호화되지 않은 방법으로 데이터를 전송한다. (악의적인 감청, 데이터 변조의 가능성)
- HTTPS
- 보안이 강화된 HTTP
- Hypertext Transfer Protocol Over Secure Socket Layer의 약자
- 모든 HTTP 요청과 응답 데이터는 네트워크로 보내지기 전에 암호화된다.
- HTTPS는 HTTP의 하부에 SSL과 같은 보안계층을 제공함으로써 동작한다.
SSL 디지털 인증서
- 클라이언트와 서버간의 통신을 공인된 제3자(CA) 업체가 보증해주는 전자화된 문서
SSL 인증서의 장점 및 역할
- 통신 내용이 노출, 변경되는 것을 방지
- 클라이언트가 접속하려는 서버가 신뢰 할 수 있는 서버인지 확인가능
- SSL 통신에 사용할 공개키를 클라이언트에게 제공한다.
SSL에서 사용하는 암호화의 종류
- 암호 : 텍스트를 아무나 읽지 못하도록 인코딩하는 알고리즘
- 키 : 암호의 동작을 변경하는 매개변수, 키에 따라서 암호화 결과가 달라지기 떄문에 키를 모르면 복호화가 불가능하다.
대칭키 암호화 방식
- 인코딩과 디코딩에 같은 키를 사용하는 알고리즘
- 단점 : 단점은 발송자와 수신자가 서로 대화하려면 둘 다 공유키를 가져야 한다는 것이다.
- 대칭키를 전달하는 과정에서 키가 유출이 되면 암호의 내용을 복호화할 수 있기 때문에 위험하다
- 이를 보완하기 위해서 나온 방법이 공개키 암호화 방식이다.
공개키 암호화 방식
- 인코딩과 디코딩에 다른 키를 사용하는 알고리즘
- A키로 암호화를 하면 B키로 복호화를 할 수 있고, B키로 암호화 하면 A키로 복호화 할 수 있는 방식
- 인코딩 키 (public key)는 공개되어 있으며 (그래서 공개키 암호방식이라는 이름이 붙었다.) 보통 디지털 인증서안에 포함되어 있다.
- 디코딩 키는 (secret key)는 호스트만이 개인 디코딩 키를 알고있다.
- 공개키와 비공개키의 분리는 메시지의 인코딩은 누구나 할 수 있도록 해주는 동시에, 메시지의 디코딩은 비밀키 소유자에게만 부여한다.
- 이는 클라이언트가 서버로 안전하게 메시지를 발송하는 것을 쉽게 해준다.
- 단점 : 공개키 암호화 방식의 알고리즘은 계산이 느린 경향이 있다.
디지털 서명
- 전자 서명을 통해서 누가 메시지를 썼는지 알려주고, 메시지가 위조되지 않았음을 증명할 수 있다. 전자서명은 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의 동작방법에 아주 쉽게 설명되어 있어서 함께 참고하면 좋다.