DNS over HTTPS
![]() |
通信プロトコル | |
目的 | プライバシーとセキュリティのためにDNSをHTTPSにカプセル化すること |
---|---|
導入 | 2018年10月 |
OSI階層 | アプリケーション層 |
RFC | RFC 8484 |
インターネットセキュリティ プロトコル |
---|
キーマネジメント |
アプリケーション層 |
DNS |
インターネット層 |
DNS over HTTPS(DoH)は、リモートのDNS解決をHTTPSプロトコルを用いて実行するためのプロトコルである。
概要
[編集]この手法の目的は、プライバシーとセキュリティを向上させ、盗聴を防いだりDNSデータの中間者攻撃による操作から保護することである[1]。そのために、DoHクライアントとDoHベースのDNSリゾルバ間のデータをHTTPSプロトコルを使用して暗号化する。
ただし、この技術(DoH)やDoT(DNS over TLS)による暗号化自体は、The Registerが言うように[2]盗聴、検閲やプライバシーの面で政府に対抗しうる保護を提供するものではなく、データを難読化するものである。端末(あるいはスタブリゾルバ、以下同)からDNSリゾルバまでの間の盗聴や中間者攻撃からの保護には効果がある[3]。
ある端末からのDNSクエリ全体のプライバシー確保は、DNSフルリゾルバのポリシーおよび権威サーバとの通信形態に依存する[3]。
DoH/DoTとDNSSECは競合しない。DNSSECはリゾルバや権威サーバ間のドメイン登録情報のやり取りに電子署名を付加して完全性を担保するものであり、当該登録情報のやり取り自体は平文である。EDNS Client Subnet(英語版)ではロードバランス目的のために、フルリゾルバは端末からのクエリのIPアドレスのサブネットを権威サーバに渡す場合があり、その場合、フルリゾルバと権威サーバの間との間で、端末のサブネットとクエリドメインの組み合わせ情報が、平文で通信される[3]。フルリゾルバと権威サーバ間の通信も暗号化するものはDNSCurveによって実装される。
技術
[編集]DoHは、RFC 8484(October 2018)としてIETFが公開した提案段階 (Proposed Standard; 2021年1月時点)の標準である。
DoHでは、HTTP/2とHTTPSを使用し、既存のUDPレスポンスではwire formatのDNS responseデータをサポートし、HTTPSペイロードではMIMEタイプのapplication/dns-messageを使用する[1][4]。HTTP/2を使用した場合、サーバーはHTTP/2 server pushを利用することで、クライアントに通知しておくと役に立つと予想されるデータを事前に送ることが可能になる[5]。
前述のようにDoHは策定中の標準であるため、様々な企業がそれをもとに実験を行っており[6][7]、IETFは、まだどのような実装が最善であるかは最終的に決定していない。IETFはDoHの最適なデプロイ方法について様々なアプローチを評価中であり、Applications Doing DNS (ADD)というワーキンググループを立ち上げて必要な作業とコンセンサスの構築に取り組んでいる。その他に、Encrypted DNS Deployment Initiativeという企業によるワーキンググループも立ち上がっており、その目的は「インターネットの重要なネームスペースと名前解決サービスの高性能、回復性、安定性、セキュリティを確保し、DNSに依存するセキュリティ保護やペアレントコントロールなどのサービスを損なわないように提供できるように、DNS暗号化技術を定義・適用すること」であると述べられている[8]。
DoHを適切にデプロイする方法には多くの課題があり、インターネットコミュニティにより解決が試みられている。課題には以下のものが含まれるが、これがすべてではない。
- ペアレンタル・コントロールとコンテンツ・フィルタ
- DNSが企業内に分散される
- CDNによるローカライゼーション
- 5Gネットワークとの相互運用性
Oblivious DNS-over-HTTPS
[編集]Oblivious DNS-over-HTTPSは、すべてのリクエストをプロキシ経由で行うことでクライアントのアドレスを削除することにより、どのクライアントがどのようなドメイン名をリクエストしたのかをDoHのresolverから隠蔽しようとするDoHの拡張である。すべての接続はレイヤー内で暗号化されるため、プロキシはクエリの内容とレスポンスを知ることができず、クライアントのアドレスもわからないようになっている[9]。
デプロイのシナリオ
[編集]DoHはDNSリゾルバによる再帰的なDNS解決に使用される。リゾルバ(DoHクライアント)はクエリエンドポイントをホストするDoHサーバーへアクセスできる必要がある[5]。
2020年現在[update]、DoHにはオペレーティングシステム (OS) のネイティブサポートが少ないため、ユーザーは追加のソフトウェアのインストールが必要となる場合がある。次の3つの使用方法が一般的である。
- アプリケーション内に含まれるDoHの実装を使用する。
- ビルトインのDoH実装が行われているブラウザでは、OSのDNS機能をバイパス[注 1][注 2]してクエリを実行することができる。欠点は、設定ミスやその他により、アプリケーションがユーザーにDoHクエリをスキップしたかどうかを通知しない場合があることである。2020年現在[update]、Mozilla FirefoxやGoogle Chrome等で個別の名前解決にDoHを利用したかどうか簡便に知る手段がない。
- ローカルネットワークのネームサーバーにDoHプロキシをインストールする。
- クライアントシステムは従来のDNS[注 3]を使用してローカルネットワークのネームサーバーにクエリを送り、ネームサーバーは、レスポンスに必要な情報をインターネット上のDoHサーバーへDoHを使用してアクセスし取得する。この手法はエンドユーザーに対して透過的である。欠点は、サーバ構築管理が容易でないこと、ブロードバンドルータ等への実装が普及しない事などである。
- ローカルシステムにDoHプロキシをインストールする。
- OSをローカルで動作するDoHプロキシにクエリを送るように設定する。1つ前の手法と比べると、DoHを使用したいすべてのシステムにインストールする必要があり、大規模な環境では多くの作業が必要になる可能性がある。
- DoHリゾルバプラグインをOSにインストールする。
- 前者と同様に、DoHリゾルバプラグインをOSに組み込んで設定する。OS側がそのようなプラグインのインストールに対応している必要がある。DoHを使用したいすべてのシステムにインストールする必要があるのも前者と同様。
これらすべてのシナリオにおいて、DoHクライアントは権威ネームサーバーに対していかなるクエリも直接行わない。その代わりに、DoHサーバーは従来のポートを使用したクエリを発行し、最終的に権威サーバーに到達する。そのため、DoHはエンドツーエンド暗号化プロトコルではなく、ホップ間の暗号化を行うもので、DNS over TLSが一貫して使用された場合に限られる。
実装
[編集]OSのサポート
[編集]2019年11月、Microsoftは、Microsoft WindowsでDoHを始めとするencrypted DNSプロトコルをサポートする実装を行う計画を発表し[10]、2021年にWindows 11にDoHのサポートを追加した。
Android 9以降でDoTに対応しているが、DoHには最新バージョン(2020年時点)でも対応していない。このDoT仕様では、DHCP配布その他の既定DNSサーバに対しDoTで接続を試み、失敗すれば従来のDNSクエリにフォールバックするというモードがデフォルトである[注 4]。なお、Android 9ではVPN接続に対してDoTの設定が適用されないバグがあり、これはAndroid 10で修正されている[11]。
少なくともiOS 14、macOS Big Sur以降でDoH/DoTをサポートしている。
クライアントのサポート
[編集]- AdGuard for Android,[12] AdGuard for iOS[13] and AdGuard Home[14]
- Cloudflare 1.1.1.1 client app for Android and iOS.[15]
- Cloudflare resolver for Linux, MacOS and Windows.[16]
- cURL since 7.62.0.[17]
- DNSCrypt-proxy — Local DNS → DNS over HTTPS proxy.[18]
- DNSP — Versatile DNSProxy. DoH server (C) and client (PHP) implementation.[19]
- doh-php-client — PHP Implementation.[20]
- Firefox since Version 62 and later[21] — Browser support.[22]
- go-doh-proxy — Go DoH Proxy Server.[23]
- Intra — Android app by Jigsaw.[24]
- nss-tls — a DoH-based resolver plugin for glibc.[25]
- Technitium DNS Client — C# .NET cross-platform implementation.[26]
- NextDNS client apps.[27]
- Nebulo - DNS over HTTPS/TLS - for Android.[28]
提供サービス
[編集]DNS over HTTPS (DoH) サーバーの実装は、いくつかのパブリックDNSサービスプロバイダから無料で利用できるようになっている[29]。また、多くのパブリックDNSサービスでは、DoHサービスと並行してDoTサービスも提供している。
例えばGoogle Chrome は Version 78からDoH対応しているが、Version 87.0では、Google Public DNS、OpenDNS、Cloundflare、CleanBrowsing、IIJ Public DNS[注 5]がプリセットドメインとなっている(他のDoHサービスも利用できる)。
冒頭に述べたとおり、ある端末からのDNSクエリ全体のプライバシー確保は、DNSフルリゾルバを提供するパブリックDNSサービスのプライバシーポリシー等に大きく依存する[3]。
諸問題ほか
[編集]サポート面
[編集]現状(2020年現在)まで、DoHの有効化設定にはOSやクライアントでユーザが積極的にインストールや設定をする必要があり[注 6]、DHCP/DHCPv6などによる端末側自動設定などの仕組みは標準化されていない。
何が改善されうるのか
[編集]セキュリティの向上に加えて、性能の向上もDNS over HTTPSの目的の1つであると言われる[30]。しかし、これはDoHに本質的なものではなく、むしろプロトコル・オーバヘッド自体は従来のDNSクエリよりも暗号化やhttpsセッション管理の分、悪化しうる。性能の向上というのは、現状の選択肢の上ではサービス利用上の前提となるパブリックDNSサーバーの利用に伴うものが主張されている[30]。ISPが提供するDNSリゾルバは(貧弱なものでは)75パーセンタイルで181ミリ秒掛かっているという調査があり、遅いため、1つのウェブページで10以上の名前解決が必要とされる今日では、ユーザのウェブ体験におけるレスポンスが悪化する場合があり、問題となっている[30]。パブリックDNSサーバーではそのような点において、ISP提供のDNSサーバのそれと比較した速度・レスポンスの改善に訴求点を置いていた。
しかし、中間者攻撃などによるDNSスプーフィングやドメイン名ハイジャック等の諸攻撃の脅威が現実味を帯びた2000年代後半以降は、レスポンス性能は重要な訴求では無くなった。例えば、ISPのDNSサービスに直接、従来のDNSクエリを投げる場合と比べて、パブリックDNSサーバーへ直接、従来のDNSクエリを投げる場合には、ISP事業者外のネットワークを平文で通過するため、そのクエリ自体に中間者攻撃などに遭うリスクが増加する。よって、何らかの理由によりパブリックDNSサーバーを利用するのであれば、DoH/DoTを使用した方がセキュリティ上は望ましいと考えられる[3][注 7]。
ISPのDNSサービスの品質が相当悪くない限り(そしてそれは国やISP事業者にもよるが少ない)、ネットワークホップ数上、近くにあるISPのDNSサーバーの方が。概ねホップ数の多いパブリックDNSサーバーよりも有利である事が多い。これは、そのパブリックDNSサービスプロバイダのロードバランス方針およびユーザと実リゾルバ間のネットワーク上の距離に依存する(なお、ISPのDNSサーバーもロードバランス方針については同じ立場にある)。
公衆Wi-Fiその他ネットワーク層レベルで信頼性の低いもの[注 8]を利用するケースなど[注 9]、盗聴やなりすましのリスクが常にある環境においては、従来のDNSクエリ方式では平文でやり取りされるため、中間者攻撃などに遭うリスクが増加する事になる。あるいは、接続先のネットワークでデフォルト提供されるDNSリゾルバに信頼性その他問題がある場合もある。これらの場合もDoH/DoTを使用した方がセキュリティ上は望ましい場合がある[3][注 10]。
ポリシーと批判
[編集]DoHは、IPアドレスやServer Name Indication(SNI)などの、HTTPSリクエストの暗号化されていない部分からまだ取得できる情報だけを暗号化していることから、誤った意味のセキュリティを提供するものであると主張されてきた[31][32]。
また、現在のウェブブラウザのDoHの実装はサードパーティのDNSプロバイダに依存しているため、DNSの非中央集権的な性質とは逆であり、プライバシーの問題がある。OpenBSDは、FirefoxのビルドでCloudflareのサービスがデフォルトで使われているという理由で、DoHをデフォルトで無効化した[33]。
Google Chromeでは、ユーザーが選んだDNSプロバイダがDoHをサポートしている場合にのみDoHを使用するが、アメリカのISPからは、ユーザーにGoogle Public DNSサービスの使用を強制することになると非難された[34][35]。
セキュリティ面
[編集]DoHは、サイバーセキュリティのために実施されているDNSトラフィックの解析や監視から逃れて隠れる手段を提供する。2019年、DDoSワームのGodulaは、command-and-controlサーバーへの接続を隠すためにDoHを利用した[32]。DoHは、コンテンツフィルタリングソフトウェアやエンタープライズのDNSポリシーに対するバイパスとなる可能性が論じられている。
コンテンツのフィルタリング政策面
[編集]イギリスのISPを代表する業界団体のInternet Watch FoundationとInternet Service Providers Association(ISPA)は、広く使われているFirefoxウェブブラウザを開発しているMozillaとGoogleに対して、DoHのサポートにより、ISPデフォルトの成人向けコンテンツのフィルタリングや裁判所の命令による著作権侵害サイトの強制フィルタリングなどのイギリスのウェブブロッキングプログラムが弱体化してしまう恐れがあると非難した。ISPAは2019年にMozillaに「インターネットの敵(Internet Villain)」賞を(EUのデジタル単一市場における著作権に関する指令とDonald Trumpとともに)与えた。受賞理由は「イギリスのフィルタリングの義務とペアレンタル・コントロールをバイパスするDNS-over-HTTPSの導入により、イギリスのインターネットの安全基準を劣化させた」というものである。MozillaはISPAの主張に対して、DoHはフィルタリングを妨げるものではなく、「ISPの業界団体が、数十年前の古くなったインターネットインフラの改善に対して誤った判断をしていることに驚き、残念に思う」と述べた[36][37]。この批判に対してISPAは謝罪し、ノミネートを取り下げた[38][39]。Mozillaはその後、関連するステークホルダーとの十分な議論が行われるまではイギリスではDoHを使用しないようにすると発表したが、「イギリスにも現実のセキュリティ上の恩恵を提供できるはずだ」と述べている[40]。
プライバシー追跡面
[編集]従来のDNSクエリの場合、DNSリゾルバ側からは、スタブリゾルバ(多くの場合、組織内のルーター)のIPアドレス以外は見えないため、実際のクエリをリクエストした端末やユーザを固有追跡する事は困難であった(IPv6でも、端末側で一時アドレスを利用すれば、ネットワークアドレス以外の追跡は困難である)[3]。
しかしDoH/DoTにおいては、HTTPSによりTLSセッションが維持され続けるため、DNSリゾルバ側から端末単位でクエリの追跡が原理上可能となる。さらにTLSの仕様上、IPアドレス(ネットワーク上の場所)に変化があっても同一のTLSセッションを再開できるため、端末単位の追跡が容易となる[3]。
また、DoH/DoTセッションでクライアント(例えばWebブラウザ)側が渡す user-agent ヘッダその他の情報もユーザ追跡上重要な情報となり得る。さらにDoHセッション毎にcookieの設定も理論上は可能である(実装上は不明)[3]。
以上の問題は、ユーザ側とDNSフルリゾルバ(現状ではサービス利用上選択肢前提となるパブリックDNSサーバー)間の、クエリに関するデータ利用・プライバシーポリシーに完全に依存する[3]。
関連項目
[編集]脚注
[編集]注釈
[編集]- ^ むしろ名前解決はネットワークアプリケーションの主要な動機の1つであり、OSはその手段の1つをAPIとして提供しているに過ぎない。この場合は、アプリケーションが自発的にDoHに接続するものであり、OS内部で何らかのバイパス機構を組み入れる訳ではない。
- ^ なお、DoH/DoTへの接続設定に関し、ホスト名またはホスト名を含むURLが指定される場合が多いが、その場合、DoH/DoTサーバーへの接続にはOS経由の名前解決が必須となる。
- ^ ここでは、OSによる名前解決という意味である。OSによって従来のDNSクエリ(ポート53/DNS)、あるいはOSが対応していればポート853/DoTによる。さらにここでは、そのOSによる名前解決のリゾルバにローカルネットワークのネームサーバーを指定する前提である。
- ^ 他に従来のDNSクエリモード、あるいは指定されたDoT対応DNSサーバへのDoTクエリ専用モード(この場合接続できないと名前解決失敗となる)がある。
- ^ IIJではあくまでも試験的サービスという位置づけである(開始 - 2021年1月現在)。
- ^ ただし、Android 9以降では、DoTが自動設定されている。また、Google ChromeでもセキュアDNSがデフォルトONとなっている。ただし、これらの設定で具体的にどのDoH/DoTサーバに接続を試み、または従来のDNSクエリにフォールバックするのかは明らかになっていない。
- ^ なお、DoH/DoTへの接続設定に関し、ホスト名またはホスト名を含むURLが指定される場合が多いが、その場合、DoH/DoTサーバーへの接続にはOS経由の名前解決が必須となる。そのため、設定や環境によっては、DoH/DoTサーバーの名前解決に対する中間者攻撃のリスクが残ったり、それ自体にDNSブロッキングが掛かる場合がある(従来のDNSクエリ方式では、DNSサーバのIPアドレスを直接設定する)。
- ^ 他には、宿泊施設/集合住宅等提供/ゲスト借用のWi-Fiアクセスポイント経由、あるいは宿泊施設/集合住宅等提供の有線LAN経由インターネット、さらには十分に保護されていないFTTx(FTTB)その他の共用インターネット施設サービスが想定される。なお、ユーザ個宅まで直接光ケーブルを引き込むFTTH(FTTP)では、光ファイバー経路上は通常暗号化されており、このような問題は無い。
- ^ なお、モバイルネットワーク経由の場合は、通常のモバイル事業者(ISP)であれば、適切に当該ISPのDNSサーバーにクエリするよう設定されるため、この問題は無い。
- ^ なお、DoH/DoTへの接続設定に関し、ホスト名またはホスト名を含むURLが指定される場合が多いが、その場合、DoH/DoTサーバーへの接続にはOS経由の名前解決が必須となる。よって、設定や環境によっては、DoH/DoTサーバーの名前解決に対する中間者攻撃のリスクが残ったり、それ自体にDNSブロッキングが掛かる場合がある(従来のDNSクエリ方式では、DNSサーバのIPアドレスを直接設定する)。
出典
[編集]- ^ a b Chirgwin, Richard (14 Dec 2017). “IETF protects privacy and helps net neutrality with DNS over HTTPS” (英語) 2018年3月21日閲覧。
- ^ Chirgwin, Richard. “IETF protects privacy and helps net neutrality with DNS over HTTPS” (英語). www.theregister.com. 2021年1月20日閲覧。
- ^ a b c d e f g h i j 山口崇徳 (2020). “public DNSとプライバシー”. JANOG45 meeting.
- ^ Hoffman. “RFC 8484 - DNS Queries over HTTPS” (英語). datatracker.ietf.org. 2018年5月20日閲覧。
- ^ a b Hoffman. “draft-ietf-doh-dns-over-https-08 - DNS Queries over HTTPS” (英語). datatracker.ietf.org. 2018年5月20日閲覧。
- ^ “Experimenting with same-provider DNS-over-HTTPS upgrade” (英語). Chromium Blog. 2019年9月13日閲覧。
- ^ Deckelmann. “What's next in making Encrypted DNS-over-HTTPS the Default” (英語). Future Releases. 2019年9月13日閲覧。
- ^ “About” (英語). Encrypted DNS Deployment Initiative. 2019年9月13日閲覧。
- ^ Lovejoy, Ben (2020年12月8日). “Apple and Cloudflare team up to protect your web privacy” (英語). 9to5Mac. 2020年12月9日閲覧。
- ^ Gallagher (2019年11月19日). “Microsoft says yes to future encrypted DNS requests in Windows” (英語). Ars Technica. 2019年11月20日閲覧。
- ^ “Get Started | Public DNS” (英語). Google Developers. 2021年1月25日閲覧。
- ^ Brinkmann, Martin (2019年3月21日). “AdGuard 3.0 for Android: Redesign, Stealth Mode, Custom Filter Lists”. Ghacks Technology News 2019年8月2日閲覧。
- ^ Orr, Andrew (2019年7月13日). “AdGuard 3 Brings DNS Privacy, 250,000 Filter Rules, Premium Features”. The Mac Observer, Inc. 2019年8月2日閲覧。
- ^ Davenport, Corbin (2018年12月29日). “AdGuard officially releases its own DNS service, and it works with Android Pie”. Android Police (Illogical Robot LLC) 2019年8月1日閲覧。
- ^ Cimpanu. “Cloudflare launches Android and iOS apps for its 1.1.1.1 service” (英語). ZDNet. 2018年12月13日閲覧。
- ^ “DNS over HTTPS”. Argo Tunnel. Cloudflare. 20 July 2019閲覧。
- ^ “DoH in curl”. 2019年12月7日閲覧。
- ^ “DNSCrypt-proxy v2.0” (2019年8月5日). 2019年12月7日閲覧。
- ^ “DNSP” (2019年7月22日). 2019年12月7日閲覧。
- ^ “DNS over HTTPS PHP Client” (2019年8月3日). 2019年12月7日閲覧。
- ^ “Trusted Recursive Resolver” (html). Mozilla (2019年9月15日). 2019年9月12日時点のオリジナルよりアーカイブ。2019年9月15日閲覧。 “All preferences for the DNS-over-HTTPS functionality in Firefox are located under the `network.trr` prefix (TRR == Trusted Recursive Resolver). The support for these were added in Firefox 62.”
- ^ “Improving DNS Privacy in Firefox”. 2019年12月7日閲覧。
- ^ “Go DoH Proxy Server”. 2019年12月7日閲覧。
- ^ “Intra on Play Store”. 2019年12月7日閲覧。
- ^ “GitHub - dimkr/NSS-TLS: A DNS over HTTPS resolver for glibc.” (2019年8月2日). 2019年12月7日閲覧。
- ^ “DNS over HTTPS C# Client” (2019年7月18日). 2019年12月7日閲覧。
- ^ “nextdns”. www.nextdns.io. 2019年7月13日閲覧。
- ^ “Nebulo - DNS over HTTPS/TLS - Apps on Google Play”. 2019年12月7日閲覧。
- ^ “DNS over HTTPS Implementations” (英語) (2018年4月27日). 2018年4月27日閲覧。
- ^ a b c Chirgwin, Richard (14 Dec 2017). “IETF protects privacy and helps net neutrality with DNS over HTTPS” (英語) 2018年3月21日閲覧。
- ^ “A Controversial Plan to Encrypt More of the Internet” (英語). Wired. ISSN 1059-1028 2019年11月19日閲覧。
- ^ a b Cimpanu. “DNS-over-HTTPS causes more problems than it solves, experts say” (英語). ZDNet. 2019年11月19日閲覧。
- ^ “Google Unveils DNS-over-HTTPS (DoH) Plan, Mozilla's Faces Criticism” (英語). BleepingComputer. 2019年9月14日閲覧。
- ^ Tung. “DNS over HTTPS: Google hits back at 'misinformation and confusion' over its plans” (英語). ZDNet. 2019年11月19日閲覧。
- ^ Lee (2019年9月30日). “Why big ISPs aren’t happy about Google’s plans for encrypted DNS” (英語). Ars Technica. 2019年11月19日閲覧。
- ^ Cimpanu. “UK ISP group names Mozilla 'Internet Villain' for supporting 'DNS-over-HTTPS'” (英語). ZDNet. 2019年7月5日閲覧。
- ^ “Internet group brands Mozilla 'internet villain' for supporting DNS privacy feature” (英語). TechCrunch. 2019年7月19日閲覧。
- ^ “British ISPs fight to make the web LESS secure” (英語). IT PRO. 2019年9月14日閲覧。
- ^ Patrawala (2019年7月11日). “ISPA nominated Mozilla in the “Internet Villain” category for DNS over HTTPs push, withdrew nominations and category after community backlash” (英語). Packt Hub. 2019年9月14日閲覧。
- ^ Hern, Alex (2019年9月24日). “Firefox: 'no UK plans' to make encrypted browser tool its default” (英語). The Guardian. ISSN 0261-3077 2019年9月29日閲覧。