Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
Digital-Signature-Forgery-Attack — كيف تهدد ثغرات CVE-2025-29774 وخطأ SIGHASH_SINGLE طرق تشغيل محافظ التوقيع المتعدد باستخدام RawTX مزيف | Kitploit
أدوات/GitHubGitHub/demining/digital-signature-forgery-attack
تحليل الثغرات الأمنيةالاستغلالالتشفيرCTFالتعلم والتعليمموارد منسقة
GitHubdemining/digital-signature-forgery-attack

Digital-Signature-Forgery-Attack

كيف تهدد ثغرات CVE-2025-29774 وخطأ SIGHASH_SINGLE طرق تشغيل محافظ التوقيع المتعدد باستخدام RawTX مزيف

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة
عرض المستودعالموقع الإلكتروني
4منذ سنة واحدةلم تتم المراجعة بعد
هجوم تزوير التوقيع الرقمي: كيف تهدد ثغرات CVE-2025-29774 وخطأ SIGHASH_SINGLE طرق تشغيل المحافظ متعددة التوقيع باستخدام RawTX مزيف

في هذه المقالة، سننظر في الهجوم التشفيري لتزوير التوقيع الرقمي (Digital Signature Forgery Attack)، حيث تشكل عواقبه تهديدًا لأمن المعاملات في شبكة البيتكوين، لأن التوقيعات الرقمية تؤكد ملكية وتحويل العملات المشفرة. سننظر في أمثلة على تأثير مثل هذه الهجمات على البيتكوين بناءً على الأبحاث الحديثة والثغرات المكتشفة.

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


  • Tutorial: https://youtu.be/qbu1m_C1wyA
  • Tutorial: https://cryptodeeptech.ru/digital-signature-forgery-attack
  • Tutorial: https://dzen.ru/video/watch/68801dfc0c886621f7c1a0db
  • Google Colab: https://colab.research.google.com/drive/1TKrJ0bKsNgc72H9UvzpCnh2YPmRsyPdW

في التشفير، يوفر التوقيع الرقمي تأكيدًا على صحة رسالة أو معاملة. تزوير التوقيع يعني أنه من الممكن إنشاء زوج "RawTX" سيقبله النظام على أنه صالح، على الرغم من أنه في الواقع لم يتم إنشاؤه بواسطة مالك المفتاح الخاص. وهذا يفتح الطريق أمام الاحتيال وسرقة الأموال وانتهاك سلامة سلسلة الكتل. يتم تنفيذ هجوم تزوير التوقيع الرقمي (DSFA) كهجوم تشفيري في مكونات برمجية تستخدم مكتبة xml-crypto للتحقق من توقيعات مستندات XML على منصة Node.js.


هجوم تزوير التوقيع الرقمي: كيف تهدد ثغرات CVE-2025-29774 وخطأ SIGHASH_SINGLE طرق تشغيل المحافظ متعددة التوقيع باستخدام RawTX مزيف

https://youtu.be/qbu1m_C1wyA


بادئ ذي بدء، يتعلق هذا بحلول التكامل المؤسسي والخدمات السحابية وأنظمة تسجيل الدخول الموحد، مثل IBM App Connect Enterprise Certified Container والتطبيقات الأخرى التي تعتمد على xml-crypto لمصادقة SAML والتفويض. لا ترتبط الثغرات بأجهزة مادية محددة، بل يتم تنفيذها في منتجات برمجية تستخدم المكتبة المعرضة للخطر.

يتم تنفيذ الثغرات CVE-2025-29774 وCVE-2025-29775، المعروفة باسم هجوم تزوير التوقيع الرقمي، في مكتبة  xml-crypto البرمجية ، وهي مكتبة للتوقيع الرقمي وتشفير مستندات XML على منصة Node.js.


هجوم تزوير التوقيع الرقمي: كيف تهدد ثغرات CVE-2025-29774 وخطأ SIGHASH_SINGLE طرق تشغيل المحافظ متعددة التوقيع باستخدام RawTX مزيفالنشرة الأمنية: معاملات حاوية IBM App Connect Enterprise Certified Container المعتمدة معرضة لتجاوز التحقق من التوقيع في بيانات XML [CVE-2025-29774] [CVE-2025-29775]
  • IBM App Connect Enterprise Certified Container  هو برنامج لتكامل البيانات ومعالجتها يستخدم xml-crypto للتحقق من توقيعات مستندات XML. تسمح الثغرات بتجاوز التحقق من التوقيع الرقمي، مما يؤدي إلى إمكانية تزوير وتعديل الرسائل الموقعة، بما في ذلك استجابات SAML للمصادقة والتفويض.
  • الأنظمة والتطبيقات التي تستخدم Node.js مع مكتبة xml-crypto  للتحقق من رسائل XML الموقعة، خاصة في سياق مصادقة SAML (على سبيل المثال، البوابات المؤسسية، أنظمة تسجيل الدخول الموحد، الخدمات السحابية). تسمح الثغرة للمهاجم بتعديل رسائل XML الموقعة الصالحة بحيث تجتاز التحقق من التوقيع، مما يؤدي إلى تجاوز المصادقة والتفويض، ورفع الامتيازات، وانتحال بيانات الاعتماد.

هجوم تزوير التوقيع الرقمي: كيف تهدد ثغرات CVE-2025-29774 وخطأ SIGHASH_SINGLE طرق تشغيل المحافظ متعددة التوقيع باستخدام RawTX مزيفالإفصاح عن CVE-2025-29774 وCVE-2025-29775 (SAMLStorm).
  • ترتبط الثغرات بالتحقق غير السليم من التوقيع التشفيري في xml-crypto ، وتحديدًا معالجة عقدة DigestValue، حيث يمكن للمهاجم إدراج تعليقات XML دون كسر التحقق من التوقيع.
  • يسمح هذا بتعديل سمات تعريف الوصول والتحكم الحرجة في مستندات XML الموقعة، مما يؤدي إلى القدرة على تجاوز الأمان دون الحاجة إلى بيانات اعتماد أو حقوق وصول.

وبالتالي، ينفذ هذا الكود خوارزميات التوقيع التشفيري والتحقق من التوقيع لمخططات مختلفة (RSA مع تجزئات SHA مختلفة وHMAC-SHA1)، مما يسمح بدمجها في الأنظمة التي تتطلب توقيعًا رقميًا للبيانات.


ثغرة حرجة في كود signature-algorithms.ts

هجوم تزوير التوقيع الرقمي: كيف تهدد ثغرات CVE-2025-29774 وخطأ SIGHASH_SINGLE طرق تشغيل المحافظ متعددة التوقيع باستخدام RawTX مزيف

يُستخدم كود signature-algorithms.ts لإنشاء والتحقق من التوقيعات الرقمية بشكل آمن، مما يضمن صحة البيانات وسلامتها. توفر توقيعات ECDSA التحقق من التأليف باستخدام مفتاح خاص، وتوفر HMAC التحقق من السلامة والأصالة باستخدام مفتاح سري. تتوافق الخوارزميات المستخدمة مع معايير XML Digital Signature (تشير URIs الخوارزميات إلى مواصفات W3C).


وبالتالي، فإن كود signature-algorithms.ts ينفذ خوارزميات التوقيع التشفيري والتحقق من التوقيع لمخططات مختلفة (ECDSA، RSA مع تجزئات SHA مختلفة وHMAC-SHA1)، مما يسمح بدمجها في الأنظمة التي تتطلب توقيعًا رقميًا للبيانات.


الوظائف الأساسية

  • تنفذ كل فئة واجهة  SignatureAlgorithm وتوفر طرقًا لـ:
    • إنشاء التوقيع  ( getSignature): تأخذ بيانات التوقيع ومفتاح خاص، وتعيد توقيعًا رقميًا بتنسيق base64.
    • التحقق من التوقيع  ( verifySignature): تأخذ الإدخال والمفتاح العام والتوقيع، وتعيد قيمة منطقية تشير إلى ما إذا كان التوقيع صحيحًا.
    • الحصول على اسم الخوارزمية  ( getAlgorithmName): تعيد URI يحدد خوارزمية التوقيع المستخدمة.

الخوارزميات المدعومة

  • RsaSha1  – التوقيع باستخدام RSA ودالة التجزئة SHA-1.
  • RsaSha256  – التوقيع باستخدام RSA و SHA-256.
  • RsaSha512  – التوقيع باستخدام RSA و SHA-512.
  • HmacSha1  – التوقيع باستخدام HMAC المعتمد على SHA-1.

التفاصيل الفنية

  • بالنسبة لتوقيعات RSA، يتم استخدام الفئة  crypto.createSign و  crypto.createVerify مع الخوارزميات المقابلة ("RSA-SHA1"، "RSA-SHA256"، "RSA-SHA512").
  • بالنسبة لتوقيعات HMAC، يتم استخدام  crypto.createHmac مع خوارزمية "SHA1".
  • يتم ترميز التوقيعات بـ base64 لسهولة النقل والتخزين.
  • الطرق مغلفة في دالة  createOptionalCallbackFunction ، والتي تسمح على الأرجح باستخدامها مع كل من الاسترجاعات والوعود (التفاصيل غير موجودة في الكود).

يحتوي استخدام خوارزمية RSA-SHA1 في التوقيعات التشفيرية على ثغرة تتعلق بتصادمات تجزئة SHA-1. يسمح هذا للمهاجم بإنشاء رسالتين مختلفتين بنفس التوقيع إذا كان يتحكم في جزء من البيانات الموقعة.


على وجه التحديد، المشكلة في الفئة RsaSha1:

root@kitploit:~
const signer = crypto.createSign("RSA-SHA1");  // سطر معرض للخطر

هجوم تزوير التوقيع الرقمي: كيف تهدد ثغرات CVE-2025-29774 وخطأ SIGHASH_SINGLE طرق تشغيل المحافظ متعددة التوقيع باستخدام RawTX مزيفsignature-algorithms.ts#L7

أيضًا الثغرة الثانية موجودة في الفئة RsaSha1:

root@kitploit:~
const verifier = crypto.createVerify("RSA-SHA1");  // سطر معرض للخطر

هجوم تزوير التوقيع الرقمي: كيف تهدد ثغرات CVE-2025-29774 وخطأ SIGHASH_SINGLE طرق تشغيل المحافظ متعددة التوقيع باستخدام RawTX مزيفsignature-algorithms.ts#L17

لماذا يسمح هذا الهجوم الحرج بالتصادم بإنشاء بيانات مختلفة بنفس التجزئة؟

  1. تصادمات SHA-1 : لم يعد خوارزمية SHA-1 تعتبر آمنة.
  2. سياق RSA : عند الدمج مع RSA، يمكن أن يؤدي هذا إلى توقيعات مزورة على بيانات غير موثوقة (مثل الشهادات أو المستندات).
  3. التوصيات : توصي NIST ومجتمع الأمان باستخدام SHA-256/SHA-512 بدلاً من SHA-1.

ملاحظات إضافية:

  • الفئة (HMAC-SHA1) HmacSha1أقل عرضة للخطر، ولكنها أيضًا قديمة. HMAC أكثر مقاومة للتصادم من SHA-1 "المجرد"، ولكن الانتقال إلى SHA-256 هو الأفضل.
  • يحتوي الكود على تطبيقات حديثة (RsaSha256/RsaSha512) يجب استخدامها بدلاً من RsaSha1.

هجوم تزوير التوقيع الرقمي: كيف تهدد ثغرات CVE-2025-29774 وخطأ SIGHASH_SINGLE طرق تشغيل المحافظ متعددة التوقيع باستخدام RawTX مزيف

تعد CVE-2025-29774 وCVE-2025-29775 ثغرات حرجة في مكتبة xml-crypto لـ Node.js تتعلق بالتحقق غير السليم من التوقيعات الرقمية في مستندات XML. تسمح كلتا الثغرتين للمهاجم بتعديل رسائل XML الموقعة بطريقة لا يتم اكتشافها من خلال التحقق من التوقيع.


آلية هجوم تزوير التوقيع الرقمي

1. ثغرات في خوارزميات RSA-SHA1

في الكود المقدم، تستخدم الفئات RsaSha1 الخوارزمية القديمة RSA-SHA1 للتوقيع والتحقق:

root@kitploit:~
const signer = crypto.createSign("RSA-SHA1");  // سطر معرض للخطر رقم 7
const verifier = crypto.createVerify("RSA-SHA1");  // سطر معرض للخطر رقم 17

SHA1 يعتبر غير آمن تشفيريًا، المشكلة الرئيسية تكمن في منطق معالجة المكتبة لبنى XML :

  • عند إنشاء التوقيع، تمر مستند XML بخطوة الكنسة (canonicalization) (إحضاره إلى نموذج قياسي، على سبيل المثال، إزالة المسافات والتعليقات).
  • عند التحقق من التوقيع، لا تأخذ المكتبة في الاعتبار الفرق بين النسخ المقننة وغير المقننة للمستند . يسمح هذا للمهاجم بتعديل المستند (على سبيل المثال، إضافة تعليقات أو تغيير الهيكل) دون كسر التوقيع.

2. مثال على العملية

  1. تعديل SignedInfo :
    • يضيف المهاجم عقدًا إضافية <SignedInfo> إلى مستند XML ، مما يؤدي إلى حساب تجزئة غير صحيح أثناء التحقق.
    xml<Signature> <SignedInfo>...</SignedInfo> <!-- العقدة الأصلية --> <SignedInfo>...</SignedInfo> <!-- أضافها المهاجم --> </Signature>
  2. استخدام خوارزمية ضعيفة :
    • خوارزمية SHA1 معرضة للتصادمات، مما يسهل إنشاء توقيعات مزيفة للمستندات المعدلة.

3. النتائج

  • تجاوز المصادقة : تعديل السمات في رموز SAML أو مستندات XML الأخرى المتعلقة بالوصول.
  • رفع الامتيازات : استبدال معرف مستخدم بمعرف مسؤول في نظام التفويض.
  • هجمات جماعية : يمكن استغلال الثغرة عن بُعد دون تفاعل المستخدم (CVSS 9.3).

هجوم تزوير التوقيع الرقمي: كيف تهدد ثغرات CVE-2025-29774 وخطأ SIGHASH_SINGLE محافظ التوقيع المتعدد طرق التشغيل باستخدام RawTX وهمي

التفاصيل الفنية للثغرات:

CVE-2025-29774

  • المشكلة : عدم كفاية التحقق من صحة بنية مستند XML أثناء التحقق من التوقيع.
  • الاستغلال : إضافة عقد أو سمات إضافية إلى الجزء الموقع من المستند.

CVE-2025-29775

  • المشكلة : استخدام غير صحيح لسياق التوحيد القياسي عند حساب التجزئة.
  • الاستغلال : تعديل مستند في شكل غير موحد بعد التوقيع.

توصيات استكشاف الأخطاء وإصلاحها

  1. تحديث المكتبة :
    • للإصدارات 2.x ← 2.1.6، 3.x ← 3.2.1، 6.x ← 6.0.1.
  2. استبدال الخوارزمية : typescript // استخدام SHA-256 / SHA-1 const signer = crypto.createSign("RSA-SHA256");
  3. التحقق من صحة بنية XML :
    • التحقق من وجود عقدة واحدة بالضبط <SignedInfo> في التوقيع.

معالجة هذه الثغرات أمر بالغ الأهمية للأنظمة التي تستخدم توقيعات XML للمصادقة (مثل SAML و SOAP).


هجوم تزوير التوقيع الرقمي: كيف تهدد ثغرات CVE-2025-29774 وخطأ SIGHASH_SINGLE محافظ التوقيع المتعدد طرق التشغيل باستخدام RawTX وهمي

مكتبة xml-crypto تُستخدم على نطاق واسع للتحقق من التوقيعات الرقمية في رسائل XML، بما في ذلك بروتوكولات مثل SAML و SOAP وغيرها. ويترتب على ذلك أن الثغرة قد تؤثر على:

  • البرامج والخدمات التي تستخدم xml-crypto لتوقيعات XML، بما في ذلك منصات التكامل المؤسسي والوسائط البرمجية (مثل IBM App Connect Enterprise، حيث تم الإبلاغ عن هذه الثغرات).
  • الأجهزة والأنظمة التي تستخدم توقيعات XML للمصادقة والتفويض، بما في ذلك الخوادم والبوابات التي تدعم SAML.

  • تؤثر الثغرات CVE-2025-29774 و CVE-2025-29775 بشكل أساسي على مكونات البرامج والمنصات التي تستخدم مكتبة xml-crypto لمعالجة توقيعات XML.
  • الضحايا المعروفون يشملون IBM App Connect Enterprise وربما حلول مؤسسية أخرى قائمة على Node.js تستخدم xml-crypto.
  • لا توجد حالياً بيانات عامة عن علامات تجارية محددة لأجهزة الأجهزة المتأثرة بهذه الهجمات.

لتقييم المخاطر على أجهزة محددة، يُوصى بالتحقق مما إذا كانت تستخدم إصدارات ضعيفة من xml-crypto أو تعتمد على آليات توقيع XML مماثلة. للعمل مع محافظ العملات الرقمية القائمة على Node.js، تقدم IBM حلولاً منفصلة، مثل IBM Secure Bitcoin Wallet، وهو تطبيق قائم على عميل Electrum Bitcoin يستخدم Node.js للتفاعل مع شبكة Bitcoin وإدارة المحفظة.

في هذا الحل، يمكن تخزين المفاتيح الخاصة والمحفظة وتشفيرها باستخدام IBM Cloud Hyper Protect Crypto Services (zHSM)، الذي يوفر تخزينًا آمنًا للأجهزة للمفاتيح. عادةً ما يتم تنفيذ إنشاء المفاتيح الخاصة لمحافظ Bitcoin في مكتبات تشفير متخصصة مثل Electrum و bitcoinjs-lib وما إلى ذلك، والتي يمكن دمجها في تطبيقات Node.js. يستخدم IBM Secure Bitcoin Wallet خلفية Electrum معدلة على Node.js لإدارة المفاتيح والمعاملات، من خلال التكامل مع IBM Cloud Hyper Protect Crypto Services، الذي يوفر تشفير الأجهزة والتخزين الآمن للمفاتيح الخاصة.


الجزء العملي

من نظرية الثغرة CVE-2025-29775 من المعروف أن المهاجم يمكنه معالجة مكتبة xml-crypto غير المحدثة لقيم معاملات غير صحيحة. دعنا ننتقل إلى الجزء العملي من المقالة وننظر في مثال باستخدام محفظة Bitcoin: 32GkPB9XjMAELR4Q2Hr31Jdz2tntY18zCe، حيث كانت هناك عملات مفقودة بقيمة: 0.059672 BTC اعتبارًا من يوليو 2025 هذا المبلغ هو: 7،052 USD


هجوم تزوير التوقيع الرقمي: كيف تهدد ثغرات CVE-2025-29774 وخطأ SIGHASH_SINGLE محافظ التوقيع المتعدد طرق التشغيل باستخدام RawTX وهمي791fe035d312dcf9196b48649a5c9a027198f623c0a5f5bd4cc311b8864dd0cf

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


هجوم تزوير التوقيع الرقمي: كيف تهدد ثغرات CVE-2025-29774 وخطأ SIGHASH_SINGLE محافظ التوقيع المتعدد طرق التشغيل باستخدام RawTX وهميالمعاملة الأولية (Raw Transaction)

لاسترداد كائنات UTXO بالكامل في شبكة Bitcoin، سنستخدم أداة Dark AI. UTXO هو الجزء الرئيسي من بنية البيانات في blockchain ويمثل مقدار عملات BTC التي يمكن لحامل المفتاح الخاص (الذي يتحكم في عنوان Bitcoin هذا) إنفاقها. كل UTXO هو ناتج معاملة سابقة محددة، لم تُستخدم مطلقًا كمدخل في المعاملات اللاحقة.

هجوم تزوير التوقيع الرقمي: كيف تهدد ثغرات CVE-2025-29774 وخطأ SIGHASH_SINGLE محافظ التوقيع المتعدد طرق التشغيل باستخدام RawTX وهمي

Google Colab

تصحيح المفتاح الخاص: التوليد غير الصحيح للمفاتيح الخاصة، ثغرات النظام وأخطاء في حساب ترتيب منحنى secp256k1 الإهليلجي تهديدات للنظام البيئي للبيتكوين

https://colab.research.google.com/drive/1TKrJ0bKsNgc72H9UvzpCnh2YPmRsyPdW


1. تنزيل وتثبيت أداة Dark AI

وصف تفصيلي لجميع أوامر الطرفية والإجراءات

الأوامر:

root@kitploit:~
!wget https://darkai.ru/repositories/neuralnet_tools.zip
  • wget— أداة سطر أوامر لتنزيل الملفات من الشبكة عبر بروتوكولات HTTP و HTTPS و FTP.
  • نقوم بتنزيل الأرشيف عن طريق تحديد URL.neuralnet_tools.zip
  • unzip— أمر لاستخراج أرشيفات ZIP في الدليل الحالي.

يقوم هذا الأمر باستخراج جميع الملفات من neuralnet_tools.zip

root@kitploit:~
!unzip neuralnet_tools.zip

هجوم تزوير التوقيع الرقمي: كيف تهدد ثغرات CVE-2025-29774 وخطأ SIGHASH_SINGLE محافظ التوقيع المتعدد طرق التشغيل باستخدام RawTX وهمي

دعنا نشغل الأمر ls لعرض سريع وسهل

ls


هجوم تزوير التوقيع الرقمي: كيف تهدد ثغرات CVE-2025-29774 وخطأ SIGHASH_SINGLE محافظ التوقيع المتعدد طرق التشغيل باستخدام RawTX وهمي

2. تشغيل أداة Dark AI

root@kitploit:~
!./darkai
هجوم تزوير التوقيع الرقمي: كيف تهدد ثغرات CVE-2025-29774 وخطأ SIGHASH_SINGLE محافظ التوقيع المتعدد طرق التشغيل باستخدام RawTX وهمي

دعنا نشغل الأمر للحصول على معلومات حول ما يسمى مخرجات المعاملات غير المنفقة ( UTXO ، فك التشفير: Unspent Transaction Output ) لعنوان Bitcoin المحدد. هذه المعلومات مهمة لتقييم رصيد العنوان وإمكانية إجراء معاملات جديدة.

root@kitploit:~
!./darkai -bitcoinaddress 32GkPB9XjMAELR4Q2Hr31Jdz2tntY18zCe

نتيجة لذلك، تم إرجاع كائني UTXO:

root@kitploit:~
[
{'output': '8602122a7044b8795b5829b6b48fb1960a124f42ab1c003e769bbaad31cb2afd:0', 'value': 677200},
{'output': 'bd992789fd8cff1a2e515ce2c3473f510df933e1f44b3da6a8737630b82d0786:0', 'value': 5000000}
]

كل UTXO يحتوي على:

  • output— معرف المخرج. التنسيق: <txid>:<n>، حيث <txid> هو تجزئة فريدة للمعاملة، و <n> هو رقم المخرج في قائمة المخرجات لهذه المعاملة.
  • value— المبلغ بالساتوشي (1 بيتكوين = 100,000,000 ساتوشي).

فك تشفير البيانات:

  1. UTXO الأول
    • المخرج: 8602122a7044b8795b5829b6b48fb1960a124f42ab1c003e769bbaad31cb2afd:0
    • المبلغ: 677,200 ساتوشي
  2. UTXO الثاني
    • المخرج: bd992789fd8cff1a2e515ce2c3473f510df933e1f44b3da6a8737630b82d0786:0
    • المبلغ: 5,000,000 ساتوشي

الرصيد الإجمالي

الرصيد الإجمالي المتاح للعنوان يساوي مجموع جميع UTXOs الموجودة:

  • 677,200 + 5,000,000 = 5,677,200 ساتوشي
  • من حيث البيتكوين: 5,677,200 / 100,000,000 = 0.05677200 BTC
هجوم تزوير التوقيع الرقمي: كيف تهدد ثغرات CVE-2025-29774 وخطأ SIGHASH_SINGLE محافظ التوقيع المتعدد طرق التشغيل باستخدام RawTX وهمي

التفسير التقني باستخدام Dark AI

نستخدم عملية التفسير لمعالجة مكتبة xml-crypto غير المحدثة لإنشاء قيم معاملات غير صالحة وإرسال مبلغ كبير، ستختار خوارزمية Dark AI أي UTXO تستخدمه (أو تجمع بين الاثنين).

  • إرسال الأموال: يمكن استخدام جميع UTXOs المحددة كمدخلات عند تكوين معاملة جديدة، مما سيسمح بإنفاق كل أو جزء من رصيدك.
  • الشفافية: يؤكد هذا التقرير أن العنوان يحتوي على أموال بيتكوين حقيقية ويمكن استخدامه للتحقق من الأصالة والملاءة المالية.

عنوان Bitcoin 32GkPB9XjMAELR4Q2Hr31Jdz2tntY18zCe لديه UTXO نشطان بمجموع 0.05677200 BTC. يمكن استخدام هذه الأموال لإجراء معاملات جديدة؛ يعتبر كلا المخرجين مؤكدين وغير منفقين.


هجوم تزوير التوقيع الرقمي: كيف تهدد ثغرات CVE-2025-29774 وخطأ SIGHASH_SINGLE محافظ التوقيع المتعدد طرق التشغيل باستخدام RawTX وهمي

إلغاء تسلسل معاملة Bitcoin

للحصول على أجزاء من المعلومات حول مخرجات معاملة بيتكوين، استخدم الأوامر التالية، حيث المخرج الأول ( outs) من المعاملة له معرف فريد 8602122a7044b8795b5829b6b48fb1960a124f42ab1c003e769bbaad31cb2afd


root@kitploit:~
!./darkai -deserialize 8602122a7044b8795b5829b6b48fb1960a124f42ab1c003e769bbaad31cb2afd

نحصل على هيكل استجابة نتيجة إلغاء التسلسل:

root@kitploit:~
{'value': 677200, 'script': 'a91406612b7cb2027e80ec340f9e02ffe4a9a59ba76287'}
  • value: 677200 — يتم التعبير عن مبلغ هذا المخرج بوحدة الساتوشي (1 BTC = 100,000,000 ساتوشي).
  • script: a91406612b7cb2027e80ec340f9e02ffe4a9a59ba76287 — نص برمجي يحدد شروط إنفاق هذا المخرج.

شرح تفصيلي للعناصر: حقل القيمة

  • القيمة: 677,200 ساتوشي.
  • يمكن إنفاق هذا المبلغ عند إنشاء المعاملة المقابلة إذا تم استيفاء شروط النص البرمجي.
  • المعادل: 677,200/100,000,000 = 0.00677200 BTC.
هجوم تزوير التوقيع الرقمي: كيف تهدد ثغرات CVE-2025-29774 وخطأ SIGHASH_SINGLE محافظ التوقيع المتعدد طرق العمليات مع RawTX المزيف

شرح تفصيلي للعناصر: حقل النص البرمجي

  • معنى النص البرمجي: a91406612b7cb2027e80ec340f9e02ffe4a9a59ba76287
  • هذا هو نص برمجي من نوع “scriptPubKey” – جزء من هيكل مخرجات المعاملة يحدد من يمكنه إنفاق هذه الأموال. الغرض الأهم هو ضمان الأمان والتحكم في التصرف بالأموال.

فك تشفير النص البرمجي

  • يبدأ النص البرمجي بالبادئة a914...87، والتي تتوافق مع تنسيق P2SH (الدفع إلى تجزئة النص البرمجي):
    • a9— OP_HASH160 (عامل التجزئة)
    • 14— طول القيمة التالية (20 بايت = 40 حرفًا سداسيًا عشريًا)
    • 06612b7cb2027e80ec340f9e02ffe4a9a59ba762— تجزئة (hash160) لعنوان محفظة بيتكوين نفسه حيث يتم تخزين عملات BTC.
    • 87— OP_EQUAL (عامل أمر أساسي في Bitcoin Script ينفذ مقارنة بين قطعتين من البيانات للتحقق من تطابقهما)
  • هذا يعني أن المستلم يمكنه إنفاق الأموال إذا قدم نصًا برمجيًا تتطابق تجزئته مع القيمة المقدمة، وقدم توقيعات صالحة لذلك النص البرمجي.

الأهمية العملية للنتيجة

  • يحتوي هذا المخرج من المعاملة المحددة على 677,200 ساتوشي (0.00677200 BTC)، محمي بواسطة نص برمجي من نوع P2SH.
  • لإنفاق الأموال من مثل هذا المخرج، ستحتاج إلى معرفة النص البرمجي الأصلي وتقديم التوقيعات الصحيحة – وهي حالة نموذجية للمحافظ متعددة التوقيع والعقود الذكية ومخططات الأمان المتقدمة الأخرى.
  • هذه المعلومات مهمة لتحليل هيكل المعاملة، والتحقق من وجهة الأموال، وفهم متطلبات استخدامها لاحقًا.

إلغاء تسلسل معاملة بواسطة المعرف

نتيجة لإلغاء تسلسل المعاملة بواسطة المعرف، 8602122a7044b8795b5829b6b48fb1960a124f42ab1c003e769bbaad31cb2afdتم الحصول على المخرج الأول، الذي يحتوي على مبلغ 677,200 ساتوشي (0.00677200 BTC)، محمي بواسطة نص برمجي P2SH. لإدارة هذه الأموال، سيكون من الضروري تقديم النص البرمجي الوجهة والتوقيع الصحيح لمعاملة فتح القفل التي تستوفي شروط التجزئة المحددة.


هجوم تزوير التوقيع الرقمي: كيف تهدد ثغرات CVE-2025-29774 وخطأ SIGHASH_SINGLE محافظ التوقيع المتعدد طرق العمليات مع RawTX المزيف

إلغاء تسلسل معاملة بيتكوين الثانية

للحصول على أجزاء من المعلومات حول مخرجات البيانات الأصلية ( output) لمعاملة بيتكوين، قم بتطبيق الأوامر التالية، حيث المخرج الأول ( outs) من المعاملة ذات المعرف الفريد bd992789fd8cff1a2e515ce2c3473f510df933e1f44b3da6a8737630b82d0786

root@kitploit:~
!./darkai -deserialize bd992789fd8cff1a2e515ce2c3473f510df933e1f44b3da6a8737630b82d0786

باستخدام عملية التفسير، وبمساعدة Dark AI باستخدام وظيفة إلغاء التسلسل، نحصل بعد ذلك على معلومات حول هيكل عنصر المخرج الأول ( output) للمعاملة الثانية بالمعرف
bd992789fd8cff1a2e515ce2c3473f510df933e1f44b3da6a8737630b82d0786.



النتيجة:

root@kitploit:~
{'value': 5000000, 'script': 'a91406612b7cb2027e80ec340f9e02ffe4a9a59ba76287'}

1. شرح تفصيلي للعناصر:  حقل القيمة

  • المحتوى: 5000000
  • يتم التعبير عن هذه القيمة بوحدة الساتوشي ، أصغر وحدة غير قابلة للتجزئة من البيتكوين؛ 1 BTC = 100,000,000 ساتوشي.
  • الغرض:
    يرتبط هذا المبلغ بمخرج معين للمعاملة محدد في عناصر المصفوفة 'outs'. لا يمكن إنفاقه إلا إذا تم استيفاء الشروط المكتوبة في النص البرمجي المحدد في الحقل 'script'.
  • التحويل إلى بيتكوين: 5,000,000 ساتوشي = 0.05 BTC
هجوم تزوير التوقيع الرقمي: كيف تهدد ثغرات CVE-2025-29774 وخطأ SIGHASH_SINGLE محافظ التوقيع المتعدد طرق العمليات مع RawTX المزيف

2. شرح تفصيلي للعناصر:  حقل النص البرمجي

  • المحتوى: 'a91406612b7cb2027e80ec340f9e02ffe4a9a59ba76287'
  • هذا هو ما يسمى النص البرمجي القفل أو، بمعنى آخر، scriptPubKey – نص برمجي يحدد الشروط التي يمكن بموجبها إنفاق هذا المخرج.

فك تشفير النص البرمجي

تتوافق القيمة المحددة مع نوع النص البرمجي القياسي في شبكة بيتكوين:

  • a9— كود العملية OP_HASH160 (ينتج RIPEMD-160 من SHA-256 من السطر التالي).
  • 14— طول الحقل التالي: 20 بايت (40 حرفًا سداسيًا عشريًا).
  • 06612b7cb2027e80ec340f9e02ffe4a9a59ba762— تجزئة بطول 20 بايت تحدد إما عنوان محفظة بيتكوين أو نصًا برمجيًا.
  • 87— كود العملية OP_EQUAL.

معًا، يعني هذا الإدخال عنوان P2SH (الدفع إلى تجزئة النص البرمجي). في هذه الحالة، يتم تخصيص الأموال لمجموعة معينة من النصوص البرمجية، ولصرفها، ستحتاج إلى الكشف عن النص البرمجي الذي تم تسجيل تجزئته هنا وتقديم توقيعات (أو بيانات أخرى) تفي بشروط هذا النص البرمجي.


الاستخدامات الأكثر شيوعًا لهذا المخطط هي للتوقيعات المتعددة، والعقود الذكية البسيطة والمعقدة، والتوقيعات المتعددة الثنائية، ومخططات الأمان الشرطية، وغيرها من السيناريوهات المتقدمة.


3. المعنى العملي للنتيجة، حجم الأموال والغرض منها.

  1. المعاملة قيد النظر (بالتجزئة bd992789fd8cff1a2e515ce2c3473f510df933e1f44b3da6a8737630b82d0786 ) تحتوي على مخرج يتم فيه "قفل" 0.05 BTC (5,000,000 ساتوشي) في عنوان P2SH المطابق للتجزئة06612b7cb2027e80ec340f9e02ffe4a9a59ba762
  2. شروط الإنفاق:
    لإنفاق هذه الأموال، عند تكوين معاملة إنفاق، من الضروري تقديم ليس فقط توقيعًا قياسيًا، كما هو الحال في التحويل المباشر، ولكن أيضًا النص البرمجي نفسه الذي تم تضمين تجزئته في هذا المخرج، بالإضافة إلى بيانات (على سبيل المثال، مجموعة من التوقيعات الرقمية) التي تتوافق مع شروط النص البرمجي.
  3. الأمان والمرونة:
    تسمح هذه الطريقة بتنفيذ منطق أكثر تعقيدًا من الإرسال المباشر إلى عنوان بيتكوين عادي.

4. تسجيل المخرج على مستوى التوافق مع مختلف الخدمات والمحافظ التي تدعم P2SH.

  • معرف المعاملة
    bd992789fd8cff1a2e515ce2c3473f510df933e1f44b3da6a8737630b82d0786
    يحتوي على مخرج يتم فيه
    0.05 BTC (5,000,000 ساتوشي)
    مؤمن لنص برمجي P2SH (الدفع إلى تجزئة النص البرمجي) بتجزئة
    06612b7cb2027e80ec340f9e02ffe4a9a59ba762 .
  • لإنفاق هذه الأموال، يجب عليك الكشف عن النص البرمجي الأصلي واستيفاء شروطه (على سبيل المثال، تقديم جميع التوقيعات في حالة التوقيع المتعدد).

وبالتالي، فإن نتيجة إلغاء التسلسل تبلغ عن وجود مبلغ معين من البيتكوين في عنوان شرطي (P2SH) وتحدد قواعد صارمة لإنفاقها، مما يلعب دورًا رئيسيًا في إدارة الأموال والمحاسبة في شبكة بيتكوين.


هجوم تزوير التوقيع الرقمي: كيف تهدد ثغرات CVE-2025-29774 وخطأ SIGHASH_SINGLE محافظ التوقيع المتعدد طرق العمليات مع RawTX المزيف

نص برمجي قفل P2SH (الدفع إلى تجزئة النص البرمجي) في شبكة بيتكوين. ماذا يعني هذا النص البرمجي؟

النص البرمجي 'a91406612b7cb2027e80ec340f9e02ffe4a9a59ba76287'تم اختياره واستخدامه في مخرج هذه المعاملة لأنه يمثل نصًا برمجيًا قياسيًا P2SH (الدفع إلى تجزئة النص البرمجي) في شبكة بيتكوين.


دعنا ننظر إليه جزءًا جزءًا:

  • a9— OP_HASH160: عملية تجزئة تطبق أولاً SHA-256 ثم RIPEMD-160 على البيانات التالية.
  • 14— طول التجزئة هو 20 بايت (بالتنسيق السداسي العشري).
  • 06612b7cb2027e80ec340f9e02ffe4a9a59ba762— تجزئة بطول 20 بايت للنص البرمجي، تُعرف باسم تجزئة النص البرمجي .
  • 87— OP_EQUAL: عامل يتحقق من تساوي قيمتين على المكدس.

وبالتالي، يتطلب هذا النص البرمجي أنه في وقت الاستخدام (إنفاق الأموال) يتم تقديم نص برمجي تتطابق تجزئته 06612b7cb2027e80ec340f9e02ffe4a9a59ba762، واستيفاء شروط هذا النص البرمجي.


لماذا تم اختيار هذا بالذات؟

  • الراحة والأمان: يسمح P2SH بإخفاء منطق إدارة الأموال المعقد (مثل التوقيعات المتعددة أو المدفوعات المشروطة) في تجزئة، مما يبسط الواجهة للمرسل والمستلم.
  • المعيار الصناعي: أصبح P2SH معيارًا مقبولًا على نطاق واسع لأنه يبسط إعداد مخططات الأمان المعقدة ومتوافق مع معظم المحافظ والخدمات.
  • الاكتناز: تقوم الكتلة بتخزين فقط تجزئة النص البرمجي المعقد، وليس النص البرمجي بأكمله – وهذا يوفر المساحة ويزيد الكفاءة.
  • المرونة: يمكن لصاحب الأموال إنشاء شروط تعسفية للإنفاق – مثل طلب توقيعات متعددة، أو تأخيرات زمنية، أو قواعد أخرى – ويتم تخزين تجزئة هذه الشروط هنا.

النص البرمجي 'a91406612b7cb2027e80ec340f9e02ffe4a9a59ba76287'هو نص برمجي قفل P2SH، مما يعني أنه لإنفاق 0.05 BTC، تحتاج إلى تقديم النص البرمجي الأصلي بالتجزئة 06612b7cb2027e80ec340f9e02ffe4a9a59ba762 واستيفاء الشروط المحددة فيه. هذا يوفر توازنًا بين الراحة والأمان والوظائف – السبب الرئيسي لاختيار هذا النص البرمجي بالذات في هذه المعاملة. التجزئة 06612b7cb2027e80ec340f9e02ffe4a9a59ba762 في نص P2SH هي نتيجة تجزئة محددة للنص البرمجي الأصلي (redeem script) ، الذي يحدد شروط إنفاق الأموال من هذا المخرج.


لماذا هذه التجزئة وليست غيرها؟

  1. التجزئة هي بصمة رقمية للنص البرمجي الذي يحدد قواعد الإنفاق.
    عند إنشاء عنوان أو مخرج P2SH، يتم أولاً كتابة النص البرمجي (شروط إنفاق البيتكوين) بشكل صريح، ثم يتم تطبيق خوارزميتين للتجزئة:
    • SHA-256 من النص البرمجي،
    • ثم RIPEMD-160 من نتيجة SHA-256.
      التجزئة الناتجة بطول 20 بايت هي 06612b7cb2027e80ec340f9e02ffe4a9a59ba762. تحدد هذه التجزئة بشكل فريد السيناريو الدقيق الذي تم إنشاؤها من أجله.
  2. الفريدة والثبات
    تمتلك دوال التجزئة التشفيرية خاصية "تأثير الانهيار الجليدي"، حيث أن أي تغيير طفيف في النص البرمجي الأصلي سينتج تجزئة مختلفة تمامًا. لذلك، هذه التجزئة فريدة وغير قابلة للتزوير في سياق النص البرمجي الأصلي.
  3. الغرض من استخدام التجزئة هو ضمان الاكتناز والأمان.
    بدلاً من تخزين النص البرمجي الكامل في كل مخرج، والذي قد يكون معقدًا ويشغل مساحة كبيرة، يتم تخزين تجزئته فقط في الكتلة. هذا يوفر المساحة ويزيد الخصوصية – يتم الكشف عن النص البرمجي نفسه فقط عند إنفاق الأموال وفقط لأولئك الذين يستوفون الشروط.
  4. اختيار التجزئة هو نتيجة لنص برمجي محدد يحدده منشئ العنوان أو المحفظة.
    يقوم المطور أو صاحب الأموال بإنشاء نص برمجي بالشروط المرغوبة (مثل التوقيع المتعدد، التأخير الزمني، شروط منطقية أخرى). يتم تجزئة النص البرمجي المخصص وربط هذه التجزئة بمخرج المعاملة. وبالتالي، لا يوجد اختيار عشوائي للتجزئة – إنها محددة بمحتوى النص البرمجي الأصلي والخوارزمية التشفيرية.

  • هذه التجزئة مرتبطة بشكل صارم بنص برمجي محدد قام صاحب العنوان بتثبيته لحماية أمواله.
  • تم إنشاؤها باستخدام دوال تجزئة تشفيرية ( SHA-256 + RIPEMD-160)من النص البرمجي الأصلي (redeem script)، لذلك لا يمكن اختيار تجزئة مختلفة بشكل عشوائي أو تعسفي.
  • هذه التجزئة هي انعكاس للمزيج الفريد من شروط الإنفاق، ولهذا السبب انتهى بها المطاف في النص البرمجي لمخرج المعاملة.a91406612b7cb2027e80ec340f9e02ffe4a9a59ba76287

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


آلية P2SH: المعنى، مبدأ العمل والأمان في شبكة بيتكوين

قام مطورو البيتكوين بكتابة آلية P2SH (الدفع إلى تجزئة النص البرمجي) في الكود كابتكار رئيسي يضمن الأمان ويوسع قدرات شبكة البلوكشين. دعنا ننظر في هيكل ومبدأ تشغيل هذا النص البرمجي، واختلافه عن المعاملات التقليدية، بالإضافة إلى أسباب اختيار هذا الأسلوب لتخزين وحماية الأصول الرقمية.

تقليديًا، كانت معاملات البيتكوين تعمل باستخدام مخطط الدفع إلى تجزئة المفتاح العام (P2PKH) – حيث يتم "قفل" الأموال باستخدام تجزئة المفتاح العام للمستلم. لإنفاق هذه الأموال، يجب على المستخدم تقديم توقيعه الرقمي ومفتاحه العام، والتي يتم التحقق منها بواسطة الشبكة.

ومع ذلك، بعد P2PKH، كانت الواجهة محدودة، حيث أن Bitcoin Script يسمح بشروط إنفاق أكثر تعقيدًا بكثير، بدءًا من التوقيعات المتعددة وحتى الأقفال الزمنية واتفاقيات العقود الذكية الأخرى. كانت المشكلة هي أن النصوص البرمجية الطويلة والمعقدة تزيد حتمًا من حجم المعاملات وتقلل من سهولة استخدامها.


كان لتبسيط التفاعل مع مثل هذه السيناريوهات المعقدة، تم تقديم مفهوم P2SH في عام 2012 ، وتم توحيده في BIP 16 بواسطة Gavin Andresen. يتلخص جوهر P2SH في استبدال النص البرمجي الكامل لشروط الإنفاق في scriptPubKey بـ تجزئة تشفيرية خاصة به – ما يسمى بتجزئة النص البرمجي.


هجوم تزوير التوقيع الرقمي: كيف تهدد ثغرات CVE-2025-29774 وخطأ SIGHASH_SINGLE طرق تشغيل المحفظة متعددة التوقيع باستخدام RawTX مزيف


كيف يعمل هيكل النص البرمجي لمخرجات P2SH؟

دعنا ننظر إلى النص البرمجي المحدد كنتيجة لإلغاء التسلسل:

root@kitploit:~
OP_HASH160 06612b7cb2027e80ec340f9e02ffe4a9a59ba762 OP_EQUAL

يختلف هذا النص البرمجي عن P2PKH القياسي في أنه بدلاً من تجزئة المفتاح العام، فإنه يخزن تجزئة لـ redeemScript – مجموعة من الشروط التي يمكن بموجبها إنفاق الأموال.

  • OP_HASH160 – يقوم بتجزئة البيانات (في هذه الحالة redeemScript) أولاً بخوارزمية SHA-256، ثم بـ RIPEMD-160.
  • 06612b7cb2027e80ec340f9e02ffe4a9a59ba762 — 20 بايت تجزئة redeemScript.
  • OP_EQUAL – يتحقق مما إذا كان redeemScript المقدم مساويًا لهذه التجزئة.

عملية إنفاق الأموال عبر مخرج P2SH

لإنفاق هذه الأموال، من الضروري نقل ما يلي في مدخلات (scriptSig) المعاملة التي تشير إلى هذا المخرج:

  1. redeemScript متسلسل – النص البرمجي الأصلي الذي تم ترميز شروطه في تجزئة.
  2. بيانات فتح – التوقيعات أو أدلة أخرى تستوفي شروط redeemScript.

عند معالجة المعاملة، تقوم عُقد الشبكة بـ:

  • تجزئة redeemScript ومقارنتها بالتجزئة المحددة في المخرج.
  • إذا تطابقت التجزئات (أي OP_EQUAL ترجع صحيحًا)، فسيتم إلغاء تسلسل redeemScript وتنفيذه.
  • تعتبر المعاملة صالحة إذا تم تنفيذ redeemScript بشكل صحيح، أي تم استيفاء جميع شروط الإنفاق.

وبالتالي، فإن P2SH ينقل مسؤولية تقديم والتحقق من شروط الإنفاق من المرسل (الذي ينشئ النص البرمجي المطلوب) إلى المنفق.


مزايا وأهمية اختيار مثل هذه الآلية

1. المرونة والسيناريوهات المعقدة

يسمح P2SH بإنشاء عناوين بشروط عشوائية، غالبًا ما تكون متعددة المستويات – على سبيل المثال، اشتراط التوقيع المتعدد (2 من 3، 3 من 5، إلخ)، والقيود الزمنية، ومنطق التوزيع، وغير ذلك الكثير. في هذه الحالة، يقوم المرسل ببساطة بإرسال الأموال إلى عنوان تجزئة مضغوط، دون الخوض في التفاصيل الفنية.


2. توفير المساحة

بدلاً من تخزين النص البرمجي الكامل في البلوكشين، يتم تخزين تجزئته فقط في المعاملة. هذا يقلل الحمل على الشبكة، ويقلل حجم الكتل، ويسرع التحقق من المعاملات.


3. زيادة الأمان

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


4. الراحة للمستخدمين والمبرمجين

يقوم P2SH بتوحيد وتبسيط استخدام العقود الذكية المعقدة في البيتكوين، مما يبسط التكامل ويزيد التوافق مع مجموعة متنوعة من المحافظ والخدمات.


مثال على الاستخدام: المحافظ متعددة التوقيع

المثال الكلاسيكي هو المحفظة التي تتطلب توقيعات من اثنين من خمسة مشاركين لإتمام الصفقة. باستخدام P2SH:

  • يحتوي المخرج على تجزئة النص البرمجي المقابل.
  • لإنفاق الأموال، تحتاج إلى تمرير النص البرمجي الكامل لتمكين التوقيع المتعدد في scriptSig مع التوقيعات.
  • تتحقق الشبكة من اتساق التجزئات وصحة التوقيعات.

هذا يجعل P2SH مثاليًا للحسابات المؤسسية والمشاريع المشتركة والمواقف الأخرى التي تتطلب التحكم في الوصول. آلية الدفع إلى تجزئة النص البرمجي (P2SH) هي جزء أساسي من بنية البيتكوين، وتوفر توازنًا بين:

  • الأمان (حماية الأموال من خلال شروط صارمة والتشفير)،
  • الكفاءة (تخزين التجزئة فقط، وليس كل التفاصيل)،
  • المرونة (دعم أي شروط إنفاق، حتى المعقدة)،
  • الراحة (تنسيق عنوان بسيط ومعيار وصول).

هجوم تزوير التوقيع الرقمي: كيف تهدد ثغرات CVE-2025-29774 وخطأ SIGHASH_SINGLE طرق تشغيل المحفظة متعددة التوقيع باستخدام RawTX مزيف


تحليل تشفير استخراج أول مدخل للمعاملة ( ins)

دعنا ننفذ أمرًا للحصول على معلومات حول أحد مدخلات معاملة بتجزئة 6102bfd4bad33443bcb99765c0751b6b8e4e65f4db4e3b65324c5e9e3dac8132. تحليل مثل هذا المدخل مهم لفهم آلية تفويض إنفاق الأموال على مستوى النص البرمجي.

root@kitploit:~
!./darkai -scriptsig 6102bfd4bad33443bcb99765c0751b6b8e4e65f4db4e3b65324c5e9e3dac8132

يتم عرض نتيجة استخراج أول مدخل للمعاملة ( ins) على النحو التالي:

root@kitploit:~
{
'script': '00483045022100e5d7c59ea1fb5d0285e755dfc09634e1e3af36d12950b9b5d5f92b136021b3d202202c181129443b08dcfb8d9ced30187186c57c96f9cdb3f3914e0798682ea35d2b03493046022100e1f8dbad16926cfa3bf61b66e23b3846323dcabf6c75748bcfad762fc50bfaf402210081d955160b5f8d2b9d09d8838a2cf61f5055009d9031e0e106e19ebab234d949034c695221023927b5cd7facefa7b85d02f73d1e1632b3aaf8dd15d4f9f359e37e39f05611962103d2c0e82979b8aba4591fe39cffbf255b3b9c67b3d24f94de79c5013420c67b802103ec010970aae2e3d75eef0b44eaa31d7a0d13392513cd0614ff1c136b3b1020df53ae',
'outpoint': {
'index': 1,
'hash': 'ec2a40cac3ac5dadf1d31f3cad03bdc8465caab5acbc5407ee7f4a7400aab577'
},
'sequence': 4294967295
}

1. تحليل مفصل لمكونات ScriptSig ( script)

  • قيمة الحقل scriptهي scriptSig ، والتي تُستخدم لفتح مخرج المعاملة السابق المقابل.
  • المحتوى هو سلسلة طويلة من البايتات بتنسيق سداسي عشري.
  • في هذه الحالة، هو نص برمجي خماسي المكونات، يتضمن:
    • توقيعات رقمية قياسية وفقًا لبروتوكول ECDSA، عادةً لتأكيد ملكية المفتاح الخاص.
    • المفاتيح العامة المطلوبة للتحقق من التوقيع.
    • قد يكون هناك هيكل يشير إلى عمليات التوقيع المتعدد (مفاتيح عامة وتوقيعات متعددة).

تحليل هيكل النص البرمجي:

  • يبدأ بـ 00، والذي يمكن أن يعني في سياق scriptSig OP_0 ، المستخدم تقليديًا في سيناريوهات التوقيع المتعدد (على سبيل المثال، في حالة معيار التوقيع المتعدد للدفع إلى تجزئة النص البرمجي، حيث تكون هناك حاجة إلى عنصر نائب).
  • بعد ذلك تأتي التوقيعات بتنسيق DER (مثل 3045...)، والتي تتكون عادةً من سلسلة من البايتات تحتوي على تفاصيل التوقيع.
  • تلي التوقيعات المفاتيح العامة (من حيث الطول والهيكل، على الأرجح بتنسيق مضغوط، نظرًا لأنها حوالي 33 بايت)، والتي تؤكد أن التوقيعات تنتمي إلى المالكين الصحيحين.
  • بشكل عام، يتوافق تنسيق النص البرمجي مع redeemScript أو البناء النموذجي لمعاملات P2SH متعددة التوقيع.

2. النقطة الخارجة (outpoint)

  • يحتوي على بيانات حول المخرج السابق المستخدم في هذا المدخل:
    • 'hash': 'ec2a40cac3ac5dadf1d31f3cad03bdc8465caab5acbc5407ee7f4a7400aab577'— هي تجزئة المعاملة السابقة.
    • 'index': 1– يشير إلى المخرج الثاني (مرقم من الصفر)، المستخدم للفتح.
  • وبالتالي، يشير المدخل إلى مخرج محدد من معاملة سابقة، مما يثبت أن مؤلف المعاملة له الحق في إنفاقه.

3. التسلسل (sequence)

  • القيمة 4294967295 (0xFFFFFFFF)هي أقصى رقم 32 بت.
  • في البيتكوين، سيعمل هذا الحقل على الإشارة إلى أن المدخل لا يشارك في آلية الاستبدال بالرسوم (RBF) أو ليس لديه قفل زمني/وقت نسبي.
  • غالبًا ما يستخدم افتراضيًا للمدخلات الثابتة.

أهمية scriptSig في سياق الأمان

  • ScriptSig هو البيانات اللازمة لفتح الأموال المحمية بواسطة النص البرمجي للقفل للمخرج السابق.
  • في حالة معاملات P2SH (غالبًا للتوقيع المتعدد)، يحتوي scriptSig على:
    • توقيعات المشاركين التي تؤكد الحق في إنفاق الأموال.
    • redeemScript الأصلي، الذي تم تحديد تجزئته في النص البرمجي للقفل للمخرج السابق.
  • يضمن الفحص الناجح لـ scriptSig أن مؤلف المعاملة لديه بالفعل السلطة اللازمة للتصرف في الأموال.

أظهر التحليل التشفيري لاستخراج أول مدخل للمعاملة ( ins) مع تجزئة المعاملة المحددة ما يلي:


  • يحتوي مدخل المعاملة الأولى على نص برمجي معقد للفتح، بما في ذلك التوقيعات الرقمية والمفاتيح العامة.
  • يتم استخدام مرجع إلى مخرج محدد لمعاملة أخرى ec2a40cac3ac5dadf1d31f3cad03bdc8465caab5acbc5407ee7f4a7400aab577:1.
  • تشير قيمة التسلسل القصوى إلى عدم وجود أقفال خاصة أو RBF.
  • من المفترض أننا نتحدث عن معاملة P2SH متعددة التوقيع، حيث تكون عدة توقيعات مطلوبة لتأكيد إنفاق الأموال.

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


هجوم تزوير التوقيع الرقمي: كيف تهدد ثغرات CVE-2025-29774 وخطأ SIGHASH_SINGLE طرق تشغيل المحفظة متعددة التوقيع باستخدام RawTX مزيف

تحليل مفصل لنتيجة استخراج المخرج الثاني ( outs)

دعنا ننفذ الأمر للحصول على معلومات حول أحد مخرجات المعاملة بالمعرف ec2a40cac3ac5dadf1d31f3cad03bdc8465caab5acbc5407ee7f4a7400aab577.

root@kitploit:~
!./darkai -redeemscript ec2a40cac3ac5dadf1d31f3cad03bdc8465caab5acbc5407ee7f4a7400aab577

تم استخراج outs على وجه التحديد، المخرج الثاني ( ) من هذه المعاملة، العنصر ذو الفهرس 1 .


النتيجة التي تم الحصول عليها:

root@kitploit:~
{
'value': 350000,
'script': 'a91406612b7cb2027e80ec340f9e02ffe4a9a59ba76287'
}

1. تحليل مفصل لحقل البيانات المستلم value

  • الحجم: 350,000 ساتوشي.
  • هذا المبلغ من الأموال موجود في المخرج الثاني للمعاملة المحددة ويمكن إنفاقه إذا تم استيفاء الشروط المحددة في النص البرمجي المقابل.
  • التحويل إلى BTC: 350,000 ساتوشي = 0.0035 BTC
هجوم تزوير التوقيع الرقمي: كيف تهدد ثغرات CVE-2025-29774 وخطأ SIGHASH_SINGLE طرق تشغيل المحفظة متعددة التوقيع باستخدام RawTX مزيف

2. قيمة الحقل script

  • الخاصية:
    النص البرمجي a91406612b7cb2027e80ec340f9e02ffe4a9a59ba76287هو نص برمجي للقفل كلاسيكي (scriptPubKey) بتنسيق P2SH (الدفع إلى تجزئة النص البرمجي) .
  • شرح النص البرمجي:
    • a9— OP_HASH160 هو مشغل يطبق أولاً SHA-256 ثم RIPEMD-160 على بيانات الإدخال.
    • 14— طول (20 بايت) القيمة التالية هو حجم التجزئة.
    • 06612b7cb2027e80ec340f9e02ffe4a9a59ba762— تجزئة 20 بايت، تُعرف أيضًا باسم تجزئة النص البرمجي ، وهي تمثيل فريد للنص البرمجي للاسترداد الذي يتحكم في إنفاق هذه الأموال.
    • 87— OP_EQUAL هو مشغل يقارن قيمتين ويعيد صحيحًا إذا كانتا متساويتين.

وبالتالي، يتطلب النص البرمجي أنه من أجل الفتح (إنفاق الأموال)، يقدم المستخدم نصًا برمجيًا للاسترداد تتطابق تجزئته مع هذه القيمة.


معنى ودور نص الاسترداد في سياق P2SH

  • نص الاسترداد هو النص الأصلي الذي يحدد شروط إنفاق الأموال، على سبيل المثال، التوقيع المتعدد، سيناريو معقد بحد زمني، إلخ.
  • مخرجات المعاملات تخزن فقط تجزئة من نص الاسترداد، مما يوفر المساحة ويحمي تفاصيل الشروط.
  • لاستخدام الأموال المستثمرة في هذا المخرِج، عند إنشاء معاملة جديدة، يجب على المستخدم توفير نص استرداد متسلسل في scriptSig يتم فك تشفيره والتحقق منه بشكل صحيح بواسطة الشبكة.

المعنى العام للنتيجة

  • معرّف المعاملة ec2a40cac3ac5dadf1d31f3cad03bdc8465caab5acbc5407ee7f4a7400aab577مرتبط بمخرِج يحتوي على 0.0035 BTC.
  • هذه الأموال مرتبطة بعنوان P2SH يتم التحكم فيه بواسطة نص بتجزئة 06612b7cb2027e80ec340f9e02ffe4a9a59ba762.
  • من أجل إنفاق هذه الأموال، يجب عليك تقديم نص استرداد مطابق لهذه التجزئة وتحقيق الشروط المنصوص عليها فيه.

هجوم تزوير التوقيع الرقمي: كيف تهدد ثغرات CVE-2025-29774 وخطأ SIGHASH_SINGLE محافظ التوقيع المتعدد طرق التشغيل باستخدام RawTX المزيف

أهمية المعلومات التي تم الحصول عليها في سياق أوسع

  • تسمح هذه النتيجة بتأكيد أن الأموال موجودة بالفعل في المخرِج مع شروط Pay-to-Script-Hash.
  • فهم هيكل هذه المخرجات مهم لتحليل الأمان، وتطوير سيناريوهات التوزيع المعقدة، والتحقق من شروط الإنفاق.
  • استخدام P2SH يوفر آلية آمنة وفعالة لإدارة الأموال في شبكة Bitcoin، مما يسمح بإنشاء عقود ذكية ومحافظ آمنة.

تؤكد المعلومات الواردة أن سجل المخرِج الثاني للمعاملة ec2a40cac3ac5dadf1d31f3cad03bdc8465caab5acbc5407ee7f4a7400aab577 يخزن مبلغ 0.0035 BTC، ويتم التحكم فيه بواسطة نص P2SH قياسي بقيمة hash160 06612b7cb2027e80ec340f9e02ffe4a9a59ba762. لإدارة هذه الأموال، من الضروري تقديم نص الاسترداد المقابل، مما يوفر مستوى عالٍ من الأمان والمرونة في إدارة البيتكوين.


لنؤكد فك تشفير scriptSig:

root@kitploit:~
OP_FALSE 304502... 304602... 5221023927b5cd7facefa7b85d02f73d1e1632b3aaf8dd15d4f9f359e37e39f05611962103d2c0e82979b8aba4591fe39cffbf255b3b9c67b3d24f94de79c5013420c67b802103ec010970aae2e3d75eef0b44eaa31d7a0d13392513cd0614ff1c136b3b1020df53ae

لنشغّل الأمر للحصول على HASH160 لقد وضع مطورو Bitcoin معيارًا لتجزئة بطول 20 بايت (سداسي عشري) يُستخدم على نطاق واسع دون تغييرات في عملات رقمية شهيرة أخرى مثل Bitcoin (BTC)، Ethereum (ETH)، Tether (USDT)، BNB (BNB)، Solana (SOL)، XRP (XRP)، Cardano (ADA)، Dogecoin (DOGE)، USDC (USDC)، Polkadot (DOT)، Avalanche (AVAX)، Shiba Inu (SHIB)، Stellar (XLM)، TRON (TRX)، Chainlink (LINK)، Litecoin (LTC)، Bitcoin Cash (BCH)، Monero (XMR) للدلالة على المعرف المختصر للنصوص والمفاتيح العامة.


لنشغّل الأمر:

root@kitploit:~
!./darkai -hexdata 5221023927b5cd7facefa7b85d02f73d1e1632b3aaf8dd15d4f9f359e37e39f05611962103d2c0e82979b8aba4591fe39cffbf255b3b9c67b3d24f94de79c5013420c67b802103ec010970aae2e3d75eef0b44eaa31d7a0d13392513cd0614ff1c136b3b1020df53ae

عملية المعالجة:

  1. يتم تحويل السلسلة الأصلية، الممثلة في تنسيق سداسي عشري، إلى سلسلة من البايتات (فك التشفير من سداسي عشري إلى تنسيق ثنائي). هذه السلسلة هي نص متسلسل (نص استرداد) أو هيكل مشابه لنص Bitcoin النصي.
  2. يتم تجزئة البايتات المستلمة باستخدام خوارزمية SHA-256 (تجزئة بضربة واحدة)، ثم تتم معالجة النتيجة بواسطة دالة التشفير RIPEMD-160.
  3. يتم الحصول على تجزئة RIPEMD-160 الناتجة للبيانات الثنائية SHA-256 كسلسلة:
root@kitploit:~
06612b7cb2027e80ec340f9e02ffe4a9a59ba762

تسمى هذه التجزئة بطول 20 بايت (سداسي عشري) HASH160 وتُستخدم على نطاق واسع في Bitcoin للدلالة على المعرف المختصر للنصوص والمفاتيح العامة.


معنى النتيجة وسياقها

  • عملية التجزئة RIPEMD-160(SHA-256(data)) المعروفة باسم HASH160، هي المعيار لإنشاء العناوين والنصوص في Bitcoin، بما في ذلك P2SH (Pay-to-Script-Hash). يوفر HASH160 معرفًا فريدًا ومدمجًا يوفر مساحة على البلوكشين.
  • استخدام التجزئة المزدوجة (SHA-256، ثم RIPEMD-160) يجمع بين الخصائص التشفيرية القوية لكلتا الوظيفتين: مقاومة التصادم، الاتجاه الواحد، ومقاومة الهجمات.
  • التجزئة الناتجة تتوافق مع تجزئة النص لنص الاسترداد – أي النص الذي يتحكم في الوصول إلى الأموال المقفلة في عنوان P2SH.
  • على وجه الخصوص، يظهر HASH160 هذا في النص القفل (scriptPubKey) لمخرجات معاملات محددة، مما يتطلب تقديم نص الاسترداد الأصلي نفسه بنفس التجزئة والتوقيعات الصحيحة عند الإنفاق.

التفاصيل الفنية والشروحات

  • لدى Bitcoin مفهوم التجزئة المزدوجة SHA-256 وRIPEMD-160 لحماية العناوين والنصوص.
  • استخدام HASH160 بدلاً من مخرجات SHA-256 البسيطة بطول 256 بت يقلل طول التجزئة من 32 بايت إلى 20 بايت، مما يقلل من مساحة التخزين وحجم البيانات على الشبكة.
  • يُستخدم HASH160 لتوليد عناوين P2SH بشكل أساسي وعناوين P2PKH القديمة.

خطوة رئيسية في معالجة نصوص Bitcoin باستخدام دوال التجزئة التشفيرية.
تحويل النصوص المتسلسلة أو المفاتيح العامة إلى HASH160 يسمح بتحديد وفهرسة وحماية البيانات بكفاءة على بلوكشين Bitcoin.

التجزئة المستلمة:

root@kitploit:~
{'06612b7cb2027e80ec340f9e02ffe4a9a59ba762'}

أنتج الفريق التجزئة الدقيقة التي تعمل كحلقة وصل بين النصوص المعقدة والتنسيق المدمج المستخدم لتخزين والتحقق من المعاملات على شبكة Bitcoin.


هجوم تزوير التوقيع الرقمي: كيف تهدد ثغرات CVE-2025-29774 وخطأ SIGHASH_SINGLE محافظ التوقيع المتعدد طرق التشغيل باستخدام RawTX المزيف

لماذا اختار ساتوشي التجزئة المزدوجة SHA-256 وكيف يؤثر ذلك على القوة التشفيرية

اختار ساتوشي ناكاموتو استخدام التجزئة المزدوجة SHA-256 (أي تطبيق SHA-256 مرتين متتاليتين) في خوارزميات التجزئة في Bitcoin لعدة أسباب مهمة تعزز القوة التشفيرية وأمان الشبكة.

أسباب اختيار SHA-256 المزدوجة

  1. تحسين المقاومة للهجمات المختلفة
    تطبيق واحد لـ SHA-256 لديه بالفعل مقاومة تشفيرية عالية، ومقاوم للتصادمات والصور المسبقة. لكن التطبيق المزدوج لدالة التجزئة – أولاً SHA-256 على البيانات الأصلية، ثم SHA-256 على النتيجة – يزيد من تعقيد التحليل والهجمات على التجزئة.
    هذا يقلل من احتمالية اختيار تصادم بنجاح أو استعادة عكسية للبيانات الأصلية، ويجعل اختيار الخيارات المختلفة أكثر استهلاكاً للجهد ويحمي من نقاط الضعف المحتملة في تطبيقات محددة للخوارزمية.
  2. الحماية من مشكلات طول بيانات الإدخال
    توفر SHA-256 المزدوجة طبقة إضافية من الأمان الوقائي من خلال مراعاة سلوك بناء التجزئة الداخلي والتعامل مع بتات الحشو في ترميز البيانات. هذا يقلل من الهجمات المحتملة المتعلقة بتنسيق البيانات.
  3. اتباع ممارسات التشفير الجيدة
    التجزئة المزدوجة هي تقنية أمان راسخة في عدد من البروتوكولات التشفيرية. على سبيل المثال، تستخدم المجاميع الاختبارية والتوقيعات الرقمية التشفير المزدوج أو التجزئة المزدوجة. هذا يزيد من قوة سلسلة الأمان.
  4. الأمان المثبت والدعم الواسع
    SHA-256 هي عضو في عائلة SHA-2 التي طورتها وكالة الأمن القومي الأمريكية (NSA) ونشرها المعهد الوطني للمعايير والتقنية (NIST). تعتبر هذه الخوارزمية من أكثر الخوارزميات أماناً اليوم، واستخدامها المزدوج يوفر أقصى درجات الأمان.

كيف يؤثر هذا على القوة التشفيرية؟

  • مقاومة التصادم والصور المسبقة
    كل جولة من SHA-256 مقاومة للتصادم بشكل كبير - من الصعب للغاية العثور على مدخلين لهما نفس التجزئة. التجزئة المزدوجة تعزز هذا الضمان لأنه يجب على المهاجم إيجاد تصادم لـ SHA-256 متتاليتين، مما يزيد بشكل كبير من التعقيد الحسابي.
  • دالة باتجاه واحد مع تأثير الانهيار الجليدي
    التطبيق المزدوج يعزز "تأثير الانهيار الجليدي"، حيث يؤدي أدنى تغيير في بيانات الإدخال إلى تغيير جذري في التجزئة الناتجة، مما يجعل من الصعب اكتشاف الأنماط والهندسة العكسية.
  • تعزيز مقاومة التحليل التشفيري
    SHA-256 المزدوجة تحمي من نقاط الضعف المحتملة في التنفيذ أو الثغرات غير المتوقعة التي يمكن اكتشافها في تكرار واحد، مما يقلل من خطر الهجمات باستخدام أدوات الحوسبة الكمومية أو الكلاسيكية.
  • قابلية التطبيق لإثبات العمل وأمان البلوكشين
    آلية إثبات العمل في Bitcoin تعتمد على حساب تجزئات الكتل التي يجب أن تستوفي صعوبة معينة. التجزئة المزدوجة تخلق حاجزاً إضافياً أمام تزوير الكتل، مما يزيد من الموثوقية والثقة في البلوكشين 5 .

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


هجوم تزوير التوقيع الرقمي: كيف تهدد ثغرات CVE-2025-29774 وخطأ SIGHASH_SINGLE محافظ التوقيع المتعدد طرق التشغيل باستخدام RawTX المزيف


التوقيع المتعدد في Bitcoin: دور redeemScript والتعليمة OP_CHECKMULTISIG

أمان ومرونة معاملات Bitcoin الحديثة يعتمدان على نظام النصوص الذي يسمح بشروط معقدة لإنفاق الأموال. إحدى الآليات الرئيسية هي التوقيع المتعدد (multisig) ، حيث لا يمكن إنفاق الأموال إلا إذا كان هناك عدة توقيعات رقمية صالحة من مجموعة من التوقيعات المحتملة. في هذه المقالة، سننظر بالتفصيل في كيفية تنفيذ ذلك بالضبط في Bitcoin، وما هو redeemScript، وكيف تعمل التعليمة OP_CHECKMULTISIG ، ولماذا هذا النهج مطلوب.

ما هو redeemScript؟

في سياق Bitcoin، redeemScript هو نص يحتوي على شروط إنفاق الأموال، والتي يتم تخزينها في مخرِج المعاملة بتنسيق Pay-to-Script-Hash (P2SH). بدلاً من تخزين النص الكامل على البلوكشين، يتم تخزين تجزئة redeemScript في المخرِج، مما يوفر المساحة ويخفي تفاصيل الشروط حتى وقت الإنفاق.


يمكن أن يتضمن RedeemScript، على سبيل المثال، مفاتيح عامة متعددة وعددًا عتبويًا من التوقيعات – وهذا ما تنفذه محافظ التوقيع المتعدد.


كيف تعمل OP_CHECKMULTISIG؟

لننظر في التعليمة OP_CHECKMULTISIG: الغرض والتشغيل، حيث العنصر الرئيسي في redeemScript الذي ينفذ التحقق من التوقيع المتعدد هو OP_CHECKMULTISIG .

  • تستقبل التعليمة مجموعتين من البيانات من المكدس كمدخل:
    • N من المفاتيح العامة (مثل ثلاثة مفاتيح عامة)
    • M من التوقيعات (مثل توقيعين)، حيث M ≤ N هو الحد العتبوي المطلوب من التوقيعات لتأكيد المعاملة.
  • للتحقق من صحة المعاملة، OP_CHECKMULTISIG تتحقق من أن كل توقيع من توقيعات M موقع بشكل صحيح بواسطة أي من المفاتيح العامة N.
  • إذا كانت جميع التوقيعات صالحة وتطابق المفاتيح الموجودة في redeemScript، ترجع التعليمة true ، مما يسمح بإنفاق الأموال.

الميزات والخطأ المتعلق بإزالة عنصر من المكدس

بسبب خطأ تاريخي في تنفيذ OP_CHECKMULTISIG ، يتم إزالة عنصر إضافي واحد، قيمة غير مستخدمة، من المكدس أثناء التنفيذ. لتجنب هذه المشكلة، scriptSig يستخدم عنصراً خاصاً OP_FALSE(القيمة 0) في البداية، والذي يعوض هذا الخطأ ويمنع الثغرات المحتملة.


  • بعد ذلك سننظر في تنفيذ OP_CHECKMULTISIG الذي يزيل عنصراً إضافياً واحداً من المكدس. باستخدام هذا الخطأ، يعوض المهاجم عن OP_CHECKMULTISIG كثغرة محتملة.
  • وبالتالي، يبدو هيكل scriptSig للتوقيع المتعدد شيئاً كالتالي: حيث العنصر الأول من النص هو عنصر وهمي .OP_FALSE <signature1> <signature2> ... <redeemScript>OP_FALSE

مثال عملي: التوقيع المتعدد 2 من 3

بناءً على كود redeemScript:

root@kitploit:~
023927... 03d2c0... 03ec01... 3 OP_CHECKMULTISIG
  • هناك 3 مفاتيح عامة معلنة هنا .
  • الحد العتبوي هو توقيعان من هذه الثلاثة مطلوبان للتحقق الناجح.
  • العملية OP_CHECKMULTISIGتتحقق من أن التوقيعين المقدمين (في scriptSig) يتوافقان مع اثنين من المفاتيح الثلاثة وأنهما صالحان.
  • OP_FALSEفي scriptSig يعوض خطأ إزالة القيمة الإضافية.

أهمية وفوائد محافظ التوقيع المتعدد

  • زيادة الأمان. يمكن لمالك المحفظة توزيع التحكم في الأموال بين عدة أشخاص أو أجهزة، مما يلغي إمكانية الإنفاق غير المصرح به منفرداً.
  • المرونة. يمكن تنفيذ مخططات مختلفة، على سبيل المثال، "2 من 3"، "3 من 5"، بشروط مختلفة.
  • الكفاءة القانونية: غالباً ما تُستخدم التوقيعات المتعددة في البيئات المؤسسية لضمان إدارة الأصول المشتركة.

السياق التقني والعملي

  • تُستخدم سيناريوهات التوقيع المتعدد على نطاق واسع في معاملات P2SH وSegWit.
  • التعليمة OP_CHECKMULTISIG هي واحدة من أكثر العمليات استهلاكاً للموارد في البلوكشين، حيث تتطلب التحقق من توقيعات متعددة. يوجد حد على مستوى البروتوكول لعدد عمليات التوقيع (sigops) لكل كتلة.
  • على الرغم من تاريخها مع OP_FALSE، أثبتت الآلية موثوقيتها ووجدت تطبيقاً واسعاً.

RedeemScript مع التعليمة OP_CHECKMULTISIG هي أداة معقدة وقوية في ترسانة البيتكوين تسمح لك بإنشاء محافظ متعددة التوقيعات بعتبة توقيع، مما يوفر مستوى عالٍ من الأمان والتحكم في الأموال. أصبحت هذه الآلية حجر الزاوية للمنظمات والمستخدمين والخدمات التي ترغب في استخدام الإدارة المشتركة لأصولها في بيئة لا مركزية وآمنة. وبالتالي، فإن التوقيع المتعدد عبر redeemScript وOP_CHECKMULTISIG ليس مجرد تقنية، بل وظيفة توسع قدرات نموذج العملة المشفرة الكلاسيكي.


هجوم تزوير التوقيع الرقمي: كيف تهدد ثغرات CVE-2025-29774 وخطأ SIGHASH_SINGLE طرق تشغيل المحفظة متعددة التوقيعات باستخدام RawTX مزيف

كيف تعمل آلية التحقق من التوقيع المتعدد في البيتكوين مع OP_CHECKMULTISIG وredeemScript

تعتمد آلية التحقق من التوقيع المتعدد في البيتكوين على استخدام سكربتات خاصة مع التعليمات OP_CHECKMULTISIG و redeemScript ، مما يسمح بمطابقة التوقيعات ذات العتبة، مما يوفر أمانًا متزايدًا وإدارة مشتركة للأموال.

أساسيات آلية التوقيع المتعدد

التوقيع المتعدد (Multisig) هو نظام تتطلب فيه توقيعات صالحة متعددة من مجموعة معينة من المفاتيح العامة لإتمام معاملة. يُشار إلى المخطط النموذجي كـ m من n — على سبيل المثال، "2 من 3"، حيث يلزم وجود أي توقيعين من ثلاثة مفاتيح لترخيص الإنفاق.

في البيتكوين، يتم تنفيذ هذا المنطق عبر:

  • redeemScript — سكربت يصف شروط إنفاق الأموال. يحتوي على قائمة بالمفاتيح العامة ومعامل العتبة (m).
  • scriptSig – سكربت فتح القفل، الذي يتضمن التوقيعات المطلوبة للتحقق، و redeemScript نفسه.

كيف يعمل redeemScript

تتحقق التعليمة OP_CHECKMULTISIGمن أن التوقيعات المقدمة في scriptSigصالحة وتطابق المفاتيح العامة المنشورة من redeemScript.

هيكل redeemScript يكون مشابهًا لهذا:

root@kitploit:~
OP_M <pubkey1> <pubkey2> ... <pubkeyN> OP_N OP_CHECKMULTISIG
  • OP_Mو OP_N— تعليمات لتحديد عدد التوقيعات المطلوبة والعدد الإجمالي للمفاتيح العامة، على التوالي (على سبيل المثال، OP_2 و OP_3).
  • <pubkeyX>— المفاتيح العامة للمشاركين.
  • OP_CHECKMULTISIG— عامل (operator) ينفذ التحقق من التوقيع المتعدد.

  • يأخذ كمدخلات عدة توقيعات ومجموعة من المفاتيح العامة.
  • للتحقق بنجاح، يجب أن يتطابق كل توقيع بشكل صحيح مع أحد المفاتيح العامة المحددة.
  • يعيد العملية (operation) القيمة true إذا وصل عدد التوقيعات الصالحة إلى العتبة m.

من الميزات التقنية الهامة وجود خطأ تاريخي في التنفيذ لـ OP_CHECKMULTISIGيؤدي إلى إزالة عنصر إضافي غير مستخدم من المكدس. للتعويض عن هذا الخطأ، يتم وضع قيمة OP_FALSE(الكود 0) في بداية scriptSigلـ "قفل" إزاحة المكدس.


كيف يعمل هيكل scriptSig

لمحفظة ذات توقيع متعدد "2 من 3"، قبل إنفاق الأموال، يتم تشكيل scriptSigعلى النحو التالي:

root@kitploit:~
OP_FALSE <signature1> <signature2> <redeemScript>
  • OP_FALSE— قيمة وهمية للتعويض عن خطأ OP_CHECKMULTISIG.
  • <signature1>و <signature2>– توقيعان رقميان معتمدين من قبل مالكي المفاتيح الخاصة المقابلة.
  • <redeemScript>— السكربت نفسه مع المفاتيح العامة ومعاملات التحقق.

عند التحقق من معاملة من قبل العقدة (node):

  1. استخراج redeemScript من scriptSig.
  2. تجزئته (Hashing) ومقارنته مع التجزئة المخزنة في سكربت القفل (scriptPubKey) للمخرج السابق (تنسيق P2SH – OP_HASH160 <redeemScript hash> OP_EQUAL).
  3. إذا تطابقت التجزئات، يتم إلغاء تسلسل (deserialize) redeemScript.
  4. تنفيذ تعليمة OP_CHECKMULTISIG، ومقارنة التوقيعات والمفاتيح للتطابق.
  5. إرجاع true إذا كانت الفحوصات ناجحة.

إذا اجتازت جميع مدخلات المعاملة هذا الفحص، تعتبر المعاملة صالحة. مع هذه الصلاحية، من خلال تنفيذ عامل هذا الخطأ، يعوض المهاجم عن  OP_CHECKMULTISIG  كثغرة محتملة.


آلية التوقيع المتعدد عبر redeemScript وOP_CHECKMULTISIG

  • زيادة الأمان: يجب أن يتفق عدة مالكي مفاتيح خاصة لإجراء معاملة، مما يقلل من خطر السرقة في حالة اختراق أحد المفاتيح.
  • المرونة وقابلية التوسع: يمكنك تعيين عتبة عشوائية للتوقيعات (من 1 إلى 15)، بالإضافة إلى قائمة بالمشاركين – من 2 إلى 15 مفتاحًا عامًا.
  • إدارة الأصول الجماعية: مناسبة للحسابات المؤسسية، المحافظ المشتركة، DAO، مما يسمح بالتحكم القوي في الوصول.
  • الشفافية وقابلية التحقق: جميع البيانات والشروط الضرورية موجودة في سلسلة الكتل، والتحقق من المعاملات تلقائي ولا مركزي وشفاف.

تتيح آلية التحقق من التوقيع المتعدد في البيتكوين باستخدام التعليمة OP_CHECKMULTISIGو redeemScript إعداد مخططات توقيع ذات عتبة معقدة، ومن خلال تنفيذ عامل هذا الخطأ، يعوض المهاجم عن  OP_CHECKMULTISIG  كثغرة محتملة في المعاملات الخاضعة للتحكم في شبكة البيتكوين الموزعة.


ما هي الميزات والقيود عند التحقق من توقيعات متعددة باستخدام OP_CHECKMULTISIG؟ دعنا نلقي نظرة على الجوانب والقيود الرئيسية:

  1. عتبة التحقق من التوقيع
    يسمح OP_CHECKMULTISIG بتحديد عدد التوقيعات المطلوبة T من إجمالي عدد المفاتيح العامة N (مخطط "T من N"). على سبيل المثال، 2 من 3. لصحة المعاملة، يكفي وجود T توقيع صالح .
  2. التحقق من توقيعات متعددة في عملية واحدة
    على عكس التحقق من التوقيع الفردي (OP_CHECKSIG)، يتحقق OP_CHECKMULTISIG من توقيعات متعددة مرة واحدة، ويربطها بالمفاتيح العامة المقابلة، مما يزيد من كفاءة وراحة تنفيذ المحافظ متعددة التوقيعات.
  3. استخدام redeemScript لشرط الإنفاق
    في تنسيق P2SH، يتم إخفاء مخطط التوقيع المتعدد تحت تجزئة redeemScript – سكربت كامل مع المفاتيح العامة والمعاملات. لإنفاق الأموال، يجب على المستخدم تقديم redeemScript والتوقيعات المقابلة.
  4. خطأ تاريخي – عنصر إضافي في المكدس
    يتميز OP_CHECKMULTISIG بميزة إزالة عنصر إضافي غير مستخدم من المكدس أثناء التنفيذ (خطأ في التنفيذ "off-by-one"). للتعويض، يتم إضافة عنصر وهمي OP_FALSEفي بداية scriptSig لمحاذاة المكدس بشكل صحيح. هذه ميزة معترف بها ومقبولة من قبل المجتمع.

قيود OP_CHECKMULTISIG

  1. الحد الأقصى لعدد المفاتيح والتوقيعات
    يوجد في البيتكوين حد أقصى 15 مفتاحًا عامًا وبالتالي 15 توقيعًا في redeemScript. هذا بسبب الحد الأقصى لحجم السكربت (~520 بايت) وعدد العمليات المسموح بها للتحقق لكل كتلة (حد sigops).
  2. زيادة حجم المعاملة والرسوم
    المعاملات متعددة التوقيعات أكبر حجمًا بسبب العدد الكبير من المفاتيح العامة والتوقيعات وبيانات redeemScript الإضافية. هذا يزيد من حجم المعاملة نفسها، وبالتالي رسوم معالجتها.
  3. قيود حجم السكربت
    الحد الأقصى لحجم كل سكربت (مدخل أو مخرج) هو 520 بايت. مع عدد كبير من المفاتيح، يصبح redeemScript ضخمًا، مما يؤثر على راحة وكفاءة استخدام التوقيع المتعدد.

  4. Read more

تنزيل الأداة