دابل اسپند (double-spend) یا دوبار خرج کردن داراییها، به حالتی گفته میشود که یک واحد یکسان از داراییهای دیجیتال، با روشهای کلاهبردارانه بیش از یک بار خرج شود.
در واقع این نگرانی در دنیای دیجیتال امری طبیعی است؛ چرا که فایلهای دیجیتالی را بهراحتی میتوان کپی و تکثیر کرد. البته ارزهای دیجیتال دقیقاً با هدف رفع این چالش ایجاد شده و از سازوکاری استفاده میکنند که عملاً «کپیکردن» آنها را غیرممکن میکند؛ اما انواع خاصی از حملات هک وجود دارد که کلاهبرداران از طریق آنها میتوانند تراکنشهای ارزهای دیجیتال را «معکوس کنند» و یا پیش از تأیید و نهاییشدن یک تراکنش آن را «به شخص دیگری ارسال کنند».
مشکل دوبار خرج کردن داراییها، یکی از بزرگترین مشکلات دنیای داراییهای دیجیتال است. شاید برایتان جالب باشد که بدانید ایده ارزهای دیجیتال، پیش از بیت کوین هم وجود داشت. قبل از بیت کوین، تلاشهای ناموفقی برای ابداع ارزهای دیجیتال انجام شده بود و یکی از مهمترین دلایل ناکامی توسعهدهندگان آنها، شکست در حل مشکل دابل اسپند بود.
اگرچه بیت کوین با استفاده از فناوری بلاک چین توانست این مشکل را تا حد زیادی برطرف کند، اما احتمال وقوع چنین حملاتی هنوز هم در بلاک چین بیت کوین و سایر ارزهای دیجیتال جدیدتر وجود دارد. در این مطلب قصد داریم بهکمک مقالهای از دانشنامه وبسایت جمینای (Gemini)، مرور جامعی بر مسئله خرج دوباره داراییها در دنیای ارزهای دیجیتال داشته باشیم و انواع این حمله را بررسی کنیم.
دابل اسپند یا دوبار خرج کردن چه انواعی دارد؟
حمله دوبار خرج کردن (همان طور که از نامگذاری آن پیداست)، به این معناست که یک واحد مشخص از یک ارز دیجیتال، با کلاهبرداری، بیش از یک بار خرج شود. میدانیم که فیلمها، موسیقیها و عکسهای دیجیتال را میتوان بهراحتی سرقت یا کپی کرد؛ اما «کپیکردن» ارزهای دیجیتال بهخاطر طراحی هوشمندانه آنها امکانپذیر نیست.
با این حال، انواع خاصی از حملات دابل اسپند وجود دارد که کلاهبرداران و هکرها میتوانند با استفاده از آنها، تراکنشهای ارزهای دیجیتال را معکوس کنند. حمله فینی، حمله رقابتی و حمله ۵۱ درصدی از جمله آنها هستند.
دو مورد از حملاتی که در بالا به آنها اشاره کردیم، یعنی «حمله فینی» (Finney attack) و «حمله رقابتی» (race attack)، هر دو زیرمجموعه حمله وسیعتری به نام «حمله تراکنش تأییدنشده» هستند. اگر یک تراکنش تأییدنشده (unconfirmed transaction) به آدرس کیف پول خود را بپذیرید، در برابر هر دوی این حملهها آسیبپذیر خواهید بود.
برای درک بهتر مسئله دوبار خرج کردن، هر سه نوع حمله را بهصورت جداگانه بررسی خواهیم کرد.
همچنین بخوانید: بیت کوین چگونه کار میکند و تراکنشهای آن چگونه انجام میشود؟
حمله رقابتی
حمله رقابتی به زبان ساده، یک «رقابت» بین دو تراکنش است که تقریباً در زمان یکسان منتشر شدهاند. روش این حمله اینگونه است که یک شخص، دو تراکنش را بهصورت همزمان منتشر کند؛ بهشکلی که در تراکنش اول آدرس کیف پول مخاطب موردنظر و در تراکنش دوم، آدرس دیگر خودش را ثبت کند. سپس پیش از آنکه تراکنش اول روی بلاک چین ثبت شود، آن را با تراکنش دوم جایگزین کرده و وجوه را به آدرس خودش بازگرداند.
در دسامبر سال ۲۰۱۹، ویدیویی منتشر شد که سروصدای زیادی به پا کرد. این ویدیو فروشگاههایی را نشان میداد که بیت کوین را بهعنوان ابزار پرداخت میپذیرفتند و امکان خرج دوباره بیت کوین در آنها وجود داشت.
این کار با استفاده از ویژگی جایگزینی کارمزد (Replace-By-Fee) در برخی از کیف پولهای بیت کوین انجام میشد. جایگزینی کارمزد یا بهاختصار RBF یک ارتقای نسبتاً جنجالی است که در پروتکل بیت کوین اعمال شده است.
همچنین بخوانید: کارمزد بیت کوین و مسئله تأیید تراکنشها؛ هر آنچه که باید بدانید
در حمله دابل اسپندی که این ویدیو نشان میداد، ابتدا یک تراکنش به فروشنده ارسال میشد و بلافاصله پس از آن، تراکنش دومی با کارمزد بیشتر و این بار به آدرس خود فرستنده ارسال میشد. با توجه به اینکه کارمزد بالاتر بهمعنای در اولویت قرارگرفتن تراکنش (برای ماینرهای شبکه) است، تراکنش اول لغو میشد و امکان خرج دوباره بیت کوین را فراهم میکرد.
در واقع علت موفقیت چنین حملاتی، این بود که فروشندگان تراکنشهای تأییدنشده را میپذیرفتند.
در اتفاقی مشابه در اوایل همان سال، برخی از دارندگان بیت کوین در کانادا توانستند بیت کوینهای خود را نقد کنند؛ بدون اینکه واقعاً آنها را خرج کنند یا از دست بدهند. به نظر میرسد که آنها بیت کوین را به دستگاههای خودپرداز بیت کوین ارسال میکردند و پس از دریافت پول نقد از خودپرداز، تراکنش موردنظر را (که هنوز در شبکه تأیید نشده بود) لغو میکردند.
البته که چنین موردی ناشی از باگ دستگاههای خودپرداز بود؛ اما بهعنوان یک نتیجهگیری کلی از چنین اتفاقاتی، در نظر داشته باشید که هر تراکنشی که در شبکه بیت کوین ارسال میشود لزوماً قطعی نیست و میتواند به دلایل مشخصی لغو شود.
میدانید که ارزهای دیجیتالی مانند بیت کوین مبتنی بر بلاک چین هستند و تراکنشهای آنها برای نهاییشدن، نیاز به اعتبارسنجی و تأیید نودهای شبکه دارند. بنابراین:
هرگز تراکنشهای تأییدنشده را نپذیرید. همان طور که اگر شخصی پولی را از طریق اینترنتبانک به شما انتقال دهد، به رسید اینترنتی او اعتماد نمیکنید و حتماً صبر میکنید تا پیامک واریز به کارت خود را دریافت کنید، در اینجا هم نباید به رسید اولیه ارسال تراکنش اعتماد کنید؛ بلکه باید صبر کنید تا رسید تراکنش (TxID) را در کیف پول خود دریافت کنید و از نهاییشدن تراکنش در بلاک چین مطمئن شوید.
وقتی که تراکنش ارسالشده به آدرس شما، در شبکه بلاک چین تأیید شود، هش یا شناسه تراکنش (TXID) در کیف پول شما نمایش داده میشود. بهترین کار این است که این شناسه را در اکسپلوررهای بلاک چین مانند blockchair.com جستجو کنید و وضعیت تأییدهای آن را بررسی کنید.
پیشنهاد میکنیم برای تراکنشهای بیت کوینی که مبالغ بالایی دارند، منتظر حداقل ۶ تأیید باشید و تراکنشهایی که تعداد تأییدهای کمتری دارند را نهایی تلقی نکنید.
همچنین بخوانید: آموزش لغو و جایگزین کردن تراکنش تایید نشده اتریوم
حمله فینی
برخلاف حملات رقابتی، حملات فینی (Finney attack) حملههای نسبتاً فنی و دشواری هستند که فقط ماینرها میتوانند آنها را انجام دهند. ماینر یک تراکنش انتقال از کیف پولی به کیف پول دیگر را در یک بلاک، از پیش استخراج میکند. سپس، از کیف پول اول برای انجام تراکنش دوم استفاده میکند و بلاک از پیش استخراجشده را که شامل تراکنش اول است، در شبکه منتشر میکند.
برای درک بهتر این حمله، مراحل را در تصویر زیر دنبال کنید.
این کار به توالی بسیار خاصی نیاز دارد و البته هیچ مدرکی نیست که ثابت کند تاکنون چنین حملهای روی داده باشد. نام این نوع حمله را از روی نام کاشف آن، «هال فینی» (Hal Finney) برداشته اند. هال فینی کسی است که برای اولین بار در تاریخ، اولین بیت کوینها را از ساتوشی ناکاموتو (Satoshi Nakamoto) دریافت کرد.
همچنین بخوانید: داستان زندگی هال فینی، اولین پذیرنده بیت کوین، از زبان خود او
حمله ۵۱ درصدی
از نظر بسیاری از فعالان فضای ارزهای دیجیتال، حمله ۵۱ درصدی نگرانکنندهترین حمله دوبار خرج کردن است. اگر گروهی بتواند کنترل بیش از ۵۰ درصد از قدرت هش شبکه بیت کوین را به دست بگیرد، میتواند تا زمانی که این قدرت را در اختیار دارد، بلاک چین بیت کوین را آنگونه که دوست دارد سازماندهی کند.
اگر این گروه بلاک چین را از نو سازماندهی کند، میتواند هر مقداری از بیت کوینها را که میخواهد، دوباره خرج کند. توجه داشته باشید که حمله ۵۱ درصدی بهمعنای دسترسی به تمام بیت کوینهای شبکه نیست؛ در این حمله، فرد خرابکار فقط میتواند بیت کوینهای خرجشده خود را دوباره خرج کند.
تاکنون هیچ مدرکی مبنی بر بروز حمله ۵۱ درصد در شبکه بیت کوین مشاهده نشده و علت آن این است که هشریت (قدرت هش) شبکه بیت کوین بسیار بالاست؛ یعنی هزینه و هماهنگیهایی که برای بهدستگرفتن کنترل این مقدار از قدرت هش لازم است، چنان گزاف است که در نهایت هیچ انگیزه مالی برای انجام این کار باقی نمیگذارد.
قدرت هش بسیار بالای بیت کوین باعث میشود که شبکه بیت کوین با فاصله زیاد، امنترین پروتکل غیرمتمرکز جهان باشد. بر اساس محاسبات ریاضی و قوانین احتمال، این طور به نظر میرسد که پس از دو تأیید اولیهای که هر بلاک دریافت کند، استخراج بلاکهای بعدی خیلی بیشتر بهصرفه است تا تلاش برای انجام چنین حملهای.
حتی اگر شخصی هیچیک از این ملاحظات اقتصادی را در نظر نگیرد و بخواهد به هر قیمتی شبکه بیت کوین را با حمله ۵۱ درصدی از بین ببرد، بهدلیل منابع بسیار عظیمی که برای این کار نیاز است، عملاً قادر به انجام آن نخواهد بود.
همچنین بخوانید: حمله ۵۱ درصد در بلاک چین چیست؟ + ویدیو
آیا تاکنون حمله ۵۱ درصدی موفقیتآمیزی رخ داده است؟
اگرچه تاکنون هیچ حمله ۵۱ درصدی موفقیتآمیزی بر روی بیت کوین و اتریوم رخ نداده، اما چندین ارز دیجیتال دیگر قربانی این نوع حملات شدهاند که فورکهای بیت کوین و اتریوم جزو آنها هستند.
اتریوم کلاسیک (Ethereum Classic) در سالهای ۲۰۱۹ و ۲۰۲۰ هدف حمله ۵۱ درصد قرار گرفت؛ بیت کوین گلد (Bitcoin Gold) هم در سالهای ۲۰۱۸ و ۲۰۲۰ مورد حمله واقع شد. در سال ۲۰۲۱ هم بالاخره در شبکه بیت کوین ساتوشی ویژن (BSV) حمله ۵۱٪ اتفاق افتاد.
علت امکانپذیر بودن این حملات این بود که این فورکها معمولاً به همان شکل بیت کوین و اتریوم استخراج میشوند؛ اما قدرت هش شبکه آنها بسیار پایینتر است. از این رو، یک ماینر بزرگ و مخرب میتواند بهصورت ناگهانی و مخفیانه تنظیمات دستگاههای استخراج خود را از بیت کوین یا اتریوم به ارز دیجیتال دیگری که قدرت هش بسیار کمتری دارد، تغییر داده و اقدام به حمله ۵۱ درصد کند.
چنین حملهای به این علت امکانپذیر است که قدرت هش ماینر مهاجم شاید در مقایسه با شبکه بیت کوین چندان بالا نباشد، اما در مقایسه با قدرت هش دیگر شبکهها به حدی است که امکان حمله را فراهم میکند. برخی از پلتفرمها برای پیشگیری از چنین حملاتی، تعداد تأییدهای لازم برای تراکنش و معامله را افزایش دادهاند. این مسئله، اجرای حمله ۵۱ درصد را دشوارتر میکند.
همچنین بخوانید: حمله ۵۱ درصد به شبکه بیت کوین ساتوشی ویژن؛ چه بر سر BSV آمد؟
حمله ۵۱ درصد چگونه کار میکند؟
مهاجمان برای اینکه حملاتشان سودآوری بیشتری داشته باشد، صرافیها را هدف حملات خود قرار میدهند. برای این کار، آنها ابتدا مقدار زیادی ارز دیجیتال را به صرافی میفرستند؛ سپس آن ارزها را با ارز دیجیتال دیگری مبادله کرده و ارز جدید را به آدرسی خارج از صرافی که متعلق به خودشان است، منتقل میکنند.
وقتی این فرایند تکمیل شد، آنها بلاک چین را با استفاده از این حمله دوباره سازماندهی (reOrg) میکنند و بلاک حاوی تراکنش اول خود را که حالا به یک بلاک «یتیم (orphan)» تبدیل شده است، پاک میکنند. با این کار، هم ارزهای دیجیتالی که از ابتدا به صرافی فرستاده بودند برایشان باقی میماند و هم ارزهای جدیدی که دریافت کردهاند.
هرگز تراکنشهای تأییدنشده را قبول نکنید و همیشه از صرافیهای معتبر استفاده کنید
حملات دوبار خرج کردن شاید هرگز از میان نروند؛ اما هر حملهای که به شبکه بیت کوین یا سایر ارزهای دیجیتال وارد میشود، مقاومت آنها را در برابر خطرات اینچنینی بیشتر میکند.
بهطور کلی، اگر مراقب تراکنشهای دریافتی خود باشید و تا زمانی که مبالغ را در کیف پول خود دریافت نکردهاید تراکنشی را نپذیرید، میتوانید اطمینان داشته باشید که هرگز هدف حمله فینی یا رقابتی قرار نخواهید گرفت.
درباره حملات ۵۱ درصد، برخی کارشناسان میگویند برای اینکه قربانی این حملات نشوید، فقط باید با ارزهای دیجیتالی کار کنید که قدرت شبکه در آنها کاملاً غیرمتمرکز و توزیعشده است. در مورد شبکههای مبتنی بر اثبات کار، هر چقدر که هشریت شبکه بیشتر باشد، امنیت آن هم بیشتر است. در مورد شبکههای مبتنی بر اثبات سهام نیز، هر چقدر حجم بازار ارزها بیشتر باشد، امنیت آن در برابر حملات ۵۱ درصدی بیشتر خواهد بود.
بسیاری از کارشناسان هم معتقدند تا زمانی که حجم سرمایهتان بسیار بالا و در حد میلیون دلاری نیست، میتوانید از هر ارز دیجیتالی استفاده کنید؛ چراکه در این حملات فقط آدرسها و صرافیهای بزرگ هدف قرار میگیرند.
همان طور که بارها توضیح دادهایم، صرافی فقط محل مبادله ارز است و برای ذخیره داراییها مناسب نیست؛ اما اگر واقعاً قصد دارید مقدار قابلتوجهی ارز دیجیتال را در صرافی ذخیره کنید، مطمئن شوید که صرافی موردنظر قابلاعتماد است و ترجیحاً در برابر خسارتهای اینچنینی بیمه شده است.