本文へスキップ
ecdsa.com

QUIC

RFC 9000 の UDP ベースのトランスポートプロトコルで、TLS 1.3 のハンドシェイクを統合し(RFC 9001)、通信のメタデータをほぼすべて暗号化し、HTTP/3 を運びます。
別表記QUICHTTP/3RFC 9000

QUIC は TLS のハンドシェイクメッセージを、TLS レコードではなく QUIC パケット内の CRYPTO フレームで送り、パケット保護用の鍵を TLS の鍵スケジュールから導出します。Initial パケットは接続 ID から導出した鍵で保護されるため、実質的には難読化されているにすぎません。また、クライアントの最初のフライトは 1,200 バイト以上にパディングしなければならず、これにより、送信元を偽装した増幅攻撃が抑えられます。

ストリームはヘッドオブラインブロッキングなしに多重化され、接続は接続 ID によって IP アドレスが変わっても維持され、ハンドシェイクは 1 回のラウンドトリップで完了します(再開時は 0-RTT)。その上で HTTP/3(RFC 9114)が動作し、ブラウザーは Alt-Svc ヘッダーまたは DNS の HTTPS レコードによって HTTP/3 を検出します。

ポスト量子のキーシェア(key share)によって、クライアントの Initial は複数のパケットにまたがるようになります。QUIC 自体はこれに対応していますが、一部のミドルボックスやサーバーのスタックは修正が必要でした。JA4 フィンガープリントでは、QUIC のハンドシェイクは先頭の q で示されます。

規格と参考文献

すべての用語