> For the complete documentation index, see [llms.txt](https://real-dev.gitbook.io/real-library/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://real-dev.gitbook.io/real-library/backend-mastre-courese-udemy/8.-tls-transport-layer-security.md).

# 8. TLS (Transport Layer Security)

<br>

### TLS은 무엇이고 어디에 사용되는가?

* TLS는 기본적으로 양자간 통신 암호화를 위해 사용되는 표준 규격이다.
* HTTPS, TLS 1.2 Handshake, Diffie Hellman, TLS 1.3 등에 사용된다. (TLS 1.1은 사장되었다.)
* 암호화를 위해 대칭키, 비 대칭키, 해시 함수를 사용하여 데이터 기밀성과 무결성을 보장한다.
* TCP Handshake에선 연결을 맺는데 목적을 뒀지만, TLS Handshake에선 연결을 맺음과 함께 사용할 암호화 알고리즘과 키를 교환하는 목적이 있다. 버전에 따라 알고리즘과 키를 교환하는 방식은 다르며, 대표적인 버전은 `TLS 1.2`, `TLS 1.3`, `Diffie-Hellman` 등이 있다.

<br>

### TLS의 주요한 특징점은 무엇이며 장단점은 무엇으로 갈리는가?

* 기본적으로 4계층에서 동작하는 보안 옵션이기 때문에 TCP, UDP, HTTP와 같은 프로토콜을 암호화하는데 사용할 수 있다.
* 통신 암호화가 적용되지 않는 상황에선 라우터나, 스위치, ISP 같은 통신 매개체에서 전달되는 모든 데이터를 확인할 수 있다. 물리적 신호나 뭐가 되었든 OSI 계층을 위로 돌리면 되니까.
* 단점으로는 당연하게도 TLS를 적용하면서 프로토콜이 더 느려지는 점이며, 모든 보안이 그러하듯 영원히 완벽하진 않다. 하지만 실제적으로 선택하기에 가장 좋은 옵션 중 하나임은 부정하기 어려울 듯 하다.

<br>

### TLS를 대체할 수 있는 옵션은 없는가?

* 경우에 따라 UDP 애플리케이션을 위한 `DTLS(Datagram Transport Layer Security)`이나 `NSS (Network Security Services)`, `Linux Kernel crypto` 등 다양한 보안 옵션을 선택할 수 있다.
* 다만 TLS가 유명하고 널리 사용되는 이유는 HTTPS 암호화에 사용되는 영향이 크지 않나 생각한다.

<br>

### TLS는 SSL과 다른가? 다르다면 어떤 차이가 있는가?

* TLS는 SSL의 후속버전이며 SSL은 3.0 버전을 기준으로 더 이상 업데이트되지 않았다. 사실상 사장되었다고 보면 된다.
* 지원하는 암호화 알고리즘도 TLS이 더 다양하며 취약점도 적다. 사실 보안상에서 뚫리는 일은 시간이 흐르면서 더 많아지는 것이 당연하고 TLS도 한번씩 문제가 생기니 구버전이 사장되는 게 이상하진 않다.
