本文へスキップ

DNSから何がわかる?問い合わせで見られることと、その守り方

サイトもアプリも、最初はDNSの問い合わせから始まります。そこから何がわかるのか、誰が読めるのか、暗号化DNSやVPNで何が変わり、何が変わらないのかを説明します。

PryVPNチーム公開8分で読めます
イラスト:スマホから問い合わせとして出ていくサイト名と、それを読むDNSと書かれたルーペ
結論

何かが表示される前に、スマホはDNSリゾルバーに「bank.exampleはどこ?」と問い合わせます。この名前を集めると、どのサービスをいつ使っているかがわかります。通常のDNSではWi-Fiやプロバイダーにも読まれます。暗号化DNSやVPNを使えばネットワークからは隠せますが、答えるリゾルバーには見えたままなので、誰が運営しているかが重要です。

DNSはインターネットの電話帳です。スマホはbank.exampleのような名前を知っていますが、ネットワークがデータを運ぶ先は数字のアドレスです。そのため、サイトやアプリ、通知が読み込まれる前に、スマホはリゾルバーに「この名前はどこにありますか?」と問い合わせます。これが1日に何百回も、気づかないうちに起きています。

一つひとつの問い合わせはごく小さなものです。けれども集まると、驚くほど詳しい日記になります。この記事では、その日記に何が書かれているのか、誰が読めるのか、暗号化DNSやVPNを使うと実際に何が変わるのかを説明します。

DNSの問い合わせからわかること

問い合わせに含まれるのは名前で、ページではありません。「health.example」とはわかっても、そのサイトでどの記事を読んだかまではわかりません。この限界は大切ですが、それでも多くのことがわかります。

問い合わせからわかること 例 なぜ問題になるか
使っているサービス 銀行、メール、マッチングアプリ 名前だけで、健康、お金、信仰、人間関係が推測できることがある
使っている時間帯 平日は毎朝7時10分に問い合わせがあり、深夜0時以降は静か 生活リズム、睡眠、勤務時間
持っているアプリや機器 アプリの解析用ドメイン、テレビメーカーの更新サーバー アプリや機器は、開いていなくても裏で通信している
おおよその場所 リゾルバーに見えるあなたのIPアドレス 契約しているプロバイダーとおおよその地域

インターネットの標準を定めるIETFは、RFC 9076ではっきりと「リゾルバーはあなたについて多くを知っている」と書いています。

問い合わせを見られるのは誰か

問い合わせはいくつかの地点を経由し、地点ごとに見えるものが違います。

図:スマホがbank.exampleの場所を問い合わせる。通常のDNSではWi-Fiとプロバイダーが名前を読める。リゾルバーはすべての名前とあなたのIPアドレスを見る。権威DNSサーバーに見えるのはリゾルバーだけ
DNSの問い合わせを誰が読めるか(経路ごと)
  1. いま使っているネットワーク。 従来のDNSは暗号化されずに53番ポートを流れます。Wi-Fiを管理する人(カフェ、ホテル、勤務先、自宅のルーターの持ち主)とプロバイダーは、すべての名前を読めます。アクセスポイントを管理する側は、答えを書き換えて別の場所へ誘導することもできます。偽のアクセスポイントがこれをどう悪用するかは、偽Wi-Fi(イービルツイン)の記事で説明しています。自分の回線で確かめたい場合は、ツール「Wi-Fiに見えることをチェック」を試してください。
  2. リゾルバー。 初期設定では、プロバイダーのものか、Wi-Fiが指定するものです。あなたが問い合わせたすべての名前と、問い合わせ元のアドレスが見えます。何をどれだけの期間保存するかは、運営者しだいです。
  3. 権威DNSサーバー。 リゾルバーは、ルート、.example、bank.exampleを担当するサーバーに順に問い合わせます。これらに見えるのはリゾルバーのアドレスで、あなたのアドレスではありません。どこまで知られるかは2つの標準で変わります。QNAMEミニマイゼーション(RFC 9156)は、各サーバーに必要な部分の名前だけを送ります。クライアントサブネット(RFC 7871)は、近くのサーバーを選べるよう、一部のリゾルバーがあなたのIPアドレスの一部を伝える仕組みです。

暗号化DNSで変わること

スマホとリゾルバーの間を暗号化する標準は3つあります。

標準 通り道 どこで使われているか
DNS over TLS(DoT、RFC 7858) 853番ポートのTLS AndroidのプライベートDNS(Android 9から標準搭載)
DNS over HTTPS(DoH、RFC 8484) 443番ポートのHTTPSの中 ブラウザーの「セキュアDNS」設定
DNS over QUIC(DoQ、RFC 9250) QUIC 一部のリゾルバーやアプリ

どれを使っても、Wi-Fiやプロバイダーは名前を読んだり書き換えたりできなくなります。ただし、次の2つは変わりません。

  • リゾルバーには引き続きすべて見えます。 暗号化が守るのは途中の経路で、行き先ではありません。信頼する相手が、ネットワークからリゾルバーの運営者に移っただけです。
  • ネットワークには接続先が見えたままです。 問い合わせのあと、スマホはサイトのIPアドレスに接続します。また、多くのHTTPS接続では、TLSの最初のメッセージにサイト名(SNI、サーバー名表示)が含まれます。Encrypted Client Hello(RFC 9849)はこの名前を隠しますが、ブラウザーとサイトの両方が対応している場合に限られます。

つまり暗号化DNSは確かな改善ですが、それだけでネットワークから見えなくなるわけではありません。Googleが機能の公開時に説明したとおり、AndroidのプライベートDNSには「オフ」「自動」「プロバイダのホスト名を指定」の3つのモードがあります。どれを選ぶべきかは、プライベートDNSとVPNの違いの記事で解説しています。

VPNで変わること

VPNはDNSだけでなく、すべての通信を暗号化します。ネットワークに見えるのは、VPNサーバーへの暗号化された1本の接続だけです。問い合わせも、接続先のIPアドレスも、TLSに含まれるサイト名も、その中を通ります。よくできたVPNは問い合わせにもトンネルの中で自ら答えるので、Wi-Fiやプロバイダーのリゾルバーを通りません。

その結果、すべてが1か所に集まります。今度はVPNのリゾルバーがすべての名前を見ることになります。それが改善になるかどうかは、事業者が何を保存するかしだいです。だからこそ、VPNのログの方針は細かな話ではありません。私たちの方針は、保存するものと費用の出どころに1行ずつ書いています。

DNSからはわからないこと

大げさにならないよう、限界も確認しておきます。

  • ページや内容はわかりません。 HTTPSなら、news.exampleへの問い合わせから、どの記事を読んだか、何を入力したか、何を買ったかはわかりません。
  • メッセージの中身もわかりません。 エンドツーエンド暗号化のアプリで見えるのはサーバーの名前だけで、やり取りの内容ではありません。
  • 身元が常にわかるわけではありません。 リゾルバーに見えるのはIPアドレスで、名前ではありません。ただし、アドレスと問い合わせのパターンを合わせれば、世帯を特定できることがあります。

シークレットモードは、このどれも変えません。自分の端末に履歴を残さないようにするだけです。

PryVPNのDNSの仕組み

PryVPNのDNSは、この最後の点を前提に作られています。

  • PryVPNの各サーバーは独自のリゾルバーを持ち、トンネルの中からしか使えません。そのため、問い合わせが暗号化されずにWi-Fiを通ることはありません。
  • リゾルバーはDNSSECの署名を確認し、偽の応答を拒否します。
  • 問い合わせにはメモリ上で答え、問い合わせのログは残しません。残すのは、識別子を含まない合計値だけです。
  • フィルターは任意で、カテゴリーごとに選べます(トラッカーとマルウェアは初期設定でオン、広告はオンにした場合のみ)。フィルターが働くのはリゾルバーが名前を確認しているからで、誰が問い合わせたかを記録しているからではありません。詳しくはDNSフィルターの記事をご覧ください。
  • アプリのリークテストで、スマホが実際に使っているDNSサーバーを確認できます。AndroidのプライベートDNSが問い合わせを別の場所に送っている場合は警告が出ます。

5分でできるチェックリスト

  1. 公共のWi-Fiや共用のWi-Fiでは、通常のDNSを使わない。 プライベートDNS(設定 › ネットワークとインターネット › プライベートDNS)をオンにするか、VPNを使いましょう。
  2. リゾルバーは意識して選ぶ。 何をどれだけの期間保存するかを公開しているかを確認しましょう。
  3. 設定をむやみに重ねない。 VPNがDNSを担当している場合、プライベートDNSにホスト名を指定すると、問い合わせがトンネルの外に出てフィルターが効かなくなることがあります。VPNを使うときは、通常「自動」で問題ありません。
  4. 思い込まずに確認する。 DNSリークテストで、実際に使っているリゾルバーがわかります。
  5. HTTPSも忘れずに。 HTTPSは中身を守り、DNSのプライバシーは「どこへ行ったか」の一覧を守ります。

よくある質問

シークレットモードでも、Wi-Fiの管理者にDNSの問い合わせは見えますか?

見えます。シークレットモードが変えるのは、ブラウザーがスマホに保存するものだけです。問い合わせは同じようにネットワークを通ります。

DNSから、見ているページまでわかりますか?

わかりません。わかるのはforum.exampleのような名前で、ページのアドレスや内容ではありません。暗号化されていないHTTP(今ではまれです)なら、ネットワークにもっと見えますが、それはDNSの話ではありません。

DNS over HTTPSだけで十分ですか?

ネットワークに問い合わせを読まれたり書き換えられたりするのは防げます。ただし、接続先のIPアドレスは隠せず、多くのサイトはTLSの接続開始時に名前を明かします。よい一歩ですが、それだけで完全ではありません。

VPNにはDNSが見えますか?

VPNがDNSを担当していれば(そうあるべきです)、そのリゾルバーには見えます。だからこそ、事業者のログの方針は暗号化と同じくらい重要です。

PryVPNのリゾルバーは、「何を保存したのか」という問いへの答えが短くなるように作っています。試してみたい方は、ベータに参加できます。

参考資料

  1. RFC 9076:DNSのプライバシーに関する考慮事項(英語)
  2. RFC 7858:DNS over TLS(英語)
  3. RFC 8484:DNS over HTTPS(DoH)(英語)
  4. RFC 9250:DNS over QUIC(英語)
  5. RFC 9156:プライバシーのためのQNAMEミニマイゼーション(英語)
  6. RFC 7871:DNS問い合わせのクライアントサブネット(英語)
  7. RFC 9849:TLS Encrypted Client Hello(英語)
  8. Android Developers Blog:Android PのDNS over TLS対応(英語)

誤りに気づいたらsupport@pryvpn.comまでお知らせください。修正して日付を更新します。

さらに詳しく

同じテーマのガイドとヘルプ記事です。

ブログの関連記事

ベータ版でPryVPNを試す

無料・カード不要・アクティビティログなし。ベータに参加いただければ、枠が空きしだいメールでお知らせします。PryVPNはGoogle Playからインストールします。

Google Playで無料配信中Androidアプリの全機能を、少人数ずつご案内

アプリをダウンロード

ダウンロードは需要に応じて順次開放されます。メールアドレスを入力すると、ダウンロードできるようになった時点でお知らせします。

  • 無料・カード不要
  • アクティビティログなし
  • WireGuardで暗号化
  • Google Playでのみ配信