-
[Network] HTTPS는 무엇인가? HTTPS의 데이터를 주고받는 방식Network Basis 2021. 12. 10. 21:19
# HTTPS 의 2가지 보안개념
1. Request의 Data를 암호화하여 Server에 보낸다. (비대칭키와 대칭키 방식 혼용)
2. 검증기관(CA)으로 부터 검증된 사이트만 주소에 HTTPS 사용이 허가되어, 피싱사이트로 Reqeust를 보내는 경우를 방지한다.
# 검증기관 (Certificate Authority, CA)
각 브라우저들은 CA 회사들의 목록을 가지고 있음
CA가 검증한 인증서는 CA의 개인키로 암호화 되어있다.
# HTTPS 의 데이터 송수신 방법
* [Client -> Server] 를 CS , [Server -> Client] 를 SC 로 표기하겠음
>> Handshake (탐색전)
1. 사이트 접속시, 브라우저에서 사이트로 랜덤문자열을 전송 (CS)
2. 사이트에서 브라우저로 랜덤문자열과 해당사이트의 공개키가 포함된 암호화 된 인증서를 전송 (SC)
>> 검증기관(CA)의 검증
* CA들의 검증을 받은 인증서는 해당 CA의 개인키로 암호화 되어있다.
3. 브라우저의 저장된 CA들 중 인증서에 해당하는 CA의 공개키를 사용하여 인증서를 복호화 (해당 사이트의 공개키 획득)
(복호화 할 수 없거나, 해당 인증서가 브라우저에 저장된 CA들의 리스트에 없다면 아래와 같은 Not Secure 경고발생)
>> 서버와 클라이언트간 데이터 송수신
4. 브라우저에서 주고받은 문자열을 기준으로 임시키를 만들어 해당 사이트의 공개키로 암호화하여 사이트로 전송 (CS)
5. 해당 임시키를 기준으로 일련의 과정을 거쳐 클라이언트와 서버는 동일한 대칭키를 생성
6. 이후 주고받는 데이터는 대칭키 방식으로 암호화하여 주고받음
(비대칭키 방식은 대칭키방식에 비해 무거운 알고리즘이기 때문)
# Reference
1. 얄팍한 코딩사전님의 HTTPS 설명 [Youtube]
728x90'Network Basis' 카테고리의 다른 글
[Network] TCP/UDP 포트 목록 (well-known port, registerd port, dynamic port) (0) 2022.02.07 [Network] Apachi, Nginx, Tomcat 이 하는일이 뭘까? (Feat. Proxy) (0) 2021.12.15 [Network] HTTP 프로토콜의 발전 (HTTP 1.1 vs HTTP2) 그리고 구글(HTTP3, QUIC) (0) 2021.12.10 [Network] JWT - 왜 refresh 토큰이 필요하지? (refresh 토큰이 탈취된다면?) (12) 2021.12.10 [Network] 쿠키와 세션, 그리고 토큰에 대하여 (0) 2021.12.01