(Translated by https://www.hiragana.jp/)
Curve25519 - Vikipedi İçeriğe atla

Curve25519

Vikipedi, özgür ansiklopedi

Kriptolojide, Curve25519 256-bit anahtar boyutu için 128-bit güvenlik sağlayan ve eliptik eğri Diffie–Hellman (ECDH) anahtar değişim protokolu ile kullanılması için tasarlanan bir eliptik eğridir. ECC eğrileri içinde en hızlılarından biridir ve bilinen herhangi bir patent kapsamında değildir.[1]

Curve25519, orijinal yayınında bir  Diffie–Hellman (DH) fonksiyonu olarak tanımlanmıştır. Daha sonrasında Daniel J. Bernstein DH fonksiyonu için X25519 ismini, Curve25519'un ise altındaki eğri için kullanılmasını önermiştir.[2]

Matematiksel özellikleri

[değiştir | kaynağı değiştir]

Kullanılan eğri y2 = x3 + 486662x2 + x, bir Montgomery eğrisi,  2255 − 19 asal sayısı ile tanımlanan asal cisminin ikinci dereceden bir genişlemesi üzerindedir ve x = 9 baz noktasını kullanır. Bu bazın mertebesi; .[3]

Protokol sıkıştırılmış eliptik nokta kullanır (sadece X koordinatları) ve bu sayede ECDH için Montgomery merdiveninin, sadece XZ koordinatlarını kullanarak etkili/verimli kullanımına izin verir.[4]

Curve25519, birçok potansiyel implementasyon tuzağını önleyecek şekilde inşa edilmiştir.[5] Tasarım gereği, zamanlama saldırılarına karşı dayanıklıdır, herhangi bir 32 byte bir stringi geçerli bir açık anahtar olarak kabul edebilir ve doğrulama gerektirmez.

Eğri, Ed25519 imza şemasında kullanılan bükülmüş Edwards eğrisine birasyonel denktir.[6]

Curve25519, ilk kez Daniel J. Bernstein tarafından 2005'te yayınlandı.[3] Ancak bu eğriye ilgi 2013'ten sonra, NSA'nın Dual EC DRBG'nin güvenlik sistemine gizli bir erişim implementasyonu uyguladığı keşfedildikten sonra önemli ölçüde arttı. Her ne kadar doğrudan ilişkilendirilemese de[7] NIST'in P eğrisi sabitlerinin şüpheli yönleri, NSA'nın açık anahtar üretiminde kendilerine avantaj sağlayan değerlere sahip olduğuna dair endişelere yol açmıştır.[8]

Artık verilerin doğruluğuna inanmıyorum. NSA'in onları çıkarları doğrultusunda manipule ettiğine inanıyorum. Bruce Schneier (The NSA Is Breaking Most Encryption on the Internet (2013))

O zamandan beri, Curve25519, P-256'ya bir alternatif haline gelmiştir ve uygulamalar geniş bir yelpazede kullanılmaktadır.[9] 2014'ten itibaren OpenSSH 'da[10] ECDH tabanlı Curve25519'u varsaymaktadır.

2017 de, Curve25519 ve Curve448'in ABD Federal Hükûmeti tarafından kullanılmak üzere onaylanmış eliptik eğrileri belirten “Special Publication 800-186” yayınına eklendikleri NIST tarafından ilan edildi.[11]

  1. ^ Starting with Windows 10 (1607), Windows Server 2016
  2. ^ a b c Via the OMEMO protocol
  3. ^ Only in "secret conversations"
  4. ^ a b c d Via the Signal Protocol
  5. ^ Only in "incognito mode"
  6. ^ Used to sign releases and packages[35][36]
  7. ^ Exclusive key exchange in OpenSSH 6.7 when compiled without OpenSSL.[37][38]
  1. ^ Bernstein. "Irrelevant patents on elliptic-curve cryptography". cr.yp.to. 25 Ağustos 2017 tarihinde kaynağından arşivlendi. Erişim tarihi: 8 Şubat 2016. 
  2. ^ "[Cfrg] 25519 naming". 8 Nisan 2018 tarihinde kaynağından arşivlendi. Erişim tarihi: 25 Şubat 2016. 
  3. ^ a b Bernstein, Daniel J. (2006). Yung, Moti; Dodis, Yevgeniy; Kiayias, Aggelos; Malkin, Tal (Ed.). Curve25519: New Diffie-Hellman Speed Records (PDF). Public Key Cryptography. Lecture Notes in Computer Science. 3958. New York: Springer. ss. 207-228. doi:10.1007/11745853_14. ISBN 978-3-540-33851-2. MR 2423191. 22 Ocak 2020 tarihinde kaynağından arşivlendi (PDF). Erişim tarihi: 6 Nisan 2018. 
  4. ^ Lange, Tanja. "EFD / Genus-1 large-characteristic / XZ coordinates for Montgomery curves". EFD / Explicit-Formulas Database. 9 Mart 2017 tarihinde kaynağından arşivlendi. Erişim tarihi: 8 Şubat 2016. 
  5. ^ "SafeCurves: Introduction". safecurves.cr.yp.to. 5 Eylül 2017 tarihinde kaynağından arşivlendi. Erişim tarihi: 8 Şubat 2016. 
  6. ^ 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. 4833. Berlin: Springer. ss. 29-50. doi:10.1007/978-3-540-76900-2_3. ISBN 978-3-540-76899-9. MR 2565722. 15 Aralık 2018 tarihinde kaynağından arşivlendi. Erişim tarihi: 6 Nisan 2018. 
  7. ^ Green, Matthew (14 Ocak 2015). "A Few Thoughts on Cryptographic Engineering: The Many Flaws of Dual_EC_DRBG". blog.cryptographyengineering.com. 20 Ağustos 2016 tarihinde kaynağından arşivlendi. Erişim tarihi: 20 Mayıs 2015. 
  8. ^ "The NSA Is Breaking Most Encryption on the Internet - Schneier on Security". www.schneier.com. 15 Aralık 2017 tarihinde kaynağından arşivlendi. Erişim tarihi: 20 Mayıs 2015. 
  9. ^ "Things that use Curve25519". 8 Nisan 2018 tarihinde kaynağından arşivlendi. Erişim tarihi: 23 Aralık 2015. 
  10. ^ a b Adamantiadis, Aris (3 Kasım 2013). "OpenSSH introduces curve25519-sha256@libssh.org key exchange !". libssh.org. 7 Nisan 2018 tarihinde kaynağından arşivlendi. Erişim tarihi: 27 Aralık 2014. 
  11. ^ "Transition Plans for Key Establishment Schemes". 11 Mart 2018 tarihinde kaynağından arşivlendi. Erişim tarihi: 6 Nisan 2018. 
  12. ^ Werner Koch (15 Nisan 2016). "Libgcrypt 1.7.0 release announcement". 22 Ocak 2017 tarihinde kaynağından arşivlendi. Erişim tarihi: 22 Nisan 2016. 
  13. ^ a b c d e f g SSH implementation comparison. "Comparison of key exchange methods". 24 Eylül 2017 tarihinde kaynağından arşivlendi. Erişim tarihi: 25 Şubat 2016. 
  14. ^ "Introduction". yp.to. 7 Ekim 2017 tarihinde kaynağından arşivlendi. Erişim tarihi: 11 Aralık 2014. 
  15. ^ "nettle: curve25519.h File Reference - doxygen documentation | Fossies Dox". fossies.org. 20 Mayıs 2015 tarihinde kaynağından arşivlendi. Erişim tarihi: 19 Mayıs 2015. 
  16. ^ Limited, ARM. "PolarSSL 1.3.3 released - Tech Updates - mbed TLS (Previously PolarSSL)". tls.mbed.org. 22 Ocak 2017 tarihinde kaynağından arşivlendi. Erişim tarihi: 19 Mayıs 2015. 
  17. ^ "wolfSSL Embedded SSL/TLS Library - wolfSSL Products". 8 Eylül 2017 tarihinde kaynağından arşivlendi. Erişim tarihi: 12 Nisan 2018. 
  18. ^ "Botan: src/lib/pubkey/curve25519/curve25519.cpp Source File". botan.randombit.net. 10 Aralık 2017 tarihinde kaynağından arşivlendi. Erişim tarihi: 12 Nisan 2018. 
  19. ^ Justinha. "TLS (Schannel SSP)". docs.microsoft.com (İngilizce). 28 Şubat 2018 tarihinde kaynağından arşivlendi. Erişim tarihi: 15 Eylül 2017. 
  20. ^ Denis, Frank. "Introduction · libsodium". libsodium.org. 24 Eylül 2019 tarihinde kaynağından arşivlendi. Erişim tarihi: 4 Ekim 2020. 
  21. ^ Inc., OpenSSL Foundation,. "OpenSSL". www.openssl.org. 17 Mart 2018 tarihinde kaynağından arşivlendi. Erişim tarihi: 24 Haziran 2016. 
  22. ^ "Add support for ECDHE with X25519. · openbsd/src@0ad90c3". GitHub. 22 Nisan 2018 tarihinde kaynağından arşivlendi. Erişim tarihi: 12 Nisan 2018. 
  23. ^ "Tclers Wiki - NaCl for Tcl". 9 Aralık 2017 tarihinde kaynağından arşivlendi. Erişim tarihi: 12 Nisan 2018. 
  24. ^ "NSS 3.28 release notes". 9 Aralık 2017 tarihinde kaynağından arşivlendi. Erişim tarihi: 25 Temmuz 2017. 
  25. ^ "Monocypher Manual". 19 Ekim 2017 tarihinde kaynağından arşivlendi. Erişim tarihi: 3 Ağustos 2017. 
  26. ^ Straub, Andreas (25 Ekim 2015). "OMEMO Encryption". conversations.im. 13 Mart 2017 tarihinde kaynağından arşivlendi. Erişim tarihi: 12 Nisan 2018. 
  27. ^ "Cryptocat - Security". crypto.cat. 11 Nisan 2018 tarihinde kaynağından arşivlendi. Erişim tarihi: 24 Mayıs 2016. 
  28. ^ Frank Denis. "DNSCrypt version 2 protocol specification". 13 Ağustos 2015 tarihinde kaynağından arşivlendi. Erişim tarihi: 3 Mart 2016. 
  29. ^ Matt Johnston. "Dropbear SSH - Changes". 23 Mart 2018 tarihinde kaynağından arşivlendi. Erişim tarihi: 25 Şubat 2016. 
  30. ^ Bahtiar Gadimov; ve diğerleri. "Gajim plugin for OMEMO Multi-End Message and Object Encryption". 17 Aralık 2017 tarihinde kaynağından arşivlendi. Erişim tarihi: 1 Ekim 2016. 
  31. ^ "GNUnet 0.10.0". gnunet.org. 9 Aralık 2017 tarihinde kaynağından arşivlendi. Erişim tarihi: 11 Aralık 2014. 
  32. ^ zzz (20 Eylül 2014). "0.9.15 Release - Blog". 28 Haziran 2017 tarihinde kaynağından arşivlendi. Erişim tarihi: 20 Aralık 2014. 
  33. ^ "iOS Security Guide" (PDF). 13 Nisan 2018 tarihinde kaynağından arşivlendi (PDF). Erişim tarihi: 12 Nisan 2018. 
  34. ^ "kaepora/miniLock". GitHub. 5 Mayıs 2017 tarihinde kaynağından arşivlendi. Erişim tarihi: 12 Nisan 2018. 
  35. ^ Murenin, Constantine A. (19 Ocak 2014). Soulskill (Ed.). "OpenBSD Moving Towards Signed Packages — Based On D. J. Bernstein Crypto". Slashdot. 4 Mart 2016 tarihinde kaynağından arşivlendi. Erişim tarihi: 27 Aralık 2014. 
  36. ^ Murenin, Constantine A. (1 Mayıs 2014). timothy (Ed.). "OpenBSD 5.5 Released". Slashdot. 5 Mayıs 2017 tarihinde kaynağından arşivlendi. Erişim tarihi: 27 Aralık 2014. 
  37. ^ Friedl, Markus (29 Nisan 2014). "ssh/kex.c#kexalgs". BSD Cross Reference, OpenBSD src/usr.bin/. 9 Aralık 2017 tarihinde kaynağından arşivlendi. Erişim tarihi: 27 Aralık 2014. 
  38. ^ Murenin, Constantine A. (30 Nisan 2014). Soulskill (Ed.). "OpenSSH No Longer Has To Depend On OpenSSL". Slashdot. 24 Haziran 2016 tarihinde kaynağından arşivlendi. Erişim tarihi: 26 Aralık 2014. 
  39. ^ "How does Peerio implement end-to-end encryption?". Peerio. 9 Aralık 2017 tarihinde kaynağından arşivlendi. Erişim tarihi: 12 Nisan 2018. 
  40. ^ "PuTTY Change Log". www.chiark.greenend.org.uk. 2 Şubat 2018 tarihinde kaynağından arşivlendi. Erişim tarihi: 12 Nisan 2018. 
  41. ^ "Threema Cryptography Whitepaper" (PDF). 21 Eylül 2017 tarihinde kaynağından (PDF) arşivlendi. Erişim tarihi: 12 Nisan 2018. 
  42. ^ Roger Dingledine & Nick Mathewson. "Tor's Protocol Specifications - Blog". 15 Kasım 2018 tarihinde kaynağından arşivlendi. Erişim tarihi: 20 Aralık 2014. 
  43. ^ "Platform Security Overview". Userify. 9 Aralık 2017 tarihinde kaynağından arşivlendi. Erişim tarihi: 23 Mayıs 2017. 
  44. ^ "Viber Encryption Overview". Viber. 3 Mayıs 2016. 1 Şubat 2017 tarihinde kaynağından arşivlendi. Erişim tarihi: 24 Eylül 2016. 
  45. ^ "Virgil crypto uses Curve25519 for ECIES by default". 21 Ekim 2016 tarihinde kaynağından arşivlendi. Erişim tarihi: 20 Mart 2020. 

Dış bağlantılar

[değiştir | kaynağı değiştir]