◇ 공부 기록용으로 작성하였으니 틀린점, 피드백 주시면 감사하겠습니다 ◇
결론
SSL은 통신하는 데이터를 암호화하는 프로토콜.
SSL이 처음 나오고, SSL의 문제점을 보완시킨 TLS가 다음으로 탄생.
(일반적으로 SSL/TLS이라고 표기)
- SSL은 1995년에 탄생.
- TLS는 1999년에 탄생.
Secure Sockets Layer, SSL
SSL
웹 브라우저와 웹 서버 간의 데이터 통신을 🔒암호화하는 데 사용되는 프로토콜이다.
📖 역사
- SSL은 넷스케이프(Netscape)에서 1995년에 탄생되었다.
- SSL 3.0 버전이 1996년에 나왔다
- SSL 3.0의 보안 취약점 발견
- 보안 취약점을 보완하기 위해 TLS 1.0이 1999년에 나왔다.
Transport Layer Security
TLS (= SSL/TLS)
TLS는 SSL의 진화 버전이다. 일반적으로 "SSL/TLS"라고 표기한다.
SSL/TLS은 HTTPS 프로토콜에서 사용되기 때문에 유명하다.
하지만 SMTPS, POP3S, IMAPS와 같은 다른 프로토콜에서 SSL/TLS을 사용하여 안전한 통신을 제공할 수 있다.
📖 역사
- 가장 최신 TLS 1.3 버전은 2018년에 나왔다.
- 현재는 TLS 1.2와 TLS 1.3가 주로 사용되고 있다.
SSL/TLS 동작방식
동작원리를 이해하기 전에 사전지식 확인이 필요하다.
대칭키와 비대칭키 원리: https://jibinary.tistory.com/171
📜 SSL/TLS 인증서란?
공인된 기관CA(Certificate authority)에서 서버가 믿을 수 있는 보증하는 SSL/TLS 보증서를 발급한다.
SSL/TLS 인증서가 필요한 이유: 👤 서버의 신원 확인
SSL/TLS 프로토콜을 사용하면 통신 내용을 암호화하기 때문에 안전한다.
하지만 악성 서버가 다른 서버인 척해서 개인 정보를 입력하게 만들게하면 어쩔수 없이 정보가 뺏긴다.
그렇기 때문에 SSL/TLS 인증서를 통해서 서버의 신원을 확인한다.
🧐 예시) 온라인 쇼핑
고객이 웹 브라우저에서 쇼핑 웹사이트에 접속했다.
브라우저는 웹 사이트로부터 전송된 SSL/TLS 인증서를 확인한다.
이를 통해 브라우저는 쇼핑 웹사이트 서버가 진짜 쇼핑 웹사이트의 서버임을 확인한다.
만약 인증서가 없다면, 해커는 가짜 쇼핑 웹 사이트를 만들어 고객을 속일 수 있다.
SSL/TLS의 통신 과정
🤵 클라이언트 ↔ 서버 🗄️
SSL은 공개키와 대칭키를 혼합해서 사용한다.
(공개키 방식은 컴퓨팅의 파워를 많이 소모한다. 그렇기 때문에 공개키와 대칭키 혼합 사용.)
🗃️ 실제 데이터 : 대칭키 방식
🔑 대칭키의 키 : 공개키 방식
통신 과정에서 사용되는 키
- 서버의 Public Key (공개키)
- 서버의 Private Key (비밀키)
- Session Key (대칭 키)
- 진화 전: Master secret (셀 1형태), Pre Master secret (셀 2형태)
- 진화 후: Session Key (셀 3형태)
SSL/TLS의 기본적인 3가지 단계
악수 → 전송 → 세션 종료
- 악수(Handshake): 상대방이 존재하는지, 데이터를 주고 받기 위해서 어떤 방법을 사용할지 파악
- 전송 : 데이터를 전송 (암호화하고 복호화하는 방법을 정하고)
- 세션 종료
구체적인 단계
Step 1. 🤝Handshake(핸드셰이크) 단계:
- 🤵 Client Hello: 클라이언트가 서버에 접속한다. (도메인을 입력해서 서버에 접속)
- 클라이언트 측에서 랜덤 데이터를 생성한다. 그리고 서버로 전송한다.
- 클라이언트 측에서 지원하는 암호화 방식을 서버에 전송한다. (암호화 방법 여러가지 있기 때문)
- 🗄️ Server Hello: 서버는 클라이언트의 인사에 답변한다.
- 서버 측에서도 생성한 랜덤 데이터를 클라이언트에 전송한다.
- 서버 측에서도 지원하는 암호화 방식(가장 안정한 방식)을 클라이언트에 전송한다.
- 서버 측에서 📜인증서를 클라이언트에 전송한다
- 🤵 클라이언트 측: 서버의 인증서가 CA에 의해서 발급된 것인지 확인한다.
- CA (Certificate Authority)란?
CA는 디지털 인증서를 발급하고 관리하는 역할을 하는 신뢰할 수 있는 제3자 기관이다. - 인증서가 브라우저의 CA 리스트에 내장된 인증서인지 확인한다.
- CA 리스트에 있으면 →✅ OK!
- CA 리스트에 없으면 →📛 경고 메시지가 띈다.
- ⭐ 인증서 안에는 서버가 생성한 공개키가 들어가 있다. ⭐
- 클라이언트는 "Client Hello에서 만든 랜덤 데이터"와 "Server Hello 에서 만든 랜덤 데이터"를 조합해서 Pre Master secret이라는 키를 생성한다.
- 인증서 안에 있던 공개키를 사용해서 Pre Master secret를 암호화 한뒤 서버에 전송한다.
- CA (Certificate Authority)란?
- 🗄️ 서버 측: Pre Master secret → Master secret→ Session Key
- 서버는 비공개 키를 가지고 있기 때문에, 비공개 키로 Pre Master secret를 복호화 한다.
- 이로써 서버와 클라이언트는 Pre Master secret의 값을 공유하게 된다.
- 그리고 Pre Master secret 를 Master secret이라는 값으로 만든다.
- 그리고 Master secret은 Session Key를 만든다.
- Session Key 값을 이용해서 서버와 클라이언트는 데이터를 대칭키 방식으로 암호화 하고 주고 받는다.
이로써 Handshake(핸드셰이크) 단계 끝!!
Step 2. Session(세션) 단계:
대칭키 방식으로 데이터를 암호화 하고 복호화하면서 데이터를 주고 받는다.
Step 3. Session(세션) 종료:
데이터 전송이 끝나면 SSL 통신 종료. ❗세션 키는 폐기한다.
'네트워크' 카테고리의 다른 글
[CDN 네트워크] Akamai란? 쉽게 개념 정리 (Akamai Technologies, Inc.) (0) | 2024.03.28 |
---|---|
[네트워크] HTTP와 HTTPS 차이점 및 개념 쉽게 정리 (1) | 2024.03.01 |
[네트워크] OSI 모델 (OSI 7-Layer Model) 아주 쉽게 개념 정리 (0) | 2024.02.29 |
[네트워크] RESTful API란? 쉽게 개념 및 특징 정리 (REST와 REST API) (0) | 2024.02.27 |
[네트워크] URI, URL, URN 아주 쉽게 정리 (리소스의 개념) (0) | 2024.02.26 |