ニュース

Google、Androidに「DNS over HTTP/3」対応を追加 ~実装はRust言語

既存の「DNS over TLS」よりも高いパフォーマンス

公式ブログ「Google Online Security Blog」

 米Googleは7月19日(現地時間)、Androidで「DNS over HTTP/3」(DoH3)をサポートする方針を明らかにした。「Android 9.0」からサポートされている「DNS over TLS」(DoT)と比べるといくつかの利点があるという。

 「DNS」(Domain Name System)は、ドメイン名とIPアドレスの対応関係を管理する仕組み。たとえば「窓の杜」のドメイン名は「forest.watch.impress.co.jp」だが、接続するためにはこのドメインのIPアドレスがなんなのかを知る必要があるが、その問い合わせ(クエリ)に対しIPアドレスが「202.218.128.212」だと答えてくれるのがDNSサーバーの役割だ。

 最近のWebサイトの多くはHTTPSで暗号化されているが、このDNSクエリが平文のままであればそこが狙われてしまう可能性がある。そこで、「DoT」や「DoH3」といった暗号化技術の導入が業界を挙げて進められている。

 Androidの「DoH3」対応は「Google Play」システムアップデート経由で配信されており、「Android 11」以降であれば「DoT」の代わりに使われるとのこと。「DoT」と比べたメリットは、おおまかに以下の3点に集約される。

  • 「DoT」はリクエスト(要求)とレスポンス(応答)がかならずセットになっているTCPプロトコルを利用するため、リクエストが詰まってしまうと後続の処理がブロックされてしまう。「DoH3」はこの問題が解決されており、混雑が少なくなる
  • モバイルデバイスはユーザーが移動するとネットワークが頻繁に切り替わる。「DoT」はそのたびに接続開始処理(ネゴシエーション)をやり直す必要があるが、「DoH3」はそれが不要
  • 「DoT」は1回の接続で多くのクエリを効率よく処理できるが、残念ながら接続の寿命はえてしてそれほど長くない。接続を再度確立するコストが高いため、信頼性の低いネットワークでは「DoH3」の方が高いパフォーマンスを発揮することも多い

 同社がこの機能を限定的にロールアウトしてフィールド測定を行ったところ、「DoH3」のパフォーマンスは「DoT」を大きく上回ることが示されたという。たとえば成功したクエリでは、クエリを完了するのにかかる時間の中央値が24%、95パーセンタイルのクエリ時間は44%短縮された。TCPとUDPを直接比較するのはフェアではないかもしれないが、それでもかなりの改善になるはずだ。

「DoH3」と「DoT」のレイテンシ比較(「UDP」は参考値)

 また、DNSリゾルバーの実装にはメモリセーフな「Rust」言語がサポートされた。従来であれば「C++」などの言語で実装するところだが、メモリ管理に伴うセキュリティ脆弱性のリスクを避けるための選択だという。同社はAndroidの「Rust」サポートを進めているが、その成果といえるだろう。