Oblivious DNS over HTTPS (RFC 9230)

本Extra Chapterは技術書典13(2022/9)に合わせて追加されたものです。実際の電子書籍版への追加は追って行います。BOOTHで購入された方はアップデート版をダウンロードできるようになる予定です。


ユーザーのDNSクエリの内訳を知ることはそのユーザーのインターネット上での行動傾向の取得につながるため、ユーザーのDNSクエリの中身が知られることはプライバシーリスクであり、それを避けるためにDNS over HTTPSなどの技術が登場したことはこれまで本編に記述した通りです。暗号化されていない通信を大規模にモニタリングすることは実際に行われており、IETFでは”Pervasive Monitoring is an Attack”(広範囲なモニタリング行為はインターネットへの攻撃である)ということをRFCの形式で宣言し、以降のIETFの提案するプロトコルはこのような行為に対する対策を織り込んだ上で設計されるべき、という指針を出しました。DNS over TLS, DNS over HTTPSなどの通信そのものの暗号化により暗号化されていない通信へのモニタリングへの対策は実現されましたが、フルリゾルバーがユーザーの情報を収集するケースはこの場合でも存在します。フルリゾルバーはクエリを行ったユーザーの接続元IPアドレスとクエリの中身を知ることができます。これはホップ間の通信が暗号化されている場合でも同様で、フルリゾルバーがクエリの中身そのものを知らなければクエリを行うことができないからです。

そこで、フルリゾルバーと権威サーバーの両方が「ユーザーのIPアドレス」「クエリの中身」の組を得ることができない方法として、Oblivious DNS、そしてそれをDoHの上で行うOblivious DNS over HTTPSが提案され、そのうちOblivious DNS over HTTPSは2022年6月にExperimental RFCとしてRFC化されました。

RFC化に至る過程

Oblivious DNS (ODNS) はシカゴ大学とプリンストン大学の研究チームによって2019年のPrivacy Enhancing Technologiesという会議にて論文として発表されました。筆者は2019年7月のIETF 105に併設されていたApplied Networking Research Workshop(ANRW) にてその存在を知りました。その後Oblivious DNS over HTTPSは2019年10月に-00版のInternet-Draftが提出されています。2020年12月にはCloudflareが”Improving DNS Privacy with Oblivious DoH in 1.1.1.1”というブログ記事で1.1.1.1でのODoH対応について言及しています。この時点でのドラフトは-03版、最終的に-11版の次でRFCとなっていること、また本RFCの著者の所属はApple, Fastly, Cloudflareであり、AppleもODoHをiCloud Private Relayの一部として実装していることから、かなり実装が先行して作られた仕様であるといえるでしょう。

Oblivious DNSの動作

原理の説明のために元となった実装であるODNSの動作を説明します。ODNSは通常のDNSのプロトコル上で動作するという特徴があり、既存のインフラを維持したままクエリの仕方を工夫するだけでプライバシー上のメリットが得られる、という特徴があります。

Oblivious DNS over HTTPSの特徴

Oblivious DNS over HTTPSは上記と同じような動作をしますが、その名前の通りHTTPSを用いてこれを行います。スタブリゾルバーとクライアントの役割がOblivious Client、フルリゾルバーの役割がOblivious Proxy、ODNS権威サーバーの役割がOblivious Targetと呼ばれ、Oblivious ClientはOblivious Targetとの間でセッション鍵を使って暗号化したDNSクエリをやり取りすることでOblivious ProxyがDNSクエリの中身を知ることができないようにしています。

また、Oblivious DNS over HTTPSでは暗号化方式として2022年2月にRFCになったHybrid Public Key Encryption (HPKE) を使っていることも特徴として挙げられます。HPKEの詳細な説明は省略しますが、ODNSの説明で出てきた「セッション鍵を公開鍵暗号で包んで一緒に送る」というよく用いられる方式を整理し今後の拡張に耐えられるようにしたもの、と思っておけばよいと思います。

参考文献、リンク集