Curve25519

提供: testwiki
ナビゲーションに移動 検索に移動

暗号学において、Curve25519とは128ビットのテンプレート:仮リンクテンプレート:Efnを提供する楕円曲線であり、楕円曲線ディフィー・ヘルマン鍵共有 (ECDH) で使用するために設計されている。最も処理の速い楕円曲線暗号 (ECC) の楕円曲線での1つであり、これをカバーする特許は知られていない[1]リファレンス実装パブリックドメインである[2]

オリジナルの論文では、Curve25519はディフィー・ヘルマン鍵共有 (DH) 関数の名前として定義していた。ダニエル・バーンスタインがCurve25519をその基本となる楕円曲線の名前で使用することを提案して以来、DH関数についてはX25519と呼ばれている[3]

数学的性質

この曲線は素数 テンプレート:Mathにおけるモンゴメリ曲線 テンプレート:Mathを使用している。また、基点 テンプレート:Mathも使用している。この基点は位数 (2252+27742317777372353535851937790883648493)を持つ[4]

このプロトコルは圧縮された楕円上の点 (X座標のみ) を使用しているので、XZ座標のみを使用して、ECDH用のテンプレート:仮リンクを効率的に使用することができる[5]

Curve25519は実装時における潜在的な欠陥の可能性を回避するように構築されている[6]。設計上、タイミング攻撃の影響を受けず、有効な公開鍵として32バイトの文字列を受け入れる。検証は不要である。

この曲線は、Ed25519で使用されているテンプレート:仮リンク双有理同値である[7]

歴史

Curve25519はダニエル・バーンスタインによって2005年にリリースされたが[4]テンプレート:仮リンクアメリカ国家安全保障局 (NSA) が使用するバックドアが存在する可能性があることが判明した2013年以降にこの曲線への関心が高まった[8]。直接関係はないが[9]アメリカ国立標準技術研究所 (NIST) のP楕円曲線[10]のシード値に[11]、NSAが公開鍵の因数分解をする上で有利となる値を選択したという疑惑が持たれた[12][13]

テンプレート:Quote

それ以来、Curve25519はP-256の事実上の代替手段となり、幅広い用途で使用されている[14]。2014年以降、OpenSSHのデフォルトはCurve25519ベースのECDHである[15]

2017年、NISTはCurve25519とCurve448がSP 800-186に追加されることを発表した。これによって合衆国政府によって使用される承認された楕円曲線として指定されることになる[16]。どちらの楕円曲線もRFC 7748で説明されている。2019年、FIPS 186-5の2019年の草稿ではデジタル署名としてEd25519の利用が[17]、SP 800-186の草稿ではCurve25519の利用が[18]それぞれ追加されている。

2018年、ドメインキー・アイデンティファイド・メール (DKIM) の使用はこのアルゴリズムによる署名ができるように修正された[19]

2018年に公開されたTransport Layer Security (TLS) 1.3では、X25519、Ed25519X448Ed448の利用が推奨されている[20]

ライブラリ

テンプレート:Div col

テンプレート:Div col end

プロトコル

アプリケーション

テンプレート:Div col

テンプレート:Div col end

脚注

注釈

テンプレート:Notelist

出典

テンプレート:Reflist

関連項目

外部リンク

  1. テンプレート:Cite web
  2. A state-of-the-art Diffie-Hellman function by Daniel J. Bernstein"My curve25519 library computes the Curve25519 function at very high speed. The library is in the public domain. "
  3. テンプレート:Cite web
  4. 4.0 4.1 テンプレート:Cite conference
  5. テンプレート:Cite web
  6. テンプレート:Cite web
  7. テンプレート:Cite conference
  8. テンプレート:Cite web
  9. テンプレート:Cite web
  10. https://safecurves.cr.yp.to/
  11. テンプレート:Cite web
  12. テンプレート:Cite web
  13. テンプレート:Cite web
  14. テンプレート:Cite web
  15. 15.0 15.1 テンプレート:Cite web
  16. テンプレート:Cite web
  17. テンプレート:Cite journal
  18. テンプレート:Cite web
  19. テンプレート:Cite IETF
  20. テンプレート:Cite IETF
  21. テンプレート:Cite web
  22. 22.0 22.1 22.2 22.3 22.4 22.5 22.6 テンプレート:Cite web
  23. テンプレート:Cite web
  24. テンプレート:Cite web
  25. テンプレート:Cite web
  26. テンプレート:Cite web
  27. テンプレート:Cite web
  28. テンプレート:Cite web
  29. テンプレート:Cite web
  30. テンプレート:Cite web
  31. テンプレート:Cite web
  32. テンプレート:Cite web
  33. テンプレート:Cite web
  34. テンプレート:Cite web
  35. テンプレート:Cite web
  36. テンプレート:Cite web
  37. テンプレート:Cite web
  38. テンプレート:Cite web
  39. テンプレート:Cite web
  40. テンプレート:Cite web
  41. https://github.com/ipfs/go-ipfs/blob/master/core/commands/keystore.go#L68
  42. テンプレート:Cite web
  43. テンプレート:Cite web
  44. テンプレート:Cite web
  45. テンプレート:Cite web
  46. テンプレート:Cite web
  47. テンプレート:Cite web
  48. テンプレート:Cite web