Fundamentals ·

secp256k1 مقابل ed25519: المنحنيات البيضاوية في العملات الرقمية


كل معاملة عملات رقمية تتطلب توقيعاً رقمياً --- إثباتاً رياضياً بأن الشخص المرسل للأموال يتحكم فعلاً في الحساب. يُنتج هذا التوقيع بخوارزمية تعتمد على خصائص منحنى بيضاوي. المنحنيان اللذان يهيمنان على عالم البلوكتشين هما secp256k1 وed25519. يخدمان نفس الغرض الأساسي، لكن تصميمهما وخصائص أدائهما وتاريخ اعتمادهما مختلفة جداً.

يشرح هذا الدليل ما تفعله المنحنيات البيضاوية في التشفير، وكيف يختلف secp256k1 عن ed25519، وما تعنيه تلك الاختلافات لتوليد المفاتيح وأمان المحافظ وسلاسل الكتل التي تستخدمها.

ما هي المنحنيات البيضاوية؟

المنحنى البيضاوي، في سياق التشفير، هو بنية رياضية محددة بمعادلة من الشكل y^2 = x^3 + ax + b (للمنحنيات مثل secp256k1) أو شكل مرتبط (للمنحنيات مثل ed25519). يعتمد أمان تشفير المنحنيات البيضاوية (ECC) على مسألة اللوغاريتم المنفصل للمنحنيات البيضاوية (ECDLP): بمعلومية نقطة P على المنحنى ونقطة Q = k * P (حيث k عدد قياسي و* تمثل ضرب النقاط)، يكون تحديد k من P وQ وحدهما مستحيلاً حسابياً.

بمصطلحات العملات الرقمية:

  • k هو مفتاحك الخاص --- رقم سري.
  • P هي نقطة المولّد --- نقطة ثابتة ومعروفة علنياً على المنحنى.
  • Q هو مفتاحك العام --- مشتق من المفتاح الخاص عبر ضرب النقاط.

يمكن لأي شخص التحقق من أن Q تطابق k * P إذا عرف كلاً من Q وتوقيعاً مُنتجاً بـ k، لكن لا أحد يستطيع استخلاص k من Q. هذا ما يجعل مشاركة مفتاحك العام (والعنوان المشتق منه) آمنة مع إبقاء المفتاح الخاص سرياً.

يوفر ECC نفس مستوى أمان RSA بأحجام مفاتيح أصغر بكثير. مفتاح منحنى بيضاوي 256 بت يوفر تقريباً نفس أمان مفتاح RSA بـ 3,072 بت. هذا الحجم المدمج ضروري لسلاسل الكتل، حيث كل بايت في المعاملة يكلف تخزيناً وعرض نطاق.

secp256k1: منحنى Bitcoin وEthereum

secp256k1 هو المنحنى البيضاوي المستخدم من قبل Bitcoin وEthereum ومعظم سلاسل الكتل في نظامهما البيئي. يُحلل الاسم كالتالي:

  • sec --- معايير التشفير الفعال
  • p --- المنحنى محدد على حقل أولي
  • 256 --- العدد الأولي بطول 256 بت
  • k --- هذا منحنى Koblitz (فئة محددة بمزايا كفاءة حسابية)
  • 1 --- هو المنحنى الأول (والوحيد) من هذا النوع في المعيار

معادلة المنحنى هي: y^2 = x^3 + 7 (على الحقل المنتهي المحدد بالعدد الأولي p = 2^256 - 2^32 - 977).

اختار ساتوشي ناكاموتو secp256k1 لـ Bitcoin في 2009. كان اختياراً غير معتاد في ذلك الوقت. استخدمت معظم الأنظمة منحنى NIST P-256 (المسمى أيضاً secp256r1). حرف "r" في secp256r1 يشير إلى استخدام بذرة عشوائية يمكن التحقق منها لمعاملاته، بينما اختيرت معاملات secp256k1 للكفاءة الحسابية وليس العشوائية. أبدى بعض خبراء التشفير قلقاً طويلاً من أن منحنيات NIST قد تحتوي معاملات متأثرة بوكالة الأمن القومي --- قلق تعزز بفضيحة Dual_EC_DRBG المكشوفة في 2013. يتجنب secp256k1 هذا الشك كلياً لأن معاملاته بسيطة وشفافة: a = 0, b = 7.

التوقيعات: ECDSA

خوارزمية التوقيع المقترنة بـ secp256k1 في Bitcoin وEthereum هي ECDSA --- خوارزمية التوقيع الرقمي بالمنحنى البيضاوي. عند إرسال معاملة Bitcoin أو Ethereum، تستخدم المحفظة ECDSA لإنتاج توقيع من مفتاحك الخاص وهاش المعاملة. يتحقق المدققون على الشبكة من هذا التوقيع باستخدام مفتاحك العام.

توقيعات ECDSA على secp256k1 هي 64 بايت (قيمتان من 32 بايت، تسميان عادة r وs) بالإضافة إلى بايت استرداد تتضمنه بعض التطبيقات. تكون حتمية عند استخدام RFC 6979 (الذي يستخدمه كل من Bitcoin وEthereum)، مما يعني أن نفس الرسالة والمفتاح الخاص ينتجان دائماً نفس التوقيع --- لا حاجة لعشوائية وقت التوقيع.

إحدى خصوصيات ECDSA هي قابلية تعديل التوقيع: بمعلومية توقيع صالح (r, s)، يكون الزوج (r, -s mod n) صالحاً أيضاً. عالج Bitcoin هذا بـ BIP66 (ترميز DER الصارم) ولاحقاً بـ SegWit. يحلها Ethereum بفرض شكل قانوني لـ s.

الأداء

التحقق من secp256k1 في التطبيقات المُحسّنة (مثل libsecp256k1 المستخدمة في Bitcoin Core) سريع: عدة آلاف عملية تحقق في الثانية على الأجهزة الحديثة. لكن توقيع ECDSA والتحقق منه أكثر تعقيداً بطبيعتهما من EdDSA (الخوارزمية المقترنة بـ ed25519)، التي صُممت من الأساس للسرعة.

ed25519: الخيار الحديث لـ Solana

ed25519 هو منحنى بيضاوي صممه Daniel J. Bernstein وزملاؤه. نُشر في 2011، بعد عامين من إطلاق Bitcoin، ويمثل جيلاً أحدث من تصميم المنحنيات يُعطي الأولوية للأمان والأداء معاً.

يشير الاسم إلى شكل منحنى Edwards على الحقل الأولي 2^255 - 19 (ومن هنا "25519"). المنحنى المحدد المستخدم هو منحنى Edwards ملتوي يسمى "edwards25519"، وهو مكافئ تناسبياً لـ Curve25519 (المستخدم على نطاق واسع في تبادل المفاتيح، مثلاً في Signal وTLS 1.3).

اختارت Solana ed25519 كمنحنى توقيعها، وكذلك عدة سلاسل كتل حديثة أخرى. يعكس الاختيار مزايا ed25519 في الإنتاجية --- اعتبار حاسم لبنية Solana عالية الأداء.

التوقيعات: EdDSA

خوارزمية التوقيع المقترنة بـ ed25519 هي EdDSA --- خوارزمية التوقيع الرقمي لمنحنى Edwards. تحديداً، تستخدم Solana Ed25519 (EdDSA مع edwards25519)، التي تنتج توقيعات بحجم 64 بايت.

صُممت EdDSA لتجنب مشاكل ECDSA:

  • لا حاجة لعشوائية أثناء التوقيع. توقيعات EdDSA حتمية بطبيعتها --- يُشتق الرقم المؤقت من المفتاح الخاص والرسالة عبر التهشير. مع ECDSA، يمكن لمولد أرقام عشوائية سيء أن يسرّب المفتاح الخاص بالكامل أثناء التوقيع (حدث هذا لمفتاح توقيع Sony PS3 في 2010).
  • لا قابلية لتعديل التوقيع. توقيعات EdDSA لها شكل قانوني واحد.
  • تحقق دُفعي أسرع. يمكن التحقق من توقيعات Ed25519 متعددة في وقت واحد أسرع من التحقق من كل واحد على حدة --- ميزة كبيرة لسلاسل الكتل عالية الإنتاجية.
  • تطبيق أبسط. تحتوي الخوارزمية على حالات حافة وشروط تفرع أقل، مما يقلل مساحة هجمات القناة الجانبية.

الأداء

Ed25519 أسرع باستمرار من ECDSA-secp256k1 في المعايير المرجعية. التوقيع أسرع بنحو 2-3 مرات، والتحقق من توقيع واحد مماثل تقريباً، لكن التحقق الدُفعي هو حيث يتألق Ed25519 حقاً --- يمكنه التحقق من مئات التوقيعات أسرع بكثير من التحقق منها واحداً تلو الآخر. على Solana، حيث يمكن أن تحتوي الكتل على آلاف المعاملات، هذا الفرق في الأداء جوهري.

ECDSA مقابل EdDSA: مقارنة مباشرة

الخاصية ECDSA (secp256k1) EdDSA (ed25519)
نوع المنحنى Short Weierstrass Twisted Edwards
حجم المفتاح 256 بت 256 بت
حجم التوقيع 64-65 بايت 64 بايت
مستوى الأمان ~128 بت ~128 بت
سرعة التوقيع سريع أسرع (2-3 مرات)
سرعة التحقق سريع مماثل (فردي)، أسرع (دُفعي)
التوقيع الحتمي اختياري (RFC 6979) مدمج (بالتصميم)
قابلية تعديل التوقيع ممكنة (مخففة عملياً) لا يوجد
ثغرة الرقم المؤقت نعم (RNG سيء يسرّب المفتاح) لا (الرقم المؤقت مشتق من المفتاح + الرسالة)
الاعتماد Bitcoin، Ethereum، BNB Chain، Tron، Dogecoin، Litecoin Solana، XRP (جزئياً)، Cardano، Polkadot

كلتا الخوارزميتين توفران أماناً بنحو 128 بت، مما يعني أن المهاجم سيحتاج لتنفيذ نحو 2^128 عملية لكسر مفتاح. هذا يتجاوز بكثير قدرة أي حاسوب كلاسيكي حالي أو متوقع. الفروقات تكمن في سلامة التطبيق والأداء، وليس في قوة الأمان الخام.

للاطلاع أعمق على كيفية عمل أمان المفاتيح عملياً، راجع أفضل ممارسات أمان المفتاح الخاص.

أي السلاسل تستخدم أيهما؟

اختيار المنحنى هو أحد أهم القرارات المعمارية الأساسية التي تتخذها سلسلة الكتل. إليك تفصيل الشبكات الرئيسية:

سلاسل secp256k1

  • Bitcoin --- الأصلية. تستخدم ECDSA مع secp256k1 للمعاملات القياسية، وتوقيعات Schnorr (أيضاً على secp256k1) لـ Taproot.
  • Ethereum --- ECDSA مع secp256k1. جميع السلاسل المتوافقة مع EVM ترث هذا الاختيار.
  • BNB Chain --- متوافقة مع EVM، تستخدم secp256k1.
  • Polygon --- متوافقة مع EVM، تستخدم secp256k1.
  • Arbitrum وOptimism --- طبقات ثانية لـ Ethereum، ترث secp256k1.
  • Tron --- تستخدم secp256k1 مع ECDSA.
  • Dogecoin --- فرع من Bitcoin، تستخدم secp256k1.
  • Litecoin --- فرع من Bitcoin، تستخدم secp256k1.
  • Avalanche (C-Chain) --- متوافقة مع EVM، تستخدم secp256k1.

سلاسل ed25519

  • Solana --- تستخدم Ed25519 حصرياً. هذا سبب رئيسي لقدرة Solana على معالجة آلاف المعاملات في الثانية.
  • XRP --- تدعم كلاً من secp256k1 وed25519. يمكن للمستخدمين اختيار المنحنى عند توليد المفاتيح.
  • Cardano --- تستخدم Ed25519 (تحديداً Ed25519-BIP32، نسخة موسعة).
  • Polkadot --- تستخدم بشكل أساسي Sr25519 (Schnorr على Ristretto25519)، وهو مرتبط ارتباطاً وثيقاً بـ ed25519.

الانقسام جيلي إلى حد كبير. سلاسل الكتل المصممة قبل 2015 تميل لاستخدام secp256k1 (تبعاً لـ Bitcoin). سلاسل الكتل المصممة بعد 2017 تفضل بشكل متزايد ed25519 أو منحنيات مرتبطة.

التأثير على توليد المفاتيح

اختيار المنحنى البيضاوي يؤثر مباشرة على كيفية توليد المفاتيح والعناوين. إذا استخدمت أدوات SafeSeed، يُعالج الفرق تلقائياً، لكن فهمه يساعدك على معرفة ما يحدث خلف الكواليس.

توليد مفاتيح secp256k1

  1. ولّد رقماً عشوائياً بـ 256 بت (المفتاح الخاص). يجب أن يكون بين 1 وn - 1، حيث n هو رتبة secp256k1 (~2^256).
  2. احسب المفتاح العام: اضرب المفتاح الخاص في نقطة المولّد G على secp256k1. النتيجة نقطة (x, y) على المنحنى.
  3. المفتاح العام غير المضغوط 65 بايت (بادئة 04 + 32 بايت x + 32 بايت y). الشكل المضغوط 33 بايت (بادئة 02 أو 03 + 32 بايت x).
  4. هشّر المفتاح العام لإنتاج العنوان (SHA-256 + RIPEMD-160 لـ Bitcoin؛ Keccak-256 لـ Ethereum).

يمكنك توليد مفاتيح secp256k1 باستخدام مولّد المفاتيح الخاصة لـ Bitcoin أو مولّد المفاتيح الخاصة لـ Ethereum.

توليد مفاتيح ed25519

  1. ولّد بذرة عشوائية من 32 بايت (ليست نفس بذرة BIP39 --- هذه المادة الخام للمفتاح).
  2. هشّر البذرة بـ SHA-512 لإنتاج 64 بايت. أول 32 بايت (مع تثبيت بتات محددة) تصبح العدد القياسي المستخدم للتوقيع. آخر 32 بايت تُستخدم لتوليد الأرقام المؤقتة أثناء التوقيع.
  3. احسب المفتاح العام: اضرب العدد القياسي في نقطة الأساس B على edwards25519. النتيجة نقطة مضغوطة من 32 بايت.
  4. تنسيق العنوان خاص بالسلسلة. على Solana، المفتاح العام نفسه (مُرمّز بـ Base58) هو العنوان.

يمكنك توليد مفاتيح ed25519 باستخدام مولّد المفاتيح الخاصة لـ Solana.

الآثار المترتبة على تعدد المنحنيات

لأن secp256k1 وed25519 غير متوافقين رياضياً، فإن مفتاحاً خاصاً صالحاً على منحنى ليس له علاقة ذات معنى بمفتاح على الآخر. عند استعادة عبارة استرجاعية في محفظة تدعم كلاً من Bitcoin وSolana، تشغّل المحفظة عمليتي اشتقاق منفصلتين تماماً من نفس البذرة الرئيسية --- واحدة تستخدم secp256k1 لحسابات Bitcoin/Ethereum، وأخرى تستخدم ed25519 لحسابات Solana. البذرة المشتركة هي الرابط الوحيد بينهما.

لهذا يتضمن مسار الاشتقاق نوع العملة: مسار Bitcoin (m/44'/0'/0'/0/0) ومسار Solana (m/44'/501'/0'/0') يتفرعان عند مستوى نوع العملة، وكل فرع يستخدم منحناه الخاص. للشرح المفصل لكيفية عمل مسارات الاشتقاق عبر السلاسل، اقرأ محافظ HD ومسارات الاشتقاق.

ماذا عن الحوسبة الكمية؟

كلا secp256k1 وed25519 معرضان بنفس القدر لحاسوب كمي قوي بما فيه الكفاية يشغّل خوارزمية شور، التي يمكنها حل مسألة اللوغاريتم المنفصل في زمن متعدد الحدود. لا منحنى "أكثر مقاومة للكم" من الآخر. يطوّر مجتمع التشفير مخططات توقيع ما بعد الكم، لكن لم تهاجر أي سلسلة كتل كبرى إلى واحد بعد. للتقييم الحالي، راجع الحوسبة الكمية وتهديد العملات الرقمية.

اختيار الأداة المناسبة

كمستخدم، لا تختار بين secp256k1 وed25519 مباشرة. سلسلة الكتل التي تستخدمها تتخذ هذا الاختيار نيابة عنك. Bitcoin وEthereum تفرضان secp256k1. Solana تفرض ed25519. ما يمكنك اختياره هو استخدام أدوات تطبّق المنحنى الذي تتطلبه سلسلتك بشكل صحيح.

مولدات SafeSeed تتعامل مع هذا تلقائياً. مولّد العبارة الاسترجاعية لـ Bitcoin يشتق مفاتيح secp256k1. مولّد العبارة الاسترجاعية لـ Ethereum يفعل الشيء نفسه. مولّد العبارة الاسترجاعية لـ Solana يشتق مفاتيح ed25519. جميعها تعمل بالكامل من جانب العميل، باستخدام Web Crypto API في متصفحك لتوليد أرقام عشوائية آمنة. لا تغادر أي مادة مفتاح خاص جهازك أبداً.

فهم المنحنى الكامن وراء سلسلة الكتل الخاصة بك لا يغير كيفية استخدامك لمحفظتك يومياً. لكنه يساعدك على فهم لماذا تبدو عناوين Solana مختلفة عن عناوين Ethereum، ولماذا لا يمكنك استخدام مفتاح Solana خاص خام على Ethereum، ولماذا افتراضات الأمان وراء أموالك قوية كما هي. هذه المنحنيات هي الأساس الرياضي لملكية العملات الرقمية --- غير مرئية في الاستخدام العادي، لكنها أساسية بالكامل.