꼬꼬마 블로그

꼬꼬마의 기술 블로그

tistory 블로그를 운영하기 전 개인 블로그를 잠시 운영했습니다. 이때 https 를 적용한 경험을 공유했었습니다 (공유된 글)

 

그때 https에 대해 자세히 다루지 못했습니다. 이번 글에서 조금 더 자세히 https에 대해 공부해보도록 하겠습니다.

암호화 방식

공개키(비대칭키)

공개키 방식의 암호화는 서로 다른 키 2개가 있습니다. A 키로 암호화 한 경우B 키로 복호화 반대로 B 키로 암호화 한 경우A 키로 복호화 합니다.

 

이때 암호화한 키로는 복호화할 수 없습니다.

대칭키

대칭키 방식은 흔히 아는 방식입니다. 하나의 키를 통해 암호화, 복호화 합니다.

쉽게 말해 키가 4 이고 키를 곱하는 알고리즘을 가진다면 312 가 되고, 복호화하려면 알고리즘을 반대로 풀면 됩니다. 대칭키는 간단하죠?

 

공개키보단 빠른 속도로 암호화, 복호화할 수 있습니다.

 

HTTS의 동작 방식

두가지 방식을 숙지하셨다면 HTTPS의 동작 방식을 알 수 있습니다.

 

먼저 동작 방식을 설명하기 앞서 CA(인증기관)이 무엇인지 알아보도록 하겠습니다. CA는 까다로운 절차를 통해 인정되며 인증서를 발급하는 기관입니다. 인증서가 무엇인가에 대해선 동작 방식을 공부하며 알아보도록 하겠습니다.

 

공개키 방식에서 개인키는 사이트 혹은 기관에서 외부로 노출하지 않는 키를 말하며 공개키는 외부로 노출되는 키를 말합니다. 이때 주고받는 데이터가 노출되어도 개인키가 없다면 데이터를 복호화할 수 없겠죠?

 

인증서 발급
  1. 서버는 자신의 정보와 공개키를 CA에 제출
  2. 해당 데이터를 검증하는 절차를 밟은 후 CA의 개인키로 서버의 데이터(공개키 + 정보)를 암호화 (인증서 발급)
  3. CA는 웹 브라우저에게 자신의 공개키를 제공
서버 접속 시
  1. 클라이언트와 서버는 handshake를 통해 랜덤한 데이터를 주고 받고 CA의 개인키로 암호화된 사이트의 인증서를 받음
  2. 브라우저의 CA 목록 중 CA 공개키를 통해 복호화 되는 데이터가 있는지 확인 및 복호화 (없다면 CA에서 발급한 인증서가 아님)
  3. 복호화된 데이터는 요청한 서버의 공개키와 서버의 정보가 있음.
  4. handshake 시 주고받은 랜덤한 데이터를 통해 임시키를 만들고 해당 임시키를 인증서에서 복호화한 공개키를 통해 암호화하여 서버로 전송
  5. 임시키에 일련의 과정을 거쳐 동일한 대칭키를 만들어 대칭키로 통신