Fundamentals ·

ما هو Entropy؟ العشوائية وراء أمان العملات المشفرة


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

إذا كانت الإنتروبيا وراء محفظتك قوية، فسيحتاج المهاجم إلى البحث في عدد من التركيبات يفوق عدد الذرات في الكون المرصود للعثور على مفاتيحك. إذا كانت الإنتروبيا ضعيفة، يمكن سرقة أموالك في ثوانٍ. لا يوجد حل وسط.

تعريف الإنتروبيا

في التشفير، تقيس الإنتروبيا عدم قابلية البيانات للتنبؤ. يتم قياسها بالبتات. بت واحد من الإنتروبيا يمثل خيارًا ثنائيًا واحدًا: صورة أو كتابة، 0 أو 1. بتان من الإنتروبيا يعطيان أربع نتائج ممكنة. ثلاث بتات تعطي ثمانية. كل بت إضافي يضاعف عدد الاحتمالات.

الصيغة بسيطة: n بت من الإنتروبيا تنتج 2^n قيمة ممكنة.

هذا النمو الأسي هو ما يجعل الإنتروبيا قوية جدًا. عند الأرقام الصغيرة تبدو الاحتمالات قابلة للإدارة. عند أعداد البتات المستخدمة في العملات المشفرة تصبح كبيرة بشكل لا يُستوعب.

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

128 بت مقابل 256 بت

يدعم معيار BIP39، الذي يحدد كيفية إنشاء عبارات الاسترداد، طولين رئيسيين للإنتروبيا:

128 بت (عبارة استرداد من 12 كلمة)

  • تنتج 2^128 عبارة استرداد ممكنة
  • هذا يساوي 340,282,366,920,938,463,463,374,607,431,768,211,456 تركيبة
  • حوالي 3.4 × 10^38

256 بت (عبارة استرداد من 24 كلمة)

  • تنتج 2^256 عبارة استرداد ممكنة
  • هذا يساوي حوالي 1.16 × 10^77 تركيبة
  • أكثر من العدد التقديري لذرات الكون المرصود

يُعتبر كلا المستويين آمنين ضد التقنية الحالية. 128 بت من الإنتروبيا هو المعيار لمعظم محافظ المستهلكين، ولا توجد طريقة حسابية معروفة يمكنها البحث في 2^128 احتمالًا في أي إطار زمني عملي. يوفر خيار 256 بت هامش أمان إضافي. للمقارنة التفصيلية، راجع ما مدى سرعة كسر عبارة البذور بالقوة الغاشمة؟.

العلاقة بين بتات الإنتروبيا وعدد الكلمات تتبع قاعدة بسيطة: كل 11 بت من الإنتروبيا تُرسم لكلمة واحدة من قائمة كلمات BIP39 (2,048 كلمة، و2^11 = 2,048). عبارة من 12 كلمة ترمّز 128 بت من الإنتروبيا زائد 4 بتات مجموع تحققي. للتفصيل الكامل لهذه العملية، اقرأ شرح BIP39.

مصادر العشوائية: مولّد الأرقام العشوائية بالعتاد وWeb Crypto API

السؤال الحاسم هو: من أين تأتي الإنتروبيا؟ ليست جميع مولّدات الأرقام العشوائية متساوية.

شبه عشوائية مقابل آمنة تشفيريًا

دالة random القياسية في البرمجة (مثل Math.random() في JavaScript) هي شبه عشوائية. تستخدم صيغة رياضية لإنتاج أرقام تبدو عشوائية لكنها حتمية تمامًا. مع نفس البذرة الابتدائية ستنتج نفس التسلسل في كل مرة. هذا غير مناسب كارثيًا لإنشاء مفاتيح العملات المشفرة.

مولّدات الأرقام العشوائية الآمنة تشفيريًا (CSPRNG) تحل هذا بدمج عشوائية فيزيائية حقيقية من مصادر العتاد.

مولّدات أرقام عشوائية بالعتاد

تتضمن المعالجات الحديثة مولّدات أرقام عشوائية مخصصة بالعتاد تجمع الإنتروبيا من الظواهر الفيزيائية:

  • Intel RDRAND/RDSEED: تستخدم الضوضاء الحرارية في دوائر السيليكون
  • ARM TrustZone TRNG: تستفيد من توليد البتات العشوائية على مستوى العتاد
  • تجمعات إنتروبيا نظام التشغيل: يحافظ /dev/urandom في Linux وCryptGenRandom في Windows وSecRandomCopyBytes في macOS على تجمعات إنتروبيا تُغذَّى بأحداث العتاد

Web Crypto API

للأدوات القائمة على المتصفح، يوفر Web Crypto API الوصول إلى مولّد الأرقام العشوائية التشفيري لنظام التشغيل عبر crypto.getRandomValues(). هذه الدالة محددة من قبل W3C ومنفذة في جميع المتصفحات الحديثة.

يستخدم SafeSeed Web Crypto API لجميع عمليات توليد المفاتيح. عند استخدام مولّد عبارات بذور بيتكوين أو مولّد عبارات بذور إيثريوم، يتم الحصول على الإنتروبيا عبر crypto.getRandomValues(). لا يتم توليد شيء على الخادم؛ كل شيء يعمل في متصفحك.

من الإنتروبيا إلى عبارة البذور

الرحلة من الإنتروبيا الخام إلى عبارة البذور تتبع مسارًا دقيقًا وحتميًا محددًا بمواصفات BIP39:

الخطوة 1: توليد بايتات عشوائية

ينتج CSPRNG 16 بايت (128 بت) أو 32 بايت (256 بت) من البيانات العشوائية.

الخطوة 2: حساب المجموع التحققي

يتم حساب تجزئة SHA-256 للإنتروبيا. أول 4 بتات (للإنتروبيا 128 بت) أو 8 بتات (للإنتروبيا 256 بت) من هذه التجزئة تُلحق بالإنتروبيا كمجموع تحققي.

الخطوة 3: التقسيم إلى مجموعات 11 بت

يتم تقسيم بتات الإنتروبيا + المجموع التحققي المجمعة إلى مجموعات من 11 بت. لعبارة من 12 كلمة: 128 + 4 = 132 بت، مقسمة إلى 12 مجموعة من 11 بت.

الخطوة 4: التعيين إلى كلمات

كل قيمة 11 بت (0-2047) تُستخدم كفهرس في قائمة كلمات BIP39 المكونة من 2,048 كلمة. النتيجة هي عبارتك المساعدة للذاكرة.

الخطوة 5: اشتقاق البذرة

تمر العبارة المساعدة عبر PBKDF2-HMAC-SHA512 بـ2,048 تكرارًا لإنتاج بذرة 512 بت. ثم تُستخدم هذه البذرة لاشتقاق شجرة محفظتك HD وفقًا لمسارات اشتقاق BIP44.

كل خطوة بعد الخطوة 1 حتمية. نفس 128 بت من الإنتروبيا ستنتج دائمًا نفس الـ12 كلمة ونفس البذرة ونفس العناوين. أمن النظام بأكمله يعتمد على عدم قابلية تلك البايتات العشوائية الأولية للتنبؤ.

عندما يؤدي ضعف الإنتروبيا إلى سرقة الأموال

عواقب الإنتروبيا الضعيفة ليست نظرية. هناك حوادث متعددة في العالم الحقيقي أظهرت ما يحدث عندما تفشل العشوائية.

ثغرة Android SecureRandom (2013)

في أغسطس 2013 اكتُشف خلل في تنفيذ Android لـSecureRandom. لم تكن مكتبة تشفير Java على Android تبذر مولّد الأرقام العشوائية بشكل صحيح، مما تسبب في أن بعض محافظ بيتكوين تولّد مفاتيح خاصة بإنتروبيا غير كافية. استغل المهاجمون هذا لسرقة بيتكوين من المحافظ المتأثرة.

Blockchain Bandit (مفاتيح قابلة للتنبؤ)

وثّق الباحث الأمني Adrian Bednarek حالة قام فيها مهاجمون بمسح بلوكتشين إيثريوم بشكل منهجي بحثًا عن عناوين مشتقة من مفاتيح خاصة ضعيفة. مفاتيح مثل 0x0000...0001 (الرقم 1) أو مفاتيح مشتقة من عبارات بسيطة استُخدمت من قبل أشخاص لم يفهموا الإنتروبيا. راقبت روبوتات آلية هذه العناوين وسرقت أي أموال مودعة فيها في غضون ثوانٍ.

هجمات محفظة الدماغ

محافظ الدماغ — حيث يُشتق المفتاح الخاص من عبارة مرور محفوظة — اختُرقت مرارًا لأن العبارات المختارة بشريًا تملك إنتروبيا أقل بكثير مما يفترض الناس.

هذه الحوادث تشترك في درس مشترك: الخوارزميات التشفيرية نفسها (SHA-256، secp256k1، ECDSA) لم تُكسر. الإنتروبيا المغذاة لها كانت غير كافية.

اختبار جودة الإنتروبيا

كيف يمكنك التحقق من أن مولّد الأرقام العشوائية ينتج إنتروبيا عالية الجودة؟ توجد عدة اختبارات إحصائية:

NIST SP 800-22

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

التحقق العملي

بالنسبة للمستخدمين النهائيين، التحقق الأكثر عملية هو التأكد من أنك تستخدم أداة مدققة جيدًا تعتمد على crypto.getRandomValues() أو ما يعادلها. لا ينبغي أن تحاول تحسين الإنتروبيا بإضافة "عشوائيتك" الخاصة، لأن الخيارات البشرية أقل عشوائية بكثير مما تبدو عليه.

أدوات SafeSeed مفتوحة المصدر، مما يعني أن أي شخص يمكنه التحقق من أن مصدر الإنتروبيا هو crypto.getRandomValues() وليس بديلًا أضعف. لمناقشة أوسع حول أهمية التوليد على جانب العميل، راجع هل مولّدات البذور عبر الإنترنت آمنة؟.

الإنتروبيا ووضعك الأمني

فهم الإنتروبيا يغيّر طريقة تفكيرك في أمن العملات المشفرة. عبارة البذور المكونة من 12 كلمة ليست مجرد آلية نسخ احتياطي مريحة؛ إنها ترميز بشري قابل للقراءة لرقم عشوائي كبير لدرجة أن الكون لا يحتوي على طاقة كافية للبحث في جميع الاحتمالات.

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

  1. تحقق من مصدر الإنتروبيا: يجب أن تستخدم الأداة crypto.getRandomValues() أو /dev/urandom أو ما يعادلها من عشوائية مدعومة بالعتاد.
  2. تجنب الإنتروبيا المخصصة: لا تختر كلماتك بنفسك أو ترمي نردًا بطريقة منحازة أو تستخدم أي مصدر عشوائية "تشعر" أنه جيد بما فيه الكفاية.
  3. استخدم المعايير الراسخة: BIP39 خضع لاختبارات المعارك منذ 2013. الأدوات التي تتبع BIP39 بدقة، مثل مولّد عبارات بذور سولانا على SafeSeed، ترث عقدًا من المراجعة الأمنية.
  4. ولّد بدون اتصال إن أمكن: حتى مع إنتروبيا قوية، توليد المفاتيح على جهاز معزول أو بدون اتصال يزيل متجهات الهجوم المعتمدة على الشبكة. للدليل العملي، راجع كيفية توليد عبارة بذور بيتكوين بدون اتصال.

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