[TLS v1.3] 2. TLS v1.3 의 장점은 무엇일까? – 1) 연결속도향상

TLS v1.3 의 세부적인 기술 내역을 확인하기 전에, 주요 장점을 기술하려 한다.

주요 장점은 크게 두 가지로 말할 수 있다. 연결 속도 향상과 보안성 강화이다. 특히 연결 속도 향상의 경우에는 HTTPS 는 HTTP 보다 느리다는 기존의 인식을 바꿀 수 있는 계기가 되리라 생각된다.

1. 연결 속도 향상

보안은 가용성과 안정성 사이에서 접점을 찾아가는 과정이다. 둘은 반비례하는 관계이기 때문에 가용성을 보장하면서, 안전성을 극대화할 수 있는 지점을 찾는 것이 보안의 중요 포인트이다.

HTTPS 의 경우에도, 통신 속도라는 가용성과 데이터 보호라는 안전성 사이에서 줄다리를 해오고 있었다. 이전에는 HTTPS 를 전체 구간에 적용하는 것도 꺼리는 경우가 많았는데, HTTPS 적용 후 속도 저하를 우려했기 때문이다. 하지만 TLS v1.3 이 나오면서 이 간극을 좁힐 수 있을 것으로 보인다.

[그림] 1. TLS v1.2 연결속도
[그림] 2. TLS v1.3 연결 속도
TLS v1.2 과 TLS v1.3 은 동일한 연결 과정을 거친다.

DNS 쿼리를 통해 IP 를 확인 > TCP Handshake > TLS Handshake > Application Data 전달 로 크게 4가지의 단계를 수행한다.

동일한 웹서비스 대상이 아니라 세밀한 측정은 어려우나, TLS v1.2 와 TLS v1.3 을 제공하는 웹 서비스에 각각 페이지를 요청 시 TLS v1.2 의 TLS Handshake(이미지 상 SSL 로 표시된 부분)은 50.87ms 로 확인이 된다. 반면 TLS v1.3 의 Handshake(이미지 상 SSL 로 표시된 부분)은 37.94ms 로 확인되어, TLS v1.2 보다 속도 면에서 조금 앞선 것으로 보인다.

이는 두 버전의 TLS Handshake 과정의 차이에서 온다. TLS v1.3 에서 Handshake 과정이 줄어들었기 때문이다.

1) TLS v1.2 의 연결과정(4 Round-Trip)

[그림] 3. TLS v1.2 연결 과정 (출처: https://hpbn.co/transport-layer-security-tls/)
TLS v1.2 에서는 총 4개의 Round Trip 과정을 거친다.

그림에선 Client > Server > Client 로 통신하는 과정이 1 Round-Trip 으로 표현되어, 총 4번 왕복(Round)의 통신이 수행되는 것으로 설명하고 있다.

연결이 수립되는 통신 과정은 크게 TCP 기본 연결이 수립되는 TCP Handshake(1-Round), TLS 연결을 위한 정보 교환이 수행되는 TLS Handshake(2-Round), 그리고 최종 Application Data(1-Round) 통신으로 나누어진다.

[그림] 4. TLS v1.2 연결 과정 패킷 분석
WireShark 로 실제 통신 과정을 확인 시에도, TCP Handshake 에서 3-Way Handshake 로 3개의 패킷을 주고 받은 다음 TLSv1.2 프로토콜을 사용하여 2-Round 의 통신을 수행하는 것을 확인할 수 있다. 이 과정에서 실제 패킷 수는 6개로 1-Round 과정에서 한방향으로 두 개의 패킷이 전송되기도 하기 때문이다.

과정이 완료 된 후, 암호화된 Application Data 가 확인된다.

 

2) TLS v1.3 의 연결과정(3 Round-Trip)

[그림] 5. TLS v1.3 연결 과정
TLS v1.2 와 TLS v1.3 의 연결 과정 중 TCP Handshake(1-Round) 와 Application Data(1-Round)는 연결에 소요되는 과정이 동일하다. 차이는 TLS Handshake 과정으로 TLS v1.2 의 2-Round 에서 TLS v1.3 의 1-Round 로 줄어 들었다.

[그림] 6. TLS v1.3 연결 과정 패킷 분석
실제 패킷의 경우에도 v1.2 에 비해 간략해진 것을 확인할 수 있다. 특히 TLS v.13 의 Handshake 과정에서 v1.2 개의 6개의 패킷이 3개로 줄어든 것을 확인할 수 있다.

6개 패킷으로 주고 받던 데이터를 3개 패킷으로 완료 처리하기 때문에 TLS v1.3 의 개별 패킷은 TLS v1.2 의 패킷보다 더 많은 정보를 포함하고 있다. 이는 추후 세부 프로토콜 분석 시 확인할 예정이다.

티끌모아 태산이라고, TLS v1.2와 TLS v1.3 의 연결 수립 과정에서 이득일 수 있는 속도향상은 미미하지만 수천, 수만번이 발생할 수 있는 상황에서는 그 미미한 속도 향상이 사용자 경험에 유의미한 영향을 끼칠 수 있을것이라 기대한다.

 

3) TLS v1.3 의 0-RTT(0-Round Trip)

Handshake 과정의 단축 이외에 TLS v1.3의 0-RTT(0-Round Trip) 적용을 통해 연결 속도를 HTTP 연결을 수행하는 것처럼 향상 시킬 수 있다.

SSL/TLS 프로토콜은 Handshake 를 통해 연결을 설정한 후, Client 와 서버가 세션 ID 값처럼 동일한 값을 공유한다. Client 는 동일 웹사이트에 대해 재연결을 수행할 때 해당 세션 ID 값을 전달함 으로써 Handshake 과정을 또 수행하지 않고, 연결을 재개 할 수 있다. 이를 Connection Resumtion 으로 표현하고 있는데, TLS v1.2 상에선 TCP Handshake(1-Round) + TLS Resumtion(1-Round) + Application Data(1-Round) 로 해서 총 3-Round Trip 을 통해 재연결을 수행한다.

일반적인 TLS v1.3 프로토콜의 Connection Resumtion 의 경우에도 v1.2 와 동일한 방식을 취한다. 세부적으로 주고 받는 데이터는 다르지만, 동일하게 3-Round Trip 이 발생하는 것이다.

TLS v1.3 의 Resumtion 은 0-RTT 도입으로 빨라 질 수 있다. 0-RTT 는 세션 ID 값과 같은 역할을 수행하는 PSK(Pre Shared Key)를 Client 의 ClientHello 단계에서 요청할 Application Data 와 함께 전송하는 방식이다. Server 는 ClientHello 패킷에서 PSK 를 확인하고 검증을 수행하여 ServerHello 패킷에 암호화된 Application Data 를 전달하게 된다.

이 경우 TLS v1.3 의 Resumtion Handshake 과정은 0-Round Trip 이 되게 되고, 최종적으로 TCP Handshake(1-Round) + Application Data(1-Round) 의 2-Round Trip 으로 연결이 재개되는 것이다.

정리해보면 아래와 같다.

 

TLS 1.2 (이전 버전 포함)

  • 새로운 연결: 4 RTT
  • 연결 재개: 3 RTT + DNS

 

TLS 1.3

  • 새로운 연결: 3 RTT + DNS
  • 연결 재개: 3 RTT + DNS

 

TLS 1.3 + 0-RTT

  • 새로운 연결: 3 RTT + DNS
  • 연결 재개: 2 RTT + DNS

 

2-RTT 은 HTTP 에서 수행되는 것과 동일한 과정이므로, TLS v1.3 에 0-RTT를 도입하는 경우에 재연결 속도는 HTTP 와 거의 비슷하게 이루어지게 된다.

하지만 TLS v1.3의 0-RTT는 아직까지는 실험적인 프로토콜이고, 재전송 공격(Replay Attack)에 취약할 수 있어 도입에 주의가 필요하다. 이는 뒤의 도입고려사항과 관련된 포스트에서 자세히 다룰 예정이다.

 

TLS v1.3 포스팅 시리즈

[TLS v1.3] 1. 들어가기 전, HTTPS 와 TLS 는 무엇인가?

[TLS v1.3] 2. TLS v1.3 의 장점은 무엇일까? – 1) 연결속도향상

[TLS v1.3] 2. TLS v1.3 의 장점은 무엇일까? – 2) 보안성향상

Leave a Reply

avatar
  Subscribe  
Notify of