Programming
HTTPS 에 관하여..
Ginjoe
2022. 7. 13. 01:37
HTTPS 에 관하여..
HTTPS 란?
IP(3계층) 위에 TCP(4계층) 위에 SSL/TSL(5계층) 위에 HTTP(6계층) 를 사용하는데 SSL 로 암호화를 해서 보안성을 높였다.
대칭키를 사용하는데, 이 대칭키를 교환하기 위해서 비대칭키를 사용하여 보안을 유지한다.
과정
- RSA 등의 비대칭 암호화 방법을 이용해서 서버에서 개인키(private)/공용키(public) 을 만들어둔다.
- 서버의 개인키를 인증기관을 통해 인증기관의 공용키로 감싸 인증서를 받아둔다.
- 클라이언트가 접속 시, 인증서를 보내주고 클라이언트는 인증기관의 인증서를 확인하면서 서버의 공용키를 꺼낸다.
- 곧바로 서버의 비대칭키를 이용하여 데이터를 암복호화 하여 사용할 수도 있을 것 같으나, 성능 이슈로 대칭키를 사용한다.
- 클라이언트에서 대칭키를 만들어서, 서버의 공용키로 암호화하여 서버로 보낸다.
- 서버는 개인키로 대칭키를 복호화하여 받아둔다.
- 그 이후로는 대칭키로 데이터를 주고 받는다.
Cipher suite
- SSL/TLS 통신 시, 키 교환 방식/암호화 방식 등의 상세 스펙을 정의해둔다.
- 클라이언트에서 지원 가능한 내용을 최초에 보내는 내용
Cipher spec
- Change Cipher Spec 프로토콜은 Handshake 과정에서 데이터 암호화용 대칭키 생성이 완료되고 나면 이후부터 데이터를 암호화하라는 신호
- 서버에서 보내는 내용