QUICにおいてNAT検出を行う拡張フレームの提案仕様

QUICを使用している際に、その通信がNATによってアドレス変換を行われているかを検出する「QUIC Address Extension」という提案仕様がAppleの人らによって出されています。

具体的には、送信元IPアドレスがなんであるかを通信相手に確認します。そうすることで、途中でIPアドレスが変換されているかを確認することが出来ます。

NATがいなければ、NATリバインディングを避けるためにPINGフレームを送る必要もありません。一方で、NATを検出した場合はコネクションIDとポートを定期的に変えることがよりプライバシーを高めることになります。

概要

自身のIPでアドレスが相手にどのように見えているか確認する、「PUBLIC_ADDRESS_REQUESTフレーム」と「PUBLIC_ADDRESS_RESPONSE フレーム」を定義します。

f:id:ASnoKaze:20190317170136p:plain

  • PUBLIC_ADDRESS_REQUESTフレームを送信することで、自身のIPアドレスを相手に確認要求を出します。
  • PUBLIC_ADDRESS_REQUESTフレームを受け取った側は、相手のIPアドレスとポートをPUBLIC_ADDRESS_RESPONSEフレームにお繰り返します。

こうして、自身の送信元IPアドレスがなんであるかを確認することが出来ます。

もちろん、PUBLIC_ADDRESS_REQUESTフレームとPUBLIC_ADDRESS_RESPONSEフレームは暗号化されているため、第三者に見ることは出来ません。

その他

同様の拡張がTLSでも提案されています。「TLS Client Network Address Extension」という提案仕様で、著者は一部異なりますが同じくAppleの人らによる提案です。