QUIC

QUIC は RFC 9000 で定義された汎用トランスポートプロトコルです。UDP 上で動作し、暗号化を内蔵したセキュアな多重化接続を提供します。QUIC は HTTP/3 プロトコルが構築されるトランスポート層です。

主な機能

QUIC にはその他の改善点もあります。詳細は RFC9000 を参照してください。

QUIC には OpenSSL 3.5 以降が必要です。これらのコンポーネントで使用される QUIC の実装を提供します。

エンジンは QUIC オプションの TLS IOHandler(QUIC クライアントの SSLQUICOptions、HTTP/3 クライアントの TLSOptions、サーバーの QUICOptions.SSLOptions)に従って決まります。既定の iohOpenSSL では、読み込まれた OpenSSL が組み込み QUIC スタック(OSSL_QUIC_client_method、OpenSSL 3.5 以降)をエクスポートしていれば qmBuiltin が使用され、OpenSSL 3.5 の QUIC TLS API(SSL_set_quic_tls_cbs)のみをエクスポートしている場合は、フォールバックとして sgc エンジン qmCustom が使用されます。iohNativeTLS では常に qmCustom が使用され、TLS 1.3 ハンドシェイクは sgcCrypto パックのネイティブ TLS エンジン上で実行されます。iohNativeTLS では、パケットおよびヘッダー保護(AES-128-GCM、AES-256-GCM、ChaCha20-Poly1305)、鍵導出、鍵更新、Retry の整合性タグも、定義を必要とせず接続ごとに sgcCrypto 上で実行されます。ネイティブ TLS 1.3 ハンドシェイクと組み合わせることで、QUIC と HTTP/3 は OpenSSL なしで完全に動作します。iohOpenSSL の場合、パケット保護は sgcCryptoBackend(または SGC_NATIVE_CRYPTO 定義)に従います。詳しくはOpenSSL なしで実行するを参照してください。

コンポーネント