معرفی ۳ روش هک کردن بلاک چین
در این مقاله قصد داریم سه روش حمله به بلاک چین را شرح دهیم. با ما همراه باشید تا چگونگی رخ دادن این حمله ها و عدم موفقیت برخی از آنها را شرح دهیم. ابتدا توضیح مختصری از بلاک چین را مرور می کنیم و سپس هر یک از حملات را به طور جزیی بیان می کنیم.
بلاک چین چیست؟
همانطور که می دانید بلاک چین پایگاه داده (دیتابیس) توزیع شده است. اما پایگاه داده توزیع شده به چه معناست؟ در اصل اطلاعات در بلوک ها نمیتوانند کپی شوند و تنها توزیع و به اشتراک گذاشته میشوند. در بلاک چین هر بلوک اعتبار بلوک قبلی را تایید میکند. بلاک چین این کار را با استفاده از اشاره گر هش انجام می دهد. اشاره گر هش اطلاعاتی را با خود به همراه دارد و صحت و درستی اطلاعات را تایید می کنند. در صورتی بلاک چین ماهیتی تغییر ناپذیر خواهد داشت که هر بلاک، اعتبار بلاک پیشین و هش بلاک اولیه (جنسیس بلاک) را تایید کند، سپس آن زنجیره به عنوان یک بلاک چین تغییرناپذیر پذیرفته شود. پس از اینکه بلاکی در بلاک چین قرار گرفت و بخشی از این زنجیره شد به عنوان یک بلاک چین معتبر پذیرفته می شود.
حمله اول: تغییر بلاک چین
در این نوع حمله هکر سعی میکند یک بلاک در زنجیره بلاک چین را تغییر دهد. فرض میکنیم همه گرهها داخل شبکه، اشاره گر هش آخرین بلاک را داخل رکوردی نگهداری کنند. هکر بلوک X را تغییر میدهد و در این حالت اشاره گر هش بلوک بعدی X+۱ بلوک قبلی را شناسایی نمیکند، چرا که آن بلاک تغییر کرده و درنتیجه هش آن بلاک نیز تغییر کرده است. در این صورت هکر مجبور است هش بلوک X+۱ را نیز تغییر دهد تا مطمئن شود که بلاک X شناسایی میشود.
اشاره گر هش بلوک بعدی X+۲ نیز همین مشکل را خواهد داشت. پس در واقع هکر مجبور است هش تمام بلوک ها تا آخرین بلوک را تغییر دهد. در این حالت، رکوردی که حاوی آخرین اشاره گر هش می باشد با هش تغییر یافته مقایسه میشود. تفاوت ها و تغییرات مشخص میشود و بلاک چین هکر دور ریخته می شود. پس تا زمانی که اشارهگر هش آخرین بلوک را گره های زیادی در شبکه نگهداری کنند و مقدار صحیح آن را بدانند، اعمال تغییرات بر روی بلاک چین تقریبا امکان پذیر نخواهد بود.
حمله دوم: حمله دوبار خرج کردن (double spend)
در این حمله هکر باید از زنجیره جلوتر باشد و بلوک در حال تولید را تغییر دهد. توجه داشته باشید که هکر با تغییر تراکنش نمی تواند پول را به حساب خود واریز کند زیرا او به تک تک کلید های خصوصی برای این کار نیاز دارد. در این صورت او حمله دوبار خرج کردن را ترتیب میدهد.
حال ببینم این حمله به چه صورت است. برای مثال میتوان فردی را بیان کرد که نرم افزاری را میخرد و اقدام به دانلود آن میکند. همزمان وی تراکنش دومی را انجام میدهد و پول را به حساب دیگر خود میفرستد. اگر فرد نرم افزار را دریافت کند و تراکنش دوم پیش از تراکنش اول تایید شود، پس نرم افزار را به طور رایگان دریافت کرده است. تراکنش مالی اول انجام نخواهد شد زیرا پول قبلا خرج شده است.
در حالت طبیعی تراکنش اول باید پذیرفته شود و تراکنش دوم رد شود. با این حال اگر هکر بعنوان گره ای برای استخراج بلاک بعدی انتخاب شود، او می تواند تراکنش دوم را بجای اولی انتخاب کند. اگر وی موفق به انجام چنین کاری شود در واقع حمله او موفقیت آمیز خواهد بود. دو اقدام برای جلوگیری از چنین اتفاقی وجود دارد:
نخست اینکه در الگوریتم گواه اثبات کار PoW به تمام ماینرها جایزه داده میشوند. هنگامی که هکر بلوکی را استخراج کند، کوین های جدید ایجاد کرده و به حساب خود می فرستد. تا هنگامی که این بلوک بخشی از زنجیره (chain) نشود، کوین های او ارزشی نخواهند داشت. بنابراین با ارائه حمله دوبار خرج کردن او جایزه های ماینینگ (استخراج) خود را به خطر می اندازد. در حال حاضر، اگر او بیت کوین را ماین (استخراج) کرده باشد، با هر بلوک مبلغی حدود ۱۱۷ هزار دلار را از دست خواهد داد.
اقدام عاقلانه دیگر این است که قبل از پذیرفتن تراکنش به عنوان تراکنشی موفق، صبر کنیم که تراکنش توسط تعدادی از گره ها تایید شود. هرچه تاییدیه ها بیشتر باشد احتمال اینکه تراکنش بخشی از یک بلاک چین اصلی باشد بیشتر خواهد بود. در مثال فوق، تریدر باید صبر کند تا میزان قابل قبولی از تاییدیه ها در شبکه ایجاد شود. برای هر تاییدیه بیشتر، احتمال اینکه حمله دوبار خرج کردن موفقیت آمیز باشد کم میشود. برای بیت کوین، حداقل تاییدیه توصیه شده ۶ تاییدیه می باشد. هرچند تریدرها و صراف ها برای مبالغ خیلی زیاد باید میزان بیشتری از ۶ تاییدیه را منتظر بمانند.
حمله سوم: حمله ۵۱%
سومین روش نیاز به تجهیزات ماینینگ دارد تا بتوانید بیش از ۵۰% توان استخراج (ماینینگ) یک کوین را کنترل کنید.
حمله شناخته شده ۵۱%، به این صورت است که هکر سعی می کند تا رهبری را در دست بگیرد و آخرین بلاک را او استخراج کند. این یعنی هکر حداقل از هر دو بلاک یکی را استخراج میکند.
این روش نیز با چالش هایی روبروست، فرد نمی تواند بدون شناخت کلید های خصوصی، پول را بدزدد و حتی اگر تراکنش نامعتبری را منتشر کند با دیگر گره ها پذیرفته نمیشود. او همچنین نمیتواند تراکنش های فرد را مخفی کند زیرا آنها با دیگر گره ها انتخاب خواهند شد و حمله آشکار میشود.
در حمله ای به این ابعاد، هکر باید چندین حمله دوبار خرج کردن و تراکنش های نامعتبر به شبکه بفرستد و اشاره گرهای هش را در تمام بلاک ها تغییر دهد. با این حال، با توجه به مدت زمان قطع ارتباط ممکن است حملات تشخیص داده شود و حمله در معرض لو رفتن قرار بگیرد. اگر وی بخواهد کوین های خود را در اکسچنج بفروشد، متوجه می شود که قیمت پایین آمده است و کوین ها بی ارزش می باشند. هکر با در معرض خطر قرار دادن کل سیستم، ارزش کریپتوکارنسی را کاهش می دهد.
جمع بندی
ماهیت ارزهای دیجیتال غیرمتمرکز است و به تایید شدن سیستم از جانب کاربران متکی می باشد، این کاربران ممکن است خوب یا بد باشند. از این نگاه می توان گفت که کریپتوکارنسی ها در فضای غیرقابل اعتمادی عمل می کنند. اما در این مقاله مشاهده کردیم که رمزنگاری، می تواند سیستم را ایمن کند و مشوق های قوی مانند دادن پاداش به ماینرها برای تشویق به رفتار صادقانه برای این تکنولوژی در نظر گرفته شده است. قویترین روش حمله، حمله ۵۱ درصد می باشد که با وجود الگوریتمهایی مانند PoS این حمله به شدت رو به تخریب است و امکان اتفاق افتادن آن با گسترش شبکه روز به روز کمتر میشود.
کلام آخر در مورد گواه اثبات کار PoW و سهام PoS
این مقاله راجع به ارزهای دیجیتالی است که از گواهی اثبات کار PoW استفاده می کنند و ماینرها با حل مسائل رمزنگاری، قادر به تولید بلوک در بلاک چین هستند. در گواه اثبات سهام PoS، افراد به میزان پول یا سهامی که از یک توکن یا کوین دارند، قادر به تایید تراکنش و تولید بلوک هستند. این پول باید در اکسچنجها نگه داری شود. برای مثال اگر شخصی ۱۰ درصد از کل توکنهای یک ارز دیجیتال را دارا باشد، در حالت تئوری می تواند از هر ده بلوک، یک بلوک را تولید کند. با نظارتی که روی رفتار هر ماینر به این روش میشود، اگر تشخیص داده شود که او تخلفی کرده است، پولش در اکسچنج بلوکه میشود و حق برداشت آن را نخواهد داشت. بنابراین در روش PoS به این دلیل که ماینرها با دارایی خود حق استخراج دارند و به عبارتی خودشان ذی نفع شبکه هستند، تا جایی که ممکن است قوانین را رعایت میکنند و ترجیح میدهند شبکه آسیبی نبیند.