次期 Android では 「DNS over TLS」 がサポートされる

Google は、次期 Android OS となるコードネーム 「Android P」 の Developer Preview (開発者向けプレビュー版) において、DNS サーバとの通信を暗号化する 「DNS over TLS」 をサポートすると発表しました。

3月の話なのでちょっと前の話題ですが、Google は、コードネーム 「Android P」 の Developer Preview (開発者向けプレビュー版) をリリースしました。「Android P」 は、「Android 9.0」 としてリリースされる予定の次期 Android OS です (ちなみに、ちょうど今日ですが Google I/O 2018 でベータ版がリリースされましたね)。

Android P では、例えば IEEE 802.11mc (WiFi Round-Trip-Time (RTT) の方が呼び名としては一般的) プロトコルのサポートにより、GPS が届かない場所、例えば屋内などでも Wi-Fi アクセスポイントからの距離を測定して正確な位置情報を割り出すことが可能になったり、マルチカメラ API のサポート、ノッチ (画面上の切り欠き) を正式にサポートするなど、様々な機能が追加されていますが、Google は開発者向け Blog にて、この Android P 開発者プレビュー版における 「DNS over TLS」 のサポートを発表しました。

DNS over TLS とは

「DNS over TLS」 は、Transport Layer Security(TLS) プロトコルを使用して DNS による名前解決を行うために策定されたプロトコルで、現在、RFC 7858、および RFC 8310 として標準化されています。

「DNS over TLS」 の目的はセキュリティとプライバシーの保護です。従来、DNS サーバに対するクエリは平文で送信されることから、DNS サーバ間 (DNS キャッシュサーバ - 権威ネームサーバ)、あるいは DNS サーバとクライアント間で行われる通信に対して中間者攻撃 (man-in-the-middle attack) が技術的には可能であり、通信内容の盗聴や改竄が行われる可能性を排除できませんでした (DNSSEC といった改竄検知の仕組みはありますので無防備ということはないのですが)。

このようなリスクを回避するため、今回の 「DNS over TLS」 や、類似のプロトコルとして 「DNS over DTLS」 あるいは 「DNS over HTTPS」 といった、 DNS サーバとの通信を暗号化するための技術が標準化されてますと。

ちなみに、DNS over HTTPS は、例えば 「Google Public DNS」 がサポートしていたりします。

Android P におけるサポート

今回の発表によると、Google は Android P Developer Preview で、「ネットワーク&インターネット設定」 の中に 「プライベート DNS (Private DNS)」 という設定項目を追加したとのこと (下記画像参照)。

Android P で DNS over TLS を有効にするための設定

画像は DNS over TLS support in Android P Developer Preview - Android Developers Blog から引用

デフォルトでは 「自動 (Automatic)」 に設定され、接続する DNS サーバが 「DNS over TLS」 に対応している場合は暗号化通信が行われます。ユーザーはこの機能を無効にしたり、プライベート DNS を設定することもできます。

「DNS over TLS」 モードが有効になると、システム上の全てのアプリケーションからの DNS クエリは暗号化されるとのこと。

この際、システム側で用意された API を使用せず、独自に DNS への接続を行うアプリケーションについては、アプリケーション側で適切な処理が必要ですが、現在のネットワークでプライベート DNS が使われているかを確認可能な LinkProperties.isPrivateDnsActive() という新たな API が追加されているそうです。