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

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

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

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

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

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

در همین راستا، کیف پول‌های HD‌ یا Hierarchical Deterministic ساخته شدند. کیف پول‌های HD‌ در سال ۲۰۲۱ با پشتیبانی از استاندارد BIP 39 وارد بازار شدند و دارای یک جفت کلید با نام‌های کلید توسعه‌یافته خصوصی و کلید توسعه‌یافته عمومی هستند. این کیف پول‌ها می‌توانند تمام آدرس‌های عمومی و کلیدهای خصوصی مربوط به هر آدرس و تمام سابقه‌ تراکنش‌ها را فقط و فقط به یک رشته‌ داده‌ منحصربه‌فرد به نام «Master Seed» (معادلِ عددیِ کلمات بازیابی) مرتبط کنند.

کلمات بازیابی یا 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

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

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

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

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

 

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

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

۱. تولید Entropy

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

۲. تولید Checksum

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

مرحله اول مرحله دوم

۳.  تفکیک (Split)

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

۴. تبدیل به دسیمال (مبنای ۱۰)

در این مرحله معادل هر کدام از ۱۲ گروه بالا در مبنای ۱۰ محاسبه می‌شود (به تصویر بعدی دقت کنید). اعداد به دست آمده بین ۱ تا ۲۰۴۸ خواهند بود که به ازای هرکدام، یک کلمه در لیست کلمات 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‌

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

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

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

احتمال تشخیص تصادفی کلمات بازیابی

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

۱۱۵ ۷۹۲ ۰۸۹ ۲۳۷ ۳۱۶ ۱۹۵ ۴۲۳ ۵۷۰ ۹۸۵ ۰۰۸ ۶۸۷ ۹۰۷ ۸۵۳ ۲۶۹ ۹۸۴ ۶۶۵ ۶۴۰ ۵۶۴ ۰۳۹ ۴۵۷ ۵۸۴ ۰۰۷ ۹۱۳ ۱۲۹ ۶۳۹ ۹۳۶

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

 

سخن پایانی

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

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