djb先生の新プロジェクト: DNScurve

まだ実装はこれかららしいが、楕円暗号を使って DNSに暗号化する新プロジェクトを始めると。

qmaildjbdnsの作者でも有名なDJBこと、Dan Bernstein氏 (Kaminsky氏もDanだ) がDNSのセキュリティ向上を、現状のDNSプロトコルやメッセージ形式の範囲で改善する方法「DNSCurve」を提案している(djbdnsメーリングリスト)。この方式は、楕円曲線暗号(Curve25519)を使った公開鍵方式を使ったもので、

* 機密性: クエリと応答の全パケットが暗号化される
* 完全性: 偽の応答を排除するため、全ての応答を暗号化認証する
* 可用性: 偽造パケットの高速に見分けて排除する

という特徴がある。

DNSCurve uses high-speed high-security elliptic-curve cryptography to drastically improve every dimension of DNS security:

* Confidentiality: DNS requests and responses today are completely unencrypted and are broadcast to any attacker who cares to look. DNSCurve encrypts all DNS packets.
* Integrity: DNS today uses "UDP source-port randomization" and "TXID randomization" to create some speed bumps for blind attackers, but patient attackers and sniffing attackers can easily forge DNS records. DNSCurve cryptographically authenticates all DNS responses, eliminating forged DNS packets.
* Availability: DNS today has no protection against denial of service. A sniffing attacker can disable all of your DNS lookups by sending just a few forged packets per second. DNSCurve very quickly recognizes and discards forged packets, so attackers have much more trouble preventing DNS data from getting through. Protection is also needed for SMTP, HTTP, HTTPS, etc., but protecting DNS is the first step.


"DNSCurve: Usable security for DNS"に多少解説があった。


大雑把だけど、

  1. あるドメインの NSを公開鍵をエンコードした名前にする(P.44)
  2. 公開鍵を使ってクエリを暗号化し、レスポンスを復号化する(P.45)

という風に読める。

暗号強度

"DNSCurve: Usable security for DNS"によると、RSA暗号は弱く、強度を上げようとするとCPUと帯域を消費すると主張しているように読める。
一方で、DNScurveは 256bit長の楕円暗号Curve25519を使い、暗号そのものの強度は Curve25519に依存しているように読める。

計算負荷

P47に計算コストの試算(Intel Q6600で 25000times/sec)があるが、人気コンテンツサーバ、大規模キャッシュサーバでの負荷の見積もりがない。
クエリを復号化する必要があるので、クエリ数多いところで相当キビシイことになる可能性がありそうに見える。

実現性

"Comparison of DNSSEC and DNSCurve"の Administrationのところに管理に必要な諸要素についての比較がある。

DNSSECの問題点として、鍵の登録更新、署名検証等で、新たなインタフェース、ソフトウェアが必要、などの点を問題にしているように読める。

NSの変更、コンテンツサーバ、cache serverへの DNScurve実装、(あるいはproxyの実装・追加)が必要な点がデメリットになると思うが、これらがどのくらいシビアなのかについては考察がない。

  • 既存のレジスタレジストリのシステムをいじらなくていい
  • KSK更新に新規インターフェース不要(既存の NS登録インタフェースを使う)
  • 部分鍵更新不要(ZSK?)
  • DNSレコード更新時の署名更新不要

ちゅーあたりが、DNSCurveのメリットか。

ドキュメント

"DNSCurve: Usable security for DNS"
(P.37-P.41で DNSSECを煽って、
P.41-P.48で DNSCurveの説明をちょこっとしています。)

dnscurve.orgにある短いドキュメントが計 6ページあります。


"Internet security." (More on DNSCurve)

P.65〜どうすればいいのかについて言及されている。
P.68に署名の検証等の計算量についての実験結果があります。