1. QUIC 프로토콜이란?
Quick UDP Internet Connections로, 지연 시간이 적은 인터넷 전송 프로토콜. 게임, 스트리밍 미디어, VoIP 서비스에 자주 사용
신뢰할 수 없고, 비연결성 프로토콜인 UDP를 왜 사용했을까?
2. 특징
1) 전송 속도 향상
QUIC은 TCP의 지연 시간을 줄이기 위해 등장했다. TCP에서는 연결 설정을 위해 수행하는 3-way handshake 과정과 암호화 통신ㅇ츨 위해 거치는 ClientHello, ServerHello, Sertificate 등등의 과정을 생략하였기 때문에 Connection을 위한 속도 지연을 획기적으로 줄일 수 있다.
UDP 프로토콜을 사용하기 때문에 연결 설정하는데 1개의 패킷만이 필요하다. (RTT 0)
또한 QUIC는 64bit Connection ID라는 패킷 식별자(Identifier)를 사용하므로 Client와 Server가 한번이라도 데이터 전송을 수행했다면, 심지어 IP 주소가 변경되어도 작동할 수 있다.
2) 암호화
TLS 암호화를 기본적으로 적용하고 있다. 443 UDP 포트를 사용한다.
HTTP/2와 QUIC를 사용한 HTTP/3에 대한 구조 비교도이다. TLS가 하나의 Layer가 아닌 QUIC의 기본 스펙에 포함되어 있는 것을 확인할 수 있다.
그렇다면 TLS 암호화는 어떻게 진행될까?
3. TLS 암호화
대칭키를 서로 공유하는 통신을 위해 RSA 비대칭키 방식을 이용, 실제 통신을 할 때는 CPU 리소스가 적은 대칭키 방식으로 데이터를 주고받는다.
비대칭키 암호화의 경우 [수신자의 공개키로 암호화, 수신자의 개인키로 복호화],
서명의 경우 [송신자의 개인키로 암호화(서명), 송신자의 공개키로 복호화(검증)]
BoB(수신자)의 공개키는 1111, 비밀키는 aaaa라고 가정하자. 또한, 공유할 대칭키는 qwer이다.
Alice(송신자)가 qwer를 1111로 암호화한 "asdfzxcvasdf" 전송하면, BoB은 이를 전달받고 aaaa로 복호화하여 qwer이라는 대칭키를 전달받게 된다.
그럼 대칭키(대칭 암호화 세션 키)는 어떻게 생성될까? Client Random, Server Random 그리고 "Premaster Secret"를 기반으로 일련의 계산 과정을 거쳐 대칭 암호화 세션 키가 생성된다. 클라이언트와 서버 모두 동일한 Premaster secret을 가지고 있기 때문에 둘 다 모두 동일하게 대칭키를 계산해낼 수 있다.
3. 참고 문헌
AWS는 아직까지도 QUIC 프로토콜을 지원하지 않고 있으며, GCP의 경우 구글이 개발했으니 제공하고 있다.
https://techchannel.com/Enterprise/12/2021/tls-handshake-process
https://appleg1226.tistory.com/61
https://musclebear.tistory.com/51
'보안 > BoB 프로젝트 기술 학습' 카테고리의 다른 글
[Project #1] Spring + MySQL + JPA 연동 및 Docker 이미지 배포 (0) | 2023.09.20 |
---|