얄팍한 코딩 사전 HTTPS / 대칭키
인증된 보안 기관에 의해 보안이 적용된 통신 규약
공개키라고도 불리며, 공개키와 개인키 다른 두가지 키를 이용하는 방법
공개키는 개인키로만 풀리며, 개인키는 공개키로만 풀린다.
A < --- > B
공개키의 진위 여부만 검증할 수 있다면 안전하게 신호를 주고 받을 수 있다.
그러나 한가지 문제가 있는데, 모든 신호를 이렇게 비대칭키로 신호를 주고 받으면 트래픽이 과해진다.
비대칭키 + 공개키
Client의 내장 브라우저 (크롬,파이어폭스 등등) 에는 해당 CA의 개인키로 암호화 된 내장 인증서를 갖고 있다.
처음 Server와 Client가 연결될 때는 Client입장에서는 Server를 신뢰하지 못한다.
처음에 Client와 Server는 무작위 data a,b를 주고 받는다. 이 과정을 HandShaking(악수)라고 한다.
무작위 data를 주고 받을 때, 서버는 Client에게 인증서의 공개키, 그리고 서버의 공개키가 포함된 인증서를 보낸다.
Client는 인증서를 CA인증서로 풀어본다. CA 인증서는 개인키로 암호화 돼있기 때문에 서버에서 보낸 인증서의 공개키로 풀리지 않는다면 서버는 가짜인 것이다.
HandShaking 했을 때 임의의 문자열을 임시키로 만든다.
공개키를 주고 받는 방식에 비공개키 방식이 개입하는 것이다.
같은 data를 갖고 있으므로, 그 값으로 일련의 과정을 통해 같은 키를 만든다. 그 키를 대칭키로 사용한다.
비대칭키를 사용하면 traffic이 너무 과다하기 때문에 공개키를 주고 받는 방식에만 비대칭키 방법을 사용하고, 같은 공개키를 갖고 나서는 공개키를 갖고 신호를 주고 받는다.
HandShaking
CA로 서버 인증서 안의 공개키 검증
인증서 안의 서버 공개키로 HandShaking data 암호화
서버에게 보내서 그 키를 공개키로 생성
생성된 공개키는 오직 둘만 앎으로, 그 공개키로 소통