حمله ۵۱ درصدی چیست و چرا بیت کوین را زمین نزده
برای ثبت سفارش به حساب نیاز دارید. ثبت نام رایگان است.
سوالی که هر بار بعد از یک خبر امنیتی به پشتیبانی می رسد تقریبا همیشه یک شکل دارد: «شنیدم اگر کسی پنجاه و یک درصد شبکه را بگیرد می تواند بیت کوین ما را بردارد. درست است؟»
نه. و این «نه» یک تعارف نیست؛ در مستندات فنی خود بیت کوین به صراحت نوشته شده که مهاجم چه کارهایی می تواند بکند و چه کارهایی نمی تواند. بیشتر ترسی که حول این موضوع ساخته شده، از قاطی شدن این دو فهرست می آید.
حمله ۵۱ درصدی یعنی کسی توان محاسباتی بیشتری از بقیه شبکه در اختیار داشته باشد و با آن یک شاخه موازی از زنجیره بسازد.
سازوکارش ساده است. مهاجم تراکنشی می فرستد و پولی می پردازد؛ همزمان و به صورت خصوصی زنجیره ای می سازد که در آن همان پول را به خودش پرداخت کرده. وقتی زنجیره خصوصی اش از زنجیره عمومی بلندتر شد، منتشرش می کند. شبکه زنجیره بلندتر را می پذیرد و آن پرداخت اول انگار هیچ وقت اتفاق نیفتاده. توضیح رسمی این سناریو را می شود در مدخل حمله اکثریت ویکی بیت کوین خواند.
پس محصول این حمله یک چیز است: خرج مضاعف. مهاجم پول خودش را دو بار خرج می کند. طرف مقابل، یعنی کسی که کالا یا ارز تحویل داده، ضرر می کند.
مستندات بیت کوین صریح می نویسد که مهاجم با بیش از پنجاه درصد توان شبکه هم این کارها را نمی تواند بکند:
- تراکنش دیگران را برنمی گرداند، مگر آنکه سابقه همان سکه ها به خرج مضاعف او گره خورده باشد.
- نمی تواند جلوی ارسال تراکنش را بگیرد؛ تراکنش فرستاده می شود و بدون تایید می ماند.
- نمی تواند تعداد سکه های تولیدی هر بلوک را عوض کند.
- نمی تواند از هوا سکه بسازد.
- نمی تواند سکه ای را که هیچ وقت مال او نبوده بفرستد.
آن مورد آخر همان چیزی است که نگرانی اصلی مردم را جواب می دهد. برای خرج کردن بیت کوین شما امضای کلید خصوصی شما لازم است و توان محاسباتی هیچ ربطی به این ندارد. مهاجم می تواند ترتیب تراکنش ها را به هم بریزد؛ نمی تواند قفل کیف پول شما را باز کند.
یک استثنا هست و صادقانه باید گفت: این محدودیت ها از دید نودهای کامل برقرار است. کیف پول های سبکی که به ماینرها اعتماد مطلق می کنند، در چنین وضعیتی وضع بدتری دارند. برای مبالغ بزرگ، این یکی از دلایلی است که اتکا به یک منبع سبک و کم اطلاع، انتخاب خوبی نیست.
این تصور رایج است که زیر پنجاه درصد حمله ممکن نیست و بالای آن قطعی است. هیچ کدام دقیق نیست.
احتمال موفقیت یک تابع است، نه یک کلید. دو متغیر دارد: سهم مهاجم از توان شبکه، و تعداد تاییدهایی که طرف مقابل منتظر می ماند. همان منبع مثال می زند که مهاجمی با ده درصد توان شبکه، مقابل کسی که شش تایید صبر می کند، در حدود یک دهم درصد شانس دارد. همان منبع، مهاجم با چهل درصد توان را مقابل شش تایید حدود پنجاه درصد موفق می داند.
بالای پنجاه درصد ماجرا فرق می کند: آنجا صبر کردن دیگر کمکی نمی کند، چون مهاجم سریع تر از بقیه شبکه بلوک می سازد و دیر یا زود جلو می افتد. اما همین هم رایگان نیست؛ هر ساعتی که آن توان صرف حمله شود، صرف پاداش گرفتن نشده.
و نکته ای که کمتر گفته می شود: دستکاری بلوک های قدیمی به مراتب سخت تر است و هر چه عقب تر بروید، به شکل نمایی سخت تر می شود. کسی نمی تواند برگردد و تراکنش سه سال پیش را پاک کند.
همان مستندات یک جمله دارد که کل بحث را جمع می کند: تا امروز حمله اکثریت هیچ وقت روی شبکه بیت کوین با موفقیت اجرا نشده، ولی روی برخی آلت کوین های کوچک عملی بودنش نشان داده شده است.
دلیلش اقتصادی است نه رمزنگاری. برای بیت کوین باید سخت افزاری در مقیاس نیمی از یک صنعت جهانی جمع کنید، برقش را بدهید و بعد آن را صرف کاری کنید که ارزش دارایی مورد حمله را نابود می کند. یعنی هزینه می کنید تا چیزی را بشکنید که تمام سودتان به سالم بودنش وابسته است.
روی یک شبکه کوچک همین حساب برعکس است. آنجا اجاره چند ساعت توان محاسباتی از بازارهای موجود، از سود یک خرج مضاعف کمتر در می آید. پرونده مشهورش را در سابقه حمله های اکثریت به اتریوم کلاسیک جدا مرور کرده ایم.
یک راه حل جالب هم اینجا وجود دارد که معمولا نادیده گرفته می شود: استخراج ادغام شده. دوج کوین دقیقا به همین دلیل با وجود کوچک بودن، شبکه امنی دارد؛ چون توان ماینرهای لایت کوین پشتش است. جزییاتش را در چرا امنیت دوج کوین را ماینر لایت کوین می سازد آورده ایم.
اگر بخواهید ریسک یک شبکه اثبات کار را واقعا بسنجید، به یک سوال می رسید: توان محاسباتی مورد نیازش را می شود خرید یا اجاره کرد یا نه.
برای شبکه هایی که الگوریتمشان روی سخت افزار همه منظوره یا روی سخت افزار پرشمار اجرا می شود، جواب اغلب مثبت است. توان محاسباتی آنجا یک کالای قابل اجاره است و مهاجم لازم نیست چیزی بسازد؛ فقط چند ساعت کرایه می کند. برای بیت کوین چنین بازاری در آن مقیاس وجود ندارد و ساختنش سال ها طول می کشد و در طول آن سال ها هم قابل مخفی کردن نیست.
متغیر دوم سختی شبکه است. سختی خودش را طوری تنظیم می کند که سرعت تولید بلوک ثابت بماند؛ یعنی هر توان جدیدی که وارد شبکه شود، سهم بقیه را کم می کند و رقابت را گران تر. همین سازوکار است که هزینه حمله را به هزینه استخراج گره می زند و در سختی شبکه و اقتصاد ماینر عدد به عدد بازش کرده ایم.
و متغیر سومی هست که به نظر ما مهم ترین بحث امروز است: تمرکز در استخرها. توان محاسباتی در شبکه بیت کوین پخش است، اما هماهنگی اش در تعداد محدودی استخر جمع می شود. این با مالکیت یکی نیست و ماینرها می توانند استخرشان را عوض کنند؛ ولی وانمود کردن به اینکه این موضوع اصلا سوالی ایجاد نمی کند هم صادقانه نیست. استخر یک ماینر را نمی خرد؛ فقط بلوکی که می سازد را انتخاب می کند، و این تفاوت مهمی است.
در انتظار تایید. و بیشتر کاربران ایرانی هر هفته با آن سر و کار دارند بدون اینکه بدانند دلیلش چیست.
وقتی صرافی یا پلتفرم برای واریز بیت کوین چند تایید صبر می کند، دارد دقیقا همین ریسک را قیمت گذاری می کند. هر تایید احتمال برگشت را کم می کند و هزینه حمله را بالا می برد. به همین دلیل هم مبالغ بزرگ تر معمولا تاییدهای بیشتری لازم دارند؛ منطقش «سختگیری» نیست، حساب احتمال است.
بر اساس سفارش های ثبت شده در پلتفرم دیجی دلار، بیشترین سوالی که در این فاصله پرسیده می شود این است که «تراکنش را زدم چرا نرسید». جواب تقریبا همیشه یکی است: رسیده، ولی هنوز به تعداد تایید لازم نرسیده. تا وقتی تراکنش در شبکه دیده می شود، عملا کاری جز صبر کردن نیست و پول جایی نرفته.
اینترنت داخلی وقتی مختل می شود، زنجیره را تغییر نمی دهد. اما دید شما از زنجیره را تغییر می دهد و این دو تا در عمل شبیه هم به نظر می رسند.
در ساعت هایی که اتصال ناپایدار است، ممکن است کیف پول یا اکسپلورری که نگاه می کنید داده قدیمی نشان بدهد، تراکنش را دیر ببیند یا اصلا نبیند. این حمله نیست و پول شما هم گم نشده. قاعده عملی اش ساده است: قبل از اینکه دوباره بفرستید یا کارمزد را بالا ببرید، همان تراکنش را از یک منبع دیگر بررسی کنید. ارسال دوباره در چنین لحظه ای، بیشتر از هر حمله ای به کاربران ایرانی ضرر زده است.
اگر هم صرفا دنبال داشتن مقداری بیت کوین هستید و این بحث ها کارتان نیست، مسیر ساده اش خرید بیت کوین بدون درگیر شدن با این بحث ها است و نیازی به دانستن هیچ کدام از اینها ندارد.
اما اگر می خواهید نگرانی تان را جایی خرج کنید که واقعا پول از آنجا می رود، این فهرست کمکتان می کند: کلید خصوصی روی گوشی، عبارت بازیابی در فضای ابری، تایید دو مرحله ای پیامکی، و لینک های جعلی. آنچه در عمل دارایی کاربران را می برد اینهاست، نه توان محاسباتی. جمع بندی اش را در جایی که واقعا پول از دست می رود نوشته ایم.
یک نگرانی درازمدت هم هست که جدی است و ربطی به هش ریت ندارد: پیشرفت رایانش کوانتومی. آن یکی امنیت امضا را هدف می گیرد نه اجماع را، و در تهدید کوانتومی برای بلاکچین بررسی اش کرده ایم.
حمله ۵۱ درصدی چیست؟
حالتی که یک نفر یا یک گروه، بیش از نیمی از توان محاسباتی شبکه را در اختیار بگیرد و با ساختن یک زنجیره موازی، ترتیب تراکنش ها را عوض کند. نتیجه عملی اش خرج مضاعف است: پولی که یک بار پرداخت شده، برگردانده می شود.
آیا با حمله ۵۱ درصدی می شود بیت کوین دیگران را دزدید؟
نه. برای خرج کردن سکه های هر آدرس، امضای کلید خصوصی آن آدرس لازم است و توان محاسباتی این را تولید نمی کند. مستندات بیت کوین صریح می گوید مهاجم نمی تواند سکه ای را که مال او نبوده بفرستد یا سکه جدید از هوا بسازد.
چطور می شود چنین حمله ای را تشخیص داد؟
نشانه اش بازآرایی عمیق زنجیره است: بلوک هایی که تایید شده بودند از زنجیره اصلی خارج می شوند و تراکنش هایشان به حالت بدون تایید بر می گردد. صرافی ها معمولا زودتر از کاربران متوجه می شوند و واکنششان توقف واریز و برداشت آن شبکه است.
چه خطری برای دارنده ایرانی دارد؟
مستقیم تقریبا هیچ، چون هدف چنین حمله ای پذیرنده های پرداخت و صرافی ها هستند نه دارندگان. خطر غیرمستقیم این است که اگر شبکه ای که روی آن انتقال می دهید کوچک باشد، ممکن است واریزتان موقتا معلق یا برگشت بخورد. برای انتقال های مهم، شبکه های بزرگ تر انتخاب کم دردسرتری هستند.