رفتن به محتوای اصلی
کوهستان
توضیح کوهستانرمزنگاری کیف‌پولنگهداری دارایی‌های دیجیتال· 6 دقیقه مطالعه· در مالی

کلیدهای نامحدود از دل دوازده کلمه؛ کیف‌پول‌های اچ‌دی چگونه پشتیبان‌گیری سنتی را بازنشسته کردند

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

به قلم بهنام کاظمی

به‌طور خلاصه

  • کیف‌پول‌های سلسله‌مراتبی قطعی با تکیه بر یک دانه اصلی بی‌نهایت نشانی منحصربه‌فرد تولید می‌کنند و نیاز به پشتیبان‌گیری از کلیدهای خصوصی مجزا را از بین می‌برند.
  • استاندارد BIP-44 این کلیدها را در ساختاری درختی و منسجم ساماندهی می‌کند و امکان مدیریت همزمان چند رمزارز مختلف را با یک عبارت بازیابی واحد فراهم می‌سازد.
  • کلیدهای عمومی گسترده (xpub) به نهادها اجازه می‌دهند بدون دسترسی به کلیدهای خصوصی خرج سرمایه، نشانی‌های واریز تازه بسازند و دارایی‌ها را حسابرسی کنند.

پیش از سال ۲۰۱۲، ایجاد ۱۰۰ نشانی تازه در شبکه بیت‌کوین نیازمند تهیه نسخه پشتیبان از ۱۰۰ کلید خصوصی جداگانه بود. اگر کاربری نشانی جدیدی برای دریافت تراکنش می‌ساخت و پیش از پشتیبان‌گیری بعدی دیسک سخت او آسیب می‌دید، دارایی‌های واریزشده برای همیشه از دسترس خارج می‌شدند.

این معماری که اصطلاحاً «فقط دسته‌ای از کلیدها» (JBOK) نامیده می‌شد، کاربری مداوم رمزارزها را ذاتاً آسیب‌پذیر و شکننده می‌کرد. هر تراکنشی که یک نشانی مانده (Change address) ایجاد می‌کرد، عملاً داده‌ای حیاتی و تازه به وجود می‌آورد که باید بلافاصله به‌صورت آفلاین ذخیره می‌شد.[6]

تصویب پیشنهاد بهبود بیت‌کوین ۳۲ (BIP-32) این فشار مداوم در مدیریت داده‌ها را با یک ساختار درختی مبتنی بر ریاضیات جایگزین کرد. اکنون یک عبارت بازیابی ۱۲ یا ۲۴ کلمه‌ای در نقش ریشه عمل کرده و بی‌نهایت کلید فرزند را به شیوه‌ای قطعی و معین مشتق می‌سازد.[4]

در مستندات فنی شرکت لجر آمده است: «پیش از کیف‌پول‌های HD، برای هر نشانی جدیدی که قصد استفاده از آن را داشتید، ناچار به ساخت یک کلید خصوصی مجزا بودید.» امروز نرم‌افزار کیف‌پول عملاً هیچ کلیدی ذخیره نمی‌کند؛ بلکه هر زمان لازم باشد، آنها را مستقیماً از روی دانه ریشه مجدداً محاسبه می‌کند.[3]

موتور محرک رمزنگاری

این سازوکار متکی بر یک الگوریتم درهم‌سازی یک‌طرفه با عنوان HMAC-SHA512 است. در زمان راه‌اندازی اولیه کیف‌پول، نرم‌افزار یک دانه اصلی (Master Seed) با اندازه ۵۱۲ بیت به‌صورت تصادفی تولید می‌کند.[4]

این دانه اصلی به دو نیمه تقسیم می‌شود. ۲۵۶ بیتِ سمت چپ به کلید خصوصی اصلی بدل شده و ۲۵۶ بیتِ سمت راست، کد زنجیره اصلی (Chain Code) را تشکیل می‌دهد. ترکیب این دو بخش، کلید خصوصی گسترده یا xprv را می‌سازد.[4]

الگوریتم درهم‌سازی HMAC-SHA512 دانه اصلی را به یک کلید خصوصی و یک کد زنجیره تفکیک می‌کند.

کد زنجیره همانند یک متغیر تعدیل‌کننده رمزنگاری عمل می‌کند. هنگامی که این کد با یک عدد شاخص (مثلاً نشانی شماره یک، دو یا سه) همراه شود، درهم‌سازی آن در کنار کلید والد، یک کلید فرزندِ کاملاً تازه و از نظر ریاضی متمایز تولید می‌کند.[2]

از آنجا که خروجی این تابع درهم‌ساز کاملاً قطعی است، وارد کردن کلید والد، کد زنجیره و عدد شاخص یکسان در الگوریتم HMAC-SHA512 همواره دقیقاً همان کلید فرزند را بازتولید می‌کند. بنابراین کیف‌پول نیازی به ذخیره کلیدهای فرزند ندارد و تنها نگهداری فرمول کفایت می‌کند.[2]

شرکت ترزور در مستندات معماری خود تصریح می‌کند: «BIP32 استانداردی است که کیف‌پول‌های سلسله‌مراتبی قطعی را تعریف می‌کند.» این استاندارد اجازه می‌دهد یک راز رمزنگاری‌شده پایه، به شکلی آبشاری به ساختاری عملاً بی‌پایان از نشانی‌های کاربردی گسترش یابد.[2]

مهندسی درخت اشتقاق

هرچند BIP-32 موتور محرک تولید کلیدهای نامحدود را فراهم ساخت، اما ساختاری برای ساماندهی آنها ارائه نمی‌داد. بدون یک ساختار یکپارچه، کیف‌پولی که روی یک نرم‌افزار ساخته می‌شد، پس از انتقال به نرم‌افزاری دیگر قادر به ردیابی و یافتن دارایی‌ها نبود.[1]

پیشنهاد بهبود بیت‌کوین ۴۴ (BIP-44) با تعیین یک مسیر اشتقاق پنج‌مرحله‌ای و مشخص این خلأ را برطرف کرد. این مسیر دقیقاً مشخص می‌کند که نرم‌افزار کیف‌پول باید در کدام شاخه به دنبال نوع خاصی از دارایی بگردد.[1]

این مسیر استاندارد از توالی دقیقی پیروی می‌کند: هدف (Purpose)، نوع رمزارز (Coin Type)، حساب (Account)، شاخه تغییر (Change) و شاخص نشانی (Address Index). در مخزن گیت‌هاب BIP-0044 ذکر شده است: «این پروپوزال یک سلسله‌مراتب منطقی را بر پایه الگوریتم تشریح‌شده در BIP-0032 برای کیف‌پول‌های قطعی پایه‌ریزی می‌کند.»[1]

لایه نوع رمزارز در این میان نقشی کلیدی دارد؛ به طوری که به هر بلاک‌چین یک شماره ثبت‌شده اختصاص می‌دهد: برای نمونه بیت‌کوین عدد صفر، اتریوم ۶۰ و لایت‌کوین عدد دو را به خود اختصاص داده‌اند.[1]

این رویکرد نشان می‌دهد یک عبارت بازیابی ۱۲ کلمه‌ای قادر است شاخه‌ای مجزا و ایزوله را برای بیت‌کوین و شاخه‌ای کاملاً مستقل را برای اتریوم ایجاد کند، بدون آنکه کوچک‌ترین تداخلی میان داده‌های رمزنگاری این شبکه‌ها پدید آید.[3]

مقایسه رشد بار داده: کیف‌پول‌های سنتی JBOK در برابر کیف‌پول‌های سلسله‌مراتبی قطعی.

ریاضیات کاهش حجم داده‌ها

گذار از معماری JBOK به ساختار سلسله‌مراتبی قطعی، محاسبات مقیاس‌پذیری داده‌ها در نگهداری دارایی‌های دیجیتال را دگرگون کرد. این تفاوت زمانی آشکار می‌شود که حجم داده‌های رمزنگاری مورد نیاز برای یک نهاد مالی فعال را اندازه‌گیری کنیم.[7]

یک کلید خصوصی استاندارد ۳۲ بایت حجم دارد. بر پایه مدل سنتی JBOK، یک صرافی یا پذیرنده تجاری که قصد تولید ۵۰۰ نشانی واریز مجزا روی پنج بلاک‌چین مختلف را داشت، باید ۲٬۵۰۰ کلید خصوصی منحصر‌به‌فرد را ذخیره می‌کرد.[6]

این نیاز معادل ۸۰٬۰۰۰ بایت داده رمزنگاری فوق‌العاده حساس بود که می‌بایست با تولید هر دسته نشانی تازه، به‌طور پیوسته پشتیبان‌گیری، رمزنگاری و به انبارهای آفلاین امن منتقل می‌شد.[7]

کیف‌پول HD این حجم از نیازمندی را به یک دانه اصلی ثابت و ۶۴ بایتی (همان مقدار ۵۱۲ بیتی اولیه) کاهش می‌دهد. چه یک نهاد تنها یک نشانی بسازد و چه یک میلیون، بار داده نسخه پشتیبان مطلقاً افزایش نمی‌یابد.[4][7]

این اشتقاق ریاضیاتی در یک عملیات مبتنی بر ۲٬۵۰۰ نشانی، نیاز به فضای پشتیبان‌گیری را تا ۹۹.۹ درصد محو می‌کند. فراتر از آن، فرآیند پشتیبان‌گیری را از یک آسیب‌پذیری عملیاتی مداوم به یک اقدام راه‌اندازی یک‌باره تبدیل می‌سازد.[7]

نگهداری نهادی و کیف‌پول‌های نظارتی

علاوه بر فشرده‌سازی بار داده، استاندارد BIP-32 مفهوم کلیدهای عمومی گسترده یا xpub را معرفی کرد؛ قابلیتی که امکان رصد تراکنش‌ها را به‌طور بنیادین از مجوز خرج کردن دارایی‌ها تفکیک می‌کند.[4]

یک کلید عمومی گسترده می‌تواند تمامی نشانی‌های عمومی یک شاخه معین از درخت اشتقاق را استخراج کند، اما هرگز نمی‌تواند کلیدهای خصوصی لازم برای امضا و تایید یک تراکنش مالی را بازتولید نماید.[2]

این تفکیک دسترسی برای سیستم حسابداری شرکت‌ها و نگهداری نهادی سرمایه حیاتی است. یک بنگاه اقتصادی می‌تواند xpub خود را به موسسه حسابرسی تحویل دهد تا تمامی تراکنش‌های ورودی و خروجی را به‌صورت لحظه‌ای بازرسی کنند.[5]

استاندارد BIP-44 مسیری پنج‌مرحله‌ای را برای ساماندهی کلیدهای مشتق‌شده در بلاک‌چین‌های متعدد معین می‌کند.

حسابرسان بدون آنکه کوچک‌ترین اختیاری در جابه‌جایی دارایی‌ها داشته باشند، زنجیره دقیق نشانی‌های دریافت را تولید و تراز موجودی را تصدیق می‌کنند.[5]

پژوهشگرانی که سازوکارهای نهادی را در ژورنال تخصصی رمزنگاری MDPI بررسی کرده‌اند بر این ویژگی انگشت گذاشته و یادآور می‌شوند نگهداری بدون وضعیت در کیف‌پول‌های HD بستر زیرساختی مقیاس‌پذیری را فراهم می‌سازد که سرورهای اینترنتی بدون ذخیره کلیدهای خصوصی در حافظه موقت، نشانی‌های واریز را صادر کنند.[5]

اگر یک سرور تحت وب حاوی xpub از سوی هکرها هک شود، مهاجم تنها به اطلاعاتی دسترسی پیدا می‌کند که ناقض حریم خصوصی است (یعنی مطلع شدن از اینکه کدام نشانی‌ها به شرکت تعلق دارند)، اما امکان سرقت کوچک‌ترین واحدی از دارایی‌ها وجود ندارد.[5]

آسیب‌پذیری‌ها و سناریوهای مرزی

پیوند ریاضی بین کلیدهای والد و فرزند یک سناریوی حاشیه‌ای حساس نیز پدید می‌آورد: اگر مهاجم همزمان به یک کلید عمومی گسترده والد و یک کلید خصوصی فرزند دست یابد، با وارون‌سازی محاسبات می‌تواند به هدف خود برسد.[6]

چنین سناریویی به مهاجم اجازه می‌دهد کلید خصوصی والد را محاسبه کرده و امنیت کل آن شاخه از کیف‌پول را به خطر اندازد. برای مسدود کردن این روزنه، در BIP-32 تدبیری به نام «اشتقاق سخت‌شده» (Hardened Derivation) تعبیه شد.[6]

اشتقاق سخت‌شده پیوند ریاضی بین کلید عمومی والد و کلیدهای فرزند را قطع می‌کند. این روش مستقیماً از کلید خصوصی والد برای ایجاد فرزند بهره می‌گیرد تا افشای احتمالی یک کلید خصوصی فرزند هرگز به افشای والد نینجامد.[4]

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

مستندات فنی بیت‌کوین‌ویکی درباره کیف‌پول‌های قطعی تصریح می‌کند که کلیدهای سخت‌شده با علامت پرایم (آپوستروف) در مسیر اشتقاق نمایش داده می‌شوند؛ مانند `m/44'/0'/0'`.[6]

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

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

این تحلیل چگونه انجام شد

روش
محاسبه مجدد بار داده‌های پشتیبان‌گیری رمزنگاری‌شده در دو معماری سنتی و کیف‌پول‌های قطعی.
یافته
کیف‌پول HD میزان داده‌های مورد نیاز برای پشتیبان‌گیری را در یک ساختار نهادی دارای ۲٬۵۰۰ نشانی تا ۹۹.۹٪ کاهش می‌دهد و فرآیند نگهداری را از یک بحران دائمی مدیریت داده به یک بار ذخیره ثابت ۶۴ بایتی، فارغ از حجم تراکنش‌ها تبدیل می‌کند.
داده‌هایی که بر پایهٔ آن‌ها کار کردیم
  • حجم کلید خصوصی در مدل سنتی: 32 bytes — Bitcoin Wiki
  • حجم دانه اصلی در کیف‌پول HD: 512 bits (64 bytes) — River
محدودیت‌های این تحلیل
این تحلیل بر پایه رمزنگاری استاندارد منحنی بیضوی ۲۵۶ بیتی تدوین شده است و حافظه مورد نیاز برای ذخیره فراداده‌های اختیاری نظیر برچسب‌گذاری نشانی‌ها یا تاریخچه تراکنش‌ها را در بر نمی‌گیرد.

اصطلاحات کلیدی

BIP-32
پیشنهاد بهبود بیت‌کوین که کیف‌پول‌های سلسله‌مراتبی قطعی را تعریف کرد و امکان اشتقاق یک درخت بی‌پایان از کلیدها را به کمک یک دانه اولیه فراهم ساخت.
کلید عمومی گسترده (xpub)
کلیدی رمزنگاری‌شده که می‌تواند تمام نشانی‌های عمومی یک شاخه مشخص را استخراج کند اما توانایی خرج دارایی‌ها یا امضای تراکنش را ندارد.
HMAC-SHA512
الگوریتم درهم‌سازی رمزنگاری که برای ترکیب کلید والد و کد زنجیره جهت مشتق ساختن کلید فرزند به کار می‌رود.
اشتقاق سخت‌شده (Hardened Derivation)
روشی امنیتی که رابطه ریاضی مستقیم بین کلید عمومی والد و کلیدهای فرزند را قطع می‌کند تا مانع مهندسی معکوس کلید اصلی شود.

پرسش‌های متداول

آیا یک کیف‌پول HD می‌تواند برای شبکه‌های مختلف بلاک‌چین نشانی بسازد؟

بله؛ استاندارد BIP-44 شناسه‌های مشخصی تحت عنوان «نوع رمزارز» به هر شبکه اختصاص می‌دهد و به یک دانه اصلی اجازه می‌دهد شاخه‌هایی کاملاً مجزا و بدون تداخل برای بیت‌کوین، اتریوم و شبکه‌های دیگر ایجاد کند.

اگر شرکت توسعه‌دهنده نرم‌افزار کیف‌پول تعطیل شود، چه بر سر دارایی‌ها می‌آید؟

از آنجا که فرمول‌های ریاضی اشتقاق استانداردهایی همگانی و متن‌باز هستند، کاربر می‌تواند عبارت ۱۲ یا ۲۴ کلمه‌ای خود را در هر نرم‌افزار سازگار دیگری وارد کرده، کلیدها را بازتولید کند و به سرمایه خود دسترسی یابد.

آیا ایجاد یک نشانی تازه به اتصال اینترنت نیاز دارد؟

خیر؛ فرآیند اشتقاق نشانی‌ها یک محاسبه کاملاً ریاضی و مستقل است و نرم‌افزار می‌تواند میلیاردها نشانی معتبر را در وضعیت کاملاً آفلاین بسازد.

بررسی عمیق دیدگاه‌ها

توسعه‌دهندگان پروتکل

بر استانداردسازی و سازگاری میان نرم‌افزارهای مختلف کیف‌پول تمرکز دارند.

مهندسانی که اولویت خود را بر استانداردهای BIP-32 و BIP-44 قرار داده‌اند استدلال می‌کنند اشتقاق قطعی کلیدها زمانی ارزش دارد که کاربر بتواند عبارت بازیابی خود را در نرم‌افزارهای رقیب نیز بازیابی کند. آنان بر تبعیت کامل از ساختار مسیرهای اشتقاق تاکید دارند تا در صورت توقف فعالیت یک شرکت سازنده، سرمایه کاربران به دام نیفتد.

نهادهای امانت‌دار سرمایه

تفکیک دسترسی نظارتی از اختیار خرج کردن دارایی‌ها را در اولویت می‌گذارند.

ارائه‌دهندگان سازمانی خدمات نگهداری رمزارز برای ایجاد زیرساخت‌های بدون وضعیت، اتکای فراوانی به کلیدهای عمومی گسترده (xpubs) دارند. آنان با نگهداری کلیدهای خصوصی در سردخانه‌های کاملاً آفلاین و استقرار xpub روی سرورهای آنلاین، بی‌نهایت نشانی واریز برای مشتریان تولید می‌کنند، بدون آنکه دسترسی خرج سرمایه را در معرض هک قرار دهند.

پژوهشگران امنیت شبکه

ریسک‌های مربوط به مسیرهای اشتقاق غیراسخت‌شده و افشای کلیدهای فرزند را برجسته می‌کنند.

متخصصان رمزنگاری هشدار می‌دهند زیبایی فرمول‌های ریاضی کیف‌پول‌های HD سناریوهای آسیب‌پذیری حساسی در پی دارد. اگر کاربری یک کلید عمومی گسترده غیرسخت‌شده را به اشتراک بگذارد و یکی از کلیدهای خصوصی فرزند لو برود، مهاجم می‌تواند با مهندسی معکوس تابع HMAC-SHA512 کلید خصوصی اصلی را محاسبه کند و کل دارایی‌ها را به سرقت ببرد.

توسعه‌دهندگان پروتکل 35%نهادهای امانت‌دار سرمایه 35%تولیدکنندگان سخت‌افزار 30%
توسعه‌دهندگان پروتکل
بر استانداردسازی و سازگاری میان نرم‌افزارهای مختلف کیف‌پول تمرکز دارند.
نهادهای امانت‌دار سرمایه
تفکیک دسترسی نظارتی از اختیار خرج کردن دارایی‌ها را برای مقیاس‌پذیری زیرساخت در اولویت می‌گذارند.
تولیدکنندگان سخت‌افزار
تمرکز اصلی‌شان بر محافظت از دانه اصلی و جلوگیری از استخراج فیزیکی کلیدهای فرزند است.

دیدگاه‌هایی که این گزارش پوشش نداده

  • کاربران عادی و خرده‌پایی که در حفظ و ذخیره‌سازی فیزیکی عبارت بازیابی مشکل دارند
  • نهادهای نظارتی که در حال تدقیق قابلیت حسابرسی کلیدهای عمومی گسترده (xpubs) هستند

منابع

پوشش منابع

7 منبع

3 دیدگاه شناسایی‌شده

توسعه‌دهندگان پروتکل 35%نهادهای امانت‌دار سرمایه 35%تولیدکنندگان سخت‌افزار 30%
  1. [1]GitHubتوسعه‌دهندگان پروتکل

    bips/bip-0044.mediawiki at master · bitcoin/bips

    مطالعه در GitHub →
  2. [2]Trezorتولیدکنندگان سخت‌افزار

    What is BIP32? How hierarchical deterministic wallets work

    مطالعه در Trezor →
  3. [3]Ledgerتولیدکنندگان سخت‌افزار

    What Is a Hierarchical Deterministic (HD) Wallet?

    مطالعه در Ledger →
  4. [4]Riverنهادهای امانت‌دار سرمایه

    BIP 32 (Hierarchical deterministic wallets)

    مطالعه در River →
  5. [5]MDPIنهادهای امانت‌دار سرمایه

    Stateless Hierarchical Deterministic Wallet Custody for Institutional Blockchain Adoption

    مطالعه در MDPI →
  6. [6]Bitcoin Wikiتوسعه‌دهندگان پروتکل

    Deterministic wallet

    مطالعه در Bitcoin Wiki →
  7. [7]تیم سردبیری کوهستان

    تحلیل تیم سردبیری کوهستان

    مطالعه در تیم سردبیری کوهستان →

نظرات

همیشه در جریان باشید

هر زاویه. هر روز.

اخبار مالی با پوشش کامل منابع و تحلیل دیدگاه‌ها، هر روز و رایگان.