Author

Topic: كيفية تستعمل مفاتيح مشفرة (BIP38) (Read 66 times)

legendary
Activity: 1568
Merit: 6660
bitcoincleanup.com / bitmixlist.org
اليوم سوف أتظاهر معاملة إنشاء مفتاح مشفرة BIP38 إما من مفتاح خاص موجود او من مفتاح خاص جديدا إنشاء خاصة ليكون باطن بالمفتاح المشفرة. و يجد التقنة تشفير BIP38 مستعملات في توزيع بيتكوينات مادية الذي لديهم المفتاح مطبوعة خلف ملصق قابل للنزع، و هذا مفتاح الخاص الذي يمكن حصول عليها بواسطة فك التشفير فعلا محمل كمية بيتكوين فيها، و من الممكن استردادها باستيرادها في محفظة و إرسال البيتكوين إلى عنوان ثاني.

موجود طريقتين لإنشاء مفاتيح مشفر كذا و هما بECmultiply او بدون ECmultiply. و ECmultiply يعني فقط ان إنشائه نقطة على منحنى بيضاوي بالشكل لبيتكوين من كملة المرور و تسلسل البيت يسمى "ملح". و هذا عملية ينشىء كود وسيط من النقطة البيضاوي بالشكل الذي من الممكن إنشاء المفتاح مشفر BIP38 منها فقط و ليس بكلمة المرور، إعطاء الفائدة ان العدم نقل الكملة المرور إلى الصانع البيتكوين المادي. والطريقة الثاني بدون ECmultiply اسرع و لكن يلزمك نقل الكملة المرور إلى الصانع.

العملية بدون ECmultiply

- استخرج عنوان كسلسلة بايت من اي مفتاح الخاص. اعمل (()SHA256(SHA256خد الأول 4 بايت يسمى تجزئة العنوان اي الملح.
- نادي وظيفة scrypt بالمعطيات password=الكملة المرور في UTF-8 مطبوع في Unicode NFC, salt=تجزئة العنوان، n=16384, p=8, r=8 و length=64.
- خذ النصف الأول من النتيجة يسمى نصف مستمد 1 و النصف الثاني اطلق عليها اسم نصف مستمد 2.
- اعمل تشفير بوظيفة AES بالمعطيات block=مفتاح الخاص[15-0] XOR نصف مستمد 1[15-0] و key=نصف مستمد 2 و يسمى النتيجة نصف مشفر 1. قم بتسفير وظيفة AES ثاني بمعطيات block=مفتاح الخاص[31-16] XOR نصف مستمد 1[31-16] و key=نصف مستمد 2 و يسمى النتيجة نصف مشفر 2.

ثم يكون المفتاح المشفرة BIP38 سلسلة: نصف مشفر 2 + نصف مفشر 1 + الملح + واحد بايت إعلام + 0x1 0x42.

و عملية فك التشفير يشبه الخطوات التشفير بما ان محسوب نصف مستمد 1 و نصف مستمد 2 في نفس طريقة كالمعالجة التشفير، و أرسلت المتغيرات نصف مشفر 1 و نصف مفشر 2 إلى الوظيفة فك تشفير AES بدل من النصفاتين المفتاح الخاص في معطية block، لاستخراج التصفيات المفتاح الخاص.

و scrypt هي وظيفة لتجزئة مدخلات البايت إلى هاش. ضمن أشياء أخرى، هي الخوارزمية PoW في العملة الرقمية لايتكوين (ولكن هذا خارج نطاق موضوعي).

العملية بECmultiply

العملية تشفير ECmultiply مكسور في مرحلتين: توليد الكود وسيط و استعمالها لإنشاء المفتاح.

و يدعم هدا طريق زيادة ارقام دفعة و تسلسل في المفتاح القشر BIP38 و لكن بسبب ايجاز لا أتكلم عنها.

الطريق لإنشاء الكود الوسيط هو التالي:

-  ولد سلسلة 8 بايت عشوائي يسمى الملح.
- نادي وظيفة scrypt بالمعطيات password=الكملة المرور في UTF-8 مطبوع في Unicode NFC, salt=الملح، n=16384, p=8, r=8 و length=32. اطلق عليها اسم عامل بادية.
- اعمل (()SHA256(SHA256 على العامل بادية متسلسلة بالملح يسمها عامل مرور.
- قم بتضاعف النقطة G بالعامل مرور، يسمى نقطة مرور (هذا هو عملية ECmultiply).
- يوضع الملح والنقطة المرور في الكود الوسيط.

طريقة توليد المفتاح المشفرة BIP38 من الكود الوسيط:

- استخرج النقطة المرور والملح من الكود الوسيط.
- ولد سلسلة 24 بايت عشوائي يسمى عامل ا. اعمل (()SHA256(SHA256 على عامل ا يسمى عامل ب.
قم بتضاعف نقطة مرور بعامل ب.
- ثم نستخدم النقطة النتيجة مفتاح عامة و نستمد عنوان منها.

ثم ننشأ المرتبطة بمفتاح العامة:
- استخرج عنوان كسلسلة بايت من اي مفتاح الخاص. اعمل (()SHA256(SHA256خد الأول 4 بايت يسمى تجزئة العنوان.
- نادي وظيفة scrypt بالمعطيات password=الكملة المرور في UTF-8 مطبوع في Unicode NFC, salt=تجزئة العنوان، n=1024, p=1, r=1 و length=64.
- خذ النصف الأول من النتيجة يسمى نصف مستمد 1 و النصف الثاني اطلق عليها اسم نصف مستمد 2.
- اعمل تشفير بوظيفة AES بالمعطيات block=عامل ا[15-0] XOR نصف مستمد 1[15-0] و key=نصف مستمد 2 و يسمى النتيجة نصف مشفر 1. قم بتسفير وظيفة AES ثاني بمعطيات block=نصف مفشر 1 + عامل ا[31-16] XOR نصف مستمد 1[31-16] و key=نصف مستمد 2 و يسمى النتيجة نصف مشفر 2

ثم المفتاح المشفر يكون سلسلة من نصف المشفرة 2 + نصف مشفرة 1[8-0] + الملح + تجزئة العنوان + 0x1 0x43

و عملية فك التشفير يشبه عملية فك التشفير بدون ECmultiply و عملية تشفير بECmultiply بما اننا نحسب معظم المتغيرات مرة ثانية.

يمكنكم قراء BIP38 هنا: https://github.com/bitcoin/bips/blob/master/bip-0038.mediawiki
Jump to: