تخطي إلى المحتوى الرئيسي

شرح معيار BIP-39: كيفية عمل عبارات البذور الذاكرية

BIP-39 (Bitcoin Improvement Proposal 39) يحدد المعيار لإنشاء جمل ذاكرية — وهي التسلسلات المألوفة من 12 أو 24 كلمة — التي تشفر الإنتروبيا المستخدمة لاشتقاق مفاتيح محفظة العملات الرقمية. نُشر في عام 2013 بواسطة Marek Palatinus وPavol Rusnak وAaron Voisine وSean Bowe، وأصبح BIP-39 المعيار السائد لنسخ احتياطية من المحافظ عبر جميع العملات الرقمية الرئيسية تقريباً.

فهم BIP-39 على المستوى التقني يمنحك الثقة بأن نسخة احتياطية من عبارة البذور موثوقة ويساعدك على تقييم خصائص الأمان لتنفيذات المحفظة المختلفة.

نظرة عامة على BIP-39

BIP-39 يحدد عمليتين:

  1. إنشاء العبارة الذاكرية — تحويل الإنتروبيا العشوائية إلى سلسلة من الكلمات المفهومة للإنسان.
  2. اشتقاق البذور — تحويل الكلمات الذاكرية (بالإضافة إلى عبارة مرور اختيارية) إلى بذرة ثنائية بحجم 512 بت يمكن استخدامها مع BIP-32 لإنشاء المفاتيح الهرمية الحتمية.

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

الخطوة 1: إنشاء الإنتروبيا

تبدأ العملية بكتلة من البيانات العشوائية الآمنة تشفيرياً (الإنتروبيا). يدعم BIP-39 خمسة أحجام إنتروبيا:

الإنتروبيا (بت)المجموع الاختباري (بت)المجموع الكلي (بت)الكلمات
128413212
160516515
192619818
224723121
256826424

في الممارسة العملية، تستخدم جميع المحافظ تقريباً إما 128 بت (12 كلمة) أو 256 بت (24 كلمة). الأحجام الأخرى صحيحة وفقاً للمواصفات لكن نادراً ما يتم تنفيذها.

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

مصادر الإنتروبيا

  • مولدات الأرقام العشوائية للأجهزة (HRNG) — يستخدمها محافظ الأجهزة مثل Ledger وTrezor. تأخذ عينات من الظواهر الفيزيائية (الضوضاء الحرارية، ضوضاء الطلقات) لإنتاج عشوائية حقيقية.
  • CSPRNG نظام التشغيل/dev/urandom على Linux/macOS، CryptGenRandom على Windows، أو crypto.getRandomValues() في المتصفحات. هذه مولدات أرقام عشوائية شبه عشوائية آمنة تشفيرياً (CSPRNGs) مزودة بالبذور من مصادر الإنتروبيا للأجهزة.
  • رميات النرد — بعض المستخدمين ينشئون الإنتروبيا يدوياً باستخدام نرد من الكازينو، ويرسمون الرميات إلى ثنائي أو مؤشرات الكلمات. هذا يزيل الثقة في أي برنامج أو جهاز RNG.

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

بمجرد إنشاء الإنتروبيا، يتم إضافة مجموع اختباري:

  1. حساب بصمة SHA-256 من بايتات الإنتروبيا.
  2. خذ أول ENT / 32 بت من البصمة (حيث ENT هو طول الإنتروبيا بالبت).
  3. أضف بتات المجموع الاختباري هذه إلى الإنتروبيا.

لإنتروبيا 256 بت، يُنتج هذا 8 بتات من المجموع الاختباري، مما يجعل المجموع الكلي 264 بت.

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

آثار المجموع الاختباري

لأن الكلمة الأخيرة من الجملة الذاكرية تشفر بتات المجموع الاختباري، وليس كل الكلمات صحيحة كالكلمة الأخيرة لسلسلة معينة. لجملة ذاكرية من 24 كلمة، تشفر الكلمة الأخيرة 3 بتات من الإنتروبيا و8 بتات من المجموع الاختباري، لذلك فقط 8 من 2,048 كلمة ممكنة صحيحة للأول 23 كلمة. هذا هو السبب في أنه لا يمكنك اختيار الكلمة الأخيرة بحرية.

الخطوة 3: المخطط إلى الكلمات

يتم تقسيم بتات الإنتروبيا المدمجة + المجموع الاختباري إلى مجموعات من 11 بت. تمثل كل مجموعة من 11 بت فهرساً من 0 إلى 2,047، يقابل كلمة في قائمة كلمات BIP-39.

264 bits / 11 bits per word = 24 words
132 bits / 11 bits per word = 12 words

قائمة الكلمات الإنجليزية

تحتوي قائمة كلمات BIP-39 الإنجليزية على 2,048 كلمة بالضبط. تم تجميع القائمة بعناية بهذه الخصائص:

  • بادئات فريدة من أربعة أحرف — لا تشترك أي كلمتين في نفس الأحرف الأولى الأربعة. هذا يعني أن abandon يمكن تحديده بلا لبس باسم aban، وهو مفيد للنسخ الاحتياطية المعادن المدمجة.
  • مفردات شائعة — الكلمات بسيطة وواسعة الانتشار. لا أجناس، أسماء علمية أو مصطلحات غامضة.
  • تجنب الكلمات المتشابهة — يتم استبعاد الكلمات التي يمكن الخلط بينها بسهولة (على سبيل المثال، "woman" و"women") حيثما أمكن.
  • طول الشخصية — جميع الكلمات بين 3 و8 أحرف.

قوائم الكلمات للغات أخرى

BIP-39 يحدد قوائم كلمات في تسع لغات:

اللغةالحالةملاحظات
Englishمعيار مرجعيالأكثر دعماً
Japaneseمعيارييستخدم كاتاكانا؛ المسافات إيديوغرافية (U+3000)
Koreanمعياري
Spanishمعياري
Chinese (Simplified)معياري
Chinese (Traditional)معياري
Frenchمعياري
Italianمعياري
Czechمعياري
Portugueseمعياري

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

الخطوة 4: اشتقاق البذور (PBKDF2)

لا يتم استخدام الجملة الذاكرية مباشرة كمفتاح تشفيري. بدلاً من ذلك، تخضع لشد المفاتيح باستخدام PBKDF2-HMAC-SHA512:

PBKDF2(
password = mnemonic sentence (words joined by spaces, normalized to UTF-8 NFKD),
salt = "mnemonic" + optional_passphrase,
iterations = 2048,
key_length = 512 bits
)

ينتج عن هذا بذرة بحجم 512 بت تخدم كإدخال لاشتقاق BIP-32 الهرمي الحتمي.

الخصائص الرئيسية لـ PBKDF2 في BIP-39

شد المفاتيح — تضيف 2,048 تكرار من PBKDF2 تكلفة حسابية لهجمات القوة الغاشمة. بينما 2,048 تكرار متواضع بمعايير تجزئة كلمات المرور الحديثة، يأتي الأمان الأساسي من إنتروبيا الجملة الذاكرية نفسها (128 أو 256 بت)، وليس من عامل شد المفتاح.

دعم عبارة المرور — تتضمن الملح عبارة مرور اختيارية (ال "الكلمة 25"). إذا لم يتم توفير عبارة مرور، فإن الملح ببساطة هو السلسلة "mnemonic". إذا تم توفير عبارة مرور، يصبح الملح "mnemonic" + عبارة المرور. هذا يعني أن كل عبارة مرور مختلفة تنتج بذرة مختلفة تماماً — وبالتالي مجموعة مختلفة تماماً من المفاتيح والعناوين — من نفس الجملة الذاكرية.

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

تطبيع Unicode — يتم تطبيع الجملة الذاكرية وعبارة المرور باستخدام UTF-8 NFKD (نموذج التطبيع توافق التحليل) قبل تمريرها إلى PBKDF2. هذا يضمن اشتقاق بذور متسق عبر التطبيقات، بغض النظر عن كيفية تمثيل نظام التشغيل الشخصيات داخلياً.

الخطوة 5: من البذرة إلى المفاتيح (BIP-32)

يتم استخدام بذرة 512 بت من PBKDF2 كإدخال لـ BIP-32 (محافظ حتمية هرمية):

  1. يتم تمرير البذرة عبر HMAC-SHA512 بمفتاح "Bitcoin seed".
  2. الـ 256 بت الأيسر يصبح المفتاح الخاص الرئيسي.
  3. الـ 256 بت الأيمن يصبح رمز السلسلة الرئيسي.
  4. معاً، يشكلان المفتاح الخاص الموسع الرئيسي (xprv).

من هنا، تحدد مسارات اشتقاق BIP-44 بنية شجرة معيارية لاشتقاق مفاتيح وعناوين خاصة بالعملة.

مثال عملي

دعنا نتتبع BIP-39 مع مثال مبسط باستخدام 128 بت من الإنتروبيا (جملة ذاكرية من 12 كلمة):

1. إنشاء 128 بت من الإنتروبيا

00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000

(هذه إنتروبيا كل الأصفار — للتوضيح فقط. لا تستخدم أبداً في الممارسة.)

2. حساب بصمة SHA-256

SHA256(0x00000000000000000000000000000000) = 374708fff7719dd5979ec875d56cd2286f6d3cf7ec317a3b25632aab28ec37bb

3. خذ أول 4 بتات من البصمة كمجموع اختباري

البايت الأول: 0x37 = 00110111. أول 4 بتات: 0011.

4. أضف المجموع الاختباري إلى الإنتروبيا

128 بت من الأصفار + 0011 = 132 بت مجموع.

5. انقسم إلى مجموعات من 11 بت

00000000000 → 0 → "abandon"
00000000000 → 0 → "abandon"
00000000000 → 0 → "abandon"
00000000000 → 0 → "abandon"
00000000000 → 0 → "abandon"
00000000000 → 0 → "abandon"
00000000000 → 0 → "abandon"
00000000000 → 0 → "abandon"
00000000000 → 0 → "abandon"
00000000000 → 0 → "abandon"
00000000000 → 0 → "abandon"
00000000011 → 3 → "about"

النتيجة: abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about

هذا هو متجه الاختبار المعروف لإنتروبيا كل الأصفار. الكلمة الأخيرة هي "about" (وليس "abandon") لأن بتات المجموع الاختباري.

6. اشتقاق البذور مع PBKDF2

PBKDF2("abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about", "mnemonic", 2048, 64)

هذا ينتج بذرة 512 بت المستخدمة لاشتقاق BIP-32.

أداة SafeSeed

استخدم مولد عبارة البذور SafeSeed لرؤية BIP-39 في الإجراء. أنشئ عبارة بذور وعرض الإنتروبيا والمجموع الاختباري ورسم الكلمات في الوقت الفعلي. قم بتشغيل الأداة دون اتصال للأمان الأقصى.

التحليل الأمني لـ BIP-39

أمان الإنتروبيا

لجملة ذاكرية من 24 كلمة (256 بت إنتروبيا):

  • فضاء البحث هو 2^256، تقريباً 1.16 × 10^77 الاحتمالات.
  • حتى بمعدل تريليون (10^12) محاولة في الثانية، سيستغرق البحث الشامل تقريباً 3.67 × 10^57 سنة — أطول بكثير من عمر الكون (1.38 × 10^10 سنة).

لجملة ذاكرية من 12 كلمة (128 بت إنتروبيا):

  • فضاء البحث هو 2^128، تقريباً 3.4 × 10^38 الاحتمالات.
  • بمعدل تريليون محاولة في الثانية، سيستغرق البحث الشامل تقريباً 10^19 سنة.

كلاهما غير قابل حسابياً مع الحوسبة الكلاسيكية.

اعتبارات PBKDF2

يضيف PBKDF2 بـ 2,048 تكرار عامل ثابت لهجمات القوة الغاشمة لكنه ليس حاجز الأمان الأساسي. لاحظ بعض باحثي الأمان أن 2,048 تكرار منخفض مقارنة بوظائف الاشتقاق الرئيسية الحديثة مثل Argon2 أو bcrypt. ومع ذلك، لأن إنتروبيا الجملة الذاكرية (128 أو 256 بت) هي العامل السائد، فهذا قلق طفيف في الممارسة.

قيود المجموع الاختباري

يكتشف المجموع الاختباري معظم أخطاء النسخ لكن:

  • يكتشف لكن لا يصحح الأخطاء.
  • لجمل ذاكرية من 12 كلمة، توجد فقط 4 بتات مجموع اختباري، مما يعني أن حوالي 1 من كل 16 تعديل عشوائي سيمرر المجموع الاختباري.
  • المجموع الاختباري لا يحمي من إعادة ترتيب الكلمات التي يحدث أن تنتج مجموع اختباري صحيح.

مخاطر عبارة المرور

ميزة عبارة المرور قوية لكنها تقدم مخاطر:

  • إذا نسيت عبارة المرور، فإن الأموال غير قابلة للاسترجاع (لا توجد آلية "إعادة تعيين").
  • عبارة المرور لا يتم التحقق من صحتها — أي سلسلة تنتج محفظة صحيحة.
  • هاجم حصل على الجملة الذاكرية لكن ليس عبارة المرور يجب أن يفرض عبارة المرور، الذي يوفر أمان إضافي متناسب مع إنتروبيا عبارة المرور.

انتقادات BIP-39

BIP-39 ليس بدون نقاد في مجتمع تطوير Bitcoin.

لا توجد نسخة

BIP-39 لا يتضمن بايت الإصدار، مما يعني أن عملية الاشتقاق ثابتة إلى الأبد. إذا احتاج تحسين مستقبلي إلى وظيفة اشتقاق مفتاح مختلفة أو معاملات مختلفة، فلا يمكن الإشارة إليها ضمن تنسيق الجملة الذاكرية. هذا هو السبب في أن بعض المحافظ (وبشكل ملحوظ Electrum) تستخدم مخطط ذاكري خاص بهم مع الإصدار.

اقتران محكم بقائمة الكلمات

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

شد مفتاح ضعيف

كما هو مذكور، 2,048 تكرار من PBKDF2 تُعتبر ضعيفة بمعايير حديثة. بينما هذا لا يؤثر بشكل ملموس على الأمان للجمل الذاكرية عالية الإنتروبيا، فهو يوفر حماية أقل لعبارات المرور الأقصر أو المختارة من قبل المستخدم.

بديل Electrum

محفظة Electrum تستخدم مخطط ذاكري خاص بها يتضمن الإصدار وليس يعتمد على قائمة كلمات ثابتة. جمل Electrum الذاكرية ليست متوافقة مع BIP-39. هذا يعني أن عبارة بذور Electrum لا يمكن استعادتها في محفظة BIP-39 والعكس صحيح. دائماً اعرف أي معيار تستخدمه محفظتك.

تطبيقات BIP-39

BIP-39 يتم تطبيقه في جميع محافظ رئيسية تقريباً:

المحفظةBIP-39عدد الكلماتملاحظات
Ledgerنعم24جهاز، عنصر آمن
Trezorنعم12/24يدعم أيضاً SLIP-39 (Shamir)
Coldcardنعم24جهاز Bitcoin فقط
MetaMaskنعم12ملحق المتصفح
Trust Walletنعم12الجوال
Exodusنعم12سطح المكتب/الجوال
Electrumلا12يستخدم مخطط خاص
BlueWalletنعم12/24الجوال الموجه نحو Bitcoin

الاختبار والتحقق

متجهات الاختبار الرسمية

تتضمن مواصفات BIP-39 متجهات الاختبار — قيم إنتروبيا معروفة مع كلمات ذاكرية وبذور مشتقة المقابلة. يتم استخدام هذه للتحقق من أن التطبيقات صحيحة.

يمكنك التحقق من تطبيق محفظتك BIP-39 بالتحقق من متجهات الاختبار الرسمية المنشورة في:

التحقق من عبارة البذور الخاصة بك

للتحقق من أنك سجلت عبارة البذور الخاصة بك بشكل صحيح:

  1. أنشئ عبارة البذور على محفظة الأجهزة الخاصة بك.
  2. اكتبها بعناية.
  3. أعد تعيين محفظة الأجهزة إلى إعدادات المصنع.
  4. استعد من عبارة البذور التي كتبتها.
  5. تحقق من أن نفس العناوين يتم إنشاؤها.
  6. أكد أن المحفظة يمكنها التوقيع على المعاملات.

تؤكد هذه العملية أن كلاً من أن النسخة الاحتياطية صحيحة وأن تطبيق BIP-39 للمحفظة يعمل كما هو متوقع.

الأسئلة الشائعة

ماذا يعني BIP-39؟

BIP يعني Bitcoin Improvement Proposal. BIP-39 هو الاقتراح رقم 39، الذي يحدد المعيار لإنشاء تمثيلات ذاكرية (مفهومة للإنسان) للإنتروبيا التشفيرية. تم تقديمه في عام 2013 وتم اعتماده من قبل جميع محافظ العملات الرقمية الرئيسية تقريباً.

هل جميع عبارات الب