امنیتباتبلاکچینبلاکچینبیتکوینتحلیل بلاکچینکوین ایرانمطالب آموزشیمقالات تحلیلی

مدیریت کلید بیتکوین (قسمت دوم)

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

مدیریت کلید بیتکوین (قسمت دوم)*

bitcoininvestmentcorp.com  298x220 مدیریت کلید بیتکوین (قسمت دوم)

پیش زمینه

بیتکوین

بیتکوین یک ارز رمزنگاری شده است که در سال 2009 ایجاد گردید و به درجه ای از استفاده رسید که دیگر پول های رمزنگاری شده در دهه های گذشته (از 1982 به بعد) به آن نرسیده اند. بر خلاف بسیاری از پیشنهادات گذشته، بیتکوین واحد های پولی دیجیتال به کاربران اختصاص نمی دهد. در عوض یک دفتر کل عمومی، لیست تمامی تراکنش های انجام شده توسط کاربران از ابتدای ایجاد ارز را نگهداری می کند[1].  یک تراکنش در ساده ترین حالت خود،انتقال موجودی پول دیجیتال بیتکوین (XBT یا BTC) را از یک و یا چند حساب به عنوان آدرس های ورودی، به یک و یا چند حساب به عنوان آدرس های خروجی و دریافت کننده تشریح می کند. آدرس های بیتکوین به وسیله مقادیر برگرفته شده از یک کلید عمومی از اسکیمای یک امضای دیجیتال طبقه بندی شده اند[2]. آنها به صورت مرکزی ثبت نشده اند، آدرس ها بعد از اولین تراکنشی که انها را به عنوان آدرس دریافت کننده پول دیجیتال به دفتر کل اضافه می کند فعال می شوند.

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

دفتر کل (نام دیگر زنجیره بلاک ها) برای اجماع به وسیله یک شبکه غیر متمرکز و با یک متد پیشرفته نگهداری و به روز می شود، که مستلزم ایجاد انگیزه بین گره های(Nodes) شبکه جهت تولید (استخراج)بیتکوین های جدید  و دریافت کارمزد تراکنش ها می باشد. جزئیات مدل تجمیع نظر در این مقاله نمی گنجد، اما به طور کلی کلاینت ها در پروسه مدل تجمیع نظر به وسیله دانلود بلاکچین و تایید صحت آن از منظر دانش رمزنگاری شرکت می کنند. در حال حاضر اندازه بلاکچین بیتکوین 25GB می باشد[3].

یکی از ظرافت های ساختار تراکنش بیتکوین این است که برای خرج نمودن آن، تمامی ارزش بیتکوین های خرج نشده (به طور مثال تراکنش های قبلی) باید خرج شوند. برای رسیدن به این هدف، کلاینت های بیتکوین به صورت خودکار تمامی خروجی های خرج نشده را خرج نموده  و اجزای متعددی در تراکنش ایجاد می نماید. یکی از آن اجزاء بخشی از بیتکوین خرج نشده را به مقصد ارسال نموده و جزء دیگر، باقیمانده ورودی ها را به عنوان بقیه پول به ارسال کننده باز می گرداند. از منظر تکنیکی این امکان وجود دارد (بعضی کلاینت ها اینگونه عمل می کنند) که باقیمانده را به آدرس ارسال کننده فرستاد. به هر حال برای حفظ محرمانگی و ناشناخته ماندن، کلاینت مرجع آدرس جدیدی را به همراه کلید های خصوصی مربوطه تولید می نماید تا باقی مبلغ تراکنش را دریافت نماید.

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

paper wallet 390x197 مدیریت کلید بیتکوین (قسمت دوم)

موارد استفاده مدیریت کلید

رمز های عبور به عنوان معمول ترین نوع تأیید هویت کاربر باقی خواهند ماند،تأیید هویت بر اساس کلید های خصوصی به ندرت توسط افراد غیر حرفه ای مورد استفاده قرار می گیرد، و عموما هیچ موقع به عنوان گزینه اصلی در سیستم هایی که این متد را پشتیبانی میکنند انتخاب نمی شود. پروتکل گواهی سمت کلاینت (Client-Side Certificate) مربوط به (Transport Layer Security) TLS با استقبال روبرو نشد و به صورت گسترده مورد استفاده قرار نگرفت. SSH(Secure shell) به صورت پیش فرض از رمز عبور استفاده می کند و استفاده از گواهی ها را  پشتیبانی می نماید.

نرم افزار های مدیریت رمز عبور وقتی که تنظیم می شوند تا رمز عبور تولید و یا نگهداری کنند، یک از خصوصیات کلید های رمزنگاری را به اشتراک می گذارند که در اصل تغییر وضعیت از “آنچه شما می دانید” به “آنچه شما دارید” است. به هر حال اگر دسترسی به رمز عبور مورد نظر مختل شود، سرویس های آنلاین مکانیزم های بازیابی رمز عبور(بر اساس ایمیل و …) را فراهم می نمایند، اما چنین سرویسی برای کلید های رمز نگاری مدیریت شده توسط خود فرد وجود ندارد.

از موارد استفاده سیستم های کلید عمومی توسط افراد غیر حرفه ای که نزدیک ترین به بیتکوین باشد می توان به ایمیل های رمز نگاری شده و تایید هویت شده و به طور کلی پروتکل PGP(Pretty Good Privacy) و جایگزین های آن (GPG  و Open PGP) اشاره نمود. با شروع “چرا جانی نمی تواند رمزنگاری کند”، کاربرد فناوری های کلید عمومی از منظر موارد کاربرد به خوبی مورد تحقیق قرار گرفت. یافته های این مطالعه متفاوت می باشند اما مشاهدات مرتبط به شرح زیر است:

  1. استعاره ها و کلمات کلید عمومی و خصوصی گیج کننده می باشند.
  2. به دست آوردن کلید عمومی سایرکاربران مشکل است
  3. انتقال کلید بین دستگاه های مختلف سخت است.

این یافته ها تلاش دارند که بر روی رمز نگاری تمرکز کنند نه بر روی امضاءها، اما اینجا بعضا مفاهیم با یکدیگر همپوشانی داشته اند.

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

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

  1. کلید های ذخیره شده در سمت دستگاه کلاینت

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

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

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

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

در صورت نگهداری کلید ها برای مدت طولانی(سرمایه گذاری طولانی مدت و …)باید فرمت فایل حفظ شود تا از قابل خواندن بودن آن اطمینان حاصل کرد.

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

پی نوشت:

*برای مشاهده قسمت نخست، اینجا را کلیک کنید.

[1] . از منظر تکنیکی، یک تراکنش به وسیله یک اسکریپت مشخص می کند که چگونه می توان از موجودی آن تراکنش به عنوان ورودی تراکنش های آینده استفاده نمود.

[2] . الگوریتم امضای دیجیتال منحنی القایی(Elliptic Curve Digital Signature Algorithm)

[3] . به خاطر حجم زیاد رنجیره بلاک ها، دانلود کامل برای دستگاه های موبایل و بعضی از رایانه ها عملا غیر قابل انجام است، این کلاینت ها به یک Node دیگر که از اعتبار کمتری نسبت به Node های اصلی برخوردار است وصل می شوند که از این طریق تنها تراکنش های مرتبط با کلید های کیف پول خود را دریافت می کنند. این تکنیک که با نام تایید پرداخت ساده شده(Simplified Payment Verification – SPV) شناخته می شود، نیاز به دانلود کامل زنجیره بلاک ها را حذف می کند اما اگر به درستی پیاده سازی نشود خطرات امنیتی ایجاد خواهد نمود.

نوشته مرتبط:

مدیریت کلید بیتکوین (قسمت نخست)

 

نمایش بیشتر

نوشته های مشابه

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

بستن