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

آیا میتوان تراکنش جعلی درست کرد؟
دیگران از کجا مطمئن شوند که خود هادی این تراکنش را ایجاد کرده است؟ فرض کنیم که یک سارق تراکنشی ایجاد کند که در آن نوشته شده از حساب هادی 5 بیت کوین به حساب خودش منتقل شود و این تراکنش را به نام هادی در شبکه منتشر کند. هرکس در شبکه با خواندن این تراکنش 5 بیت کوین از حساب هادی کم و به حساب سارق اضافه میکند.

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

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

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

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

مهدی هم در شبکهی بیت کوین است میتواند همین کار را تکرار کند و پس از مدت کوتاهی تمام اعضای شبکه صحت تراکنش را تایید میکنند و آن را در دفتر حساب اضافه میکنند.

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

در مورد مهدی هم وضع همینطور است و به این ترتیب هیچکس در شبکهی بیت کوین تراکنش سارق را تایید نخواهد کرد.

آیا سارق میتواند کلید خصوصی را حدس بزند؟
کلیدهای خصوصی در بیت کوین بسیار طولانی هستند. هرکلید خصوصی از 256 کاراکتر تشکیل شده و بنابراین حدس زدن آن عملا غیر ممکن است. اگر سارق بخواهد کلید خصوصی یک شماره حساب را پیدا کند، حتی با داشتن بیشترین توان پردازشی هم ممکن است صدها سال طول بکشد.

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

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

بیت کوین چطور از تداخل جلوگیری میکند؟
جواب این مسئله به تعداد آدرسها و کلیدهای خصوصی برمیگردد که میتوان در شبکهی بیت کوین ساخت. در شبکهی بیت کوین میتوان 2 به توان 160 آدرس مختلف ایجاد کرد که عددی بسیار بزرگ است. برای تصور کردن بزرگی این عدد فرض کنید جمعیت 7 میلیاردی کره زمین 1000 برابر شود و هر فرد برای خود یک تریلیون آدرس تولید کند؛ در این صورت تنها 0.00000000000000000000047 درصد از آدرسهای ممکن در بیت کوین را استفاده کردهاند. بنابراین احتمال اینکه دو آدرس یکسان بتوان ایجاد کرد عملاً صفر است.
منبع : intellavision.com