그 외 공부/네트워크
[네트워크] HTTPS, SSL HandShake란?
SeongOnion
2021. 5. 22. 22:20
728x90
HTTPS
HTTPS란?
- HTTP 프로토콜의 보안버전 - S(Secure)
HTTP의 약점
- 암호화가 되지 않은 평문 통신으로, 도청이 가능하다.
- 통신하려는 상대를 확인하지 않는다
HTTP의 약점을 보완하기 위해선 암호화가 필요하다 🔑
암호화 알고리즘
1. 대칭키
암호화와 복호화에 동일한 키를 사용하는 것
대칭키의 장점
- 송신자와 수신자가 동일한 키를 가지고 있기 때문에, 암호화 - 복호화 과정이 단순하며 속도가 빠르다.
대칭키의 단점
- 어쨌든 송신자와 수신자 간 키 교환이 이루어져야한다.
- 키 교환 과정에서 키가 노출되면 암호가 무력해진다.
- 수신자와 송신자가 늘어날수록 그만큼 관리해야할 키가 하나 씩 증가해 관리가 어려울 수 있다.
2. 비대칭키(공개키)
암호화와 복호화에 다른 키를 사용하는 것
비대칭키의 장점
- 단 하나의 공개키를 사용함으로써 모든 수신자와 개별 키를 만들 필요가 없다.
- 암호화 후 데이터를 송신하는 과정에서 키를 탈취당하더라도 해당 키로 복호화는 할 수 없기 때문에 공개키 방식보다 안전하다.
비대칭키의 단점
- 암호화 - 복호화에 서로 다른 키를 사용하므로 대칭키와 비교해 속도가 느리다.
HTTPS의 암호화 방식
SSL 이란?
- 기존 OSI 7계층에서 '보안 계층' 이라는 독립적인 프로토콜 계층을 만들어, 응용계층과 전송계층 사이에 위치
- TLS는 SSL의 후속버전이지만 일반적으로 SSL이 더 많이 사용되는 용어
- CA(Certificate Authority)라는 인증기간에서 발급
- 웹사이트가 신뢰할 수 있는 곳이라는 인증서
SSL HandShake
HandShake의 흐름
1) TCP 3 way HandShake를 우선적으로 거친다.
2) C(Client)👦 : 컴퓨터가 자신의 버전, 암호 알고리즘 목록, 사용 가능한 압축 방식을 "Client Hello" 메시지에 담아 서버로 전송
3) S(Server)💻 : 클라이언트가 제공한 암호 알고리즘 목록, 압축 방식 목록 중 선택 / 세션 ID, CA에서 사인한 서버의 공개 인증서를 "ServerHello"에 담아 전송
4) C👦 : 서버가 보낸 SSL 인증서가 CA 목록에 있는지 확인 (크롬, 사파리 등 브라우저에 CA 목록이 탑재) -> SSL이 확인되면 클라이언트와 서버가 사용할 대칭키를 형성하기 위해 난수 바이트를 생성해 서버의 공개키로 암호화 후 전송
5) S💻 : 클라이언트가 보낸 대칭키를 서버의 개인키로 복호화
HandShake에서 사용하는 암호화 방식
1) 서버가 "ServerHello"에서 보내는 SSL 인증서를 브라우저에 내장되어 있는 CA의 공개키로 복호화
2) CA의 공개키로 복호화 된 SSL 인증서에는 서버의 공개키가 들어있음
3) 클라이언트가 대칭키를 생성하고, 이를 SSL 인증서에서 얻은 서버의 공개키로 암호화 후 서버에 전송
4) 서버는 자신의 개인키로 클라이언트에게 받은 대칭키를 복호화
✅ 결론
대칭키를 전달하기 위해 비대칭키를 사용한다 - 대칭키 / 비대칭키를 모두 사용한다!
- 보안성 ⬆
- 효율성 ⬆