حمله چرخه جایگزینی در شبکه لایتنینگ
شبکه لایتنینگ بیتکوین یک راهحل مقیاسپذیری لایه دوم برای بیتکوین است که هدف آن رفع چالشهای مقیاسپذیری زنجیره بلوکی بیتکوین میباشد. این شبکه امکان انجام معاملات فوری و کمهزینه بیتکوین را فراهم میکند و آن را کارآمدتر و در دسترستر برای کاربران میسازد. در مقایسه با تراکنشهای درون زنجیرهای بیتکوین، تراکنشهای شبکه لایتنینگ خصوصی هستند، خارج از زنجیره اتفاق میافتند و تنها نتیجه کلی آنها ثبت میشود.
یکی از مزایای اصلی شبکه لایتنینگ، سرعت و مقرون به صرفه بودن آن است. این شبکه به کاربران امکان میدهد پرداختهای کوچک را از طریق شبکه بیتکوین به شیوهای ساده و مقرون به صرفه ارسال و دریافت کنند. با ایجاد شبکهای از کانالهای پرداخت بین کاربران، شبکه لایتنینگ امکان انجام تراکنشها را بدون پخش هر تراکنش در زنجیره بلوکی فراهم میکند. این امر باعث کاهش ازدحام در زنجیره بلوکی بیتکوین و بهبود مقیاسپذیری تراکنشها میشود.
با این حال، باید توجه داشت که شبکه لایتنینگ هنوز در حال توسعه است و با برخی خطرات امنیتی و تمرکزگرایی مواجه است. در اکتبر امسال، یک آسیبپذیری به نام "حمله چرخه جایگزینی" در شبکه لایتنینگ کشف شد که شامل مکانیزم جایگزینی تراکنش است و ممکن است منجر به از دست دادن وجوه کانال در شبکه لایتنینگ شود. ظهور این روش حمله نگرانیهایی را در مورد امنیت شبکه لایتنینگ ایجاد کرده و منجر به تحقیقات و بهبودهای بیشتر در پروتکلها و پیادهسازیهای آن شده است.
مکانیزم شبکه لایتنینگ
شبکه لایتنینگ بیتکوین از مکانیزم چند امضایی برای تضمین امنیت کانالهای پرداخت استفاده میکند. شرکتکنندگان باید وجوه را قفل کرده و کانالهای پرداخت ایجاد کنند. شرکتکنندگان میتوانند پرداختهای سریع و کمهزینه را در داخل کانال انجام دهند، بدون اینکه نیاز باشد هر بار تراکنشها را به زنجیره بلوکی بیتکوین ارسال کنند. کانال پرداخت صرفاً یک رابطه بین شرکتکنندگان خارج از زنجیره بلوکی بیتکوین است که از طریق امضای مجموعهای از تراکنشها در داخل کانال حاصل میشود و تنها بین دو سر کانال منتشر میشود، بدون درگیر کردن اجماع کل شبکه بیتکوین.
در مورد فرآیند خاص، هنگام باز کردن یک کانال پرداخت، شرکتکنندگان باید یک اسکریپت چند امضایی ایجاد کنند که نیاز به ارائه کلید عمومی هر طرف در کانال دارد، در حالی که تعداد امضاهای مورد نیاز را مشخص میکند، به عنوان مثال، تعریف اسکریپتی که شامل چندین کلید عمومی و منطق تأیید امضا است. هنگام تولید آدرس چند امضایی، این اسکریپت به یک آدرس بیتکوین تبدیل میشود و زیرساخت کانال پرداخت را تشکیل میدهد.
به عنوان مثال، همانطور که در شکل 1 نشان داده شده است، باب و آلیس ابتدا یک آدرس بیتکوین چند امضایی 2 از 2 را به عنوان یک صندوق مشترک در زنجیره ایجاد میکنند. در داخل کانال، آنها میتوانند تراکنشهای تعهدی خارج از زنجیره نامحدودی را برای ثبت وضعیت فعلی تخصیص وجوه انجام دهند. دو طرف میتوانند مذاکره کرده و تراکنشهای تعهدی جدیدی را برای بهروزرسانی وضعیت کانال امضا کنند، بدون اینکه این بهروزرسانیها را به کل شبکه بیتکوین ارسال کنند. زمانی که آنها تصمیم به بستن کانال میگیرند، تراکنش نهایی تسویه در زنجیره، وجوه را بر اساس آخرین تخصیص مذاکره شده توزیع خواهد کرد. این تراکنش تسویه نیاز به امضاهای مشترک باب و آلیس دارد، که اطمینان حاصل میکند وجوه به روشی که در نهایت توافق شده است تخصیص داده میشوند. به این ترتیب، شبکه لایتنینگ کارایی تراکنشهای بیتکوین را بهبود میبخشد، هزینهها را کاهش میدهد، در حالی که ویژگیهای غیرمتمرکز آن را حفظ میکند.
شکل 1: نمودار کانال وضعیت
منبع: https://cypherpunks-core.github.io/bitcoinbook/images/mbc2_1204.png
مکانیزم HTLC
شبکه لایتنینگ بیتکوین همچنین از کانالهای پرداخت مبتنی بر قراردادهای زمانی قفل شده هش شده (HTLCs) برای پیادهسازی یک سیستم کانال پرداخت چند مرحلهای و قابل مسیریابی استفاده میکند. در پیادهسازی، HTLCها نیاز به یک اسکریپت تراکنش پیچیده تعریف شده در یک زبان اسکریپتنویسی دارند تا شرایط هش و قفل زمانی را برآورده کنند. این اسکریپت هنگام باز کردن کانال پرداخت برای مقداردهی اولیه و در طول پرداخت فعال خواهد شد. به این ترتیب، شبکه لایتنینگ بیتکوین کارایی و امنیت را برای پرداختهای بین زنجیرهای به دست میآورد.
HTLC (قرارداد قفل زمانی هش شده) یک قرارداد قفل زمانی هش شده است که یکی از اجزای مهم برای اجرای تراکنشهای بین زنجیرهای در بلاکچین است. HTLC دو کاربرد رایج دارد: تبادلات اتمی بین زنجیرهای و کانالهای پرداخت در شبکه لایتنینگ. HTLC میتواند یک انتقال را قفل کند و شرایط باز کردن قفل را تنظیم کند، مانند ارائه اطلاعات خاص در یک بازه زمانی مشخص. این اطمینان حاصل میکند که وجوه فقط زمانی که شرایط برآورده شوند توسط گیرنده قابل برداشت هستند.
از نظر فنی، یک HTLC یک خروجی اضافی در یک تراکنش تعهدی با یک اسکریپت خروجی منحصر به فرد است. این یک اسکریپت Script حاوی عملیاتهایی مانند OP_HASH160، OP_EQUALVERIFY و غیره است که برای قفل کردن وجوه استفاده میشود، به طوری که فقط با ارائه مقدار پیشتصویر R میتوان آن را باز کرد. این اسکریپت دو مسیر احتمالی دارد. مسیر اول (تعریف شده در OP IF) در صورتی که باب بتواند R را ارائه دهد، وجوه را به باب ارسال میکند. مسیر دوم برای اعمال یک قفل زمانی با استفاده از nLockTime در تراکنش پرداخت است که پس از انقضای قفل، اجازه بازپرداخت به آلیس را میدهد.
OP_IF
OP_HASH160 <Hash160 (R)> OP_EQUALVERIFY
2 <Alice2> <Bob2> OP_CHECKMULTISIG
OP_ELSE
2 <Alice1> <Bob1> OP_CHECKMULTISIG
OP_ENDIF
مثال مسیریابی
در شبکه لایتنینگ، آلیس میخواهد 1 بیتکوین به اریک پرداخت کند، اما هیچ کانال پرداخت مستقیمی بین آلیس و اریک وجود ندارد. بنابراین آلیس پرداخت را از طریق گرههای میانی در شبکه کانال پرداخت (باب، کارول، دایانا) مسیریابی میکند تا یک مسیر پرداخت امن ایجاد کند که به او اجازه میدهد به طور غیرمستقیم 1 بیتکوین به اریک پرداخت کند. مسیریابی پرداخت از HTLCها استفاده میکند - فقط با ارائه "راز" صحیح در یک بازه زمانی مشخص میتوان قفل وجوه را باز کرد و این امر امنیت پرداخت را تضمین میکند.
در این مثال، در مرحله 1، اریک یک راز R (راهحل) تولید میکند و مقدار هش H (معما) را محاسبه میکند، سپس مقدار هش H را به آلیس میدهد.
مراحل 2 تا 5: آلیس، باب، کارول، دیانا و اریک هر کدام به صورت جفتی HTLCها را ایجاد میکنند که نیاز به ارائه R (راهحل) در یک بازه زمانی مشخص برای بازیابی وجوه قفل شده از طرف بالادستی دارد.
مراحل 6 تا 9: اریک R (راهحل) را به دیانا ارائه میدهد تا 1 بیتکوین را بازیابی کند. سپس دیانا با استفاده از R، بیتکوین را از کارول بازیابی میکند و R به همین ترتیب به عقب منتقل میشود تا 1.003 بیتکوین آلیس (که 0.003 بیتکوین آن کارمزد خدمات برای گرههای واسطه است) بازیابی شود.
در این مثال، اگر در مرحله 6 اریک R (راهحل) را در زمان مقرر ارائه نکند، پس از انقضای زمان، وجوه قفل شده در مراحل 2 تا 5 به طور مستقیم باز شده و برگشت داده میشوند.
شکل 2: مثال مسیریابی
منبع: https://cypherpunks-core.github.io/bitcoinbook/images/mbc2_1210.png
حمله چرخه جایگزینی
مکانیسم جایگزینی تراکنش بیتکوین به این معنی است که وقتی یک تراکنش به عنوان قابل جایگزینی علامتگذاری میشود، میتوان آن را قبل از تأیید در یک بلاک با تراکنش دیگری با کارمزد بالاتر در شبکه جایگزین کرد. اگر یک تراکنش کارمزد مطلق بالاتر و نرخ کارمزد بالاتری پرداخت کند، میتواند جایگزین تراکنشهای در انتظار تأیید نشدهای شود که مستقیماً با آن در تضاد هستند. پس از دریافت تراکنش جایگزین، گرهها تراکنش اصلی با نرخ کارمزد پایینتر را از mempool حذف کرده و فقط تراکنش جایگزین را نگه میدارند. مکانیسم جایگزینی تراکنش امکان تنظیم کارمزدهای تراکنش یا سایر پارامترها را قبل از تأیید تراکنش فراهم میکند. اما از این مکانیسم میتوان برای اجرای حملات رد سرویس تراکنش نیز استفاده کرد، مانند جایگزینی مکرر یک تراکنش حیاتی که باعث شکست در تأیید آن میشود. بنابراین، مکانیسم جایگزینی تراکنش راحتی تنظیم تراکنشها را فراهم میکند، اما خطرات سوء استفاده را نیز به همراه دارد.
طبق ایمیل آنتوان ریارد، توسعهدهنده Bitcoin Core، حمله چرخه جایگزینی عمدتاً شامل کانالهای پرداخت در شبکه لایتنینگ بیتکوین است. مهاجم یک تراکنش HTLC-preimage با کارمزد مطلق و نرخ کارمزد بالاتر را برای جایگزینی تراکنش HTLC-timeout گره صادق پخش میکند. در طول جایگزینی، مهاجم میتواند ورودیها یا خروجیهای اضافی را اضافه کند تا اطمینان حاصل شود که تراکنش جایگزین با موفقیت توسط شبکه پذیرفته میشود. این روش حمله ممکن است منجر به خرج دوباره وجوه در کانالهای پرداخت شود، یعنی پس از اینکه گره صادق تراکنش HTLC-timeout را پخش کرد، مهاجم با موفقیت وجوه را از طریق جایگزینی بازیابی میکند. میتوانیم یک مثال ساده برای توضیح ارائه دهیم، مشابه مثال قبلی، با فرض اینکه مسیر به آلیس، باب و اریک ساده شده است و آلیس و اریک برای سرقت بیتکوین باب همدستی میکنند.
مرحله 1: آلیس قصد دارد 1 بیتکوین را از طریق باب به اریک پرداخت کند. آلیس\باب و باب\اریک هر کدام یک HTLC ایجاد میکنند. اریک باید قبل از بلاک 1020 (فرض کنید ارتفاع فعلی 1000 است) R (راه حل) را به باب ارائه دهد، در غیر این صورت باب میتواند 1 بیتکوین قفل شده را بازیابی کند؛ به طور مشابه، باب باید قبل از بلاک 1080 به آلیس پاسخ دهد، در غیر این صورت آلیس میتواند 1 بیتکوین خود را بازیابی کند.
مرحله 2: اریک قبل از بلاک 1020 R (راه حل) را به باب ارائه نکرد. باب یک تراکنش حاوی HTLC-timeout را پخش خواهد کرد. وجوه در این تراکنش به باب بازگردانده خواهد شد.
مرحله 3: اریک تراکنش HTLC-timeout باب را نظارت میکند و آن را با یک تراکنش HTLC-preimage با نرخ کارمزد بالاتر جایگزین میکند. سپس اریک تراکنش دیگری را برای اخراج HTLC-preimage قبلی از mempool آغاز میکند.
مرحله 4: گره باب تراکنش HTLC-timeout را تا بلاک 1080 مجدداً پخش خواهد کرد. اریک میتواند هر بار جایگزینی را آغاز کند. تا بلاک 1080، تراکنش طرف دیگر کانال آلیس تأیید میشود و آلیس بیتکوین قفل شده را بازیابی میکند.
مرحله 5: HTLC-preimage اریک تأیید میشود، بنابراین 1 بیتکوین قفل شده توسط باب به اریک منتقل میشود.
بدین ترتیب، 1 بیتکوین باب به اریک منتقل شد، در حالی که او بیتکوین مورد انتظار از آلیس را نیز دریافت نکرد.
خلاصه
از نوامبر 2023، شبکه لایتنینگ بیش از 16،000 گره لایتنینگ و 5،000 بیت کوین دارد. اگرچه موارد واقعی حمله چرخه جایگزینی تأیید نشده است، این موضوع ضرورت تحقیقات و بهبودهای مداوم امنیتی برای شبکه لایتنینگ را برجسته میکند. آنتوان ریارد همچنین چندین اقدام برای جلوگیری یا کاهش حملات چرخه جایگزینی پیشنهاد کرد، مانند نظارت بر mempool محلی و تراکنشهای منتقل شده، ایجاد شبکههای روکش بین ماینرها و گرههای لایتنینگ، و پخش مجدد فعال تراکنشهای مهلت HTLC برای افزایش هزینههای مهاجم. اما در عین حال، او توقف مشارکت در شبکه لایتنینگ و کار پیادهسازی آن، از جمله هماهنگی راهحلها برای آسیبپذیریهای امنیتی در سطح پروتکل را اعلام کرد.
همانطور که شبکه لایتنینگ مقیاسپذیر میشود، تهدید بالقوه حملات چرخه جایگزینی ممکن است به مانعی در مسیر توسعه آن تبدیل شود و جامعه را مجبور کند تا بیشتر بر تحقیقات و بهبودهای امنیتی تمرکز کند. با این حال، دقیقاً با پرداختن جدی و بهبود مسائل امنیتی است که ممکن است در آینده شاهد حل تدریجی خطرات بالقوه توسط شبکه لایتنینگ باشیم و به یک اکوسیستم سالمتر و قابل اعتمادتر دست یابیم.
درباره CoinEx
CoinEx که در سال 2017 تأسیس شد، یک صرافی ارز دیجیتال جهانی است که متعهد به آسانتر کردن معاملات است. این پلتفرم طیف وسیعی از خدمات از جمله معاملات نقدی و مارجین، معاملات آتی، سواپها، بازارسازی خودکار (AMM حساب)، و خدمات مدیریت مالی را برای بیش از 5 میلیون کاربر در بیش از 200 کشور و منطقه ارائه میدهد. CoinEx از زمان تأسیس خود، با جدیت به اصل خدمات "اولویت با کاربر" پایبند بوده است. با قصد صادقانه پرورش یک محیط معاملاتی رمزارز عادلانه، محترم و امن، CoinEx به کاربران امکان میدهد تا با ارائه محصولات و خدمات آسان برای استفاده، به راحتی به دنیای ارزهای دیجیتال دسترسی پیدا کنند.
منابع
https://cypherpunks-core.github.io/bitcoinbook/
https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2023-October/022032.html
https://lightning.network/lightning-network-paper.pdf
https://github.com/ariard/mempool-research/blob/2023-10-replacement-paper/replacement-cycling.pdf