بررسی حمله دو بار خرج کردن (Double Spending attack)؛ چگونه می توان از آن در امان ماند؟
فهرست مطالب
- حمله دو بار خرج کردن یا Double Spending Attack چیست؟
- نمونهای از حمله دو بار خرج کردن: بیتکوین
- انواع مختلف Double Spending Attack
- حمله رقابتی یا Race Attack
- حمله فینی یا Finney Attack
- حمله 51 درصد
- چگونه میتوان از حمله دو بار خرج کردن اجتناب کرد؟
- از پذیرش یا ارسال تراکنشهایی پرهیز کنید که توسط شبکه تأیید نشدهاند
- برچسب زمانی تراکنشها را چک کنید
- از کانال صرافیهای معتبر برای معامله رمزارز استفاده کنید
- سوالات متداول
- چگونه می توان از حمله دوبار خرج کردن در امان ماند؟
- انواع double spending attack کدام اند؟
حمله دو بار خرج کردن یا Double Spending Attack یک حفره در کدهای بلاکچین و سازوکار اعتبارسنجی است که پتانسیل بالایی برای ایجاد اختلال در عملکرد شبکه دارد. با این حال، به دلیل ساختار تأیید بلوکها و شبکه گسترده از کاربرانی که در آن مشارکت میکنند، انجام چنین حملهای بیشتر از واقعی بودن آن، شبیه یک افسانه در دنیای کریپتو است.
حمله دو بار خرج کردن را هزینه مضاعف نیز میخوانند و مبدأ آن تلاش یک کاربر فعال در شبکه بلاکچین برای ایجاد تراکنشهای چندگانه با ورودیهای یکسان و بهره بردن از گزینه زمان است. خطر double spending attack در شبکههای قدرتمندی چون بیتکوین و اتریوم تقریبا غیرممکن است، اما در انواع نوظهور و با اجتماع کوچکی از مشارکتکنندگان، امکان موفقیت در این حمله وجود دارد.
در صورت وقوع یک حمله دو بار خرج کردن، تمام اعتماد، اصول رمزگذاری، مشارکت جمعی و امنیت شبکه بلاکچین زیر سوال میرود. همچنین، یکی از اصلیترین کانالهای ممکن برای تحقق و موفقیت در double spending attack، حمله 51 درصد است که در آن یک یا گروهی از کاربران کنترل بیشتر از 50 درصد بلاکچین را به دست میگیرند.
حمله دو بار خرج کردن یا Double Spending Attack چیست؟
فرض کنید برای خرید صبح شنبه خود به یک فروشگاه زنجیرهای میروید و پس از دریافت صورتحساب، کارت عابر بانک خود را به صندوقدار میدهید تا هزینه خریدهای شما را دریافت کند. پس از کشیدن کارت و ارائه رمز توسط شما، تراکنش از کانال شبکه پرداخت شاپرک و ارتباطات بین بانکی انجام میگیرد.
به همان میزانی که کارت کشیدهاید از حساب بانکی شما پول کسر میشود و شما دیگر به همان میزان قبلی قدرت معامله ندارید (مگر اینکه دوباره حساب خود را شارژ کنید). حال اگر بتوان کاری کرد که همزمان با دو دستگاه پوز کارت بکشید و هر دو تأیید شوند اما فقط به ازای یکی از آنها از حساب شما پول کسر گردد، آنگاه شما یک دارایی خاص را دو بار خرج کردهاید.
در دنیای رمزارز نیز حمله دو بار خرج کردن تقریبا شبیه به مثال بالا است و کاربر سعی میکند یک دارایی (ارز یا توکن دیجیتال) را در چند معامله هزینه کند و به نوعی سیستم را گول بزند. در مثال بالا کاربر باید سیستم پرداخت و تأیید بانک را هک کند، اما در بلاکچین او با اجماعی از تأییدکنندگان مواجه است و باید از فیلترهای بیشتری رد شود تا حمله دو بار خرج کردن خود را به تأیید برساند.
نمونهای از حمله دو بار خرج کردن: بیتکوین
در بلاکچین بیتکوین برای مثال، هکر میتواند تراکنش اصلی را کپی کند و از آن در معامله دیگری استفاده کند. در ادامه، اطلاعات و ارزش فیک را برای خرید یک دارایی دیجیتال دیگر استفاده میشوند و ارز اصلی به نوعی در کیف پول دیجیتال هکر حفظ میگردد.
به همین دلیل، بیتکوین از کاربران خود میخواهد که تا زمان تأیید رسمی تراکنش توسط شبکه، از پذیرش پرداخت خودداری کنند. درواقع، در بیتکوین گرههای شبکه تأییدکنندگان صحت یک تراکنش و اصلی بودن آن را بررسی میکنند و اگر هکر نتواند کاربر را متقاعد به پرداخت در بازه زمانی کوتاهتر کند، bouble spending attack او با شکست مواجه میشود.
هر تراکنش در بلاکچین در حدود 10 دقیقه زمان نیاز دارد. دلیل این زمان نسبتا طولانی، نیاز به تأیید تراکنشهای ثبتشده در تمام گرهها است. همین 10 دقیقه دروازه اصلی برای double spending attack و ایجاد تراکنشهای فیک در بلاکچین است.
انواع مختلف Double Spending Attack
حمله دو بار خرج کردن یک عنوان کلی برای سوء استفاده از ساختار بلاکچین و معامله داراییهای متنوع با یک رمزارز با ارزشی به مراتب کمتر است. برای انجام حمله دو بار خرج کردن، هکرها از کانالهای متنوعی استفاده میکنند که در ادامه به سه نوع شاخص آنها میپردازیم.
حمله رقابتی یا Race Attack
حمله رقابتی زمانی رخ میدهد که دو تراکنش بهطور همزمان برای اعتبارسنجی ارسال میشوند و یکی از آنها تأیید میگردد. در اینجا هدف استفاده از زمان تأخیر مورد نیاز برای تأیید تراکنشها توسط شبکه است. این حمله دو بار خرج کردن تنها زمانی موفقیتآمیز است که کاربر قبل از تأیید نهایی معامله را بپذیرد و پرداخت انجام شود.
دلیل نامگذاری آن به عنوان حمله رقابتی، همان تلاش هکر برای تسریع انجام معامله قبل از دریافت بازخورد و تأیید از جانب شبکه است. در اینجا، مهندسی اجتماعی و انجام معاملات متعدد همزمان ابزار اصلی هکر برای دور زدن فیلترهای تأیید اجماع است و اگر بتواند کاربر را با خود همراه کند، حمله موفقیتآمیزی صورت میگیرد.
حمله فینی یا Finney Attack
این نوع از حمله دو بار خرج کردن اولین نوع از هکها در بلاکچین بیتکوین است و نام آن برگرفته از اسم شخصی است که برای اولین بار یک تراکنش بیتکوین را دریافت کرده است (Hal Finney). درواقع خود فینی بود که برای اولین بار ایده امکان هزینه مضاعف را در بیتکوین مطرح کرد.
در این حمله، ماینر یک بلوک را در شبکه ایجاد میکند و یک تراکنش از آدرس A به آدرس B در آن میگنجاند، در حالی که هر دو آدرس متعلق به خود اوست. سپس، هکر یک پرداخت دیگر، با همان رمزارز، از آدرس A به آدرس C (که متعلق به کاربر دیگری است) تعریف میکند.
حال اگر کاربر C تراکنش را، قبل از دریافت تأیید از جانب شبکه، تأیید کند، هکر بلوک ایجادشده توسط خود او را انتشار میدهد که در آن تراکنش اول A به B تعریف شده بود. بنابراین، تراکنش دوم لغو میشود و حمله دو بار خرج کردن با موفقیت پیادهسازی میگردد.
به دلیل نیاز هکر به استخراج و تعریف بلوک جدید، این نوع از حمله به قدرت هشینگ بسیار بالایی نیاز دارد و به همین دلیل، اعمال آن فعالیت بسیار پیچیدهای است. همچنین، اگر در بازهی انجام معامله فیک یک بلوک جدید در شبکه ایجاد شود (توسط سایر کاربران) باز هم حمله با شکست مواجه خواهد شد.
حمله 51 درصد
شاخصترین و خطرناکترین نوع double spending attack، حمله 51 درصد است. این نوع از حمله توسط یک یا گروهی از کاربران انجام میگیرد که بر بیشتر از 50 درصد از کلیت شبکه بلاکچین (Hash Rate) حکومت میکنند.
وقتی 51 درصد از کل گرههای شبکه در اختیار گروه خاصی باشد، امکان انجام هر تغییری بر ساختار شبکه و تصمیمگیریهای آن وجود خواهد داشت. در حمله 51 درصد، هکرها از انجام تراکنشهای جدید جلوگیری میکنند تا بتوانند عمل پرداخت برخی یا تمام کاربران را متوقف سازند.
همچنین، هکرها از تراکنش معکوس برای انجام حمله دو بار خرج کردن و تأیید همزمان چندین معامله بهره میگیرند. بنابراین، در حمله 51 درصد، هکرها سیستم اعتبارسنجی را هدف قرار میدهند و با کنترل آن، به نفع خود تأیید یا رد تراکنشها را تحقق میبخشند.
در این شیوه از هک، هکر صرافیها را بیشتر هدف قرار میدهد و ابتدا با ورود حجم بالایی از رمزارز به آن شروع میکند. در ادامه، رمزارزهای کنونی را با انواع متفاوتی معامله و به حساب جدید هکر خارج از بازار اولیه منتقل میشوند. درنهایت، با کنترل سیستم اعتباری بلاکچین، هکر معاملات اول را لغو و هر دو مبلغ خریداری و معاملهشده را تصاحب میکند.
بیشتر بخوانید: حمله 51 درصد چیست
آیا حمله 51 درصد موفق هرگز رخ داده است؟
اتریوم و بیتکوین دو بلاکچین فوقالعاده قوی با ساختار اجماع و شبکه تأییدکنندگان گسترده هستند که هرگز حمله 51 درصد موفقی را به خود ندیدهاند. با این حال، این نوع از حمله دو بار خرج کردن برای سایر رمزارزها چندین بار با موفقیت پیادهسازی شده است.
بیشتر این بلاکچینهای هدف، درواقع انشعابهایی ضعیفتر از بلاکچینهای اتریوم و بیتکوین بودهاند که با رویکرد PoW یا PoS سادهتری نقاط ورودی برای هکرها تعریف کردهاند. در آنها، به توان هشینگ کمتری نیاز هست و همین امر باعث ایجاد امکان تصاحب 51 درصد و اختلال گسترده در معاملات شبکه میشود.
یک نمونه موفق از این حملات برای بلاکچین Verge و در سال 2018 رخ داد؛ جایی که هکر یک باگ کشنده در کد بلاکچین پیدا کرده بود و از آن برای ایجاد سریع بلوکهای جدید استفاده میکرد. از این طریق، هکر امکان طراحی یک نمونه طولانیتر از بلاکچین در بازه زمانی کوتاه را حاصل کرده بود که به تسهیل حمله 51 درصد میانجامید.
در نتیجه، هرچقدر میزان توان هشینگ برای ساخت بلوکهای جدید بیشتر باشد، امکان کمتری در تسخیر بلاکچین وجود خواهد داشت و متناظرا، حمله دو بار خرج کردن کمتر رخ میدهد. بخصوص، بلاکچینهای کوچک با میزان مشارکت پایین بیشتر از انواع دیگر در مقابل این حمله آسیبپذیرند.
چگونه میتوان از حمله دو بار خرج کردن اجتناب کرد؟
شبکههای بلاکچین مانند بیتکوین و اتریوم به خودی خود امکان پیادهسازی حمله دو بار خرج کردن را به هکرها نمیدهند. بلکه این کاربران و معاملهگران رمزارز هستند که مرتکب اشتباه میشوند و با دانش کم دست به معاملات ریسکی میزنند.
همچنین، شبکههای بلاکچین و صرافیهای متمرکز و غیرمتمرکز پروتکلهای امنیتی برای انجام تراکنشها تعریف کردهاند تا میزان double spending attackها را به حداقل ممکن برسانند. در کنار این پروتکلها، کاربران میتوانند از گامهای زیر برای اجتناب از طعمه شدن در این حملات بهره بگیرند.
از پذیرش یا ارسال تراکنشهایی پرهیز کنید که توسط شبکه تأیید نشدهاند
کاربران شبکه بلاکچین میتوانند تنها با درنظر داشتن این اصل تقریبا از تمام حملات دوبار خرج کردن مصون بمانند. درواقع این هیجان کاربران برای انجام معاملات و عجله آنها در پذیرش انواع مختلف تراکنشها است که مسیر را برای هکرها هموار میسازد.
وقتی صبر معاملهگر بر منطق او غلبه میکند، سودآوری یک معامله را بر امنیت آن اولویت میبخشد. همین امر شبیه قلابی عمل میکند که هکر از آن ماهی میگیرد. این شیوه از کلاهبرداری شبیه بازارهای سیاه در معاملات معمول و با حذف حداکثری امکان اعتبارسنجی و دریافت تأیید از یک سیستم معتبر است.
برچسب زمانی تراکنشها را چک کنید
اکثر صرافیهای معتبر تراکنشهای خود را با برچسبهای زمانی علامتگذاری میکنند و سپس آنها را در تمام گرههای اعتبارسنجی شبکه توزیع میکنند. بنابراین، تراکنشهای تأییدنشده را میتوان به سادگی تشخیص و از پذیرش معاملات متناظر با آنها اجتناب کرد.
بهطور کلی، هرچه مدت زمان بیشتری صرف تأیید یک تراکنش شود، اعتبار بالاتری به آن تراکنش تعلق میگیرد. بخصوص، مدت زمان مورد نیاز برای انجام یک تراکنش و تأیید آن به حجم داراییهای رمزارز ارسالشده و بلاکچین مبنا بستگی دارد.
بنابراین، تنها مسیری که هکر برای انجام حمله دو بار خرج کردن میتواند طی کند، از ذهن معاملهگران دیگر و سیاست آنها در پذیرش تراکنشها میگذرد. حتی وقتی هکر اقدام به تولید بلوک میکند، برای انجام حملات مضاعف و استفاده از بلوک خود به قدرت پردازش بسیار بالایی نیاز دارد و بدون همکاری معاملهگران در پذیرش تراکنشها، انجام حمله غیرممکن است.
از کانال صرافیهای معتبر برای معامله رمزارز استفاده کنید
به دلیل عدم وجود یک نهاد مرکزی برای کنترل معاملات و پذیرش یا لغو آنها، تمام ستون اتکای شما بر بلاکچین و صرافی میانجی است. صرافیهای مختلف سطح امنیت متفاوتی دارند و با بازنگری تاریخچه معاملات آنها میتوانید به گذشته عملکردی و میزان امنیت آنها پی ببرید.
بخصوص، اکثر انواع double spending attackها با یک صرافی در کانون حمله پیادهسازی میشوند و هکر نه کاربر، بلکه کلیت صرافی را و عملکرد آن را هدف قرار میدهد. در نتیجه، صرافیهایی که سیستم معاملاتی ضعیفتری دارند و از اعتبارسنجی دوگانه استفاده نمیکنند، بیشتر مورد حمله دو بار خرج کردن قرار میگیرند.
جمعبندی
حمله دو بار خرج کردن یا Double Spending Attack استفاده از زمان برای گول زدن معاملهگران و بهرهبرداری مضاعف از یک دارایی دیجیتال است. در دنیای رمزارز، امکان دو بار خرج کردن رمزارز یا توکن در بلاکچین وجود ندارد، مگر اینکه هکر بتواند کاربران دیگر را ترغیب به پذیرش تراکنشهای تأییدنشده کند.
بهترین مسیر برای محافظت در مقابله با حمله دو بار خرج کردن و حفظ داراییهای رمزارز خود، صبور بودن است. درواقع، صبور بودن مهمترین نقطه اتکایی است که هر معاملهگر باید از آن بهره بگیرد و عجله کردن همان تزلزل مورد نیاز برای بهرهبرداری هکرها و دزدیدن اموال کریپتو کاربران است.
واقعیت این است که هیچ حمله دو بار خرج کردن شاخصی در تاریخ رمزارز گزارش نشده است. هرآنچه به نام Double Spending Attack شناخته میشود، کلاهبرداری هکرها از کاربران، بدون تغییر و به چالش کشیدن ماهیت اصلی پلتفرم، و واقعی جلوه دادن تراکنشهای فیک است.
سوالات متداول
چگونه می توان از حمله دوبار خرج کردن در امان ماند؟
از پذیرش یا ارسال تراکنشهایی پرهیز کنید که توسط شبکه تأیید نشدهاند، برچسب زمانی تراکنشها را چک کنید و از کانال صرافیهای معتبر برای معامله رمزارز استفاده کنید.
انواع double spending attack کدام اند؟
حمله رقابتی یا Race Attack، حمله فینی یا Finney Attack و حمله 51 درصد از حمله هایی هستند که در بلاکچین رخ می دهند.
درباره نویسنده
مرضیه جنتی
ثبت نظر جدید