HTTPS가 뭐고 왜 쓰나요? (Feat. 대칭키 vs. 비대칭키)
암호화, 복호화에 같은 키를 사용하는 암호화 방식
- 공개키에 비해 속도가 빠름
- 키를 교환 할 때 키가 탈취될 수 있음
- 사용자가 증가할수록 키를 따로 교환해야하기 때문에 관리해야할 키가 방대해짐
암호화, 복호화에 사용하는 키가 서로 다른 암호화 방식
- 송수신자 모두 한쌍의 키를 갖게 된다.
- 대칭키 키교환 문제 해결하기위해 등장
- 공개키는 모든사람이 접근가능한 키, 개인키는 각 사용자가 가지고 있는 키
- 사용자가 본인의 개인키로 데이터를 복호화
1) B 공개키/개인키 쌍 생성
2) 공개키 공개(등록), 개인키는 본인이 소유
3) A가 B의 공개키를 받아옴
4) A가 B의 공개키를 사용해 데이터를 암호화
5) 암호화된 데이터를 B에게 전송
6) B는 암호화된 데이터를 B의 개인키로 복호화 (개인키는 B만 가지고 있기 때문에 B만 볼 수 있음)
SSL 탄생의 시초가 됨
1. A가 B의 공개키로 암호화 통신에 사용할 대칭키를 암호화하고 B에게 보냄
2. B는 암호문을 받고, 자신의 비밀키로 복호화함
3. B는 A로부터 얻은 대칭키로 A에게 보낼 평문을 암호화하여 A에게 보냄
4. A는 자신의 대칭키로 암호문을 복호화함
5. 앞으로 이 대칭키로 암호화를 통신함
즉, 대칭키를 주고받을 때만 공개키 암호화 방식을 사용하고 이후에는 계속 대칭키 암호화 방식으로 통신하는 것!
네이버가 공개키를 뿌린다
네이버인지 어떻게 검증하는가 ? - CA
- 브라우저에 CA의 목록이 내장되어 있다.
클라이언트가 랜덤데이터를 생성해서 보냄
서버는 답변으로 서버측에서 생성한 무작위의 데이터와 인증서를 실어보냄
⇒ hadshaked
클라이언트는 인증서가 진짜인지 CA정보를 통해 확인 → 비대칭키 시스템 활용