کلیدهای آبکاری شده:کلید عمومی تعمیم یافتهی آبکاری شده یکی از مشکلات بالقوه ی کلیدهای تعمیم یافتهی معمولی را حل میکنند.
اگر مهاجم یک کد زنجیرهی والد و کلیدهای عمومی والد نرمال را دریافت کند، میتواند تمام کدهای زنجیرهی قابل استنتاج از آن را به دست آورد.
برای این کار از حملهی جستجوی فراگیر ( brute-force ) استفاده می شود .
همچنین اگر مهاجم کلیدهای خصوصی فرزند، نوه، یا سطح پایینتر را به دست آورد، میتواند از کد زنجیره برای تولید تمام کلیدهای خصوصی تعمیم یافتهای که از آن کلید ارث میبرند، استفاده کند.
در معرض خطر قرار گرفتن کلیدهای میاننسلی:
با توجه به شکل بالا مورد بدتر این است که، مهاجم میتواند برای بازیابی کلیدهای خصوصی والد، فرمول استنتاج کلیدهای خصوصی فرزند را برعکس کند و کد زنجیرهی والد را از یک کلید خصوصی فرزند کم کند .
به عبارت دیگر مهاجم اگر کلید عمومی تعمیم یافته یا هر کلید خصوصی را به دست آورد، میتواند کلید خصوصی آن کلید عمومی و تمام کلیدهای استنتاجشده از آن را بازیابی کند.
به همین دلیل، بخش کد زنجیرهی کلیدهای عمومی تعمیم یافته باید از ایمنی بالاتری نسبت به کلیدهای عمومی استاندارد برخوردار باشد.
به کاربران توصیه می شود که حتی کلیدهای خصوصی تعمیمنیافته خود را در محیطهای غیر قابل اعتماد منتشر نکنند.
با جایگزین کردن فرمول استنتاج کلیدهای نرمال با یک فرمول استنتاج کلیدهای آبکاری شده میتوان این مشکل را حل کرد.
استنتاج کلیدهای خصوصی فرزند نرمال:
فرمول استنتاج کلیدهای نرمال، که در بخش بالا توضیح داده شد، عدد شاخص، کد زنجیرهی والد، و کلید عمومی والد را ترکیب میکند تا کد زنجیرهی فرزند و مقدار عدد صحیح را ایجاد کند
سپس با کلید خصوصی والد ترکیب میشود تا کلیدهای خصوصی فرزند را ایجاد کند.
استنتاج کلیدهای خصوصی فرزند آبکاری شده:
فرمول آبکاری شده که در بالا نشان داده شد، عدد شاخص، کد زنجیرهی والد، و کلید خصوصی والد را با هم ترکیب میکند تا دادهی مورد استفاده برای تولید کد زنجیرهی فرزند و کلید خصوصی فرزند ایجاد کند.
این فرمول ایجاد کلیدهای عمومی فرزند را بدون دانستن کلید خصوصی والد ممکن میسازد.
به عبارت دیگر، کلیدهای عمومی تعمیمیافته والد نمیتوانند کلیدهای عمومی فرزند آبکاری شده را ایجاد کنند.
به همین علت، یک کلید خصوصی تعمیم یافتهی آبکاری شده نسبت به یک کلید خصوصی تعمیم یافتهی نرمال بسیار کمتر مورد استفاده قرار میگیرد.
با این حال، کلیدهای خصوصی تعمیمیافتهی آبکاری شده یک فایروال ایجاد میکنند، به این ترتیب از تهدیدهای استنتاج کلیدهای چند سطحی جلوگیری میشود.
از آنجایی که کلیدهای عمومی تعمیم یافتهی فرزند آبکاری شده نمیتوانند کدهای زنجیرهی نوه را تولید کنند، در معرض خطر قرار گرفتن یک کلید عمومی تعمیمیافته والد نمیتواند یک کلید خصوصی نوه را تحت تأثیر قرار داده و کلیدهای خصوصی تعمیمیافتهی نبیره را ایجاد کند.
پروتکل HD از اعداد شاخص متفاوتی برای نشان دادن اینکه کلیدی نرمال یا آبکاری شده باید تولید شود، استفاده میکند.
سلسله مراتب زیر نشانههای اصلی و فایروالهای کلیدهای آبکاریشده را نشان میدهد :
اعداد شاخص از 0x00 تا 0x7fffffff کلیدی نرمال را تولید میکنند و از 0x80000000 تا 0xffffffff کلیدی آبکاری شده را تولید میکنند.
به عبارت ساده، بسیاری از توسعهدهندگان از نماد اصلی برای نشان دادن کلیدهای آبکاری شده استفاده میکنند. بنابراین اولین کلید نرمال (0x00) ۰ است و اولین کلید آبکاری شده (0x80000000)، ۰′ است.
(توسعهدهندگان بیتکوین معمولاً از اپوستروف اَسکی به جای نماد اصلی یونیکد استفاده میکنند، از این پس ما از این قرارداد پیروی میکنیم.)
این توصیف بعدها با اسلشهایی که دارای پیشوندهای m (خصوصی)یا M (عمومی)ترکیب شدند که نشاندهندهی سلسله مراتب و نوع کلید است.
به عنوان مثال :
m/0’/۰/۱۲۲’ به ۱۲۳امین از کلیدهای خصوصی فرزند آبکاریشده (با شماره شاخص) از اولین فرزند نرمال (با شاخص) از اولین فرزند آبکاریشده (با شاخص) از کلیدهای خصوصی اصلی است.
استنتاج کلیدهای قطعی سلسله مراتبی:
کیف پولهایی که از پروتکل BIP32 HD پیروی میکنند، تنها فرزندان آبکاریشدهی کلید خصوصی اصلی (m) را ایجاد میکنند تا از تحت تأثیر قرار گرفتن کلیدهای اصلی توسط یک کلید فرزند آسیبدیده جلوگیری شود.
از آنجایی که هیچ فرزند نرمالی برای برای کلیدهای اصلی وجود ندارد، کلید عمومی اصلی در کیف پولهای HD استفاده نمیشود.
تمام کلیدهای دیگر میتوانند فرزندان نرمال داشته باشند، بنابراین، ممکن است بتوان از کلیدهای عمومی تعمیمیافتهی متناظر استفاده کرد.
پروتکل HD همچنین یک فرمت سریالسازی برای کلیدهای عمومی تعمیمیافته و کلیدهای خصوصی تعمیمیافته توصیف میکند.
ذخیرهی دانههای ریشه:
ذخیرهی دانههای ریشهی SeedsRoot در پروتکل HD، ۱۲۸، ۲۵۶، یا ۵۱۲ بیت از دادههای تصادفی هستند که باید به طور دقیق مورد پشتیبانی قرار بگیرند.
برای اینکه استفاده از روشهای پشتیبانگیری غیر دیجیتالی، مانند ذخیرهسازی یا کپی کردن دستی راحتتر باشد.
BIP39 یک روش برای ایجاد یک دانهی ریشهی ۵۱۲ بیتی شبه جمله (یادسپار) از کلمات زبان طبیعی تعریف میکند که خود آن از ۱۲۸ تا ۲۵۶ بیت از آنتروپی ایجاد شده و به صورت اختیاری توسط گذرواژه محافظت میشود.
تعداد کلمات تولید شده با مقدار آنتروپی استفاده شده مرتبط است:
کلمهی عبور میتواند هر طولی داشته باشد. این کلمه به شبه جملهی حفظی اضافه میشود، و سپس هر دو شبه جمله حفظی و کلمهی عبور ۲۰۴۸ بار با استفاده از HMAC-SHA512 هش میشود .
در نتیجه یک دانهی ۵۱۲ بیتی تولید میشود که ظاهراً تصادفی است.
از آنجایی که هر ورودی به این تابع هش یک دانهی ۵۱۲ بیتی به ظاهر تصادفی را تولید میکند، هیچ راه اساسی برای اثبات اینکه کاربر کلمهی عبور صحیح را وارد کرده است، وجود ندارد.
که احتمالاً به کاربر اجازه میدهد تا حتی زمانی که تحت فشار است از دانه محافظت کند.
کیف پولهای Loose-Key:
کیف پول Loose-Key، که همچنین با نام ( Just Bunch Of Keys ( JOBK نیز شناخته میشود، یک شکل منسوخ از کیف پولی است که از یک کیف پول کلاینت بیتکوین کور سرچشمه گرفته بود.
کیف پول کلاینت بیت کوین کور از طریق یک مولد شمارهی شبه تصادفی (PRNG، ۱۰۰ ) جفت کلید عمومی/خصوصی برای استفادههای بعدی ایجاد میکند.
این کلیدهای خصوصی استفاده نشده در یک استخر کلید مجازی ذخیره میشوند، و هر وقت که کلیدهای قبلی استفاده شدند، کلیدهای جدید تولید میشوند.
به این ترتیب اطمینان حاصل میشود که همواره ۱۰۰ کلید استفاده نشده در استخر وجود دارد.
این باعث ایجاد مشکلات قابل توجهی در پشتیبانگیری کلیدهای یکی شد، چرا که پشتیبانگیری باید به صورت دستی اجرا شود تا کلیدهای خصوصی که جدیداً تولید شدهاند، ذخیره شوند.
اگر یک جفت کلید جدید تولید، استفاده و قبل از پشتیبانگیری از دست برود، ساتوشیهای ذخیرهشده احتمالاً به طور کامل از بین میروند.
بسیاری از کیف پولهای موبایل قدیمی از یک فرمت مشابه پیروی میکردند، اما تنها در صورت تقاضای کاربر یک کلید خصوصی جدید ایجاد میکردند.
این نوع کیف پول به دلیل زحمات پشتیبانگیری که دارد، به سرعت در حال منسوخ شدن است.
دیدگاه خود را ثبت کنید
تمایل دارید در گفتگوها شرکت کنید؟در گفتگو ها شرکت کنید.