はじめに
公共のWi-Fiを使っていたらこんな警告が出てきました!
暗号化されたDNSトラフィックって何?状態だったので、改めてDNSについて調べてみました。
DNSとは
DNS(Domain Name System)は、Webサイトの名前(例: example.jp
)をIPアドレスに変換する仕組みです。
たとえば、ブラウザで https://example.jp
にアクセスすると、背後では以下のような名前解決プロセスが動いています。
この図のように以下の流れでドメイン名からIPアドレスを特定します。
- クライアントが「
example.jp
のIPアドレスを知りたい」とDNSに問い合わせを送る。 - ルートDNSは
example.jp
のIPアドレスを知らないので、「.jp
を管理してるDNSに聞いて」とリダイレクトする。 -
.jp
DNSもexample.jp
のIPアドレスを知らないので、「example.jp
を持ってるDNSはこれ」と返す。 - 最終的に
example.jp
を管理する権威DNSが「IPは (例:93.184.216.34
) だよ」と返す。
通常のDNSは何が問題なのか
ここで問題になるのは、上記のやり取りが 基本的にすべて平文(暗号化なし) で行われるという点です。
つまり、DNSのクエリ(どのドメイン名を問い合わせたか)やレスポンスはそのままネットワーク上に流れてしまいます。
誰に見られてしまうのか
- 同じWi-Fiを使っている他のユーザー
- ネットワークの管理者
- プロバイダ(ISP)
- 中間者(MITM攻撃者)
→ 誰でも、通信をキャプチャすれば「どのサイトにアクセスしたか」が分かってしまう
暗号化されたDNS
この問題を解決するのが、以下のような「暗号化DNS」技術です。
DNSサーバとのやり取りをTLS(HTTPS)で包むことで、第三者から中身を見えなくしてくれます。
プロトコル | 名前 | 概要 |
---|---|---|
DoT | DNS over TLS | DNSのやり取りをTLSで暗号化(ポート853) |
DoH | DNS over HTTPS | DNSクエリをHTTPS通信でカプセル化(ポート443) |
どの部分が暗号化されているのか
※赤枠で囲った部分が、DNS over HTTPS(DoH)や DNS over TLS(DoT)によって暗号化される。この部分が暗号化されることで、第三者に「どのサイトにアクセスしようとしているか」が見えなくなる。
- クエリのドメイン名
- DNSサーバーに
example.jp
を問い合わせているという情報
- DNSサーバーに
- クエリ種別
- トランザクションIDやDNSヘッダー
- レスポンスの内容
- 最終的に帰ってくるIPアドレス
** → DNSクエリとレスポンスの中身が暗号化される **
- 最終的に帰ってくるIPアドレス
警告が出た理由
AppleのiOSやmacOSでは、OSレベルで暗号化DNS(DoH/DoT)を自動的に使おうする。
しかし、ネットワーク上でDoTやDoHの通信をブロックするような設定がされている場合、OSが検知して冒頭のような警告が出るようです。