عموما امنیت در شبکه های بلاکچین، بالا در نظر گرفته می شود. اما سطحی از امنیت که بلاکچین ها فراهم می کنند نسبتی از مقدار هش پاور آنهاست که شبکه را حمایت می کند. هر چه تعداد ماینرها و قدرت سخت افزاری استخراج آنها بیشتر باشد، حمله به آن شبکه سخت تر خواهد بود. در اینجا قصد داریم درباره معمول ترین سناریوهای حمله به یک بلاکچین عمومی صحبت کنیم.
مشکل جنرال های امپراتوری بیزانس
قبل از اینکه به انواع سناریو های اتک بپردازیم می خواهیم شما را اندکی به اندیشه های تخیلی واداریم. فرض کنید مشکل جنرال بیزانس برای قرن ها حل نشده باقی مانده تا زمانیکه تکنولوژی بلاکچین معرفی شده است.
تصور کنید که شما یک جنرال در چندین قرن پیش هستید و می خواهید با ارتش خود به یک قلعه حمله کنید. این قلعه بسیار نیرومند است و ارتش داخل آن قوی می باشد. شما تعداد دیگری از نیروها را جهت حمایت از این حمله سازماندهی می کنید تا هر دسته از جهت های مختلفی به قلعه حمله کنند. هر یک از این دسته ها مایل ها با هم فاصله دارند. اگر همه آنها بصورت همزمان حمله کنند احتمال پیروزی در جنگ بسیار بالاست. اما اگر نا هماهنگ باشند، احتمالا ضربه سختی خواهند خورد.
شما بعنوان جنرال با مشکلاتی به این شرح روبه رو هستید: چگونه مطمئن شوید که همه دسته ها در یک زمان حمله می کنند. به بیان دیگر، چگونه می توانید در مورد زمان حمله به یک اجماع نظر برسید؟ شما نمی توانید از پرچم، مشعل یا دود به عنوان علامت استفاده کنید. زیرا که دشمن متوجه خواهد شد.
شما می توانید یک اسب سوار را بعنوان پیام رسان بفرستید. اما چه اتفاقی خواهد افتاد اگر قبل از رسیدن به جنرال سپاه مورد نظر دستگیر یا کشته شود؟ برای اینکه مطمئن شوید دیگر جنرال ها پیام را دریافت کرده اند شما می توانید از آنها بخواهید که پیام رسان را جهت تایید باز گردانند. به همین ترتیب ممکن است پیام رسان در راه برگشت، دستگیر یا کشته شود. دیگر جنرال ها نخواهند دانست که آیا شما پیام پیام تایید را دریافت کرده اید یا خیر. بنابراین شما ممکن است برای تایید خبر نیز تایید بفرستید که احتمال دارد او نیز دستگیر شود. حتی بدون اینکه ریسک خیانت در رساندن و تایید پیام وجود داشته باشد، برای حل مسئله، این یک راه حل غیرممکن بنظر می رسد. هیچکس نمی تواند با اطمینان کامل بداند که آیا دیگر جنرال ها در یک زمان حمله خواهند کرد یا خیر. تکنولوژی بلاکچین این مشکل را حل می کند.
حال، هر جنرال، دفتری از وقایع(Ledger) دارد که که با دفتر وقایع دیگر جنرال ها هماهنگ می شود. هیچ شخصی جهت هماهنگی وجود ندارد. هر بار که یک بلاک استخراج می شود همه مشارکت کنندگان در عرض چند دقیقه بر روی ترتیب وقایع توافق می کنند. حال بر می گردیم به مشکل جنرال. اینک آنها روشی دارند که می توانند از طریق آن بدانند آیا همه آنها با یکدیگر حمله می کنند یا خیر. حال که درباره مشکل جنرال صحبت کردیم که با مکانیزم توافق می خواستیم آن را حل کنیم نگاهی به چند سناریوی حمله یا اتک می اندازیم.
حمله DDOS
در رشته کامیپوتر یک حمله DDOS، حمله ای است که طی آن، عامل سعی می کند از دسترسی کاربران به منابع شبکه جلوگیری کند. این کار با ارسال حجم عظیمی از درخواست ها به منظور بارگذاری بیش از حد سیستم صورت می پذیرد. این حمله ای است که نه فقط بلاکچین، بلکه می تواند در هر سرویس آنلاینی اختلال ایجاد کند. در حمله DOS بعنوان یک حالت ساده، تمام درخواست ها از یک منبع ایجاد می شوند. این موجب می شود که جلوگیری از حمله تا حدودی ساده باشد. اگر یک آدرس IP، حجم زیادی از درخواست ها را ارسال کند که نتوان آن را با دلایل درست توجیه کرد می توانید با داشتن یک اندازه گیر در محل، آن IP را بطور خودکار بلاک کنید. در حالت حمله DDOS، تعداد زیادی درخواستهای مخرب از منابع مختلف تولید می شود.
مقابله با حمله DDOS بسیار مشکل تر است زیرا برای این منظور، شما بایستی درخواستهای مشروع را از درخواستهای مخرب متمایز کنید. انگیزه کارمزد معاملات، حذف اسپم است. برخی افراد می گویند تا زمانیکه کارمزد بهمراه درخواست باشد نمی توان آنها را بعنوان اسپم در نظر گرفت. قطعا راه حل هایی وجو دارد تا شما بتوانید برخی تراکنش ها را اسپم در نظر بگیرید، اما بلاک کردن آنها عمل مناسبی نخواهد بود. یکی از با ارزش ترین ویژگی های بلاکچین، مقاومت در برابر سانسور است. شروع کردن به انتخاب برخی تراکنش ها جهت سانسور آنها، بر اساس هر معیاری که باشد یک سوء سابقه برای آن بلاکچین محسوب می شود.
حمله سیبل (Sybil Attack)
در یک حمله Sybil سعی می شود تا یک شبکه P2P از طریق ایجاد هویت های جعلی دستکاری شود. برای شخص نظاره گر، این هویت های مختلف مانند کاربران معمولی می باشند. اما در پشت پرده، تنها یک واحد همه این واحدهای جعلی را کنترل می کند. شناسایی این نوع از حمله، حائز اهمیت است بخصوص در زمانیکه به رای گیری آنلاین فکر می کنید. محل دیگری که حمله Sybil را مشاهده می کنیم شبکه های اجتماعی است که طی آن اکانت های جعلی می توانند بر تصمیمات جمعی تاثیر گذار باشند.
کاربرد محتمل دیگر این نوع اتک، سانسور برخی از مشارکت کنندگان است. تعدادی از نودهای Sybil می توانند نود شما را احاطه کنند و مانع اتصال آن به دیگر نودهای واقعی در شبکه شوند. بدین صورت ممکن است شما را از دریافت اطلاعات و ارسال آن به شبکه منع کنند. به این نوع از اتک، حمله کسوف نیز گفته می شود.
یک راه برای کاهش سیبل اتک، تعریف یا افزایش هزینه ایجاد یک هویت است. این هزینه باید بدقت تنظیم شود. بایستی این هزینه به اندازه کافی پایین باشد بگونه ای پیوستن به شبکه برای مشارکت کنندگان جدید محدود نشود و هویت های مشروع ایجاد شود. همچنین بایستی به اندازه ای بالا باشد که ایجاد هویت های زیاد در مدت زمان کوتاه، بسیار گران تمام شود. در بلاکچین های بر پایه تاییدیه کار، نودهایی که تصمیمات واقعی در مورد تراکنش ها را می گیرند نودهای ماینینگ هستند. در اینجا هزینه واقعی وجود دارد. یعنی برای ایجاد یک هویت ماینینگ جعلی، بایستی سخت افزار ماینینگ خریداری و هزینه الکتریسیته پرداخت شود. همچنین داشتن تعداد زیادی از نودهای ماینینگ ممکن است باز هم برای ایجاد یک تاثیر معنی دار بر شبکه کافی نباشد. برای انجام چنین کاری، مقادیر بسیاری قدرت محاسباتی لازم است. این هزینه ها، سیبل اتک را در بلاکچین های بر پایه تاییدیه کار دشوار می کند.
حمله 51% (51% Attack)
شناخته شده ترین نوع اتک در بلاکچین های بر پایه تاییدیه کار، اتک 51% است. هدف اتک 51%، خرج کردن دوباره است. یعنی مصرف دو مرتبه UTXO مشابه. جهت اجرای اتک 51% بر روی یک بلاکچین، شما باید اکثریت نرخ هش و نام آنها را کنترل کنید. یک ماینر مخرب که می خواهد یک مصرف دوباره را اجرا کند ابتدا یک تراکنش معمول ایجاد می کند. در این تراکنش ممکن است کوین هایش را برای خرید کالا خرج کند یا در یک اکسچینج با ارز دیگر مبادله کند. در همین حال و بطور همزمان، آنها شروع به استخراج یک زنجیره خصوصی می کنند. این بدان معنی است که آنها استخراج معمولی پروتکل را دنبال می کنند. اما از این کار دو هدف دارند.
- اولا، زنجیره استخراج شده خصوصی، شامل تراکنش ها و مصرف کوین های خودشان نخواهد بود.
- دوما، آنها بلاک های استخراج شده را در شبکه توزیع نمی کنند. بنابراین این بلاک ها را زنجیره خصوصی می نامیم.
اگر آنها اکثریت قدرت محاسبه را کنترل کنند، زنجیره آنها سریع تر از زنجیره معمول رشد می کند. قانون “طولانی ترین زنجیره” در بلاکچین های بر پایه تاییده کار می تواند در مواردی مانند فورک، حکمرانی کند. این شاخه که بلاک های بیشتر دارد و نشان می دهد که با قدرت محاسباتی بیشتری ایجاد شده است بعنوان یک زنجبره معتبر در نظر گرفته می شود.
پس از اینکه متهاجم، کالا یا رمزارز دیگر خریداری شده را دریافت می کند شاخه خصوصی را در کل شبکه توزیع می کند. سپس تمام ماینرهای درستکار، شاخه ایجاد شده معمول را رها و در ادامه زنجیره مخرب، شروع به استخراج می کنند. شبکه به تراکنش های متهاجم به گونه ای می نگرد که انگار هیچ وقت این تراکنش ها رخ نداده است. زیرا متهاحم، تراکنش ها را در زنجیره مخرب خود قرار نداده است. بنابراین، متهاجم هنوز هم کنترل وجوه خود را دارد و می تواند آنها را دوباره خرج کند.
این اتفاق در گذشته برای بلاکچین های کوچک بسیاری رخ داده است. بنابراین، راه حل هایی جهت کاهش ریسک اتک 51% برای بلاکچین های کوچکتر که با قدرت محاسباتی بالایی مانند بلاکچین بیت کوین محافظت نشده بودند ارائه شد. بدین ترتیب، بلاک های ثبت شده با تاخیر، مشمول جریمه می شوند. هیچ دلیل منطقی وجود ندارد که یک ماینر، بلاک های زیادی را یکباره به شبکه اضافه کند. این مکانیزم حفاظتی، اتک ها را بسیار پر هزینه کرد. با این رویکرد، توجیه اقتصادی چندانی برای اتک وجود ندارد.
خلاصه مطلب
روش های مختلفی برای حمله به یک بلاکچین وجود دارد. با گذشت زمان، قدرت محاسباتی بیشتری به شبکه ها افزوده می شود و حمله به این شبکه ها دشوارتر می گردد. در اتک DDOS، متهاجم قصد دارد شبکه را از طریق ارسال تعداد زیادی تراکنش، مختل کند. در یک اتک Sybil، یک عامل مخرب، تعداد زیادی هویت جعلی ایجاد می کند تا بتواند در رای گیری های آنلاین مداخله کرده و یا یک شبکه P2P را دستکاری کند. در اتک 51%، یک ماینر از طریق کنترل اکثریت قدرت محاسباتی، سعی دارد تا از کوین ها دو بار استفاده کند. این کار ابتدا با ایجاد ورژن شخصی بلاکچین و سپس ارسال یکباره همه بلاک ها به ماینرهای معمولی انجام می شود.
غیر از اتک 51%، دو نوع دیگر حمله، از ابتدا در شبکه های توزیع شده وجود داشته است. اندازه گیرهای بسیاری وجود دارد که ریسک انواع حمله ها را کاهش دهد. اما نبایستی آگاهی بیشتر درباره انواع سناریوهای حمله موجب سلب اعتماد شما از شبکه بلاکچین شود. تکنولوژی بلاکچین بطور قابل توجهی امن است. اما در دنیای دیجیتال، هیچ پروتکل شکست ناپذیری وجود ندارد.