DNSカーブ

DNSオーバーHTTPS
通信プロトコル
開発者ダニエル・J・バーンスタイン
導入2009年[ 1 ] (2009年
OSI層アプリケーション層

DNSCurveは、 Daniel J. Bernsteinによって設計された、ドメインネームシステム(DNS)向けの安全なプロトコルです。リゾルバと権威サーバー 間のDNSパケットを暗号化し、認証します。

DNSCurveは、従来のDNSサービスに比べて以下の利点があると主張している。[ 1 ]

  • 機密性 - 従来の DNS 要求と応答は暗号化されていないため、送信経路上のすべてのユーザーが読み取ることができます。
  • 整合性 - 従来の DNS にはある程度の保護機能がありますが、攻撃者は忍耐とスニッフィングによって DNS レコードを偽造できます。これは DNSCurve の暗号化認証によって防止されます。
  • 可用性 - 従来の DNS には、 1 秒あたり数個の偽造パケットを送信するスニッフィング攻撃によるサービス拒否(DoS) に対する保護機能がありません。DNSCurve は偽造 DNS パケットを認識して破棄することで、ある程度の保護を提供します。ただし、SMTPHTTPHTTPSDoS攻撃に対して脆弱です。

構造

DNSCurveは、権威サーバーのIDを確立するためにCurve25519楕円曲線暗号を使用します。 [ 2 ] リモート権威サーバーの公開鍵は、サーバーの完全修飾ドメイン名のホスト名コンポーネントとしてNSレコードにエンコードされるため、再帰リゾルバはサーバーがDNSCurveをサポートしているかどうかを認識できます。鍵はマジックストリングで始まり、その後にサーバーの255ビット公開鍵を51バイトのBase32uz5エンコードしたものが続きます。例えば、 BIND形式では次のようになります。

example.com。IN NS uz5bcx1nh80x1r17q653jf3guywz7cmyh5jv0qjz0unm56lq7rpj8l.example.com 

このIDは、 Salsa20Poly1305で構成される認証暗号化方式で使用される鍵を確立するために使用されます。暗号化設定は、具体的には暗号化ボックスと呼ばれます。[ 3 ]crypto_box_curve25519xsalsa20poly1305

DNSCurveで使用されている暗号化ツールは、 TCPに似ていますが、楕円曲線暗号を用いてデータの暗号化と認証を行うUDPベースのプロトコルであるCurveCPで使用されているものと同じです。DNSSECがPretty Good Privacy (PGP) でウェブページに署名するのに対しCurveCPDNSCurveTransport Layer Security (TLS)を用いてチャネルを暗号化・認証するようなものです。PGPで署名されたウェブページをSSLを用いて暗号化されたチャネルで送信できるのと同様に、DNSSECデータはDNSCurveを用いて保護できます。[ 4 ]

手術

リゾルバはまず NS レコードから公開鍵を取得します (上記の§ 構造を参照)。

リゾルバは、DNSCurve公開鍵、96ビットのノンス、そしてクエリを含む暗号ボックスを含むパケットをサーバーに送信します。暗号ボックスは、リゾルバの秘密鍵、サーバーの公開鍵、そしてノンスを用いて作成されます。サーバーからの応答には、別の96ビットのノンスと、クエリへの回答を含む独自の暗号ボックスが含まれます。

安全

DNSCurveは256ビットの楕円曲線暗号を用いており、NISTはこれを3072ビットのRSAとほぼ同等と推定しています。[ 5 ] ECRYPTも同様の同等性を報告しています。[ 6 ] ECRYPTはクエリごとの公開鍵暗号(SSHやSSLなど)と、リプレイ攻撃から保護するための96ビットのノンスを使用しています。Googleのセキュリティ責任者であるアダム・ラングレー氏は、「非常に高い確率で、大規模な量子コンピュータなしではCurve25519の単一のインスタンスを解読することはできないだろう」と述べています。[ 7 ]

スピード

アダム・ラングレーは自身のウェブサイトで速度テストを公開しており、DNSCurveで使用されているCurve25519がテストされた楕円曲線の中で最速であることを示しています。[ 8 ]米国国家安全保障局(NSA) によると、楕円曲線暗号は、鍵サイズが大きくなるにつれて、RSAやDiffie-Hellmanに比べてはるかに優れた性能を発揮します。[ 9 ]

実装

DNSCurveは、Matthew Dempskyによるパッチ[ 10 ]を通じて、dnscacheで初めて再帰サポートを獲得しました。DempskyはGitHubリポジトリも所有しており、そこにはPythonのDNSルックアップツールとC言語のフォワーダーが含まれています。[ 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クライアントとリゾルバ間の通信を保護するには、いくつかの方法があります。

注記

  1. ^ a b「DNSCurveの紹介」DNSCurve、2009年6月22日。 2016年3月16日閲覧
  2. ^ DJ Bernstein. 「Curve25519:高速楕円曲線暗号」 . 2013年1月30日閲覧
  3. ^ 「公開鍵認証暗号化:crypto_box」 . nacl.cr.yp.to. crypto_box は、Curve25519、Salsa20、およびPoly1305の特定の組み合わせであるcurve25519xsalsa20poly1305であり、「Cryptography in NaCl」で規定されています。この関数は、プライバシーと第三者による偽造不可能性の標準的な概念を満たすと推測されます。
  4. ^ 「CurveCP: インターネットで使えるセキュリティ」2024年1月18日閲覧
  5. ^ 「NIST勧告(2011)」
  6. ^ 「ECRYPT II アルゴリズムと鍵サイズに関する年次報告書 (2010-2011)」(PDF) 。2012年6月2日時点のオリジナル(PDF)からアーカイブ
  7. ^ 「Adam Langley がcurve25519のセキュリティについて語る」
  8. ^ 「アダム・ラングレー:素数によって何が変わるのか」
  9. ^ 「楕円曲線暗号の事例」 NSA 2009年1月17日時点のオリジナルよりアーカイブ。 2009年1月17日閲覧
  10. ^ 「DNSCurve patch for dnscache」 。2012年12月28日時点のオリジナルよりアーカイブ
  11. ^ 「Matthew DempskyのDNSCurveリポジトリ(GitHub)」GitHub2019年8月13日。
  12. ^ 「Adam LangleyのDNSCurveリポジトリ」。GitHub 2019年8月13日。
  13. ^ 「CurveDNS: DNSCurve 転送ネームサーバー。GitHub
  14. ^ 「curveprotect:幅広いインターネットサービスを保護するための複雑なツール群」2013年5月26日時点のオリジナルよりアーカイブ。 2012年5月9日閲覧
  15. ^ 「DNSCurve.io - DNSCurve のコミュニティ」 . dnscurve.io .
  16. ^ 「OpenDNSがDNSCurveを採用」 。 2010年2月26日時点のオリジナルよりアーカイブ2010年4月13日閲覧。
  17. ^ 「OpenDNSがDNSCryptを発表」 。2013年2月3日時点のオリジナルよりアーカイブ
  18. ^ "net/dnscrypt-proxy: dnscrypt-proxy-1.4.3 – DNSクライアントとリゾルバ間の安全な通信" . OpenBSDポート. 2015年1月6日. 2015年2月9日閲覧.