最近、Googleが正式に立ち上げたAndroid 9 Pieには、Ditital Wellbeing、セキュリティ、プライバシーに関するさまざまな新機能が含まれています。ベータ版またはアップデート後に携帯電話のネットワーク設定を覗いてみた方は、新しいプライベート DNS モードがAndroidでサポートされるようになったことにお気づきかと思います。
この新しい機能により、Android でカスタムセキュアDNSリゾルバーを設定するプロセスが簡単になります。つまり、デバイスとアクセス先Webサイトの間に関与する人々は、DNSクエリが暗号化されるため、スヌーピングできなくなります。この背後にあるプロトコル、TLSは、HTTPS経由でWebサイトにアクセスしたときにアドレスバーに表示される緑色の鍵アイコンにも関係しています。これと同じ技術が、DNSクエリーを暗号化する場合にも役立ちます。おかげで、DNSクエリーが改ざんされず、ISP、モバイルキャリア、および DNSリゾルバー間のネットワークパスにある他のユーザーが判読できないようになります。これらの新しいセキュリティプロトコルはDNS over HTTPS、およびDNS over TLSと呼ばれています。
1.1.1.1の設定
Android PieはDNS over TLSのみをサポートしています。お使いのデバイスでこれを有効にするには:
設定 → ネットワーク&インターネット → 詳細(Advanced) → プライベート DNSに移動します。
「プライベートDNSプロバイダーのホスト名」オプションを選択します。
1dot1dot1dot1.cloudflare-dns.comを入力し、 「Save(保存)」をクリックします。
1.1.1.1/help (または 1.0.0.1/help)にアクセスして「DNS over TLS (DoT)を使う」が「Yes」になっていることを確認します。
これで完了です!
プライベートDNSを使用する理由
DNS over HTTPSとDNS over TLSは、インターネットプライバシーの現状にどのように適合しますか?
TLSはカフェにあるワイヤレスネットワークでメールを見るときなど、信頼できない通信チャネルを経由するトラフィックを暗号化するプロトコルです。TLSを使用していても、DNS サーバーへの接続がハイジャックされているか、サードパーティによってスヌーピングされているかを知ることはできません。これは、重大なことです。なぜなら、悪意のあるユーザーは、一般的なメールプロバイダーやネット銀行への接続をハイジャックするために、公共の場所にあるWiFi ホットスポットを構成して、偽造されたレコードでDNSクエリーに応答できるためです。DNSSECは、応答に署名して真正性を保証することでこの問題を解決し、改ざんを検出可能にしますが、メッセージ本文はワイヤー上で他の人が読める状態のままになっています。
DNS over HTTPS / TLSがこれを解決します。これらの新しいプロトコルにより、私たちがHTTPSトラフィックに期待するようになったのとちょうど同じように、デバイスとリゾルバー間の通信が暗号化されます。
しかし、この一連のイベントには、安全化されていない最後のステップがあります。お使いのデバイスとサーバーにおける特定のホストネーム間の最初のTLSネゴシエーションの間で、SNI(Server Name Indication)が明らかになる点です。リクエストされたホスト名は暗号化されないため、アクセスしたWebサイトを第三者が閲覧できてしまいます。ブラウジング活動を完全に保護するための最後のステップには、SNIの暗号化が当然、必要となります。SNIの暗号化については、Cloudflareは他の企業と共同で進行中であり、定義と促進について取り組んでいるところです。
IPv6の世界におけるDNS
プライベートDNSフィールドは 1.1.1.1 のような IPアドレスを受け付けず、代わりに 1dot1dot1dot1.cloudflare-dns.com のようなホスト名が必要なことにすでにお気づきかもしれません。これは発音しやすいとは言えないので、リゾルバーにとって覚えやすいものをデプロイするために、現在取り組み中ですが、1.1.1.1、1.0.0.1、1dot1dot1dot1.cloudflare-dns.comについては引き続きサポートを続けていく予定です。
Googleではこのフィールドにホスト名が必要です。モバイルキャリアはIPv4とIpv6が共存するデュアルスタックの世界に適応しようとしているからです。企業によるIpv6の採用は、一般に予測されていたよりもかなり迅速に行われており、IPv6に完全移行したT-Mobileを含めて、米国の主要なモバイルキャリアはIPv6をサポートしています。約260億のインターネットに接続したデバイスが、43億のIPv4アドレスを上回る世界において、これは朗報です。さらに、前向きな動きの中で、Appleでは、すべての新しいiOSアプリでシングルスタックのIPv6ネットワークをサポートすることが必須となっています。
しかし、私たちはまだIPv4アドレスを持つ世界に住んでいるので、電話メーカーや通信事業者は、下位互換性を念頭に置いてシステムを設計する必要があります。現在、iOSとAndroidはAおよび AAAA DNS レコードの両方をリクエストしています。これには、バージョン4およびバージョン6形式のドメインに対応する IP アドレスがそれぞれ含まれています。ご自分で試してみてください。
$ dig A +short 1dot1dot1dot1.cloudflare-dns.com
1.0.0.1
1.1.1.1
$ dig AAAA +short 1dot1dot1dot1.cloudflare-dns.com
2606:4700:4700::1001
2606:4700:4700::1111
IPv6 のみのネットワークでIPv4 アドレスのみのデバイスと通信するには、DNS リゾルバーは、DNS64を使って、Ipv4アドレスをIPv6アドレスに変換する必要があります。変換された IP アドレスへのリクエストは、ネットワーク事業者が提供するNAT64変換サービスを通過します。これらはすべて、デバイスおよびWeb サーバーに対して完全に透過的です。
このプロセスの詳細については、APNICの事例を参照してください。