0. 이 글을 작성하는 이유
HTTPS에 대해 너무 모르는 것 같아서 이 참에 정리하고 넘어가기 위함
1. HTTPS란?
HTTP에 S가 하나 더 붙었다. S는 Securer Sockets Layer의 약자라고 되어있는데 보안 Layer가 하나 더 추가되어 있다고 생각하면 편할 것 같다.
Securer Sockets Layer의 앞 글자를 따서 SSL이라고 하는데 현재는 Transport Layer Securty, TLS가 사용 중이다.
우리는 HTTPS를 통해 인증과 데이터 무결성을 보장할 수 있다.
2. SSL과 TLS?
HTTPS에 대해 이야기를 하다 보면 SSL과 TLS라는 단어가 자주 보인다. 무엇일까?
SSL과 TLS 모두 서버, 애플리케이션, 사용자 및 시스템 간의 데이터를 암호화하는 통신 프로토콜이다. 네트워크를 통해 연결된 두 당사자를 인증하므로 데이터를 안전하게 교환할 수 있다.
TLS는 SSL의 진화 버전이다. SSL 3.0 == TLS 1.0이다.
하지만 SSL이라는 단어가 익숙해져 지금도 SSL이라는 단어를 자주 사용하는데 현재 통신에서 사용하는 SSL은 TLS라고 생각하면 된다.
3. 대칭 키, 비대칭 키
HTTPS의 동작 과정을 설명하기 전 대칭 키와 비대칭 키에 대해 간단하게 설명을 하고 넘어가는 게 이해에 좋다.
대칭 키
말 그대로 키가 동일한 것을 의미한다. 암호화와 복호화에 사용되는 키가 동일함을 말한다.
비대칭 키
키가 동일하지 않음을 의미한다. 암호화와 복호화에 사용되는 키가 동일하지 않음을 말한다.
이 경우 암호화에는 공개 키(Public Key), 복호화에는 개인 키(Private key, 비밀 키)인 경우이다.
4. HTTPS(TLS)의 동작 과정
- 연결 설정
- 클라이언트는 브라우저에 HTTPS로 시작하는 URL을 요청한다.
- 브라우저는 서버의 443포트(443이 default port이긴 한데 변경이 가능하다. 이 경우 url 뒤에 반드시 port를 명시해주어야 한다.)
- SSL/TLS Handshake 시작
- 연결이 설정되면 브라우저는 서버의 SSL인증서를 요청하며 사이트의 신뢰성 검증을 시도하기 위해 Handshake를 시작한다.
- 서버는 공개 키가 포함된 SSL인증서를 브라우저에 전달한다.
- 서버 인증 및 세션 키 생성 / 교환
- 2-2에서 받은 인증서에는 서버의 공개 키, 발급자 정보, 유효 기간 등의 정보가 포함되어 있고 클라이언트는 이 인증서를 인증서 발행 기관(CA)을 통해 검사하여 해당 웹사이트가 신뢰할 수 있는지(인증서에 명시된 서버인지, 클라이언트가 상호작용 중인 서버가 실제 해당 도메인의 소유주인지 등) 판단한다.
- 브라우저에 인증이 되면 브라우저는 공개 키를 사용해 비밀 세션 키가 포함된 메시지를 암호화하고 서버에 전송한다.
- 서버는 비밀 키를 사용해 메시지를 해독하고 세션 키를 검색한다. 이후 세션 키를 암호화하고 브라우저에 승인 메시지를 전송한다.
- SSL/TLS Hand Shake를 종료하며 이제 브라우저와 서버 모두 동일한 세션 키를 사용하여 메시지를 안전하게 교환하도록 전환한다.
세션 키란?
세션 키는 하나의 통신 세션만 암호화하는 데 사용되는 대칭형 암호화 키입니다. 다시 말하자면, 세션 키는 두 당사자 간에 전송된 데이터를 암호화하고 해독하는 데 한 번만 사용되는 임시 키이며, 이후 두 당사자 간의 대화는 다른 세션 키로 암호화됩니다. 세션 키는 로그인할 때마다 재설정하는 비밀번호와 같습니다.
출처 : https://www.cloudflare.com/ko-kr/learning/ssl/what-is-a-session-key/
ref
https://inuplace.tistory.com/1086
https://aws.amazon.com/ko/compare/the-difference-between-ssl-and-tls/
https://aws.amazon.com/ko/compare/the-difference-between-https-and-http/
https://spidyweb.tistory.com/310
https://www.cloudflare.com/ko-kr/learning/ssl/what-is-a-session-key/
'컴퓨터공학 > 네트워크' 카테고리의 다른 글
WebSocket (0) | 2023.11.12 |
---|---|
유효 기간이 있는 메일 인증은 어떤 방식으로 이루어질까 (0) | 2023.10.02 |
JWT (0) | 2023.09.19 |