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 과정에서 데이터 암호화용 대칭키 생성이 완료되고 나면 이후부터 데이터를 암호화하라는 신호
- 서버에서 보내는 내용
Reference
'Programming' 카테고리의 다른 글
DispatcherServlet 에 관하여... (스프링 디스패처서블릿) (0) | 2022.07.22 |
---|---|
GRASP 책임할당패턴에 대하여... (0) | 2022.07.19 |
[Codility] Chapter 9. Maximum slice problem, 최대 구간 문제 (0) | 2022.04.02 |
DI 와 IoC 에 대한 개념과 스프링 (2) | 2022.04.01 |
Docker 이용해서 MySQL 설치 후 접속 예제 (0) | 2022.03.28 |