Curve25519
في التعمية، Curve25519 هو منحنى ناقصي يقدم 128 بت أمان (حجم المفتاح 256 بت) ومصمم للاستخدام مع مخطط موافقة مفتاح منحنى ديفي-هلمان الناقصي (ECDH). وهي من أسرع منحنيات ECC ولا تغطيها أي براءات اختراع معروفة.[1]التطبيق المرجعي هو برمجيات المجال العام.[2][3]
عرفت ورقة Curve25519 الأصلية بأنها تابع ديفي-هلمان (DH). واقترح دانيال جاي. برنشتاين منذ ذلك الحين استخدام الاسم Curve25519 للمنحنى الأساسي، والاسم X25519 لتابع DH.[4]
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
الخصائص الرياضياتية
المنحنى المستخدم هو ، وهو منحنى مونتگمري، على مجال الحقل الأولي المحدد بواسطة العدد الأولي ، ويستخدم نقطة الأساس . تُنشئ هذه النقطة مجموعة فرعية دورية تكون فيها الرتبة هي العدد الأولي ، وهذه المجموعة الفرعية لها عامل مشترك هو ، مما يعني أن عدد العناصر في المجموعة الفرعية هو من مجموعة المنحنى الناقصي. يؤدي استخدام مجموعة فرعية من الترتيب الأولي إلى منع تصاعد هجوم خوارزمية پولگ– هلمان.[5]
يستخدم الپروتوكول نقطة ناقصية مضغوطة (إحداثيات X فقط)، لذا فهو يسمح بالاستخدام الفعال لـ سلم مونتگمري من أجل ECDH، باستخدام إحداثيات XZ فقط.[6]
تم إنشاء Curve25519 بحيث يتجنب العديد من مخاطر التنفيذ المحتملة.[7] حسب التصميم، فهو محصن ضد هجمات التوقيت ويقبل أي سلسلة 32 بايت كمفتاح معلن صالح ولا يتطلب التحقق من أن نقطة معينة تنتمي إلى المنحنى، أو يتم إنشاؤها بواسطة نقطة الأساس.
يكون المنحنى مكافئ ثنائياً إلى منحنى إدواردز الملتف المستخدم في مشروع توقيع Ed25519[8][9] .[10]
تاريخ
في عام 2005، تم إصدار Curve25519 لأول مرة بواسطة دانيال جاي. برنشتاين.[5]
في عام 2013، ازداد الاهتمام بشكل كبير عندما تم اكتشاف أن NSA قد نفذت الباب الخلفي في Dual_EC_DRBG.[11] على الرغم من عدم ارتباطها بشكل مباشر،[12]بالجوانب المشبوهة من ثوابت منحنى P من NIST [13] وقد أدت إلى مخاوف[14] من أن NSA قد اختارت القيم التي منحتهم ميزة في كسر التشفير.[15][16]
"لم أعد أثق في الثوابت. أعتقد أن وكالة الأمن القومي قد تلاعبت بهم من خلال علاقاتهم مع الصناعة."
— بروس شناير، The NSA Is Breaking Most Encryption on the Internet وكالة الأمن القومي تكسر معظم تشفيرات الإنترنت (2013)
منذ عام 2013، أصبح Curve25519 البديل بحكم الواقع لـ P-256، حيث يتم استخدامه في مجموعة متنوعة من التطبيقات.[17] بدءاً بالعام 2014، تم تعيين OpenSSH[18] كافتراضي على ECDH المستند إلى Curve25519. لا يزال سلوك پروتوكول SSH العام موحداً اعتباراً من 2018.[19]
في عام 2017، أعلنت NIST أنه سيتم إضافة Curve25519 و Curve448 إلى المنشور الخاص 800-186، والذي يحدد المنحنيات الناقصية المعتمدة للاستخدام من قبل الحكومة الفيدرالية الأمريكية.[20]كلاهما موصوف في "RFC 7748".[21]تؤكد مسودة عام 2019 لـ "FIPS 186-5" هذا الادعاء.[22]
في عام 2018، تم تعديل مواصفات DKIM للسماح بالتوقيعات باستخدام هذه الخوارزمية.[23]
أيضاً في عام 2018، تم نشر RFC 8446 كمعيار جديد أمن طبقة النقل v1.3 الجديد. والذي يتطلب دعماً إلزامياً لخوارزميات X25519 و Ed25519 و X448 و Ed448.[24]
المكتبات
- Libgcrypt[25]
- libssh[18][26]
- libssh2 (since version 1.9.0)
- NaCl[27]
- GnuTLS[28]
- mbed TLS (formerly PolarSSL)[29]
- wolfSSL[30]
- Botan[31]
- SChannel[أ][32]
- Libsodium[33]
- OpenSSL since version 1.1.0[34]
- LibreSSL[35]
- NaCl for Tcl — a port to the Tcl language.[36][بحاجة لمصدر محايد]
- NSS since version 3.28[37]
- Crypto++
الپروتوكولات
- OMEMO, a proposed extension for XMPP (Jabber)[38]
- Secure Shell
- Signal Protocol
- Tox
- Zcash
- Transport Layer Security
- Wireguard
التطبيقات
- Conversations Android application[ب]
- Cryptocat[39][ب]
- DNSCrypt[40]
- DNSCurve
- Dropbear[26][41]
- Facebook Messenger [ت][ث]
- Gajim via plugin[42][ب]
- GNUnet[43]
- GnuPG
- Google Allo[ج][ث]
- I2P[44]
- IPFS[45]
- iOS[46]
- Monero[47]
- OpenBSD[ح]
- OpenSSH[26][خ]
- Peerio[52]
- ProtonMail[53]
- PuTTY[54]
- Signal[ث]
- Silent Phone
- SmartFTP[26]
- SSHJ[26]
- SQRL[55]
- Threema Instant Messenger[56]
- TinySSH[26]
- TinyTERM[26]
- Tor[57]
- Viber[58]
- WhatsApp[ث][59]
- Wire
- WireGuard
ملاحظات
- ^ Starting with Windows 10 (1607), Windows Server 2016
- ^ أ ب ت Via the OMEMO protocol
- ^ Only in "secret conversations"
- ^ أ ب ت ث Via the Signal Protocol
- ^ Only in "incognito mode"
- ^ Used to sign releases and packages[48][49]
- ^ Exclusive key exchange in OpenSSH 6.7 when compiled without OpenSSL.[50][51]
المراجع
- ^ Bernstein. "Irrelevant patents on elliptic-curve cryptography". cr.yp.to. Retrieved 2016-02-08.
- ^ 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."
- ^ "X25519". Crypto++. 5 March 2019. Archived from the original on 29 August 2020. Retrieved 29 August 2020.
- ^ "[Cfrg] 25519 naming". Retrieved 2016-02-25.
- ^ أ ب Bernstein, Daniel J. (2006). "Curve25519: New Diffie-Hellman Speed Records" in Public Key Cryptography. 3958: 207–228, New York: Springer. doi:10.1007/11745853_14.
- ^ Lange, Tanja. "EFD / Genus-1 large-characteristic / XZ coordinates for Montgomery curves". EFD / Explicit-Formulas Database. Retrieved 8 February 2016.
- ^ "SafeCurves: Introduction". safecurves.cr.yp.to. Retrieved 2016-02-08.
- ^ 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: multiple names: authors list (link) - ^ 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: multiple names: authors list (link) - ^ (2007) "Faster addition and doubling on elliptic curves" in Advances in cryptology—ASIACRYPT. 4833: 29–50, Berlin: Springer. doi:10.1007/978-3-540-76900-2_3.
- ^ Kelsey, John (May 2014). "Dual EC in X9.82 and SP 800-90" (PDF). National Institute of Standards in Technology. Retrieved 2018-12-02.
- ^ 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.
- ^ https://safecurves.cr.yp.to/
- ^ Maxwell, Gregory (2013-09-08). "[tor-talk] NIST approved crypto in Tor?". Retrieved 2015-05-20.
- ^ "SafeCurves: Rigidity". safecurves.cr.yp.to. Retrieved 2015-05-20.
- ^ "The NSA Is Breaking Most Encryption on the Internet - Schneier on Security". www.schneier.com. Retrieved 2015-05-20.
- ^ "Things that use Curve25519". Retrieved 2015-12-23.
- ^ أ ب Adamantiadis, Aris (2013-11-03). "OpenSSH introduces curve25519-sha256@libssh.org key exchange !". libssh.org. Retrieved 2014-12-27.
- ^ قالب:Cite ietf
- ^ Computer Security Division, Information Technology Laboratory (2017-10-31). "Transition Plans for Key Establishment Schemes | CSRC". CSRC | NIST (in الإنجليزية الأمريكية). Retrieved 2019-09-04.
- ^ RFC 7748. Retrieved from https://tools.ietf.org/html/rfc7748.
- ^ FIPS 186-5. Retrieved from https://csrc.nist.gov/publications/detail/fips/186/5/draft.
- ^ قالب:Cite IETF
- ^ قالب:Cite IETF
- ^ Werner Koch (15 April 2016). "Libgcrypt 1.7.0 release announcement". Retrieved 22 April 2016.
- ^ أ ب ت ث ج ح خ SSH implementation comparison. "Comparison of key exchange methods". Retrieved 2016-02-25.
- ^ "Introduction". yp.to. Retrieved 11 December 2014.
- ^ "nettle: curve25519.h File Reference - doxygen documentation | Fossies Dox". fossies.org. Archived from the original on 2015-05-20. Retrieved 2015-05-19.
- ^ Limited, ARM. "PolarSSL 1.3.3 released - Tech Updates - mbed TLS (Previously PolarSSL)". tls.mbed.org. Retrieved 2015-05-19.
- ^ "wolfSSL Embedded SSL/TLS Library - wolfSSL Products".
- ^ "Botan: src/lib/pubkey/curve25519/curve25519.cpp Source File". botan.randombit.net.
- ^ Justinha. "TLS (Schannel SSP)". docs.microsoft.com (in الإنجليزية الأمريكية). Retrieved 2017-09-15.
- ^ Denis, Frank. "Introduction · libsodium". libsodium.org.
- ^ Inc., OpenSSL Foundation. "OpenSSL". www.openssl.org. Retrieved 2016-06-24.
{{cite web}}
:|last=
has generic name (help) - ^ "Add support for ECDHE with X25519. · openbsd/src@0ad90c3". GitHub.
- ^ "Tclers Wiki - NaCl for Tcl".
- ^ "NSS 3.28 release notes". Retrieved 25 July 2017.
- ^ Straub, Andreas (25 October 2015). "OMEMO Encryption". conversations.im.
- ^ "Cryptocat - Security". crypto.cat. Archived from the original on 2016-04-07. Retrieved 2016-05-24.
- ^ Frank Denis. "DNSCrypt version 2 protocol specification". Archived from the original on 2015-08-13. Retrieved 2016-03-03.
- ^ Matt Johnston. "Dropbear SSH - Changes". Retrieved 2016-02-25.
- ^ Bahtiar Gadimov; et al. "Gajim plugin for OMEMO Multi-End Message and Object Encryption". Retrieved 2016-10-01.
- ^ "GNUnet 0.10.0". gnunet.org. Retrieved 11 December 2014.
- ^ zzz (2014-09-20). "0.9.15 Release - Blog". Retrieved 20 December 2014.
- ^ "go-ipfs_keystore.go at master". Github.com.
- ^ "iOS Security Guide" (PDF).
- ^ "MRL-0003 - Monero is Not That Mysterious" (PDF). getmonero.com. Archived from the original (PDF) on 2019-05-01. Retrieved 2018-06-05.
- ^ Murenin, Constantine A. (2014-01-19). Soulskill (ed.). "OpenBSD Moving Towards Signed Packages — Based On D. J. Bernstein Crypto". Slashdot. Retrieved 2014-12-27.
- ^ Murenin, Constantine A. (2014-05-01). timothy (ed.). "OpenBSD 5.5 Released". Slashdot. Retrieved 2014-12-27.
- ^ Friedl, Markus (2014-04-29). "ssh/kex.c#kexalgs". BSD Cross Reference, OpenBSD src/usr.bin/. Retrieved 2014-12-27.
- ^ Murenin, Constantine A. (2014-04-30). Soulskill (ed.). "OpenSSH No Longer Has To Depend On OpenSSL". Slashdot. Retrieved 2014-12-26.
- ^ "How does Peerio implement end-to-end encryption?". Peerio.
- ^ "ProtonMail now offers elliptic curve cryptography for advanced security and faster speeds".
- ^ "PuTTY Change Log". www.chiark.greenend.org.uk.
- ^ Steve Gibson (December 2019). "SQRL Cryptography whitepaper" (PDF).
- ^ "Threema Cryptography Whitepaper" (PDF).
- ^ Roger Dingledine & Nick Mathewson. "Tor's Protocol Specifications - Blog". Retrieved 20 December 2014.
- ^ "Viber Encryption Overview". Viber. 3 May 2016. Retrieved 24 September 2016.
- ^ Nidhi Rastogi, James Hendler (2017-01-24). WhatsApp security and role of metadata in preserving privacy. Bibcode: 2017arXiv170106817R.