暗号学 において、Curve25519 とは128ビットの暗号強度(英語版 ) [ 注釈 1] を提供する楕円曲線 であり、楕円曲線ディフィー・ヘルマン鍵共有 (ECDH) で使用するために設計されている。最も処理の速い楕円曲線暗号 (ECC) の楕円曲線での1つであり、これをカバーする特許は知られていない[ 1] 。リファレンス実装 はパブリックドメイン である[ 2] 。
オリジナルの論文では、Curve25519はディフィー・ヘルマン鍵共有 (DH) 関数の名前として定義していた。ダニエル・バーンスタイン がCurve25519をその基本となる楕円曲線の名前で使用することを提案して以来、DH関数についてはX25519 と呼ばれている[ 3] 。
数学的性質
この曲線は素数 2255 − 19 におけるモンゴメリ曲線 y 2 = x 3 + 486662x 2 + x を使用している。また、基点 x = 9 も使用している。この基点は位数
(
2
252
+
27742317777372353535851937790883648493
)
{\displaystyle (2^{252}+27742317777372353535851937790883648493)}
を持つ[ 4] 。
このプロトコルは圧縮された楕円上の点 (X座標のみ) を使用しているので、XZ座標のみを使用して、ECDH用のモンゴメリラダー(英語版 ) を効率的に使用することができる[ 5] 。
Curve25519は実装時における潜在的な欠陥の可能性を回避するように構築されている[ 6] 。設計上、タイミング攻撃の影響を受けず、有効な公開鍵として32バイトの文字列を受け入れる。検証は不要である。
この曲線は、Ed25519 で使用されているツイストエドワーズ曲線(英語版 ) と双有理同値 である[ 7] 。
Curve25519はダニエル・バーンスタイン によって2005年にリリースされたが[ 4] 、Dual_EC_DRBG(英語版 ) にアメリカ国家安全保障局 (NSA) が使用するバックドアが存在する可能性があることが判明した2013年以降にこの曲線への関心が高まった[ 8] 。直接関係はないが[ 9] 、アメリカ国立標準技術研究所 (NIST) のP楕円曲線[ 10] のシード値に[ 11] 、NSAが公開鍵の因数分解をする上で有利となる値を選択したという疑惑が持たれた[ 12] [ 13] 。
I no longer trust the constants. I believe the NSA has manipulated them through their relationships with industry.
—Bruce Schneier、The NSA Is Breaking Most Encryption on the Internet (2013)
それ以来、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、Ed25519 、X448 、Ed448 の利用が推奨されている[ 20] 。
ライブラリ
プロトコル
アプリケーション
脚注
注釈
^ 鍵長(英語版 ) は256ビット。
^ Starting with Windows 10 (1607), Windows Server 2016
^ a b c Via the OMEMO protocol
^ Only in "secret conversations"
^ a b c d Via the Signal Protocol
^ Only in "incognito mode"
^ Used to sign releases and packages[ 44] [ 45]
^ Exclusive key exchange in OpenSSH 6.7 when compiled without OpenSSL .[ 46] [ 47]
出典
^ Bernstein. “Irrelevant patents on elliptic-curve cryptography ”. cr.yp.to . 2016年2月8日閲覧。
^ 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. "
^ “[Cfrg] 25519 naming ”. 2014年12月10日時点のオリジナル よりアーカイブ。2016年2月25日閲覧。
^ a b Bernstein, Daniel J. (2006). Yung, Moti; Dodis, Yevgeniy; Kiayias, Aggelos; et al. (eds.). Curve25519: New Diffie-Hellman Speed Records (PDF) . Public Key Cryptography. Lecture Notes in Computer Science. Vol. 3958. New York: Springer. pp. 207– 228. doi :10.1007/11745853_14 . ISBN 978-3-540-33851-2 . MR 2423191 .
^ “EFD / Genus-1 large-characteristic / XZ coordinates for Montgomery curves ”. EFD / Explicit-Formulas Database . 2016年2月8日閲覧。
^ “SafeCurves: Introduction ”. safecurves.cr.yp.to . 2016年2月8日閲覧。
^
Bernstein, Daniel J.; Lange, Tanja (2007). Kurosawa, Kaoru (ed.). Faster addition and doubling on elliptic curves . Advances in cryptology—ASIACRYPT. Lecture Notes in Computer Science. Vol. 4833. Berlin: Springer. pp. 29– 50. doi :10.1007/978-3-540-76900-2_3 . ISBN 978-3-540-76899-9 . MR 2565722 .
^ Kelsey, John (2014年5月). “Dual EC in X9.82 and SP 800-90 ”. National Institute of Standards in Technology . 2018年12月2日閲覧。
^ Green, Matthew (2015年1月14日). “A Few Thoughts on Cryptographic Engineering: The Many Flaws of Dual_EC_DRBG ”. blog.cryptographyengineering.com . 2015年5月20日閲覧。
^ https://safecurves.cr.yp.to/
^ Maxwell, Gregory (2013年9月8日). “[tor-talk NIST approved crypto in Tor?]”. 2015年5月20日閲覧。
^ “SafeCurves: Rigidity ”. safecurves.cr.yp.to . 2015年5月20日閲覧。
^ “The NSA Is Breaking Most Encryption on the Internet - Schneier on Security ”. www.schneier.com . 2015年5月20日閲覧。
^ “Things that use Curve25519 ”. 2015年12月23日閲覧。
^ a b Adamantiadis, Aris (2013年11月3日). “OpenSSH introduces curve25519-sha256@libssh.org key exchange ! ”. libssh.org . 2014年12月27日閲覧。
^ “Transition Plans for Key Establishment Schemes ”. 2019年4月10日閲覧。
^ Regenscheid, Andrew (31 October 2019). FIPS PUB 186-5 (Draft) . doi :10.6028/NIST.FIPS.186-5-draft . https://csrc.nist.gov/publications/detail/fips/186/5/draft .
^ “Recommendations for Discrete Logarithm-Based Cryptography ”. 2022年8月3日閲覧。
^
John Levine (September 2018). A New Cryptographic Signature Method for DomainKeys Identified Mail (DKIM) (英語). IETF . doi :10.17487/RFC8463 . RFC 8463 .
^
E Rescorla (September 2018). The Transport Layer Security (TLS) Protocol Version 1.3 (英語). IETF . doi :10.17487/RFC8446 . RFC 8446 .
^ Werner Koch (2016年4月15日). “Libgcrypt 1.7.0 release announcement ”. 2016年4月22日閲覧。
^ a b c d e f g SSH implementation comparison. “Comparison of key exchange methods ”. 2016年2月25日閲覧。
^ “Introduction ”. yp.to . 2014年12月11日閲覧。
^ “nettle: curve25519.h File Reference - doxygen documentation | Fossies Dox ”. fossies.org . 2015年5月20日時点のオリジナル よりアーカイブ。2015年5月19日閲覧。
^ Limited, ARM. “PolarSSL 1.3.3 released - Tech Updates - mbed TLS (Previously PolarSSL) ”. tls.mbed.org . 2015年5月19日閲覧。
^ “wolfSSL Embedded SSL/TLS Library - wolfSSL Products ”. 2019年4月10日閲覧。
^ “Botan: src/lib/pubkey/curve25519/curve25519.cpp Source File ”. botan.randombit.net . 2019年4月10日閲覧。
^ Justinha. “TLS (Schannel SSP) ” (英語). docs.microsoft.com . 2017年9月15日閲覧。
^ Denis, Frank. “Introduction · libsodium ”. libsodium.org . 2019年4月10日閲覧。
^ Inc., OpenSSL Foundation,. “OpenSSL ”. www.openssl.org . 2016年6月24日閲覧。
^ “Add support for ECDHE with X25519. · openbsd/src@0ad90c3 ”. GitHub . 2019年4月10日閲覧。
^ “Tclers Wiki - NaCl for Tcl ”. 2019年4月10日閲覧。
^ “NSS 3.28 release notes ”. 2017年7月25日閲覧。
^ Straub, Andreas (2015年10月25日). “OMEMO Encryption ”. conversations.im . 2019年4月10日閲覧。
^ “Cryptocat - Security ”. crypto.cat . 2016年5月24日閲覧。
^ Frank Denis. “DNSCrypt version 2 protocol specification ”. 2016年3月3日閲覧。
^ Matt Johnston. “Dropbear SSH - Changes ”. 2016年2月25日閲覧。
^ Bahtiar Gadimov. “Gajim plugin for OMEMO Multi-End Message and Object Encryption ”. 2016年10月1日閲覧。
^ “GNUnet 0.10.0 ”. gnunet.org . 2014年12月11日閲覧。
^ zzz (2014年9月20日). “0.9.15 Release - Blog ”. 2014年12月20日閲覧。
^ https://github.com/ipfs/go-ipfs/blob/master/core/commands/keystore.go#L68
^ “iOS Security Guide ”. 2019年4月10日閲覧。
^ “MRL-0003 - Monero is Not That Mysterious ”. getmonero.com . 2019年4月10日閲覧。
^ Murenin, Constantine A. (2014年1月19日). Soulskill: “OpenBSD Moving Towards Signed Packages — Based On D. J. Bernstein Crypto ”. Slashdot . 2014年12月27日閲覧。
^ Murenin, Constantine A. (2014年5月1日). timothy: “OpenBSD 5.5 Released ”. Slashdot . 2014年12月27日閲覧。
^ Friedl, Markus (2014年4月29日). “ssh/kex.c#kexalgs ”. BSD Cross Reference, OpenBSD src/usr.bin/ . 2014年12月27日閲覧。
^ Murenin, Constantine A. (2014年4月30日). Soulskill: “OpenSSH No Longer Has To Depend On OpenSSL ”. Slashdot . 2014年12月26日閲覧。
^ “How does Peerio implement end-to-end encryption? ”. Peerio . 2019年4月10日閲覧。
^ “PuTTY Change Log ”. www.chiark.greenend.org.uk . 2019年4月10日閲覧。
^ “Threema Cryptography Whitepaper ”. 2019年4月10日閲覧。
^ Roger Dingledine & Nick Mathewson. “Tor's Protocol Specifications - Blog ”. 2014年12月20日閲覧。
^ “Viber Encryption Overview ”. Viber (2016年5月3日). 2016年9月24日閲覧。
関連項目
外部リンク