Upgrade to Pro — share decks privately, control downloads, hide ads and more …

QUICについて調べた

cateiru
January 17, 2022

 QUICについて調べた

cateiru

January 17, 2022
Tweet

More Decks by cateiru

Other Decks in Technology

Transcript

  1. QUIC HTTP/3になるとなにがいいのか • HTTP/2に比べて通信が速くなる(理論上) ◦ UDP上に位置するため3wayハンドシェイク(SYNやACKの通信のやつ)が無い ◦ ヘッドオブラインブロッキングが解決されている ▪ TCPの通信では鎖のようになっていいて、

    1つのつなぎ目が欠落(パケットロス)するとそれ以 降のすべての繋がりが待つ必要 ▪ 実際、パケットロスがある環境では HTTP/1のほうがパフォーマンスがいいらしい • WebTransport APIが使える ◦ WebsocketとWebRTCを合わせてQUICプロトコルを使用した API ◦ 高速 ◦ 最近Chrome(97)に追加された
  2. QUICの通信をみる client server Initial • QUICのハンドシェイクはTLS1.3のハンドシェイクの流れと一緒 ◦ (ただしUDPを使う) • Initialパケット

    ◦ ClientHelloが入ったCRYPTOフレームをInitialパケットに格納し てサーバに送る ◦ TCPのSYNのイメージ
  3. QUICの通信をみる client server Initial Initailパケットのペイロードは、 イニシャル用の鍵で暗号化 されます。イニ シャル用の鍵は、サーバのコネクション IDから生成します。この最初の サーバのコネクション

    IDは、クライアントが乱数的に生成します。 中継装置から見ると、サーバのコネクション IDがInitialヘッダ中にあるの で、そこからイニシャル用の鍵を生成でき、さらにペイロードを復号できま す。このため、Initialパケットには「一手間かけないと覗けない」程度の安 全性しかありません 。 引用元: https://eng-blog.iij.ad.jp/archives/10582
  4. QUICの通信をみる client server Initial Retry Initial Protected Payload Initailパケットを受け取ったサーバは、ヘッダ中のコネクション IDからイニ

    シャル用の鍵を生成し、ペイロードを復号します。 ClientHelloが取り出せ るので、ServerHelloを作成し、イニシャル用の鍵で暗号化して、 Initialパ ケットを送り返します 。ややこしいのですが、このとき必要であれば、サー バは自分自身のコネクション IDを作り直します。 引用元: https://eng-blog.iij.ad.jp/archives/10582
  5. QUICの通信をみる client server Initial Retry Initial Protected Payload Handshake またサーバは、ClientHelloの中にあるクライアントの

    DH公開鍵と、生成し たサーバのDH秘密鍵からハンドシェイク鍵を生成します。そして、 EncryptedExtensionsなどをハンドシェイク鍵で暗号化し、 Handshake パケットのペイロードに格納して送信 します。 引用元: https://eng-blog.iij.ad.jp/archives/10582
  6. QUICの通信をみる client server Handshake Protected Payload Protected Payload Protected Payload

    • あとは多分データ送信 • TLS暗号化されているので生データは見れなかった
  7. QUICまとめ • TCPよりハンドシェイクは少なかった • デフォルトでTLS暗号化されているのは安心できそう • もっと詳しく知りたい人向け ◦ IIJ Engineers

    Blog ▪ https://eng-blog.iij.ad.jp/archives/author/kazu/page/2 ◦ QUIC: A UDP-Based Multiplexed and Secure Transport (RFC9000) ▪ https://datatracker.ietf.org/doc/rfc9000/ ◦ Chrome への HTTP/3 と IETF QUIC の導入について ▪ https://developers-jp.googleblog.com/2020/10/chrome-http3-ietf-quic.html
  8. 参考文献 • https://www.nginx.co.jp/blog/introducing-technology-preview-nginx-support-for -quic-http-3/ • https://xtech.nikkei.com/atcl/learning/lecture/19/00038/00004/ • https://http3-explained.haxx.se/ja/proc/proc-status • https://directcloud.jp/contents/webhttp-3quic/

    • https://wa3.i-3-i.info/word15428.html • https://http3-explained.haxx.se/ja/why-quic/why-tcphol • https://eng-blog.iij.ad.jp/archives/10582 • https://tex2e.github.io/blog/protocol/quic-retry-packet