[TLS v1.3] 2. TLS v1.3 의 장점은 무엇일까? - 연결속도향상
TLS v1.3 의 세부적인 기술 내역을 확인하기 전에, 주요 장점을 기술하려 한다.
주요 장점은 크게 두 가지로 말할 수 있다. 연결 속도 향상과 보안성 강화이다. 특히 연결 속도 향상의 경우에는 HTTPS 는 HTTP 보다 느리다는 기존의 인식을 바꿀 수 있는 계기가 되리라 생각된다.
- 연결 속도 향상
보안은 가용성과 안정성 사이에서 접점을 찾아가는 과정이다. 둘은 반비례하는 관계이기 때문에 가용성을 보장하면서, 안전성을 극대화할 수 있는 지점을 찾는 것이 보안의 중요 포인트이다.
HTTPS 의 경우에도, 통신 속도라는 가용성과 데이터 보호라는 안전성 사이에서 줄다리를 해오고 있었다. 이전에는 HTTPS 를 전체 구간에 적용하는 것도 꺼리는 경우가 많았는데, HTTPS 적용 후 속도 저하를 우려했기 때문이다. 하지만 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 과정이 줄어들었기 때문이다.
- 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) 통신으로 나누어진다.
WireShark 로 실제 통신 과정을 확인 시에도, TCP Handshake 에서 3-Way Handshake 로 3개의 패킷을 주고 받은 다음 TLSv1.2 프로토콜을 사용하여 2-Round 의 통신을 수행하는 것을 확인할 수 있다. 이 과정에서 실제 패킷 수는 6개로 1-Round 과정에서 한방향으로 두 개의 패킷이 전송되기도 하기 때문이다.
과정이 완료 된 후, 암호화된 Application Data 가 확인된다.
- TLS v1.3 의 연결과정(3 Round-Trip)
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 로 줄어 들었다.
실제 패킷의 경우에도 v1.2 에 비해 간략해진 것을 확인할 수 있다. 특히 TLS v.13 의 Handshake 과정에서 v1.2 개의 6개의 패킷이 3개로 줄어든 것을 확인할 수 있다.
6개 패킷으로 주고 받던 데이터를 3개 패킷으로 완료 처리하기 때문에 TLS v1.3 의 개별 패킷은 TLS v1.2 의 패킷보다 더 많은 정보를 포함하고 있다. 이는 추후 세부 프로토콜 분석 시 확인할 예정이다.
티끌모아 태산이라고, TLS v1.2와 TLS v1.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 의 장점은 무엇일까? – 연결속도향상
[TLS v1.3] 3. TLS v1.3 의 장점은 무엇일까? - 보안성향상 (포스팅 예정)
✅ @bonbon42, I gave you an upvote on your post! Please give me a follow and I will give you a follow in return and possible future votes!
Thank you in advance!
Congratulations @bonbon42! You have completed some achievement on Steemit and have been rewarded with new badge(s) :
Click on the badge to view your Board of Honor.
If you no longer want to receive notifications, reply to this comment with the word
STOPDo not miss the last post from @steemitboard!
Participate in the SteemitBoard World Cup Contest!
Collect World Cup badges and win free SBD
Support the Gold Sponsors of the contest: @good-karma and @lukestokes
Congratulations @bonbon42! You received a personal award!
You can view your badges on your Steem Board and compare to others on the Steem Ranking
Do not miss the last post from @steemitboard:
Vote for @Steemitboard as a witness to get one more award and increased upvotes!