مدیریت کلید بیت کوین (قسمت دوم)
در این مقاله ما یک چارچوب ارزیابی برای مقایسۀ زوایای مختلف مدیریت کلید بیت کوین ارائه کرده و ارزیابی وسیع دیگری دربارۀ موارد استفادۀ شش نماینده کلاینت های بیتکوین خواهیم داشت. ما متوجه شدیم که بیتکوین در زمینه مدیریت کلید، چالش های پایه ای مشابه با بسیاری از دیگر دامین ها دارد، اما می تواند یک موقعیت منحصر به فرد ایجاد نماید تا نگاهی دوباره به مبحث مدیریت کلید از دید کاربران بیندازد.
مدیریت کلید بیت کوین (قسمت دوم)*
پیش زمینه
بیت کوین
بیت کوین یک ارز رمزنگاری شده است که در سال ۲۰۰۹ ایجاد گردید و به درجه ای از استفاده رسید که دیگر پول های رمزنگاری شده در دهه های گذشته (از ۱۹۸۲ به بعد) به آن نرسیده اند. بر خلاف بسیاری از پیشنهادات گذشته، بیت کوین واحد های پولی دیجیتال به کاربران اختصاص نمی دهد. در عوض یک دفتر کل عمومی، لیست تمامی تراکنش های انجام شده توسط کاربران از ابتدای ایجاد ارز را نگهداری می کند[۱]. یک تراکنش در ساده ترین حالت خود،انتقال موجودی پول دیجیتال بیت کوین (XBT یا BTC) را از یک و یا چند حساب به عنوان آدرس های ورودی، به یک و یا چند حساب به عنوان آدرس های خروجی و دریافت کننده تشریح می کند. آدرس های بیت کوین به وسیله مقادیر برگرفته شده از یک کلید عمومی از اسکیمای یک امضای دیجیتال طبقه بندی شده اند[۲]. آنها به صورت مرکزی ثبت نشده اند، آدرس ها بعد از اولین تراکنشی که انها را به عنوان آدرس دریافت کننده پول دیجیتال به دفتر کل اضافه می کند فعال می شوند.
در بیت کوین هر تراکنش به صورت دیجیتالی باید توسط کلید امضاء خصوصی که مربوط به آدرس ورودی می باشد امضاء شود. برای خرج بیت کوین، کاربران نیاز دارند که به کلید امضاء حساب نگهدارنده بیت کوین دسترسی داشته باشند. بنابرین کاربران هیچ گونه واحد پولی را نگهداری نمی کنند، آنها کلید هایی که اجازه امضاء موجودی حساب های ثبت شده در دفتر کل را می دهد نگهداری می کنند.
دفتر کل (نام دیگر زنجیره بلاک ها) برای اجماع به وسیله یک شبکه غیر متمرکز و با یک متد پیشرفته نگهداری و به روز می شود، که مستلزم ایجاد انگیزه بین گره های(Nodes) شبکه جهت تولید (استخراج)بیت کوین های جدید و دریافت کارمزد تراکنش ها می باشد. جزئیات مدل تجمیع نظر در این مقاله نمی گنجد، اما به طور کلی کلاینت ها در پروسه مدل تجمیع نظر به وسیله دانلود بلاکچین و تایید صحت آن از منظر دانش رمزنگاری شرکت می کنند. در حال حاضر اندازه بلاکچین بیت کوین ۲۵GB می باشد[۳].
یکی از ظرافت های ساختار تراکنش بیت کوین این است که برای خرج نمودن آن، تمامی ارزش بیت کوین های خرج نشده (به طور مثال تراکنش های قبلی) باید خرج شوند. برای رسیدن به این هدف، کلاینت های بیت کوین به صورت خودکار تمامی خروجی های خرج نشده را خرج نموده و اجزای متعددی در تراکنش ایجاد می نماید. یکی از آن اجزاء بخشی از بیت کوین خرج نشده را به مقصد ارسال نموده و جزء دیگر، باقیمانده ورودی ها را به عنوان بقیه پول به ارسال کننده باز می گرداند. از منظر تکنیکی این امکان وجود دارد (بعضی کلاینت ها اینگونه عمل می کنند) که باقیمانده را به آدرس ارسال کننده فرستاد. به هر حال برای حفظ محرمانگی و ناشناخته ماندن، کلاینت مرجع آدرس جدیدی را به همراه کلید های خصوصی مربوطه تولید می نماید تا باقی مبلغ تراکنش را دریافت نماید.
هر چه بیشتر تراکنش انجام شود، کلاینت های بیت کوین باید از کلید های خصوصی بیشتری نگهداری کنند، برای اینکه بتوانند در تراکنش های اینده از انها استفاده نمایند. خیلی از کلاینت ها به طور دائم مقدار موجودی حساب را بر روی صفحه نمایش می دهند که در اصل بیانگر جمع بیت کوین های خرج نشده مربوط به کلید های خصوصی موجود در کیف پول می باشد.
موارد استفاده مدیریت کلید
رمز های عبور به عنوان معمول ترین نوع تأیید هویت کاربر باقی خواهند ماند،تأیید هویت بر اساس کلید های خصوصی به ندرت توسط افراد غیر حرفه ای مورد استفاده قرار می گیرد، و عموما هیچ موقع به عنوان گزینه اصلی در سیستم هایی که این متد را پشتیبانی میکنند انتخاب نمی شود. پروتکل گواهی سمت کلاینت (Client-Side Certificate) مربوط به (Transport Layer Security) TLS با استقبال روبرو نشد و به صورت گسترده مورد استفاده قرار نگرفت. SSH(Secure shell) به صورت پیش فرض از رمز عبور استفاده می کند و استفاده از گواهی ها را پشتیبانی می نماید.
نرم افزار های مدیریت رمز عبور وقتی که تنظیم می شوند تا رمز عبور تولید و یا نگهداری کنند، یک از خصوصیات کلید های رمزنگاری را به اشتراک می گذارند که در اصل تغییر وضعیت از “آنچه شما می دانید” به “آنچه شما دارید” است. به هر حال اگر دسترسی به رمز عبور مورد نظر مختل شود، سرویس های آنلاین مکانیزم های بازیابی رمز عبور(بر اساس ایمیل و …) را فراهم می نمایند، اما چنین سرویسی برای کلید های رمز نگاری مدیریت شده توسط خود فرد وجود ندارد.
از موارد استفاده سیستم های کلید عمومی توسط افراد غیر حرفه ای که نزدیک ترین به بیت کوین باشد می توان به ایمیل های رمز نگاری شده و تایید هویت شده و به طور کلی پروتکل PGP(Pretty Good Privacy) و جایگزین های آن (GPG و Open PGP) اشاره نمود. با شروع “چرا جانی نمی تواند رمزنگاری کند”، کاربرد فناوری های کلید عمومی از منظر موارد کاربرد به خوبی مورد تحقیق قرار گرفت. یافته های این مطالعه متفاوت می باشند اما مشاهدات مرتبط به شرح زیر است:
- استعاره ها و کلمات کلید عمومی و خصوصی گیج کننده می باشند.
- به دست آوردن کلید عمومی سایرکاربران مشکل است
- انتقال کلید بین دستگاه های مختلف سخت است.
این یافته ها تلاش دارند که بر روی رمز نگاری تمرکز کنند نه بر روی امضاءها، اما اینجا بعضا مفاهیم با یکدیگر همپوشانی داشته اند.
رویکرد های مدیریت کلید بیت کوین
قبل از اینکه به بررسی و ارزیابی دقیق موارد استفاده بپردازیم، ما از منظر سیستمی هر گروه از ابزار را برای مدیریت کلید های خصوصی بیت کوین بررسی می کنیم. موارد امنیتی و توسعه پذیری را نشانه گذاری نموده و جزئیات مرتبطی که در مورد پروتکل بیت کوین باعث ایجاد پیچیدگی و اختلافات بالقوه در مدل ذهنی کاربر می شود را مشخص می کنیم.
کلید های ذخیره شده در سمت دستگاه کلاینت
یکی از راه هایی که نرم افزار های مدیریت بیت کوین انجام میدهند، ذخیره کلید ها در هارد دستگاه کاربر می باشد، به طور معمول کلید ها در یک پایگاه داده و یا یک فایل در یک مسیر پیش فرض سیستم ذخیره می گردند. وقتی یک تراکنش جدید ایجاد می گردد، کلاینت بیت کوین بلافاصله می تواند کلید ها را بخواند (احتمالا بدون ورودی جدید توسط کاربر) و تراکنش را در سطح شبکه اعلام و پخش نماید. کلاینت بیت کوین مرجع (بیت کوین هسته)، و همچنین کیف پول های موبایلی(اندروید) از این روش استفاده می کنند تا کلید های خصوصی را در یک فایل (که به کیف پول شناخته می شود) و در مسیر نرم افزار و یا خانه کاربر ذخیره نمایند.
ذخیره کلید ها در سمت کلاینت به صورت یک فایل در دسترس، چندین مزایا دارد. اول از آنجایی که تنها نرم افزار باید به فایل دسترسی داشته باشد، بار اضافه ای سمت کاربر نخواهد بود . دوم اینکه به دلیل کوچک بودن سایز کلید ها عملا تعداد بسیار زیادی کلید می توان ذخیره نمود. سوم اینکه نرم افزار بیت کوین می تواند به صورت اتوماتیک بدون ورودی خاص و یا عمل اضافه ای از سمت کاربر، کلید ها را تولید و تراکنش ایجاد نماید .
همچنین ذخیره کلید ها در سمت کلاینت خطراتی را نیز در پیش دارد که کاربر باید مد نظر قرار دهد. برای مثال فایل حاوی کلید ها می تواند توسط نرم افزارهای دیگر که به فولدر برنامه های کاربر دسترسی دارند خوانده شود. از آنجایی که دسترسی به این فایل به شخص نفوذ کننده اجازه دسترسی به منابع مالی قربانی را میدهد، نویسندگان بد افزار ها از این نکته می توانند استفاده نمایند. یکی از اولین مثال های دزدیدن کلید های خصوصی توسط بد افزار توسط Symantec در سال ۲۰۱۱ کشف شد.
کاربران باید مراقب باشند تا سهوا فولدر حاوی اپلیکیشن بیت کوین خود را به اشتراک نگذارند( برای مثال به وسیله اشتراک گداری نقطه به نقطه بر روی شبکه، سایت های پشتیبان و یا یک فضای مشترک در شبکه). موضوع دزدی به صورت فیزیکی که بر روی تجهیزات قابل حمل و گوشی های تلفن همراه محتمل است نیز باید لحاظ گردد. همانند ذخیره هر داده حساس، حفظ دیجیتال باید لحاظ شود، مواردی از قبیل تجهیزات عمومی جهت مقابله با بلایای طبیعی، مشکلات الکتریکی، جنگ، خطای کاربری و سهوا پاک کردن داده ها، خرابی بیت ها مانند خرابی دیسک به صورت نا محسوس و دیگر موارد محتمل.
در صورت نگهداری کلید ها برای مدت طولانی(سرمایه گذاری طولانی مدت و …)باید فرمت فایل حفظ شود تا از قابل خواندن بودن آن اطمینان حاصل کرد.
کلاینت بیت کوین مرجع، از پیش صد عدد کلید را تولید می کند که آنها با نام استخر کلید ها شناخته می شوند. وقتی یک تراکنش انجام می گردد، کلید موجود بعدی آماده می شود تا باقیمانده تراکنش را دریافت نماید. استخر کلید ها به مرور و بر حسب نیاز مجددا پر می شود. این پروسه کاربران را ملزم می کند تا به صورت دوره ای از فایل ذخیره کلید ها نسخه پشتیبان تهیه نمایند تا مطمئن شوند کلید های موجود در استخر کلید ها همگی ذخیره شده اند.
پی نوشت:
*برای مشاهده قسمت نخست، اینجا را کلیک کنید.
[۱] . از منظر تکنیکی، یک تراکنش به وسیله یک اسکریپت مشخص می کند که چگونه می توان از موجودی آن تراکنش به عنوان ورودی تراکنش های آینده استفاده نمود.
[۲] . الگوریتم امضای دیجیتال منحنی القایی(Elliptic Curve Digital Signature Algorithm)
[۳] . به خاطر حجم زیاد رنجیره بلاک ها، دانلود کامل برای دستگاه های موبایل و بعضی از رایانه ها عملا غیر قابل انجام است، این کلاینت ها به یک Node دیگر که از اعتبار کمتری نسبت به Node های اصلی برخوردار است وصل می شوند که از این طریق تنها تراکنش های مرتبط با کلید های کیف پول خود را دریافت می کنند. این تکنیک که با نام تایید پرداخت ساده شده(Simplified Payment Verification – SPV) شناخته می شود، نیاز به دانلود کامل زنجیره بلاک ها را حذف می کند اما اگر به درستی پیاده سازی نشود خطرات امنیتی ایجاد خواهد نمود.
نوشته مرتبط:
مدیریت کلید بیت کوین (قسمت نخست)
مدیریت کلید بیت کوین (قسمت سوم)
مدیریت کلید بیت کوین (قسمت چهارم)