walletcenter

فرایند ساخت کلمات بازیابی در استاندارد BIP 39

مدت زمان تقریبی مطالعه: 7 دقیقه

فرایند ساخت کلمات بازیابی در استاندارد BIP 39

همه‌ی ما به عنوان کاربر حوزه‌ی بلاک چین و کریپتوکارنسی‌ها بارها در مورد کیف پول‌های ارز دیجیتال و اهمیت یادداشت و نگهداری کلمات بازیابی یا عبارات seed شنیده‌ایم. تمام کیف پول‌ های سخت ‌افزاری و اکثر مدل‌های نرم ‌افزاری در اولین مراحل راه‌اندازی، کلمات بازیابی ۱۲‌تایی، ۱۸تایی، ۲۴تایی و ... را طبق یک فرایند ریاضی می‌سازند و به کاربر نمایش می‌دهند. نحوه‌ی ساخت این کلمات به روش‌های مختلفی امکان‌پذیر است و استاندارد BIP ۳۹ یکی از روش‌های متداول و معروف این کار است.

فرایند ساخت کلمات بازیابی در استاندارد BIP 39‌ در چند مرحله انتخاب تصادفی اعداد و چند عملیات ریاضی انجام می‌شود که در این مقاله به طور مفصل آن را تشریح می‌کنیم. اگر شما از آن دسته کاربرهای کنجکاو و تشنه‌ی یادگیری مسائل فنی هستید، پس از مطالعه‌ی این مطلب قادر خواهید بود تمام فرایند ساخت کلمات بازیابی با استاندارد BIP 39‌ را خودتان روی کاغذ انجام دهید. پس تا انتها با ما همراه باشید.

برای درک بهتر، ابتدا توضیحاتی در مورد مفهوم کیف پول HD‌ و کلمات بازیابی می‌دهیم و سپس به سراغ BIP 39‌ می‌رویم.

 

مفهوم کلمات بازیابی و کیف پول HD

برای اینکه بتوان مقداری از یک ارز دیجیتال را خرج کرد، یعنی اجازه‌ی ارسال ارز از یک آدرس بلاک چین به آدرس دیگر را صادر کرد، نیاز به وارد کردن کلید خصوصی است. این کلید خصوصی یک عبارت نسبتاً طولانی بوده و از کاراکتر‌های تصادفی عدد و رقم انگلیسی تشکیل شده و برای هر ارز دیجیتال، متفاوت است. هم‌چنین یک کاربر می‌تواند در شبکه‌ی یک بلاک چین مثل بیت کوین، به تعداد نامحدود آدرس اختصاصی داشته باشد که هر کدام کلید خصوصی منحصربه‌فرد خود را دارند. پس می‌توان متوجه شد که یادداشت و نگهداری امن از تمام این کلیدهای خصوصی کاری سخت و پیچیده است. به همین دلیل توسعه‌دهنده‌های بلاک چین و سازنده‌های برنامه‌های کیف پول، سازوکاری طراحی کردند تا کاربر نهایی از شر این پیچیدگی‌ها خلاص شود.

در همین راستا، کیف پول‌های HD‌ یا Hierarchical Deterministic ساخته شدند. این کیف پول‌ها می‌توانند تمام آدرس‌های عمومی و کلیدهای خصوصی مربوط به هر آدرس و تمام سابقه‌ی تراکنش‌ها و... را فقط و فقط به یک رشته‌ داده‌ی منحصربه‌فرد به نام «Master Seed» (معادلِ عددیِ کلمات بازیابی) مرتبط کنند. این Master Seed در مقالات مختلف با اسامی گوناگونی نام برده می‌شود که همه یک معنا را دارند. ولی به لحاظ فنی، Master Seed یا Master Key فقط به رشته کد اصلی (مجموعه‌ای از ۰ و ۱ها) اشاره دارد و به هر کلمه‌ی انگلیسی مثلا از عبارت بازیابی ۲۴ تایی، یک Mnemonic word یا عبارتِ یادآور گفته می‌شود. البته آن‌ها را تحت عنوان Recovery Phrase و Recovery Word و حتی Recovery Passphrase نیز می‌شناسیم.

تمام اطلاعات لازم برای ارسال و دریافت تراکنش‌ها در هر لحظه از روی این Master seed قابل ساخت است، پس دیگر نه کاربرها و نه اپلیکیشن‌های کیف پول نیازی به ذخیره‌ی کلیدهای خصوصی ندارند. به همین دلیل است که تمام برنامه‌های درون یک کیف پول سخت افزاری را می‌توان پاک و مجدد نصب کرد، بدون اینکه مشکلی برای دارایی‌های روی آدرس‌های قبلی به وجود بیاید. (البته همیشه در انجام چنین کارهایی باید دقت کنیم).

در صورت دزدیده، گم یا خراب شدن کیف پول سخت افزاری ( یا نرم‌افزاری)، به کمک این Master seed می‌توان تمام اطلاعات آن را در یک کیف پول دیگر بازیابی کرد. توجه داشته باشید که این Master Seed صرفاً یک پسورد یا رمز عبور نیست،‌ بلکه یک رابطه‌ی ریاضی یکطرفه بین Master Seed و سایر کلیدها وجود دارد.

 

استاندارد BIP 39

تا اینجا آموختیم که می‌توان از یک Master seed‌ یا همان مجموعه کلمات بازیابی برای تولید و پشتیبانی از تمام اطلاعات در کیف پول‌ها استفاده کرد. BIP 39 یک استاندارد صنعتی برای ساخت این کلمات است و توسط اکثر کیف پول‌های HD مورد استفاده قرار می‌گیرد. کیف پول‌های معروفی مثل لجر (Nano S و Nano X)،‌ ترزور (One و Model T) و همچنین کول ولت (S و Pro) از این روش استفاده می‌کنند.

در استاندارد BIP 39 از یک لیست ۲۰۴۸تایی از کلمات انگلیسی استفاده می‌شود. تمام این کلمات را می‌توانید در لینک مشخص‌شده مشاهده کنید. کلمات بازیابی می‌توانند به صورت‌های مختلفی مثل ۱۲تایی، ۱۸تایی یا ۲۴تایی ساخته‌ شوند. البته Master Seed‌ نهایی تنها یک رشته از اعداد است و هر کدام از کلمات بازیابی نیز نشان‌گر یه کد عددیِ مشخص هستند. در حقیقت از آنجایی که یادداشت، نگهداری و به‌خاطرسپاری کلمات از اعداد ساده‌تر است، کلید نهایی در قالب چند کلمه به کاربر نشان داده می‌شود.

نحوه‌ی انتخاب این کلمات از آن لیست ۲۰۴۸تایی طبق فرایند بسیار جالبی انجام می‌شود که در ادامه به طور کامل توضیح خواهیم داد.

استاندارد BIP 39

 

استاندارد BIP 39‌ چگونه کار می کند؟

فرایند ساخت کلمات بازیابی در استاندارد BIP 39‌ به دو بخش تقسیم می‌شود. بخش اول تولید تک تک کلمات Mnemonic و بخش دوم تبدیل کلمات Mnemonic به معادل باینری آن‌هاست. در نهایت از این کلمات می‌توان به عنوان عبارات بازیابی در کیف پول‌های HD استفاده کرد. بخش اول یعنی تولید کلمات Mnemonic در ۵ مرحله انجام می‌شود.

مرحله‌ی اول،‌ تولید Entropy: Entropy به معنای بی‌نظمی است و به میزان بهم‌ریختگی ذرات یک سیستم یا ماده اشاره می‌کند. اما در اینجا منظور یک رشته‌ی ۱۲۸ تا ۲۵۶ بیتی از صفر و یک‌هاست که به صورت کاملاً تصادفی انتخاب می‌شوند. رشته‌های انتروپیِ ۱۲۸، ۱۶۰، ۱۹۲، ۲۲۴ و ۲۵۶ بیتی به ترتیب قادرند کلمات بازیابی ۱۲، ۱۵، ۱۸، ۲۱ و ۲۴تایی تولید کنند. به عنوان مثال، یک رشته‌ی ۱۲۸ بیتی، یک عبارت بازیابی متشکل از ۱۲ کلمه برای ما ایجاد خواهد کرد. تصویر زیر یک رشته‌ی انتروپی ۱۲۸ بیتی را نشان می‌دهد که به صورت ۴ بیت ۴ بیت تفکیک شده است.

مرحله‌ی دوم، تولید Checksum: در این مرحله‌ یک مقدارِ عددی با عنوان checksum تولید و به انتهای عدد تصادفی مرحله‌ی قبل یعنی همان انتروپی ۱۲۸ بیتی اضافه می‌شود. برای ساخت Checksum،‌ ابتدا تعداد بیت‌های انتروپی (یعنی ۱۲۸) به ۳۲ تقسیم می‌شود. نتیجه‌ی تقسیم عدد ۴ است. حالا باید ۴ بیت اول SHA256 انتروپی را به انتهای آن اضافه کنیم. فرض کنیم ۴ بیت اول به صورت ۰۱۱۰ باشد. این همان checksum است و اگر به انتهای انتروپی اضافه شود، چیزی شبیه شکل زیر به وجود می‌آید. (تعداد بیت‌های لازم برای ساخت checksum می‌تواند در روش‌های مختلف، متفاوت باشد، در اینجا ما ۴ بیت را در نظر گرفتیم ولی مثلاً لجر برای ساخت آن از ۸ بیت اول استفاده می‌کند).

استاندارد BIP 39‌ چگونه کار می کند؟

مرحله‌ی سوم، تفکیک (Split): بعد از اضافه شدن checksum تعداد بیت‌های انتروپی از ۱۲۸ به ۱۳۲ افزایش پیدا می‌کند. حالا مقدارِ نهایی باید به گروه‌های ۱۱ بیتی تفکیک (Split) شود، پس ۱۳۲ را تقسیم بر ۱۱ می‌کنیم. در نتیجه ۱۲ گروه ۱۱ بیتی مثل شکل زیر به دست می‌آید.

مرحله‌ی چهارم، تبدیل به دسیمال (مبنای ۱۰): در این مرحله معادل هر کدام از ۱۲ گروه بالا در مبنای ۱۰ محاسبه می‌شود (به تصویر بعدی دقت کنید). اعداد به دست آمده بین ۱ تا ۲۰۴۸ خواهند بود که به ازای هرکدام، یک کلمه در لیست کلمات BIP 39 وجود دارد.

استاندارد BIP 39‌ چگونه کار می کند؟

مرحله‌ی پنجم: نگاشت کلمات: آخرین مرحله، پیدا کردن ۱۲ کلمه‌ی متناظر با ۱۲ شماره‌ی به‌دست‌آمده است. یعنی با توجه به تصویر قبلی، باید به سراغ لیست کلمات رفته کلمات شماره‌ی ۴۹، ۱۴۳۸، ۹۱۶ و ... را پیدا کرد. این کار در شکل زیر انجام شده است.

استاندارد BIP 39‌ چگونه کار می کند؟

پس در نهایت ۱۲ کلمه‌ی بازیابی ما از این قرار خواهد بود:

  1. alert
  2. record
  3. income
  4. curve
  5. mercy
  6. tree
  7. heavy
  8. loan
  9. hen
  10. recycle
  11. mean
  12. devote

بخش اول، یعنی تولید کلمات Mnemonic به پایان رسید. اگر به یاد داشته باشید گفتیم که Master Seed‌ یک رشته‌ی عددی از صفر و یک‌هاست؛ پس در بخش دوم باید معادل عددیِ این ۱۲ کلمه تولید شود. برای این کار از تابعی به نام PBKDF2 استفاده می‌شود. این تابع کلمات Mnemonic را به همراه یک کلمه‌ی اضافه‌ی اختیاری به عنوان ورودی دریافت می‌کند و چندین بار آن‌ها را هش کرده و یک خروجی ۶۴ بایتی یا ۵۱۲ بیتی تولید می‌کند که همان Master Seed نهایی ماست.

 

امنیت استاندارد BIP 39‌

ممکن است این سوال پیش بیاید که امنیت این روش برای ساخت کلمات بازیابی و Master seed‌ چقدر است؟ آیا می‌توان کلمات بازیابی یک کیف پول را به طور تصافی حدس زد؟ احتمال اینکه این اتفاق رخ دهد چقدراست؟

اگر تا اینجای مطالب را با دقت خوانده و فقط کمی با ریاضیات و دنیای احتمالات آشنا باشید، تا حدودی متوجه کم بودن احتمال تشخیص تصادفی Master Seed‌ کیف پول شده‌اید؛ اما می‌خواهیم مقدار دقیق این احتمال را محاسبه کنیم. در ادامه به شدت متعجب خواهید شد.

هر چه تعداد کلمات بازیابی بیشتر باشد، درجه‌ی امنیت آن بالاتر خواهد بود. فرض کنیم از سیستم کلمات ۲۴تایی استفاده می‌کنیم. عدد تصادفی اولیه، یعنی همان انتروپی برای این کار یک عدد ۲۵۶ بیتی خواهد بود. برای انتخاب هر کلمه از لیست کلمات در این استاندارد، ۲۰۴۸ حالت مختلف وجود دارد. یعنی با این لیست می‌توان ۲۴۲۰۴۸ (۲۴ به توان ۲۰۴۸) یا ۲۲۵۶ (۲ به توان ۲۵۶) ترکیب مختلف برای کلمات بازیابی ایجاد کرد. این یک عدد ۷۸ رقمی بسیار بزرگ است. مقدار دقیق آن برابر است با:

115 792 089 237 316 195 423 570 985 008 687 907 853 269 984 665 640 564 039 457 584 007 913 129 639 936

حالا می‌رسیم به قسمت جذاب ماجرا. آیا می‌دانید در یک دانه‌ی شن چند صد میلیارد اتم وجود دارد؟ آیا می‌دانید تعداد مجموع اتم‌های تمامی مواد و اجسام و موجودات روی کره‌ی زمین در حدود ۲۱۶۶ تا هستند؟ اگر این عدد را ۲ برابر کنیم تازه می‌شود ۲۱۶۷ و اگر باز هم آن را دوبرابر کنیم به ۲۱۶۸ خواهیم رسید. هنوز فاصله‌ی خیلی خیلی زیادی تا ۲۲۵۶ وجود دارد. بگذارید خیالتان را راحت کنیم. تعداد تمام اتم‌های تمام کیهان، کمتر از این مقدار است. پس احتمال اینکه بتوان یک اتم منحصریه‌فرد را از بین تمام اتم‌ها در کل جهان درست حدس زد از اینکه بتوان یک Master Seed را به طور تصادفی درست انتخاب زد، بیشتر است.

 

سخن پایانی

در این مقاله فرایند ساخت کلمات بازیابی در استاندارد BIP 39‌ را به طور کامل بررسی کردیم. این روش فقط مخصوص کیف پول‌ها نیست و می‌توان برای تولید تصادفی انواع رمزها از آن بهره برد. بسیاری از کیف پول‌های ارز دیجیتال که مسئول حافظت از کلیدهای خصوصی کاربرها هستند، از این روش به عنوان یک روش کلی بازیابی اطلاعات در هنگام دزدیده، گم یا خراب شدن کیف پول استفاده می‌کنند.

کیف پول‌های HD قادرند تمام اطلاعات آدرس‌ها و کلیدهای خصوصی مربوط به آن‌ها و تمام تراکنش‌ها را تنها از روی عبارات بازیابی، در هر لحظه محاسبه کنند. این عبارات در حقیقت یک رشته‌ی اعداد باینری به نام Master Seed‌ هستند که طریقه‌ی محاسبه‌ی آن را با هم بررسی کردیم. امنیت استاندارد BIP 39‌ بسیار زیاد است و احتمال اینکه بتوان ۲۴ عبارات بازیابی یک کیف پول را حدس زد، تقریبا صفر است.