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

2022-07-21

https://forest.watch.impress.co.jp/docs/news/1426222.html

Android で DNS over HTTP/3 (DoH3) をサポートする方針について書かれた記事。
サポート(予定)の Android バージョンはまだ書かれていないよう。

DNS over TLS (DoT)

従来、DNS の問い合わせは UDP かつ平文で送っていたが、これに TLS レイヤーを追加することで問い合わせの内容を暗号化する。
しかし DoT は専用のポート番号 (853) を使うため、DNS のトラフィックが存在することは確認できる。

DNS over HTTPS (DoH)

DoT 同様に暗号化レイヤーとして HTTPS を追加することで、問い合わせの内容を暗号化できる。
DoT との大きな違いはポート番号で、通常の HTTPS 通信のポート番号 (443) で通信するため、外から見ると通常の HTTPS アクセスと DNS 問い合わせの違いがわかりにくい。
このため、プライバシー観点では DoH の方が優れていると考えられる。

DNS over HTTP/3 (DoH3)

DoH で使う HTTP を HTTP/3 に限定したものと思われます(はっきりと調べてはいない)
HTTP/1 や HTTP/2 の課題が解消されているので、主にパフォーマンスの観点で以下のような点が改善されていくと思われます。

Rust について

Rust で実装したことが高速化の要因ではなさそう。
ただ、脆弱性などができにくいという意味で、よりセキュアな DoH3 に貢献しているかもしれない。

Google の公式ブログ

Google Online Security Blog: DNS-over-HTTP/3 in Android
https://security.googleblog.com/2022/07/dns-over-http3-in-android.html

Cloudflare の 1.1.1.1 を使った問い合わせの例

※curl がまだ 正式にHTTP/3に対応していない ため DoH3 ではなく DoH です。

$ curl --silent -H 'accept: application/dns-json' 'https://1.1.1.1/dns-query?name=github.com&type=A' | jq
{
  "Status": 0,
  "TC": false,
  "RD": true,
  "RA": true,
  "AD": false,
  "CD": false,
  "Question": [
    {
      "name": "github.com",
      "type": 1
    }
  ],
  "Answer": [
    {
      "name": "github.com",
      "type": 1,
      "TTL": 51,
      "data": "52.69.186.44"
    }
  ]
}

参考