곡선 25519

Curve25519

암호학에서 Curve25519128비트의 보안(256비트크기)을 제공하는 타원 곡선이며 타원 곡선 Diffie와 함께 사용하도록 설계되었습니다.Hellman(ECDH) 키 어그리먼트 스킴이는 가장 빠른 ECC 곡선 중 하나이며 알려진 [1]특허의 적용을 받지 않습니다.참조 실장은 퍼블릭 도메인 소프트웨어입니다.[2][3]

원본 Curve25519에서는 Diffie로 정의했습니다.Hellman(DH) 기능Daniel J. Bernstein은 기초 곡선에 Curve25519라는 이름을 사용하고 DH [4]함수에 X25519라는 이름을 사용할 것을 제안했다.

수학적 특성

사용된 곡선은 2 255 - ({ 2 - 에 의해 정의된 소수 에 걸쳐 y + x + x { { } + x{ { \ x } )입니다.이 포인트는 2252 + ({2^{인 순환 서브그룹을 생성합니다. 즉, 이 서브그룹의 공동 계수는 8입니다간곡선군프라임 오더 서브그룹을 사용하면 폴리그의 마운트를 방지할 수 있습니다.Hellman 알고리즘 [5]공격

프로토콜은 압축된 타원점(X 좌표만)을 사용하기 때문에 XZ [6]좌표만 사용하여 ECDH용 Montgomery 래더를 효율적으로 사용할 수 있습니다.

Curve25519는 많은 잠재적 구현 [7]함정을 회피하도록 구성되어 있습니다.설계상 타이밍 공격의 영향을 받지 않고 32바이트 문자열을 유효한 공개 키로 받아들이며 특정 포인트가 곡선에 속하는지 또는 베이스 포인트에 의해 생성되는지 검증할 필요가 없습니다.

곡선은 Ed25519[8][9] 시그니처 [10]스킴에서 사용되는 트위스트 에드워즈 곡선과 버라이어티컬하게 동등합니다.

역사

2005년, Daniel J. Bernstein[5]의해 Curve25519가 처음 출시되었습니다.

2013년에는 NSA가 P-256 커브 기반의 Dual_에 백도어를 도입할 가능성이 있다는 사실이 알려지면서 관심이 크게 높아지기 시작했다.EC_DRBG [11]알고리즘NIST의 P 곡선[13] 상수에 대해 직접적인 [12]관련성은 없지만 NSA가 암호화를 [15][16]해제하는 데 유리한 값을 선택했다는 우려가[14] 제기되었습니다.

"저는 더 이상 상수를 믿지 않습니다.NSA가 업계와의 관계를 통해 그들을 조종했다고 생각합니다."

--

2013년 이후, Curve25519는 P-256의 실질적인 대안이 되어 다양한 애플리케이션에서 [17]사용되고 있습니다.2014년부터 OpenSSH는 Curve25519 기반의 ECDH로 기본 설정되며 GnuPG는 서명 및 암호화를 [19]위한 Ed25519 키에 대한 지원을 추가합니다.일반 SSH 프로토콜에 대한 동작은 2018년 [20]현재 표준화 중입니다.

2017년 NIST는 미국 [21]연방 정부가 사용하도록 승인된 타원 곡선을 명시한 특별 간행물 800-186에 Curve25519와 Curve448이 추가될 것이라고 발표했다.둘 다 RFC 7748에 [22]설명되어 있습니다."FIPS 186-5"의 2019년 초안에는 디지털 서명에 Ed25519[23] 사용할 수 있도록 허용하려는 의도가 명시되어 있습니다.특별 간행물 800-186의 2019년 초안에는 Curve25519의 [24]사용을 허용하는 의도가 명시되어 있다.

2018년에는 [25]이 알고리즘으로 서명할 수 있도록 DKIM 규격이 개정되었습니다.

또한 2018년에는 RFC 8446이 새로운 트랜스포트 레이어 보안 v1.3 표준으로 발행되었습니다.X25519,[26] Ed25519, X448Ed448 알고리즘 지원을 권장합니다.

라이브러리

프로토콜

적용들

메모들

  1. ^ Windows 10(1607), Windows Server 2016 이후
  2. ^ a b c OMEMO 프로토콜을 통해
  3. ^ '비밀 대화'에서만
  4. ^ a b c d 신호 프로토콜 경유
  5. ^ '인식 모드'에서만
  6. ^ 릴리스 및 패키지[52][53] 서명에 사용
  7. ^ OpenSSL을 사용하지 않고 컴파일할 경우 [54][55]OpenSSH 6.7에서 키를 교환할 수 있습니다.

레퍼런스

  1. ^ Bernstein. "Irrelevant patents on elliptic-curve cryptography". cr.yp.to. Retrieved 2016-02-08.
  2. ^ Daniel J. Bernstein"My curve25519 라이브러리최첨단 Diffie-Hellman 함수는 매우 빠른 속도로 Curve25519 함수계산합니다. 라이브러리는 퍼블릭 도메인에 있습니다.
  3. ^ "X25519". Crypto++. 5 March 2019. Archived from the original on 29 August 2020. Retrieved 29 August 2020.
  4. ^ "[Cfrg] 25519 naming". Retrieved 2016-02-25.
  5. ^ a b Bernstein, Daniel J. (2006). "Curve25519: New Diffie-Hellman Speed Records" (PDF). In Yung, Moti; Dodis, Yevgeniy; Kiayias, Aggelos; et al. (eds.). Public Key Cryptography - PKC 2006. 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.
  6. ^ Lange, Tanja. "EFD / Genus-1 large-characteristic / XZ coordinates for Montgomery curves". EFD / Explicit-Formulas Database. Retrieved 8 February 2016.
  7. ^ "SafeCurves: Introduction". safecurves.cr.yp.to. Retrieved 2016-02-08.
  8. ^ Daniel J. Bernstein, Niels Duif, Tanja Lange, Peter Schwabe, Bo-Yin Yang (2017-01-22). "Ed25519: high-speed high-security signatures". Retrieved 2019-11-09.{{cite web}}: CS1 maint: 여러 이름: 작성자 목록(링크)
  9. ^ Daniel J. Bernstein, Niels Duif, Tanja Lange, Peter Schwabe, Bo-Yin Yang (2011-09-26). "High-speed high-security signatures" (PDF). Retrieved 2019-11-09.{{cite web}}: CS1 maint: 여러 이름: 작성자 목록(링크)
  10. ^ Bernstein, Daniel J.; Lange, Tanja (2007). "Faster addition and doubling on elliptic curves". In Kurosawa, Kaoru (ed.). Advances in Cryptology – ASIACRYPT 2007. 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.
  11. ^ Kelsey, John (May 2014). "Dual EC in X9.82 and SP 800-90" (PDF). National Institute of Standards in Technology. Retrieved 2018-12-02.
  12. ^ Green, Matthew (2015-01-14). "A Few Thoughts on Cryptographic Engineering: The Many Flaws of Dual_EC_DRBG". blog.cryptographyengineering.com. Retrieved 2015-05-20.
  13. ^ https://safecurves.cr.yp.to/
  14. ^ Maxwell, Gregory (2013-09-08). "[tor-talk] NIST approved crypto in Tor?". Retrieved 2015-05-20.
  15. ^ "SafeCurves: Rigidity". safecurves.cr.yp.to. Retrieved 2015-05-20.
  16. ^ "The NSA Is Breaking Most Encryption on the Internet - Schneier on Security". www.schneier.com. Retrieved 2015-05-20.
  17. ^ "Things that use Curve25519". Retrieved 2015-12-23.
  18. ^ a b Adamantiadis, Aris (2013-11-03). "OpenSSH introduces curve25519-sha256@libssh.org key exchange !". libssh.org. Retrieved 2014-12-27.
  19. ^ "GnuPG - What's new in 2.1". August 2021.
  20. ^ A. Adamantiadis; libssh; S. Josefsson; SJD AB; M. Baushke; Juniper Networks, Inc. (2018-06-26). Secure Shell (SSH) Key Exchange Method using Curve25519 and Curve448. I-D draft-ietf-curdle-ssh-curves-08.
  21. ^ Computer Security Division, Information Technology Laboratory (2017-10-31). "Transition Plans for Key Establishment Schemes CSRC". CSRC NIST. Retrieved 2019-09-04.
  22. ^ RFC 7748.https://tools.ietf.org/html/rfc7748 에서 취득했습니다.
  23. ^ Regenscheid, Andrew (31 October 2019). "FIPS PUB 186-5 (Draft)". doi:10.6028/NIST.FIPS.186-5-draft. S2CID 241055751. {{cite journal}}:Cite 저널 요구 사항 journal=(도움말)
  24. ^ "Recommendations for Discrete Logarithm-Based Cryptography" (PDF).
  25. ^ John Levine (September 2018). A New Cryptographic Signature Method for DomainKeys Identified Mail (DKIM). IETF. doi:10.17487/RFC8463. RFC 8463.
  26. ^ E Rescorla (September 2018). The Transport Layer Security (TLS) Protocol Version 1.3. IETF. doi:10.17487/RFC8446. RFC 8446.
  27. ^ Werner Koch (15 April 2016). "Libgcrypt 1.7.0 release announcement". Retrieved 22 April 2016.
  28. ^ a b c d e f g SSH implementation comparison. "Comparison of key exchange methods". Retrieved 2016-02-25.
  29. ^ "Introduction". yp.to. Retrieved 11 December 2014.
  30. ^ "nettle: curve25519.h File Reference - doxygen documentation Fossies Dox". fossies.org. Archived from the original on 2015-05-20. Retrieved 2015-05-19.
  31. ^ Limited, ARM. "PolarSSL 1.3.3 released - Tech Updates - mbed TLS (Previously PolarSSL)". tls.mbed.org. Retrieved 2015-05-19.
  32. ^ "wolfSSL Embedded SSL/TLS Library - wolfSSL Products".
  33. ^ "Botan: src/lib/pubkey/curve25519/curve25519.cpp Source File". botan.randombit.net.
  34. ^ Justinha. "TLS (Schannel SSP)". docs.microsoft.com. Retrieved 2017-09-15.
  35. ^ Denis, Frank. "Introduction · libsodium". libsodium.org.
  36. ^ Inc., OpenSSL Foundation. "OpenSSL". www.openssl.org. Archived from the original on 2018-03-17. Retrieved 2016-06-24.
  37. ^ "Add support for ECDHE with X25519. · openbsd/src@0ad90c3". GitHub.
  38. ^ "Tclers Wiki - NaCl for Tcl".
  39. ^ "NSS 3.28 release notes". Retrieved 25 July 2017.
  40. ^ "A pure-Rust implementation of group operations on ristretto255 and Curve25519". Retrieved 14 April 2021.
  41. ^ "Ed25519.java". GitHub. 13 October 2021.
  42. ^ Straub, Andreas (25 October 2015). "OMEMO Encryption". conversations.im.
  43. ^ "Cryptocat - Security". crypto.cat. Archived from the original on 2016-04-07. Retrieved 2016-05-24.
  44. ^ Frank Denis. "DNSCrypt version 2 protocol specification". GitHub. Archived from the original on 2015-08-13. Retrieved 2016-03-03.
  45. ^ Matt Johnston. "Dropbear SSH - Changes". Retrieved 2016-02-25.
  46. ^ Bahtiar Gadimov; et al. "Gajim plugin for OMEMO Multi-End Message and Object Encryption". GitHub. Retrieved 2016-10-01.
  47. ^ "GNUnet 0.10.0". gnunet.org. Archived from the original on 9 December 2017. Retrieved 11 December 2014.
  48. ^ zzz (2014-09-20). "0.9.15 Release - Blog". Retrieved 20 December 2014.
  49. ^ "go-ipfs_keystore.go at master". Github.com. 30 March 2022.
  50. ^ "iOS Security Guide" (PDF).
  51. ^ "MRL-0003 - Monero is Not That Mysterious" (PDF). getmonero.com. Archived from the original (PDF) on 2019-05-01. Retrieved 2018-06-05.
  52. ^ Murenin, Constantine A. (2014-01-19). Soulskill (ed.). "OpenBSD Moving Towards Signed Packages — Based On D. J. Bernstein Crypto". Slashdot. Retrieved 2014-12-27.
  53. ^ Murenin, Constantine A. (2014-05-01). timothy (ed.). "OpenBSD 5.5 Released". Slashdot. Retrieved 2014-12-27.
  54. ^ Friedl, Markus (2014-04-29). "ssh/kex.c#kexalgs". BSD Cross Reference, OpenBSD src/usr.bin/. Retrieved 2014-12-27.
  55. ^ Murenin, Constantine A. (2014-04-30). Soulskill (ed.). "OpenSSH No Longer Has To Depend On OpenSSL". Slashdot. Retrieved 2014-12-26.
  56. ^ "How does Peerio implement end-to-end encryption?". Peerio. Archived from the original on 2017-12-09. Retrieved 2015-11-04.
  57. ^ "ProtonMail now offers elliptic curve cryptography for advanced security and faster speeds". 25 April 2019.
  58. ^ "PuTTY Change Log". www.chiark.greenend.org.uk.
  59. ^ Steve Gibson (December 2019). "SQRL Cryptography whitepaper" (PDF).
  60. ^ "Threema Cryptography Whitepaper" (PDF).
  61. ^ Roger Dingledine & Nick Mathewson. "Tor's Protocol Specifications - Blog". Retrieved 20 December 2014.
  62. ^ "Viber Encryption Overview". Viber. 3 May 2016. Retrieved 24 September 2016.
  63. ^ Nidhi Rastogi, James Hendler (2017-01-24). "WhatsApp security and role of metadata in preserving privacy". arXiv:1701.06817. Bibcode:2017arXiv170106817R. {{cite journal}}:Cite 저널 요구 사항 journal=(도움말)

외부 링크