وقتی درباره امنیت بیتکوین صحبت میکنیم، یک سوءبرداشت رایج این است که تصور کنیم یک فناوری واحد از کل شبکه محافظت میکند. در واقع امنیت بیتکوین حاصل کنار هم قرار گرفتن چند سازوکار متفاوت است: رمزنگاری، اعتبارسنجی مستقل نودها، قوانین اجماع، مدل UTXO، شبکه همتابههمتا و Proof of Work.
این تفاوت مهم است، چون هرکدام از این لایهها مسئله متفاوتی را حل میکنند. امضای دیجیتال کمک میکند کسی نتواند بدون کلید لازم بیتکوین یک خروجی را خرج کند؛ نودها بررسی میکنند تراکنش و بلاک با قواعد پروتکل سازگار باشند؛ و Proof of Work تغییر تاریخچه پذیرفتهشده را پرهزینه میکند.
در این مقاله، هدف بررسی همین مدل امنیتی است؛ نه تکرار جزئیات فنی Proof of Work یا آموزش امنیت کیف پول.
امنیت بیتکوین دقیقاً یعنی چه؟
اول باید دو مفهوم را از هم جدا کنیم:
امنیت شبکه بیتکوین
≠
امنیت دارایی کاربر
ممکن است شبکه بیتکوین طبق قواعد خود بهدرستی کار کند، اما کاربر کلید خصوصی یا عبارت بازیابی خود را در اختیار مهاجم قرار دهد. در این حالت، مشکل از شکستن قوانین شبکه نیست؛ مشکل از دست رفتن کنترل کلید است.
بنابراین وقتی میگوییم «بیتکوین امن است»، باید مشخص کنیم درباره کدام لایه صحبت میکنیم.
چه چیزی جلوی خرجکردن بیتکوین دیگران را میگیرد؟
در سطح مالکیت، یکی از پایههای امنیت بیتکوین امضای رمزنگاریشده است.
یک تراکنش برای خرجکردن یک خروجی باید شرایط لازم آن خروجی را برآورده کند. در حالتهای معمول، کیف پول با استفاده از کلید خصوصی امضای لازم را تولید میکند و نودهای شبکه میتوانند اعتبار آن امضا را بدون مشاهده کلید خصوصی بررسی کنند.
رابطه ساده را میتوان اینطور دید:
کلید خصوصی
↓
امضای تراکنش
↓
انتشار تراکنش
↓
اعتبارسنجی توسط نودها
↓
مصرف UTXO در صورت معتبر بودن
پس داشتن یک آدرس یا دانستن مقدار بیتکوین یک آدرس، بهتنهایی اجازه خرجکردن آن را نمیدهد. باید شرایط خرجکردن خروجی برآورده شود.
برای جزئیات مالکیت، کلید خصوصی و کیف پول، مقاله کیف پول بیتکوین چیست؟ آدرس، کلید خصوصی و عبارت بازیابی را ببینید.
نقش UTXO در امنیت چیست؟
بیتکوین موجودی را مانند یک حساب بانکی مرکزی نگهداری نمیکند. تراکنشها خروجیهایی ایجاد میکنند که تا زمان مصرفشدن، UTXO هستند.
وقتی یک تراکنش میخواهد یک UTXO را خرج کند، نود باید بررسی کند که آن خروجی واقعاً وجود دارد، هنوز مصرف نشده و شرایط خرجکردن آن رعایت شده است.
به همین دلیل، مدل UTXO بخشی از پایه امنیت تراکنشهاست:
UTXO قابلخرج
↓
تراکنش جدید
↓
بررسی شرایط خرج
↓
مصرف UTXO قبلی
↓
ایجاد UTXOهای جدید
اگر دو تراکنش بخواهند یک UTXO یکسان را خرج کنند، نمیتوان هر دو را در یک تاریخچه معتبر بهعنوان خرج نهایی همان خروجی پذیرفت.
برای جزئیات این مدل، مقاله UTXO چیست و بیتکوین چگونه مالکیت را با خروجیهای خرجنشده مدل میکند؟ را بخوانید.
نودها چه نقشی در امنیت دارند؟
اینجا یکی از مهمترین بخشهای مدل بیتکوین قرار دارد: ماینر بودن با معتبرکننده بودن یکی نیست.
ماینر میتواند یک بلاک پیشنهاد کند و برای آن Proof of Work انجام دهد؛ اما این کار بهتنهایی باعث نمیشود بلاک از نظر قوانین بیتکوین معتبر باشد.
یک Full Node دادههای دریافتی را با قواعد اجماع بررسی میکند. اگر تراکنش یا بلاکی برخلاف این قواعد باشد، داشتن مقدار زیادی Hash Power آن را خودبهخود معتبر نمیکند.
مثلاً فرض کنید ماینری در یک بلاک مقدار پاداشی بیشتر از مقدار مجاز ایجاد کند. انجام Proof of Work روی آن بلاک، تخلف را از بین نمیبرد. نودی که قوانین مربوطه را اجرا میکند میتواند بلاک را نامعتبر تشخیص دهد.
این همان تفاوت مهم میان دو نقش است:
Miner
↓
پیشنهاد بلاک + انجام Proof of Work
Full Node
↓
بررسی بلاک و تراکنش با قواعد پروتکل
مقاله نود بیتکوین چیست و چرا شبکه به نودها نیاز دارد؟ این موضوع را با جزئیات بیشتری توضیح میدهد.
Proof of Work چه چیزی را امن میکند؟
Proof of Work مسئول اعتبارسنجی همه چیز نیست. نقش اصلی آن در این بحث، پرهزینهکردن تولید و بازنویسی تاریخچه بلاکها است.
هر بلاک به بلاک قبلی متصل است و Proof of Work آن نیز به دادههای همان بلاک وابسته است. اگر کسی بخواهد یک بلاک قدیمی را تغییر دهد، نتیجه هش آن تغییر میکند و PoW قبلی دیگر برای داده جدید معتبر نیست. برای ادامهدادن زنجیره از آن نقطه، باید PoW بلاک تغییرکرده و بلاکهای بعدی نیز دوباره انجام شود و مهاجم باید با زنجیره معتبر رقابت کند.
بنابراین با اضافهشدن بلاکهای بیشتر، بازنویسی یک تراکنش قدیمی معمولاً پرهزینهتر میشود.
این موضوع با مقاله Proof of Work دقیقاً چگونه کار میکند؟ مرتبط است، اما در اینجا وارد جزئیات Target، Nonce و Difficulty نمیشویم.
Double Spending چگونه مهار میشود؟
یکی از مسائل اصلی پول دیجیتال این است که یک واحد ارزش را نمیتوان بدون محدودیت چند بار خرج کرد.
فرض کنید یک UTXO دارید و دو تراکنش متعارض ایجاد میکنید:
UTXO
│
┌──────┴──────┐
↓ ↓
Transaction A Transaction B
│ │
└──────┬──────┘
↓
تاریخچه پذیرفتهشده
نودها قواعد خرجکردن را بررسی میکنند و بلاکها نیز با تاریخچه قبلی شبکه ارتباط دارند. اگر یک تراکنش در تاریخچه پذیرفتهشده قرار بگیرد، تلاش برای جایگزینکردن آن با تاریخچه رقیب به رقابت با کار انباشته زنجیره نیاز دارد.
به همین دلیل، «تأیید» فقط یک برچسب ظاهری نیست؛ قرارگرفتن تراکنش در بلاک و اضافهشدن بلاکهای بعدی، جایگاه آن را در تاریخچه شبکه تقویت میکند.
آیا تأیید بیشتر یعنی امنیت مطلق؟
خیر.
تأییدهای بیشتر به معنی افزایش مقاومت در برابر بازنویسی تاریخچه است، اما هیچ عددی بهتنهایی یک تضمین مطلق ایجاد نمیکند.
اگر مهاجمی قدرت استخراج بسیار زیادی در اختیار داشته باشد، توانایی او برای ایجاد زنجیره رقیب افزایش پیدا میکند. به همین دلیل، در پرداختهای حساس معمولاً تعداد تأییدها و مدل تهدید اهمیت دارد.
این موضوع یکی از دلایلی است که نباید جملههایی مانند «بعد از یک تأیید، تراکنش برای همیشه غیرقابلبرگشت است» را بدون توضیح به کار برد.
حمله ۵۱ درصد چیست؟
«حمله ۵۱ درصد» اصطلاحی برای حالتی است که یک مهاجم یا مجموعهای از مهاجمان بخش بسیار بزرگی از قدرت محاسباتی شبکه Proof of Work را کنترل کنند.
این وضعیت میتواند توانایی مهاجم برای رقابت بر سر تاریخچه اخیر را افزایش دهد و در شرایط مناسب امکان بازنویسی برخی تراکنشهای اخیر یا ایجاد Double Spending را فراهم کند.
اما یک نکته بسیار مهم وجود دارد:
Hash Power بهتنهایی اختیار تغییر قوانین بیتکوین را ایجاد نمیکند.
مهاجم حتی با قدرت استخراج بالا نمیتواند صرفاً با تولید بلاک، امضای جعلی برای دارایی دیگران ایجاد کند یا هر مقدار دلخواه بیتکوین جدید به وجود آورد و انتظار داشته باشد Full Nodeهای پایبند به قوانین آن را معتبر بدانند.
بنابراین باید میان این دو تفاوت گذاشت:
قدرت بیشتر برای رقابت بر سر تاریخچه
≠
قدرت برای تغییر یکجانبه قوانین پروتکل
پس ماینرها چه قدرتی دارند؟
ماینرها نقش مهمی در ترتیبدادن و افزودن بلاکها دارند، اما این به معنی اختیار کامل درباره محتوای معتبر شبکه نیست.
ماینر میتواند تراکنشهای معتبری را برای ساخت یک بلاک انتخاب کند و برای بلاک خود Proof of Work انجام دهد. اما نودها همچنان بلاک را با قواعد اجماع بررسی میکنند.
به همین دلیل، این جمله دقیق نیست:
«هرکس بیشترین قدرت استخراج را داشته باشد، قوانین بیتکوین را تعیین میکند.»
قدرت استخراج در امنیت زنجیره و انتخاب تاریخچه نقش دارد؛ قوانین اعتبارسنجی همچنان توسط نرمافزارهایی اجرا میشوند که کاربران و اپراتورهای شبکه انتخاب و اجرا میکنند.
برای فهم عمیقتر این مرز، مقالههای نود بیتکوین و Proof of Work مکمل یکدیگرند.
امنیت شبکه با امنیت کیف پول یکی نیست
ممکن است شبکه کاملاً طبق قوانین خود کار کند و در عین حال کاربر بیتکوین خود را از دست بدهد.
چند مثال:
- عبارت بازیابی در اختیار مهاجم قرار بگیرد.
- کلید خصوصی سرقت شود.
- کاربر تراکنش را به آدرس اشتباه ارسال کند.
- کاربر قربانی فیشینگ یا بدافزار شود.
- تنها نسخه پشتیبان کیف پول از بین برود.
هیچکدام از این موارد به معنی شکستن قوانین اجماع بیتکوین نیستند.
در خودحضانتی، امنیت کلید بخشی از مسئولیت مستقیم کاربر است. شبکه میتواند بررسی کند که یک امضا معتبر است؛ اما نمیتواند تشخیص دهد که آیا صاحب اصلی کلید، خود کاربر بوده یا مهاجمی که کلید را به دست آورده است.
برای جزئیات عملی امنیت کیف پول، مقاله کیف پول بیتکوین چیست؟ نقطه شروع مناسبتری است.
آیا Bitcoin «غیرقابل هک» است؟
عبارت «غیرقابل هک» از نظر فنی مناسب نیست.
امنیت بیتکوین یک مدل چندلایه است و هر لایه محدودیتها و تهدیدهای خودش را دارد:
| لایه | مسئله اصلی | سازوکار دفاعی |
|---|---|---|
| مالکیت | خرجکردن بدون اجازه | امضای رمزنگاریشده |
| تراکنش | خرجکردن UTXO نامعتبر | قواعد اعتبارسنجی |
| بلاک | ایجاد تاریخچه نامعتبر | اعتبارسنجی نودها |
| تاریخچه | بازنویسی گذشته | زنجیره + Proof of Work |
| شبکه | وابستگی به مرجع مرکزی | معماری Peer-to-Peer |
| کاربر | سرقت یا از دست رفتن کلید | امنیت کیف پول و Backup |
پس امنیت بیتکوین را بهتر است بهصورت یک مجموعه سازوکار مکمل در نظر بگیریم، نه یک سپر مطلق.
Full Node چرا برای مدل اعتمادزدای بیتکوین مهم است؟
اگر اعتبار داده را کاملاً از یک سرویس شخص ثالث دریافت کنید، بخشی از اعتماد خود را به همان سرویس منتقل کردهاید.
اجرای Full Node به کاربر اجازه میدهد بخش مهمی از دادهها و قواعد اجماع را خودش بررسی کند:
داده شبکه
↓
Full Node
↓
اجرای قواعد اجماع
↓
قبول یا رد داده
این به معنی مصونیت Full Node از همه حملات نیست. مزیت اصلی آن این است که کاربر برای تشخیص اعتبار بلاکها و تراکنشها مجبور نیست صرفاً به ادعای یک سرویس مرکزی اعتماد کند.
این ویژگی یکی از پایههای مدل اعتمادزدای بیتکوین است.
امنیت بیتکوین از چه چیزی ساخته شده است؟
اگر بخواهیم کل مقاله را در یک تصویر ذهنی خلاصه کنیم:
امنیت بیتکوین
│
┌───────────────┼───────────────┐
↓ ↓ ↓
رمزنگاری اعتبارسنجی Proof of Work
│ │ │
مالکیت و امضا قوانین شبکه امنیت تاریخچه
│ │ │
└───────────────┼───────────────┘
↓
اجماع و تاریخچه شبکه
↓
سیستم بدون مرجع مرکزی
هیچکدام از این اجزا بهتنهایی توضیح کاملی برای امنیت بیتکوین نیستند. امضای دیجیتال از مالکیت محافظت میکند، UTXO وضعیت قابلخرج را مدل میکند، نودها قوانین را مستقل بررسی میکنند، شبکه دادهها را میان مشارکتکنندگان منتقل میکند و Proof of Work تغییر تاریخچه را پرهزینه میکند.
همین ترکیب است که بیتکوین را از یک سیستم متکی بر یک پایگاهداده مرکزی و یک اپراتور واحد متفاوت میکند.
جمعبندی
امنیت بیتکوین را نباید به «ماینینگ» یا «Proof of Work» تقلیل داد.
مدل امنیتی بیتکوین بر چند اصل به هم مرتبط است:
- رمزنگاری برای اثبات کنترل بر دارایی و جلوگیری از خرجکردن بدون امضای معتبر؛
- UTXO برای مدلکردن خروجیهای قابلخرج و جلوگیری از مصرف دوباره یک خروجی در یک تاریخچه معتبر؛
- Full Nodeها برای اجرای مستقل قوانین اجماع؛
- شبکه همتابههمتا برای حذف وابستگی به یک مرکز واحد؛
- Proof of Work برای پرهزینهکردن تولید و بازنویسی تاریخچه؛
- و تأییدهای بیشتر برای افزایش مقاومت تراکنشهای ثبتشده در برابر بازنویسی.
در نتیجه، پاسخ دقیق به سؤال «چه چیزی از بیتکوین محافظت میکند؟» یک کلمه نیست. امنیت بیتکوین حاصل همکاری چند سازوکار مستقل و مکمل است.
منابع و مطالعه بیشتر
- Bitcoin Whitepaper — Satoshi Nakamoto
- Bitcoin FAQ
- How does Bitcoin work?
- Bitcoin Core — Validation
- Bitcoin Developer Guide
این مطلب با هدف آموزش و تحلیل تهیه شده است و نباید بهعنوان توصیه قطعی برای خرید، فروش یا شرطبندی تلقی شود.