[Network] SSL Handshaking
Client - Server 사이에서 HTTPS가 어떻게 적용되는지 좀 더 구체적으로 알아보자.
HTTPS 동작 방식은 다음 3가지로 나눌 수 있다.
여기서 암호화 방식에 대한 이해가 선행되어야 하는데, 이 글에서 참고하자.
암호화 방식 (대칭키, 비대칭키)
암호화 방식에는 다음 두 가지가 있다. 1. 대칭키 암호화 방식 암호화 / 복호화를 동일한 키로 진행한다. ⚠️ 키가 노출되면 복호화가 가능하기 때문에 정보 유출 가능성이 있다. 2. 비대칭키
eunjiha.tistory.com
서버의 인증서 발급
1. 서버는 CA(Certificate Authority)로부터 SSL 인증서를 발급받는다.
- SSL 인증서는 CA의 비밀키로 암호화된 상태이다. (CA의 비밀키는 어떤 경우든 유출되면 안된다.)
- SSL 인증서에는 서버의 공개키가 포함되어 있다.
SSL Hanshake
1. 클라이언트가 서버에 초기 접속을 한다. (클라 -> 서버)
2. 서버는 클라이언트에 SSL 인증서를 제공한다. (클라 <- 서버)
3. 클라이언트는 SSL 인증서 검증을 진행한다. (클라)
(이미 알려진) CA의 공개키로 SSL를 복호화한다.
CA의 공개키로 복호화가 되었다는 것은 CA가 발급한 인증서가 맞음을(CA의 비밀키로 암호화된 것이 맞음을) 입증하는 것이다.
4. (추후 데이터 암호화에 사용할) 대칭키를 생성하고, SSL 인증서에 포함된 서버의 공개키로 암호화해서 서버에 보낸다. (클라 -> 서버)
5. 서버는 암호화된 대칭키를 서버의 비밀키로 복호화해서 대칭키를 얻는다. (서버)
HTTPS 통신
1. 클라이언트는 대칭키를 통해 데이터를 암호화 하여 서버에 보낸다.
2. 서버는 대칭키를 통해 데이터를 복호화 하여 데이터를 얻는다.
여기서 알 수 있듯, HTTPS는 대칭키 암호화 방식, 비대칭키 암호화 방식을 혼합해서 사용한다.
비대칭키 암호화 방식은 대칭키 암호화 방식에 비해 부하가 크기 때문이다.
- 비대칭키 암호화 방식: 대칭키를 통신할 때
- 대칭키 암호화 방식: 데이터를 통신할 때
즉, SSL Handshake 과정에서 대칭키를 주고 받을 때는 비대칭키 방식을 통해 (서버의 공개키, 비밀키) 대칭키을 안전하게 주고 받고
Handshake 이후 HTTPS 통신 과정에서는 앞서 주고 받은 대칭키 방식을 통해 (대칭키) 데이터를 주고 받는다.