用語辞典・プライバシー・認証

DNS over HTTPS

DNS over HTTPSとは

DNS over HTTPSは、DNS問い合わせをHTTPS通信内で暗号化して送る方式です。略称はDoH(DNS over HTTPS/ディーエヌエス・オーバー・エイチティーティーピーエス、ディーオーエイチ)です。

クライアントは設定されたDoHサーバーのHTTPS URIへ、DNSのワイヤー形式メッセージをHTTP要求として送ります。一つのDNS問い合わせと応答の組が、一つのHTTP交換に対応します。

暗号化されるのはクライアントからDoHリゾルバーまでです。リゾルバーは問い合わせ名を処理し、その先の権威DNSとの通信が同じように暗号化される保証はありません。

DNSメッセージをHTTP要求へ入れ、TLSで保護したHTTPS接続から設定済みリゾルバーへ送るDNS応答後に、得たアドレスへ別のアプリケーション接続を作る
ブラウザーがDNS問い合わせを作り、GETまたはPOSTのHTTP要求へDNSメッセージを入れ、TLSで保護されたHTTPS接続を通してDoHリゾルバーへ送り、回答後に目的のWebサーバーへ別の接続を作る流れのピクトグラム図解
図1DoH要求と通常のWeb要求はどちらもHTTPSを使えますが、宛先サービスとメッセージの意味は別です。

プロトコルの層を順に包む

DNS問い合わせと応答のワイヤー形式

名前、種類、クラス、応答、応答コードなどDNS本来の意味を持つ。

HTTP一往復を一交換へ対応

GETまたはPOSTとMIMEタイプapplication/dns-messageを使い、HTTP状態も処理する。

TLSリゾルバーを認証して暗号化

証明書名を検証し、途中から問い合わせ・応答を読まれたり改ざんされたりしにくくする。

Connection複数問い合わせを再利用・多重化

長時間維持するHTTPS接続でハンドシェイクを減らし、複数ストリームを並行処理できる。

CacheDNS TTLとHTTP鮮度を整合

HTTPキャッシュ有効期間はDNS応答内の最小TTLを越えないようにする。

Resolver問い合わせ内容を処理する信頼点

ソース、時刻、名前を相関し得るため、プライバシー方針とログ方針を確認する。

GETとPOSTで同じDNSメッセージを運べる

POSTはDNSメッセージを要求本文へ入れます。GETはDNSメッセージをbase64url(ベース64ユーアールエル)でURIのクエリへ符号化します。DoHサーバーはRFC 8484上、両方を処理します。

HTTPが成功してもDNS応答はNXDOMAINやSERVFAILの場合があります。HTTP状態とDNS RCODEを別に読みます。

OS全体とブラウザー内でリゾルバーが違う場合がある

OSのスタブリゾルバーがDoHを使う構成、ブラウザーが独自にDoHサーバーを選ぶ構成、ネットワーク指定リゾルバーをアップグレードする構成があります。同じ端末でもアプリケーションごとに回答・フィルター・ログが違い得ます。

企業内だけで使う名前、ペアレンタル制御、キャプティブポータル、スプリットホライズンDNSと競合するため、代替処理の条件と管理方針を確認します。

ブートストラップと失敗時の代替処理を決める

DoHサーバーのホスト名を最初に解決するには、事前にアドレスを設定する、従来DNSでブートストラップするなどの方法が必要です。証明書失効確認が同じDNSに依存すると循環する場合もあります。

接続失敗時に平文DNSへ自動で戻すなら可用性は上がりますが、利用者が期待したプライバシーは失われます。厳格・自動モードを区別します。

DoHはDNSSEC・VPN・匿名化の代わりではない

DNSSECは、署名済みDNSデータの発信元の真正性完全性を検証する仕組みで、問い合わせを暗号化して隠す機能とは別です。DoHリゾルバーが誤った未署名応答を返すことをTLSだけでは防げません。

DoHサーバーはクライアントIPと問い合わせを見ます。VPN外へDoH接続が出ればVPN事業者から問い合わせ内容は隠せても、DoH事業者へ観測点が移ります。

DoHを評価するときは暗号化の有無だけでなく、どのアプリケーションがどのリゾルバーを選び、障害時にどこへ戻り、リゾルバーが何を記録するかを確認します。

DoHのHTTP mappingとprivacy特性の確認資料:RFC 8484「DNS Queries over HTTPS」

関連用語