حمله دابل اسپندینگ double spending چیست؟
اساس یک سیستم بلاکچین برای تائید تراکنشها و انتقال رمزازرها، امنیت است. هر عاملی که امنیت یک سیستم مالی دیجیتالی را تهدید کند، باید شناسایی شود و برای آن راهکاری در نظر گرفته شود تا امنیت سرمایهگذاران تامین شود. یک تهدید مهم برای دارایی سرمایهگذاران در شبکههای بلاک چینی کوچک، حمله دابل اسپندینگ یا دوبار خرج کردن در ارز دیجیتال است. دوبار خرج کردن به این معنی است که یک ارز دیجیتال بیشتر از یکبار خرج شود. در این مقاله به بررسی مفهوم این حمله میپردازیم و راههای مقابله با آن را تشریح میکنیم.
دابل اسپندینگ یا دوبار خرج کردن در ارز دیجیتال چیست؟
اگرچه بلاکچین یک شبکه ایمن است، اما هنوز حفرههای امنیتی دارد که هکرها یا کاربران مخرب از آن برای انجام فعالیتهای خود سوء استفاده میکنند. دابل اسپندینگ یکی از این حفرهها است که به معنای خرج کردن یک ارز دیجیتال دو بار یا بیشتر برای استفاده از چندین سرویس است. این یک نقص فنی در بلاکچین است که به کاربران اجازه میدهد از یک پول چندین بار استفاده کنند.
از آنجایی که ارزهای دیجیتال چیزی جز فایل نیستند، یک کاربر مخرب میتواند چندین نسخه از یک فایل واحد رمزارز ایجاد کند و از آن در مکانهای مختلف استفاده کند. همچنین در صورتی که تغییری در شبکه ایجاد شود یا فقط از کپی ارز استفاده شود و نه از نسخه اصلی، این مشکل ممکن است رخ دهد.
همانطور که میدانید در دنیای واقعی به ازای چاپ یک ارز (مثلاً یک دلار آمریکا) بانک مرکزی هر کشوری هزینهای را پرداخت میکند و اسکناسی با ارزش مشخص چاپ میکند. حال اگر یک فرد متقلب، اسکناس جعلی و تقلبی چاپ کند در واقع میتواند به سیستم بانکی لطمه وارد کند. یا فرض کنید همان فرد متقلب پس از خرید یک کالا از فروشگاه، به طرق مختلف پول خود را از فروشنده بدزدد و دوباره خرید کند!
در دنیای ارزهای دیجیتال نیز تقریباً چنین چیزی صادق است. اگر یک فرد بتواند یک بیت کوین را دو بار بفروشد درواقع به اعتبار امنیتی شبکه لطمه وارد کرده است. برای مثال، فرض کنید شخص A دارای یک عدد بیت کوین است و میخواهد آن را بفروشد و شخص B نیز خریدار است. در یک بستر امن با ثبت و ضبط اطلاعات، شخص A بیت کوین خود را به شخص B میفروشد. حال مالکیت بیت کوین در اختیار فرد B است. اما اگر شخص A بتواند با تقلب، همان بیت کوین را به شخص C هم بفروشد (یعنی دوبار از یک ارز دیجیتال استفاده کند)، اصطلاحاً دابل اسپندینگ بیت کوین اتفاق افتاده است.
حمله دابل اسپندینگ چه تبعاتی دارد؟
در ابتدا توصیه میکنیم هرگز تراکنشهایی که در کیف پول یا صرافی شما با عنوان «تائید نشده» در جریان هستند را تائید نهایی نکنید. حتی اگر ساعتها تائید تراکنش شما طول میکشد، باز هم صبر کنید. اما اگر چنین کاری کنید و تراکنش تائید نشده را قبول کنید، خود را در معرض حمله دابل اسپندینگ قرار دادهاید.
واضح است که این اتفاق یک بحث امنیتی است و اگر صورت بپذیرد، یعنی آن سیستم از لحاظ امنیتی ضعیف است و کاربران به آن اعتمادی نخواهند داشت. البته ساختار شبکههای بلاک چینی به علت استفاده از مکانیسمهای رمزنگاری مختلف از جمله الگوریتم هشینگ در برابر این اتفاق تا حد زیادی مقاوم است اما باز هم امکان این حمله وجود دارد. برخی از تبعات حمله دابل اسپندینگ عبارت است از:
- هکرها میتوانند فرآیند تأیید تراکنش را از پارامترهای امنیتی بلاکچین دور بزنند و مکانیسم امنیتی آنها را مختل کنند.
- این حملات میتواند در مبادلات غیرمتمرکز مشکل ایجاد کند و عدم وجود یک مرجع نظارتی، ردیابی چنین تغییراتی را غیرممکن میکند.
- همانطور که میدانید مدت زمان انتظار، زمان مورد نیاز برای تایید تراکنش را تعیین میکند و پس از آن تراکنش به خودی خود تکمیل میشود. به همین دلیل از آنجایی که تراکنش سنگینتر زمان انتظار بیشتری را میطلبد، تأییدهای متعدد ضروری است. این عدم رهگیری اعتبار معاملات میتواند منجر به زیانهای پولی سنگین نیز شود.
انواع حمله دابل اسپندینگ یا دوبار خرج کردن
هرچند که تلاشهای بسیاری برای حفظ امنیت بلاکچین انجام شده است، اما روش Double spending آنقدر برای هکرها و افراد متقلب جذاب بوده که سبکهای مختلفی برای آن ایجاد کردهاند. در ادامه سه نوع اصلی از حملات دابل اسپندینگ را بررسی میکنیم.
-
حمله 51 درصد
در این نوع از حمله دابل اسپندینگ، کنترل حداقل 51 درصد از هشریت شبکه در اختیار افراد متقلب قرار میگیرد. در حمله 51درصدی، آنها میتوانند با ایجاد تراکنشهای صوری چندین بار یک ارز دیجیتال را خرج کنند. البته لازم به ذکر است که در شبکههایی مانند بلاک چین بیت کوین یا ارزهای محبوب دیگر، امکان این حمله بسیار بعید است. چرا که افراد متقلب باید کنترل میلیونها کامپیوتر را به دست بگیرند.
بیشتر بخوانید: بیت کوین چیست
اما در بلاکچینهای کوچک و کمتر شناختهشده این اتفاق زیاد افتاده و در آینده هم خواهد افتاد. به همین دلیل توصیه میکنیم در ابتدا به امنیت شبکه بلاکچینی یک ارز دیجیتال برای تراکنش آن توجه کنید، سپس اقدام به مبادله ارز نمایید.
-
حمله ریس
حمله مسابقه یا ریس را با یک مثال توضیح میدهیم. درواقع یکی از دلایلی که هنوز شاهد استفاده گسترده از رمزارزها نیستیم، حمله ریس است. فرض کنید شخص متقلب A دارای یک بیت کوین است و میخواهد یک خودرو بخرد. او شرکتی را یافته که بیت کوین را میپذیرد. آنگاه در سایت شرکت، یک خودرو با بیت کوین خریداری میکند.
پس از پرداخت، تا زمانی که تراکنش او تائید شود حدود یک ساعت زمان نیاز است و او میتواند این مبلغ را که هنوز از حساب کیف پولش کسر نشده (چون در شبکه تائید نشده!) به آدرس کیف پول دیگر خود واریز کند. در صورتی که این فرد بتواند همزمان هر دو تراکنش را انجام بدهد، در واقع انگار خودرو را به صورت رایگان خریده کرده است. چون بیت کوین او در حساب کیف پولش قرار دارد. درواقع او پذیرندهی تراکنش “تائید نشده” هم بوده! هرچند احتمال موفق شدن در این کار روی بلاک چین های امنی مانند بیت کوین خیلی کم است، اما صفر هم نیست!
-
حمله فینی
در ابتدا اشاره کنیم که شخصی به نام هال فینی روی این نوع از حملات به شبکه تحقیق کرده (شاید هم خودش انجام داده) است. از این رو نام این حملات را فینی گذاشتهاند. این حمله یا هک در سه مرحله صورت میپذیرد. در مرحله اول شخص متقلب A مقداری ارز دیجیتال به آدرسی میفرستد که در اختیار او قرار دارد. در این حالت به ماین کردن تراکنش خود میپردازد اما آن را به شبکه منتقل نمیکند. در مرحله دوم با همان میزان ارز دیجیتال، به خرید یک کالا از سایتی فروشگاهی میپردازد و فرض کنیم که خیلی سریع هم آن را دریافت میکند.
وقتی تراکنش دوم بدون تائید شبکه توسط سایت فروشگاهی انجام شد، شخص A در مرحله آخر حمله، تراکنش ماین شده خود را به شبکه ارسال میکند. شبکه نیز این تراکنش را معتبر میداند. اما در همان لحظه تراکنش مربوط به خرید از سایت فروشگاهی را نامعتبر میداند، در حالی که کار از کار گذشته. چون شخص A کالا را دریافت کرده است!
این حمله به ماینر نیاز دارد و اگرچه روی کاغذ احتمال وقوع آن هست، اما بسیار بعید است که بتوان از این طریق موفق شد. چون قدرت هش ماینرها بسیار کم است.
چگونگی جلوگیری و مقابله با حملات دابل اسپندینگ
با همه تفاسیر امنیتی، حمله دابل اسپندینگ همچنان یک خطر برای داراییهای دیجیتال بهشمار میرود. با این حال، میتوان به کمک اقداماتی در بلاکچین آن را به حداقل رساند. مثلا ارزهای رمزنگاری شده مانند بیت کوین از اقدامات امنیتی ویژهای برای تأیید تراکنشهای انجام شده توسط ماینرها استفاده میکنند.
یکی از این کارها این است که تراکنش با حداکثر تعداد تایید نود شبکه گنجانده شده و بقیه حذف میشوند. معمولاً حداقل ۶ تأیید برای تأیید یک تراکنش ضروری است. همچنین همه تراکنشها و تأییدیهها دارای یک مهر زمانی هستند که امکان بازگشت به عقب را غیرممکن میکند. کاربران نمیتوانند تراکنش های تایید شده را تغییر دهند و بنابراین نمیتوانند دوباره آنها را خرج کنند.
بنابراین، میتوانیم بگوییم دو راه عمده برای پیشگیری از این حملات وجود دارد:
1) استفاده از نهاد متمرکز
اگر از یک سازمان یا نهاد ثالث متمرکز (به طور مثال صرافی معتبر) بخواهید که تراکنشهای شما را تائید کند تا حد زیادی از وقوع این اتفاق جلوگیری کردهایم. مشابه وقتی که کارت به کارت میکنید، نهادی مانند بانک مرکزی روی تراکنش شما نظارت کامل دارد.
فرض کنید یک کاربر تراکنش انجام می دهد. شخص ثالث معامله را با یک هویت منحصر به فرد شناسایی میکند. سپس تراکنش را تایید و اجازه تراکنش را میدهد. اما مشکل این کار این است که اگر بخواهیم با کشورهای دیگری معاملات انجام دهیم، دیگر شخص ثالثی در آنجا وجود ندارد. بنابراین در چنین مواردی سیستمهای غیرمتمرکز وارد عمل میشوند.
2) استفاده از نهاد غیر متمرکز
در این رویکرد، هیچ دخالتی از سوی مرجع مرکزی وجود ندارد و هر تراکنش با استفاده از الگوریتمهای قدرتمند تأیید میشود. رویکرد غیرمتمرکز نسبت به رویکرد متمرکز ایمنتر است زیرا در آن پروتکلها ایجاد میشوند و هر پروتکل در هر مرحله کار خود را انجام میدهد. بنابراین شفافیت نیز ترویج میشود. مثل بلاکچین بیت کوین که از مکانیسمی مانند الگوریتم اثبات کار POW استفاده میکند و احتمال تقلب را تا حد بسیار بالایی ناممکن میسازد.
آیا دابل اسپندینگ ممکن است دارایی ما را تهدید کند؟
اگرچه حملات دابل اسپندینگ یک نگرانی دائمی در کریپتو است، اما به کمک آپدیتهای جدید و فرآیندهای راستی آزمایی دقیق سناریو اکنون تغییر کرده است. گرههای اعتبارسنجی غیرمتمرکز اکنون میتوانند مسائل پیچیده ریاضی را برای تأیید دفتر کل حل کنند. به این ترتیب، علی رغم احتمال ناچیز پذیرش تراکنشهای تایید نشده، شبکه کریپتو صحت هر تراکنش را تأیید میکند.
اما به یاد داشته باشید که اگر در یک بلاکچین ناایمن فعالیت کنید خطرات دابل اسپندینگ بسیار بالا است. زیرا معمولاً از حمله تراکنش تایید نشده برای فریب دادن کاربران ارزهای دیجیتال استفاده میشود. در صورتی که یکی از این تراکنشها را مشاهده کردید، نباید آن را بپذیرید زیرا میتواند باعث حمله دوبار خرج شود. متأسفانه اگر دابل اسپندینگ در یک بلاکچین چندین بار مشاهده شود امکان دارد دارایی یک شخص از بین برود. بنابراین پیشنهاد میکنیم برای جلوگیری از این اتفاق از بلاکچینهای بهروز و معتبر استفاده کنید.
دابل اسپندینگ، حفره امنیتی
هر سیستم مالی در دنیای دیجیتال باید در بالاترین سطح از امنیت باشد. امروزه دانشمندان علم رمزنگاری روشهای مختلفی برای ارتقای سطح امنیتی سیستمهای کامپیوتری و شبکه بلاک چینی ارائه دادهاند تا از روشهای مختلفی که میتواند باعث ایجاد خطر برای دارایی سرمایهگذاران شود جلوگیری کند. روش هش یک مکانیسم قوی و قابل اعتماد برای مقابله با حملاتی ماند دابل اسپندینگ (مثل حمله فینی) است که در بلاکچین بیت کوین و اتریوم شاهد آن هستیم. در این مقاله به بررسی ماهیت حملات دابل اسپندینگ و روشهای جلوگیری دوبار خرج کردن بهمنظور ارتقای سطح امنیت در شبکههای مختلف ارز دیجیتال پرداختیم.