-
HTTPS의 동작 원리Network 2024. 1. 27. 15:40728x90
HTTPS란 HTTP에 암호 계층(SSL/TLS)을 추가한 개념의 프로토콜입니다. HTTPS는 데이터를 암호화하여 전송하기 위해 인증서를 통해 신뢰할 수 있는 서버인지 확인하고 서로가 함께 알 수 있는 암호화 키를 사용하여 데이터를 암호화합니다.
SSL/TLS Handshake
- 클라이언트에서 사용 가능한 암호화/해시 알고리즘과 랜덤한 값, SSL/TLS 버전 정보를 서버에 전달합니다.
- 서버는 받은 암호화/해시 방식 중 우선순위가 높은 알고리즘과 랜덤한 값, 자신을 증명하기 위한 인증서를 클라이언트에 전달합니다.
- 클라이언트는 서버의 인증서가 올바른지 확인하기 위해 저장되어있는 CA 공개키로 인증서를 복호화합니다.
- 클라이언트는 자신이 만든 랜덤한 값과 서버에서 내려준 랜덤한 값을 사용하여 premaster secret을 만들고 이를 서버에 전송합니다.
- 서버는 premaster secret을 복호화하고 이를 master secret으로 저장합니다. 생성된 master secret으로 클라이언트와의 연결에 고유한 값을 부여하기 위한 세션키를 생성합니다. 이때 세션키는 대칭키 암호화에 사용되는 키로 클라이언트, 서버간의 주고받는 데이터를 암/복호화합니다.
- SSL/TLS 핸드셰이크를 완료
대칭키 암호화
대칭키 암호화는 서버와 클라이언트가 동일한 키를 사용하는 암호화 방식입니다.
클라이언트는 암호화키를 사용하여 데이터를 암호화하고 암호화된 데이터와 키를 서버에 전송하고 서버는 암호화된 데이터를 전달 받은 키로 복호화합니다.비대칭키 암호화
비대칭키 암호화는 암호화와 복호화에 다른 키를 적용하는 방식입니다.
서버는 Public, Private 키쌍을 만듭니다. Private키는 서버 본인이 저장하고 Public키를 통신하는 클라이언트에 제공합니다. 클라이언트는 Public 키를 사용하여 데이터를 암호화하고 이를 서버에 전송합니다. 서버는 암호화된 데이터를 Private 키로 복호화합니다.728x90'Network' 카테고리의 다른 글
브라우저에 URL을 입력하면 어떤 동작을 하는가 (1) 2024.01.27 [AWS] ALB, NLB, GWLB (0) 2023.09.16 [Network] NAT(Network address translation) (0) 2023.09.13 [Network] TCP와 UDP의 차이 (0) 2020.08.31 [Network] TCP/IP란? (0) 2020.08.14