حملات دوربرد در گواه اثبات سهام چیست؟ مفهوم Long Range Attacks
حملات دوربرد یکی از بزرگترین مشکلات حل نشده در الگوریتم اثبات سهام (PoS) هستند. اما این حملات دقیقا چه هستند و چگونه میتوان با آنها مقابله کرد؟ به طور کلی، دو راهحل اصلی برای مقابله با حملات گواه اثبات سهام وجود دارد که با عناوین تشخیص ضعیف و کلیدهای ایمن مستقیم شناخته میشوند. در این مطلب ابتدا به معرفی حملات گواه اثبات سهام میپردازیم و در انتها یک الگوریتم فورک جدید معرفی میکنیم که در برابر حملات دوربرد کارسازتر خواهد بود. این الگوریتم فورک جدید را میتوان با یک یا دو راهحل ارائه شده به صورت ترکیبی استفاده کرد تا به عنوان یک اقدام متقابل در برابر حملات دوربرد در گواه اثبات سهام عمل کند.
حملات گواه اثبات سهام چه هستند؟
سیستم اثبات کار (PoW) با الگوریتم قوی فورک، ویژگیای دارد که بسیار مطلوب است و آن هم این که مهاجمان نمیتوانند بلاکی را که مدتها قبل تأیید شده است را برگردانند مگر به شرطی که بتوانند بیش از نیمی از قدرت هش را تحت کنترل خود دربیاورند. اما سیستمهای مبتنی بر اثبات سهام (PoS) متفاوتند؛ اگر تولیدکنندگان توکنهای استیک شده خود (سهامگذاری شده) را به خاطر بلاکی که در گذشته ایجاد کردهاند پس بگیرند، دیگر کلیدهایی که برای ایجاد بلاکها استفاده میکنند برای آنها بیارزش است. بنابراین، مهاجمان میتوانند این کلیدها را با قیمتی بسیار کمتر بخرند. از آن جایی که سیستمهای مبتنی بر اثبات سهام برخلاف سیستمهای اثبات کار مکانیزمی برای ایجاد تأخیر بین بلاکهای تولید شده ندارند، مهاجمان میتوانند در عرض چند دقیقه زنجیرهای طولانیتر از زنجیره معمول ایجاد کنند و الگوریتم فورک را مجبور کنند تا زنجیره جدید را به رسمیت بشناسد.
روشهای مقابله با حملات گواه اثبات سهام
دو راهحل اصلی برای دور زدن چنین مشکلی وجود دارد:
تشخیص ضعیف
طبق این راهحل، همه گرههای شبکه ملزم به بررسی جدیدترین بلاک تولید شده به طور دورهای هستند تا اجازه بازسازماندهی شدن فعالیتهای قدیمی را ندهند. اگر گرهها زنجیره را مرتباً چک کنند بعداً هرگز زنجیره طولانیای را که مهاجمان با کلیدهای مربوط به توکنهای استیک نشده ساختهاند، انتخاب نخواهند کرد. عیبی که این رویکرد دارد این است که اگر چه گرههای موجود فریب مهاجمان را نخواهند خورد اما گرههای جدید که برای اولین بار شروع به کار میکنند و هیچ اطلاعی از نحوه تشخیص زنجیره اول ندارند، آن زنجیره طولانیای را انتخاب خواهند کرد که مهاجمان ساختهاند. برای جلوگیری از بروز چنین حادثهای، آنها باید از قبل با مفهوم زنجیره معمول آشنا شوند و بتوانند افراد مورد اعتماد در شبکه را شناسایی کنند.
کلیدهای ایمن مستقیم
راه حل دیگر این است که تولیدکنندگان بلاک، کلیدهایی را که برای تولید بلاک استفاده میکنند بلافاصله یا کمی بعد از تولید بلاکها از بین ببرند. برای این کار میتوان برای هر بار تولید بلاک، یک جفت کلید جدید ایجاد کرد یا از مکانیزم کلیدهای ایمن مستقیم استفاده کرد که باعث میشود یک کلید مخفی تغییر یابد در حالی که کلید عمومی آن ثابت میماند. در این روش، صادق بودن گرهها و پیروی دقیق از پروتکل، نقش اصلی را بازی میکنند. بعضیها از آن جایی که میدانند احتمالاً در آینده کسی حاضر به خرید کلیدهای بیارزش آنها نیست، دلیل و انگیزهای برای نابود کردن آنها نمیبینند. با این که بعید است اکثریت تولیدکنندگان بلاک به یک باره و همزمان تصمیم به تغییر کلید دوم خود بگیرند، وجود پروتکلی مبتنی بر صادق بودن اکثریت تولیدکنندگان میتواند نتایج امنیتی متفاوتی نسبت به پروتکلهایی که اعضای آن منطقی عمل میکنند، داشته باشد. سیستم اثبات کار تا زمانی کارساز است که بیش از نیمی از اعضا منطقی عمل کنند و همکاری نداشته باشند و به همین دلیل استفاده از الگوریتم فورک و مکانیزم مقاومتی Sybil که ویژگیهای مشابهی دارند توصیه میشود.
الگوریتم فورک پیشنهادی برای مقابله با حملات گواه اثبات سهام چیست؟
شکل زیر را در نظر بگیرید. بلاک B را میبینید که خیلی قبلتر در زنجیره معمول ساخته شده است و اکثر یا همه تولیدکنندگانی که در زنجیره در زمان تشکیل بلاک B فعالیت میکردند، سهام خود را بیرون کشیدهاند. مهاجمان با همه تولیدکنندگان تماس میگیرند و کلیدهای مخفی دو سوم از آنها را میخرند. از آن جایی که کلیدها دیگر برای تولیدکنندگان بلاک ارزشی ندارند، مهاجمان این کلیدها را با قیمتی بسیار کم خریداری میکنند.
سپس از کلیدها برای ساختن زنجیره طولانیتری استفاده میشود. از آن جایی که از منابع نادر در سیستم اثبات سهام استفاده نمیشود، مهاجمان میتوانند خیلی سریع زنجیره طولانی خود را ایجاد کنند. ما به یک الگوریتم فورک نیاز داریم که هیچ کاربری از جمله آنهایی که برای اولین بار شروع به فعالیت میکنند، آن زنجیره طولانی با تأییدکنندگان جعلی را با زنجیره معمول و اصلی اشتباه نگیرند.
الگوریتم فورک پیشنهادی این است: از اولین نقطه شروع کنید و با رسیدن به هر بلاک، یکی از زیرمجموعههای آن (بلاک فرزند) را به عنوان بلاک بعدی انتخاب کنید و به ترتیب زیر پیش بروید:
۱.بعد از اعمال بلاک فعلی، وضعیت آن را در جایی ثبت کنید.
۲.همه حسابهایی را که در آن لحظه دارای توکن هستند به عنوان جفت (کلید عمومی) در نظر بگیرید.
۳.برای هر بلاک فرزند، همه کلیدهای عمومی را از مجموعهای که حداقل یک تراکنش در زیرمجموعه بلاک فرزند تأیید کرده است، شناسایی کنید.
۴.آن بلاک فرزندی را انتخاب کنید که امتیاز آن، یعنی مجموع مبالغ حسابهایی که حداقل یک تراکنش را در زیرمجموعه تأیید کرده، بیشترین است.
در مثال بالا اگر بلاک فعلی مورد نظرB باشد، بلاکهای فرزند آن C1 و C2 هستند. زیرمجموعه C1 همه بلاکهایی است که تاکنون روی زنجیره معمول و اصلی ساخته شدهاند، در حالی که زیرمجموعه C2 همه بلاکهایی است که مهاجمان ساختهاند.
امتیاز زنجیره معمول، مجموع مبالغ موجود در حسابهایی است که حداقل یک تراکنش را در طول تاریخ زنجیره معمول از زمان تشکیل بلاک B تأیید کردهاند که شامل همه نقل و انتقالات پول و معاملات میشود. امتیاز زنجیره جعلی ساخته شده توسط مهاجمان هم مجموع مبالغ موجود در حسابهایی است که تراکنشی را در آن زنجیره انجام دادهاند و این یعنی همه این نوع تراکنشها از سوی خود مهاجمان صادر شدهاند.
بیایید بگوییم p کل مبلغ همه حسابهایی است که حداقل یک تراکنش را بعد از زمان تشکیل بلاک B در زنجیره معمول انجام دادهاند. فرض کنید که مهاجمان توانستهاند کلیدهای زیرمجموعهای از این حسابها را بخرند به طوری که جمع مبلغ q باشد و q <p.
برای این که مهاجمان بخواهند زنجیره خود را واقعیتر نشان دهند باید مجموع حسابهایی که در زنجیره جعلی تراکنش انجام دادهاند بیشتر از p باشد. همچنین آنها باید به کلیدهای حسابهایی با توکنهای بیش از p – q دست پیدا کنند که هیچ تراکنشی برایشان در زنجیره اصلی ثبت نشده است. از آن جایی هم که در زنجیره اصلی تراکنشی برایشان ثبت نشده است، کلیدهای مربوط به آن حسابها را نمیتوان با قیمتی کمتر از ارزش اصلی آن خریداری کرد.
پس اگر حتی مهاجمان بتوانند کلیدهای ۸۰% از حسابهای آن زمان در بلاک B را که حداقل یک تراکنش در زنجیره معمول داشتهاند با تخفیف خریداری کنند، همچنان باید هزینهای معادل ۰.۲ برابر p را بپردازند.
توجه داشته باشید که این الگوریتم فورک فقط برای تصمیمات فورک دوربرد کارایی دارد چرا که راه در امان ماندن زنجیره اصلی در برابر انشعابات جعلی این است که تعداد حسابهای صادرکننده تراکنش در زنجیره اصلی بیشتر باشد. یکی از راههای ترکیب این روش با الگوریتمهای کلاسیک این است: ابتدا زیرمجموعهای از بلاکچین بسازید که فقط از بلاکهای تاییده شده با ابزار BFT تشکیل شده باشد. سپس الگوریتم فورکی را که در بالا توضیح دادیم، در این زیربلاکچین پیاده کنید و بعد از آخرین بلاک تأیید شده در زنجیرهی انتخاب شده با الگوریتم فورک (ترجیحاً LMD GHOST) شروع کنید.
اهمیت بالای امنیت بلاکچین
در این مطلب به یکی از جالبترین انواع حمله، یعنی حملات گواه اثبات سهام پرداختیم و به دو روش مقابله با آن اشاره کردیم. همچنین یک الگوریتم فورک پیشنهادی ارائه دادیم که میتواند در برابر حملات دوربرد کارایی بیشتری داشته باشد و از زنجیره محافظت کند. با این که این الگوریتم ویژگیهای خاص جالبی دارد اما نیاز است مطالعه و تحقیقات بیشتری روی آن انجام شود چون مسئله امنیت بلاکچین شوخیبردار نیست. در پایان امیدواریم این مطلب برای شما مفید بوده باشد.