SSL 과 TLS
들어가며
SSL 관련 업무를 해야 하는데요, 겉핥기로만 알고 있었습니다. 그래서 이번 기회에 알아봤습니다.
SSL 을 알아보기 전에 떠오르는 질문을 정리해봤는데요, 글의 시작은 질문으로, 글의 마무리는 질문에 대한 답을 하는 것으로 정리하겠습니다.
SSL 에 대한 질문들
- SSL (Secure Sockets Layer) 의 L 은 layer 네, 그럼 L 몇이지?
- SSL 이전에는 무엇을 썼는지?
- SSL 을 왜 쓰는지?
- SSL 과 HTTPS 는 어떤 관련이 있는지?
- SSL 을 하려면 인증서를 들어야 한다고 들었는데 그게 뭔지?
- TLS 와는 어떤 관련이 있는건지?
SSL 과 TLS
SSL 과 TLS 는 아주 밀접한 관련이 있습니다. 그래서 SSL (Secure Socket Layer) 을 들어보셨다면 TLS (Transport Layer Security) 도 들어보셨을텐데요, 이 둘이 어떤 차이가 있는지 알아보겠습니다.
SSL 은 1990년대에 넷스케이프에서 개발된 인터넷 상에서 데이터를 안전하게 전송하기 위한 인터넷 암호화 프로토콜 입니다. 하지만 SSL 은 '넷스케이프의 제품' 보다는 '보안 통신을 위한 기술 표준' 으로 알려져 있었습니다.
그럼에도 기업에서 개발한 것이기 때문에, 인터넷 보안 표준이 특정 회사에 의해 주도된다는 우려가 있었습니다. 이에 IETF (Internet Engineering Task Force) 가 SSL 을 기반으로 TLS 를 개발하고 표준화하였습니다. 즉 TLS 는 보안 통신의 국제 표준인것이고, 이는 SSL 을 기반으로 만들어졌습니다. SSL 프로토콜은 여러 버전(SSL 1.0, 2.0, 3.0)을 거쳤으나, 현재는 더 발전된 TLS에 의해 대체되었습니다.
그러나 SSL Offloading, SSL Handshake, SSL 인증서 등과 같이 여러 용어들에서 SSL 을 계속 사용하고 있습니다. 이는 실제로는 SSL 과 TLS 모두를 포괄하는 의미이며, 관습적으로 사용하는 것이라고 합니다.
아래에서는 SSL 과 TLS 를 혼용해서 사용하겠습니다.
SSL/TLS 과 HTTPS (SSL의 등장 배경)
HTTP 통신에서는 데이터를 평문으로 보냅니다. 때문에 악의적인 공격자가 이를 탈취하여 악용할 수 있었습니다.
따라서 이를 개선하기 위해 HTTPS 가 등장하였습니다. HTTPS 는 HTTP + S(Secure) 로, 보다 안전한 HTTP 라는 의미입니다.
그런데 왜 HTTPS 는 HTTP 보다 안전할까요? HTTPS 는 HTTP 와 달리 데이터를 암호화 (encrypted) 해서 전송하기 때문입니다. 그리고 이 때 사용되는 암호화 프로토콜이 SSL/TLS 입니다.
데이터의 암호화
SSL/TLS 가 암호화 프로토콜이라는 것은 알겠는데, 실제 암호화와는 어떤 관련이 있는걸까요? 네트워크 상에서 데이터를 보내기만 하면 아무나 시켜줄까요?
어떤 서버에 최초로 접속을 요청하면 SSL/TLS 핸드셰이크를 합니다. 이 핸드셰이크를 하고 나면 인증서를 받을 수 있습니다. 인증서에는 서버의 공개키와 서버의 신원을 증명하는 정보가 있습니다.
이후에 클라이언트에서 서버로 request 를 보내면 브라우저에서 미리 받아둔 공개키 (정확히는 공개키로 뿡짝뽕짝한 세션키) 로 암호화하여 전송합니다.
yalco 의 이 영상은 쉽고 재미있어 이해하기에 좋습니다!
https://www.youtube.com/watch?v=H6lpFRpyl14&ab_channel=%EC%96%84%ED%8C%8D%ED%95%9C%EC%BD%94%EB%94%A9%EC%82%AC%EC%A0%84
간혹 인터넷을 하다가 이런 사이트를 본 적이 있을텐데요, 이는 인증서를 발급받지 않아 암호화할 수 있는 키가 없어, 브라우저에서 서버로 요청 시 데이터를 암호화할 수 없기 때문에 안전하지 않다는 뜻 입니다. 더불어 (인증서가 없으므로) 해당 서버의 신원이 확인이 되지 않았기 때문에 안전하지 않다는 뜻도 내포하고 있습니다.
여담이지만... 크롬에서 강제적으로 HTTP 를 사용하는 사이트에 대해 위 그림과 같이 이 사이트는 보안연결이...
라는 문구를 띄우고 나서부터는 많은 사이트들이 부랴부랴 HTTPS 로 넘어갔다는 이야기가 있습니다.
SSL/TLS 인증서 (SSL/TLS Certificates Authority, SSL/TLS CA)
인증서는 어디에서 받을 수 있을까요? 아래의 업체들에서 발급받을 수 있습니다. 요기 https://namu.wiki/w/TLS#s-1.5 에는 인증업체들의 재미있는 썰들이 있으니 심심하면 한번 보셔요
- 🇰🇷 네이버 클라우드 Trust Services
- 🇯🇵 GlobalSign
- 🇯🇵 SECOM Trust Systems
- 🇯🇵 Cybertrust Japan
- 🇯🇵 FujiSSL
- 🇺🇸 Sectigo
- 🇺🇸 DigiCert
- 🇺🇸 GeoTrust
- 🇺🇸 GoDaddy
- 🇺🇸Thawte
- 🇺🇸 Let's Encrypt
- 🇺🇸 Google Trust Services
다시 돌아와서, SSL 에 대한 질문들
- SSL (Secure Sockets Layer) 의 L 은 layer 네, 그럼 L 몇이지?
- SSL 의 L 은 OSI 7 layer 의 layer 를 의미하지 않음
- TLS 가 Transport Layer Secure 이라서 L4 로 생각될 수도 있지만 그렇지 않음
- SSL/TLS는 L5 (Session layer), L6 (Presentation layer), L7 (Application layer) 에서 주로 작동함
- layer 라는 의미
- L4 와 L5~L7 사이에서 보안을 담당하는 layer 이다 라는 뜻임
- SSL 의 L 은 OSI 7 layer 의 layer 를 의미하지 않음
- SSL 이전에는 무엇을 썼는지?
- 이전에는 아무것도 없었기때문에 암호화되지 않은 평서문으로 보냈음
- SSL 을 왜 쓰는지?
- 데이터를 네트워크상에서 암호화하여 전송하기 위해 사용함
- SSL 과 HTTPS 는 어떤 관련이 있는지?
- HTTPS 는 데이터를 암호화해서 전송하여 보다 안전한 프로토콜이고, SSL 은 이를 위한 프로토콜임
- SSL 을 하려면 인증서를 들어야 한다고 들었는데 그게 뭔지?
- 질문이 잘못되었음, HTTPS 를 하려면 SSL/TLS 인증서를 발급받아야 함
- TLS 와는 어떤 관련이 있는건지?
- 1990년대에 넷스케이프에서 만든 것이 SSL 이었음, 그러나 보안 통신을 위한 기술 표준이 특정 기업에서 관리되는 것은 위험하다고 판단하여 IETF 에서 SSL 을 기반으로 개발하고 표준화 한 것이 TLS
참고
- https://m.blog.naver.com/xcripts/70122755291
- https://minholee93.tistory.com/entry/SSL-offloading-%EC%9D%B4%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%BC%EA%B9%8C
- https://minholee93.tistory.com/entry/Spring-Security-SSL-HTTPS?category=924032
- https://www.sslcert.co.kr/guides/kb/28?page=4
- https://www.youtube.com/watch?v=H6lpFRpyl14&ab_channel=%EC%96%84%ED%8C%8D%ED%95%9C%EC%BD%94%EB%94%A9%EC%82%AC%EC%A0%84
- https://www.cloudflare.com/ko-kr/learning/ssl/what-happens-in-a-tls-handshake/
- https://www.cloudflare.com/ko-kr/learning/ssl/what-is-a-session-key/
'막개발글' 카테고리의 다른 글
API Gateway 란? (\w reverse proxy, MSA, Gateway) (0) | 2024.01.18 |
---|---|
cURL 이란 / libCurl / curl 사용 방법 (0) | 2024.01.17 |
시간 및 날짜를 다루는 방법 (1) - GMT 와 UTC, Timezone 과 Offset, 차이 및 비교 (6) | 2024.01.09 |
CSR, SSR, Rendering (0) | 2023.06.17 |
DOM 에 대해서 - 역사 / 의미 / 객체 / 호환성 (0) | 2023.05.11 |