들어가기 전에
이번 포스팅은 mutual TLS에 대해 간단하게 알아보고자 합니다. mutual TLS를 알아보기 전에 TLS에 대해 먼저 알아보겠습니다.
SSL과 TLS?
mutualTLS에 대해 알아보기 전에, SSL과 TLS에 대해 간단하게 살펴보도록 하겠습니다.
SSL(Secure Sockets Layer, 보안 소켓 계층)
SSL은 웹사이트와 브라우저(혹은 두 서버) 사이에 전송된 데이터를 암호화하여 인터넷 연결의 보안을 유지하는 표준 기술입니다. 이는 해커가 개인 정보 및 금융 정보를 포함한 전송되는 모든 정보를 열람하거나 훔치는 것을 방지합니다.
TLS(Transport Layer Security, 전송 계층 보안)
TLS은 현재는 deprecated된 SSL을 계승하는 보다 더 강력한 보안 기술입니다. TLS는 SSL 3.0을 기반으로 만들어졌으나, 서로 호환되지 않습니다. 현재 사용되고 있는 가장 최신 TLS 버전은 2018 8월에 정의된 TLS 1.3입니다.
- 참고로 SSL이 더 일반적으로 사용되는 용어이기 때문에, 보안 인증서는 여전히 SSL이라고 불립니다.
TLS Handshake 과정
일반적인 TLS Handshake 과정은 아래 그림과 같습니다.
- 먼저 client가 SSL server에 secure 통신을 연결하고자 함을 알립니다. 이때, client의 cipher suits와 사용 가능한 SSL/TLS 버전을 함께 전달합니다.
- SSL server는 받은 정보들을 기반으로 SSL 통신 가능 여부를 판단합니다. 만약 통신이 가능하다고 판단하면 SSL server은 자신의 인증서와 public key를 전달합니다.
- client는 받은 server의 인증서를 검증한 뒤 server의 private key를 검증하기 위해 pre-master key를 server의 public key를 이용해 생성해 서버에 전달합니다. 생성된 pre-master key를 SSL server에 전달하여 server가 자신의 private key로 복호화를 할 수 있다면 secure 통신에 이슈가 없다고 판단합니다.
- SSL server은 받은 pre-master key를 복호화하는데 문제가 없다면, client는 master key를 생성하여 통해 샘플 메시지를 암호화하여 SSL server에 보냅니다.
- SSL server가 해당 샘플 메시지를 복호화하는데 성공하면 이제 해당 master key를 이용해 SSL 통신을 진행하게 됩니다.
TLS 1.2와 TLS 1.3 차이
TLS 1.2는 2008년도에 나온 프로토콜입니다. 그 당시에는 로그인 서비스와 같은 보안이 중요한 서비스를 제외하고는 HTTP 통신을 진행했습니다. 하지만, 현재는 대부분의 서비스가 TLS를 이용해 HTTPS 통신을 하고 있습니다. 앞서 설명한 TLS handshake 과정을 매 요청마다 진행하게 되어 HTTP 통신을 할 때에 비해 속도가 많이 느려졌습니다.
- TLS 1.2의 경우 암호화 방식이나 암호화 키 교환을 위한 통신이 handshake에 포함되어 있어 client와 server간 round trip이 2회 정도 추가되어 있습니다.
반면 TLS 1.3의 경우 문제점이 제기된 암호화 방식을 제거하고 handshake 과정을 최소화해 암호화 통신하는 방안을 추가했습니다.
- handshake에 0-RTT 모드 추가
- 정적인 RSA와 Diffie-Hellman Cipher Suite 제거
- handshake 최대한 암호화
- 키 교환과 암호화 방식을 Cipher Suite를 통해 묶어서 정하지 않고 개별적으로 지정
mutualTLS(mTLS)
mutualTLS(mTLS)란?
mutualTLS(이하 mTLS)는 상호 인증의 방법 중 하나입니다. mTLS는 네트워크 연결의 양 극단에서 private key를 가지고 있는지 확인하여 올바른 통신인지 확인합니다. 즉, 서버의 인증서만을 검증하는 일반적인 과정에서 optional하게 사용할 수 있는 client certificate도 함께 검증합니다.
앞서 살펴본 TLS handshake에서는 client에서 server의 인증서를 검증하는 반면, server에서는 client에 대한 별다른 검증을 진행하지 않습니다. mTLS란, server에서 client에 대한 검증 과정이 추가된 TLS 통신 과정라고 볼 수 있습니다.
참고 자료
- SSL, TLS
- 위키피디아(TLS)
- 위키피디아(mutual authentication)
- TLS handshake
- cloudflare(TLS handshake)
- cloudflare(mutual TLS authentication)
- 알아두면 쓸데없는 신비한 TLS 1.3
'IT Knowledge' 카테고리의 다른 글
[IT Knowledge] hELLO 스킨 자동목차에 제목3 포함하기 (1) | 2024.06.22 |
---|---|
[IT Knowledge] 마이데이터(정보제공자) 구축 시 알아야 할 내용(중계기관: koscom) (0) | 2022.02.19 |