HTTPS 동작 원리 #171
jaejae-yoo
started this conversation in
공유
HTTPS 동작 원리
#171
Replies: 1 comment
-
|
좋은 자료 공유 감사합니다!! |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
대칭키와 공개키 비교
혼성 암호 체계
디지털 서명
- 서명은 메시지를 작성한 저자가 누구인지 알려준다.
- 저자는 저자의 극비 개인 키를 갖고 있기 때문에, 오직 저자만이 이 체크섬을 계산할 수 있다.
- 체크섬은 저자의 개인 ‘서명'처럼 동작한다.
- 서명은 메시지 위조를 방지한다. 만약 악의적인 공격자가 송신중인 메시지를 수정했다면, 체크섬은 해당 메시지와 맞지 않게 될 것이다.
디지털 인증서
HTTPS
HTTPS를 사용할 때, 모든 HTTP 요청과 응답 데이터는 TCP로 보내기 전에 먼저 암호화하는 보안 계층으로 보내서 암호화한다.
HTTPS는 TCP위에 놓인 보안 계층 위의 HTTP이다.
HTTP 프로토콜에 대칭, 비대칭 인증서 기반 암호 기법의 강력한 집합을 결합한 것이다.
만약 URL이 HTTP 스킴을 갖고 있다면, 클라이언트는 서버에 80번 포트로 연결하고 평범한 HTTP 명령을 전송한다.
만약 URL이 HTTPS 스킴을 갖고 있다면, 클라이언트는 서버에 443 포트로 연결하고 서버와 바이너리 포맷으로 된 몇몇 SSL 보안 매개변수를 교환하면서 ‘핸드셰이크'를 하고, 암호화된 HTTP 명령이 뒤를 잇는다.
보안 전송 셋업 과정
1) 암호화되지 않은 HTTP 트랜잭션
2) 암호화된 HTTPS 트랜잭션
SSL 핸드 셰이크
암호화된 HTTP 메시지를 보내기 전에, 클라이언트와 서버는 SSL 핸드셰이크를 해야 한다.
SSL 핸드 셰이크 과정
TCP 연결을 위한 3-way-handshake를 수행한 클라이언트(브라우저)가 HTTPS를 사용하는 것을 알게 되면, 서버에게 다음 정보를 보냅니다.
클라이언트가 지원하는 암호화 방식 모음
클라이언트가 생성한 랜덤 데이터
이전에 SSL 핸드 셰이크가 완료된 상태라면, 그때 생성된 Session ID
서버는 위 요청에 대한 정보를 클라이언트에게 전송합니다.
클라이언트의 암호화 방식 정보 중에서, 서버가 지원하고 선택한 알고리즘 방식
SSL 인증서
서버가 생성한 랜덤 데이터
클라이언트는 SSL 인증서를 검증한다.
클라이언트는 자신이 생성한 랜덤 데이터와 서버의 랜덤 데이터를 사용하여, premaster secret 키를 만들어 서버에 전송합니다.
웹 인증서에있는 서버의 공개키로 premaster secret를 암호화하여 서버로 전송합니다.
premaster secret: 암호화 통신에 사용될 대칭키 (대칭키이므로 절대 노출되면 안된다.)
서버는 비밀키로 premaster secret을 복호화합니다.
master secret : 복호화한 값
master secret으로 Session Key를 생성합니다. Session Key는 클라이언트와 서버 사이의 데이터를 주고받을 때 사용할 대칭키입니다.
서버와 클라이언트는 Session Key를 사용해서 대칭키 방식으로 데이터를 주고 받습니다.
Rerefrences
HTTP 완벽 가이드 웹은 어떻게 동작하는가, 데이빗 고울리 외 4인, 2014
https://brunch.co.kr/@sangjinkang/38
Beta Was this translation helpful? Give feedback.
All reactions