| 通信プロトコル | |
| 開発者 | ダニエル・J・バーンスタイン |
|---|---|
| 導入 | 2009年[1] |
| OSI層 | アプリケーション層 |
| Webサイト | dnscurve.org |
DNSCurve は、 Daniel J. Bernsteinによって設計された、ドメイン ネーム システム(DNS)用の提案された安全なプロトコルです。リゾルバと権限のあるサーバー 間のDNSパケットを暗号化し、認証します。
DNSCurveは、従来のDNSサービスに比べて次のような利点があると主張している: [1]
- 機密性 - 通常の DNS 要求と応答は暗号化されず、攻撃者にブロードキャストされます。
- 整合性 - 通常の DNS にはある程度の保護機能がありますが、忍耐とスニッフィングにより、攻撃者は DNS レコードを偽造できます。これは DNSCurve の暗号化認証によって防止されます。
- 可用性 - 通常の DNS には、1 秒あたり数個の偽造パケットを送信するスニッフィング攻撃者によるサービス拒否(DoS)に対する保護機能がありません。DNSCurve は偽造された DNS パケットを認識して破棄し、ある程度の保護を提供しますが、SMTP、HTTP、HTTPSもDoSに対して脆弱です。
構造
DNSCurve は、権威サーバーの ID を確立するためにCurve25519 楕円曲線暗号を使用します。 [2]リモート権威サーバーの 公開鍵はNS レコードに配置されるため、再帰リゾルバはサーバーが DNSCurve をサポートしているかどうかを認識できます。鍵はマジック ストリングで始まり、サーバーの 255 ビット公開鍵の 51 バイトのBase32uz5エンコードが続きます。たとえば、BIND形式では次のようになります。
example.com. IN NS uz5bcx1nh80x1r17q653jf3guywz7cmyh5jv0qjz0unm56lq7rpj8l.example.com.
このアイデンティティは、 Salsa20とPoly1305で構成される認証暗号化方式で使用されるキーを確立するために使用されます。暗号化設定は、具体的には「暗号化ボックス」と呼ばれます。[3]crypto_box_curve25519xsalsa20poly1305
DNSCurve で使用されている「暗号ボックス」ツールは、TCPに似ていますが、楕円曲線暗号を使用してデータを暗号化および認証するUDPベースのプロトコルであるCurveCPで使用されているものと同じです。類似点としては、 DNSSEC がPretty Good Privacy (PGP)を使用して Web ページに署名するのに対し、CurveCP と DNSCurve はTransport Layer Security (TLS)を使用してチャネルを暗号化および認証するようなものです。PGP で署名された Web ページが SSL を使用して暗号化されたチャネルを介して送信できるのと同様に、DNSSEC データは DNSCurve を使用して保護できます。[4]
手術
リゾルバはまず NS レコードから公開鍵を取得します (上記の § 構造を参照)。
次に、リゾルバは、DNSCurve 公開鍵、96 ビットのnonce、およびクエリを含む暗号化ボックスを含むパケットをサーバーに送信します。暗号化ボックスは、リゾルバの秘密鍵、サーバーの公開鍵、および nonce を使用して作成されます。サーバーからの応答には、別の 96 ビットの nonce と、クエリに対する回答を含む独自の暗号化ボックスが含まれます。
安全
DNSCurve は 256 ビットの楕円曲線暗号を使用しており、NIST はこれを3072 ビットの RSA とほぼ同等と推定しています。[5] ECRYPT も同様の同等性を報告しています。[6]これはクエリごとの公開鍵暗号 (SSH や SSL など) と 96 ビットの nonce を使用してリプレイ攻撃から保護します。Google のセキュリティ責任者である Adam Langley 氏は、「大規模な量子コンピューターがなければ、Curve25519 の単一のインスタンスを解くことは非常に高い確率で不可能です」と述べています。[7]
スピード
アダム・ラングレーは自身のウェブサイトに速度テストを掲載し、DNSCurveで使用されているCurve25519がテストされた楕円曲線の中で最速であることを示しています。[8] 米国国家安全保障局(NSA)によると、楕円曲線暗号は鍵サイズが大きくなるにつれて、RSAやDiffie-Hellmanに比べてはるかに優れた性能を発揮します。[9]
実装
DNSCurveは、Matthew Dempskyによるパッチ[10]を介して、dnscacheで再帰サポートを初めて獲得しました。Dempskyは、Python DNSルックアップツールとCのフォワーダーを含むGitHubリポジトリも持っています。 [11] Adam LangleyもGitHubリポジトリを持っています。[12] CurveDNSと呼ばれる権威フォワーダー[13]があり、DNS管理者はパッチを適用せずに既存のインストールを保護できます。
Jan Mojžíšは、DNS、SSH、HTTP、SMTPなどの一般的なサービスに対してDNSCurveとCurveCPの保護を実装したソフトウェアスイートで あるcurveprotect [14]をリリースしました。
DNSCurve.io(2023)は、再帰リゾルバにはJan Mojžíšのdqcache、権威サーバーにはCurveDNSという2つの実装を推奨しています。[15]
展開
5000万人のユーザーを抱えるOpenDNSは、2010年2月23日に再帰リゾルバでDNSCurveをサポートすると発表しました。つまり、同社の再帰リゾルバは、利用可能な場合は権威サーバーと通信するためにDNSCurveを使用するようになりました。 [16] 2011年12月6日、OpenDNSはDNSCryptと呼ばれる新しいツールを発表しました。[17] DNSCryptはDNSCurveと同様の暗号化ツールに基づいていますが、OpenDNSとユーザー間のチャネルを保護します。[18]
同等の規模の権威 DNS プロバイダーはまだ DNSCurve を導入していません。
参照
DNSCurve は、リゾルバと権威サーバー間の通信を保護することを目的としています。DNS クライアントとリゾルバ間の通信を保護するには、いくつかのオプションがあります。
- DNS over TLS は、2つの標準化過程のRFC、RFC 7858とRFC 8310で定義されています。
- DNS over HTTPS、RFC 8484 で標準化されている
- DNS暗号化
注記
- ^ ab 「 DNSCurveの紹介」。DNSCurve。2009 年 6 月 22 日。2016 年3 月 16 日閲覧。
- ^ DJ Bernstein. 「Curve25519: 高速楕円曲線暗号」 . 2013年1月30日閲覧。
- ^ 「公開鍵認証暗号化: crypto_box」。nacl.cr.yp.to。crypto_boxは、
Curve25519xsalsa20poly1305 で、「Cryptography in NaCl」で指定されている Curve25519、Salsa20、および Poly1305 の特定の組み合わせです。この関数は、プライバシーと第三者による偽造不可能性の標準的な概念を満たすと推測されます。
- ^ 「CurveCP: インターネットで使えるセキュリティ」 。 2024年1月18日閲覧。
- ^ 「NIST勧告(2011)」。
- ^ 「ECRYPT II アルゴリズムとキーサイズに関する年次レポート (2010-2011)」(PDF) 。2012 年 6 月 2 日時点のオリジナル(PDF)からアーカイブ。
- ^ 「Adam Langley が curve25519 のセキュリティについて語る」
- ^ 「アダム・ラングレー:素数によって何が変わるのか」
- ^ 「楕円曲線暗号のケース」NSA。 2009年1月17日時点のオリジナルよりアーカイブ。 2009年1月17日閲覧。
- ^ 「DNSCurve patch for dnscache」。2012年12月28日時点のオリジナルよりアーカイブ。
- ^ 「Matthew Dempsky の DNSCurve リポジトリ (GitHub 上)」。GitHub。2019年 8 月 13 日。
- ^ 「Adam Langley の DNSCurve リポジトリ」。GitHub。2019年8 月 13 日。
- ^ 「CurveDNS: DNSCurve 転送ネーム サーバー」。
- ^ 「curveprotect、幅広いインターネット サービスを保護するための複雑なツールのコレクション」。2013 年 5 月 26 日時点のオリジナルよりアーカイブ。2012 年5 月 9 日閲覧。
- ^ 「DNSCurve.io - DNSCurve のコミュニティ」。dnscurve.io。
- ^ 「OpenDNS が DNSCurve を採用」。2010 年 2 月 26 日時点のオリジナルよりアーカイブ。2010 年 4 月 13 日閲覧。
- ^ 「OpenDNS が DNSCrypt を発表」。2013 年 2 月 3 日時点のオリジナルよりアーカイブ。
- ^ 「net/dnscrypt-proxy: dnscrypt-proxy-1.4.3 – DNS クライアントとリゾルバ間の安全な通信」。OpenBSDポート。2015 年 1 月 6 日。2015年 2 月 9 日閲覧。
外部リンク
- 公式サイト
- DNSCurve.io: DNSCurve ユーザーのためのコミュニティ
- 高速暗号化と DNSCurve、著者による 2009 年 6 月のプレゼンテーション
- DNSCurve: DNS の実用的なセキュリティ、著者による 2008 年 8 月のプレゼンテーション
- draft-dempsky-dnscurve-01 提案された標準「DNSCurve: ドメイン ネーム システムのリンク レベル セキュリティ」、M. Dempsky ( OpenDNSから)がIETFに送信(2010 年 2 月に更新)
- OpenDNS が DNSCurve を採用 2010-02-26 にWayback Machineにアーカイブ、公式 OpenDNS ブログ エントリ
- CurveDNS、DNSCurve 転送ネームサーバー
- NaCl、ネットワークおよび暗号化ライブラリ
