تاریخ انتشار: ۱۳:۴۷ - ۱۰ دی ۱۴۰۲

حمله چرخه جایگزینی (Replacement Cycle) در شبکه لایتنینگ

شبکه لایتنینگ بیت‌کوین برای افزایش مقیاس‌پذیری لایه ۲ در بیت‌کوین ارائه شده است که هدف آن رفع چالش‌های مقیاس‌پذیری بلاک‌چین بیت‌کوین است. این شبکه امکان انجام تراکنش‌های آنی و کم‌هزینه را فراهم کرده و کارایی و دسترسی آن را برای کاربران بهتر می‌کند. تراکنش‌ها روی شبکه بیت‌کوین به صورت درون زنجیره‌ای هستند، اما تراکنش‌های شبکه لایتنینگ خصوصی و خارج از زنجیره بوده و فقط نتیجه کلی نهایی آن‌ها ثبت می‌شود.

اقتصاد۲۴-شبکه لایتنینگ بیت‌کوین برای افزایش مقیاس‌پذیری لایه ۲ در بیت‌کوین ارائه شده است که هدف آن رفع چالش‌های مقیاس‌پذیری بلاک‌چین بیت‌کوین است. این شبکه امکان انجام تراکنش‌های آنی و کم‌هزینه را فراهم کرده و کارایی و دسترسی آن را برای کاربران بهتر می‌کند. تراکنش‌ها روی شبکه بیت‌کوین به صورت درون زنجیره‌ای هستند اما تراکنش‌های شبکه لایتنینگ خصوصی و خارج از زنجیره بوده و فقط نتیجه کلی نهایی آن‌ها ثبت می‌شود.

از مزایای اصلی شبکه لایتنینگ سرعت و مقرون‌به‌صرف بودن آن است. این شبکه امکان ارسال و دریافت ساده و مقرون‌به‌صرفه پرداخت‌ها در حجم کم روی شبکه بیت‌کوین را برای کاربران فراهم می‌کند. شبکه لایتنینگ با ایجاد شبکه‌ای از کانال‌های پرداخت بین کاربران، امکان انجام تراکنش‌ها بدون الزام ارسال هر کدام از تراکنش‌ها به بلاک‌چین را فراهم می‌کند. اینکار ازدحام روی بلاک‌چین بیت‌کوین را کاهش داده و مقیاس‌پذیری تراکنش‌ها را بهبود می‌دهد.

به هر حال، شایان ذکر است که شبکه لایتنینگ هنوز در حال توسعه است و با ریسک‌های مشخصی در زمینه امنیت و متمرکزسازی روبه‌رو است. به‌تازگی در ماه اکتبر امسال، آسیب‌پذیری به نام «حمله چرخه جایگزینی» در شبکه لایتنینگ کشف شد که مربوط به ساز و کار جایگزینی تراکنش‌ها است و ممکن است به از دست رفتن سرمایه‌های کانال‌ها در شبکه لایتنینگ منجر شود. پیدایش این روش حمله نگرانی‌هایی را پیرامون امنیت شبکه لایتنینگ ایجاد کرده و عاملی برای انجام تحقیقات و بهبودهای بیشتر پروتکل‌ها و پیاده‌سازی‌ها شده است.

ساز و کار شبکه لایتنینگ

شبکه لایتنینگ بیت‌کوین برای تضمین امنیت کانال‌های پرداختی خود از ساز و کار چندامضایی (Multisig) استفاده می‌کند. مشارکت کنندگان برای برقراری کانال پرداخت باید سرمایه‌های خود را قفل کنند. مشارکت کنندگان می‌توانند پرداخت‌های سریع و کم‌هزینه‌ای را درون کانال انجام دهند و نیازی نیست هر بار تراکنش‌ها را برای بلاک‌چین بیت‌کوین ارسال کنند. کانال پرداخت تنها رابطه‌ای بین مشارکت کنندگان و خارج از بلاک‌چین بیت‌کوین است که با امضای مجموعه‌ای از تراکنش‌ها درون کانال به دست می‌آید و تنها بین دو نقطه انتهایی کانال و بدون دخالت اجماع کل شبکه بیت‌کوین برقرار است.

در هر کدام از این فرایندها، وقتی کانال پرداختی باز می‌شود، مشارکت کنندگان باید اسکریپت چندامضایی را ایجاد کنند که به موجب آن هر کدام از طرفین کانال باید کلید عمومی خود را ارائه و در عین حال تعداد مورد نیاز امضاها را مشخص کنند، مثلاً اسکریپتی را تعریف کنند که شامل چندین کلید عمومی و منطق اعتبارسنجی امضاء است. در زمان ایجاد آدرس چندامضایی این اسکریپت به آدرس بیت‌کوین تبدیل می‌شود و زیرساخت کانال پرداختی را شکل می‌دهد.

برای مثال، همانطور که در شکل ۱ نشان داده شده است، باب و آلیس ابتدا یک آدرس بیت‌کوینی چندامضایی به صورت ۲-از-۲ را روی زنجیره به صورت سرمایه‌ای مشترک ایجاد می‌کنند. آن‌ها می‌توانند تعداد نامحدودی تراکنش تعهدی خارج از زنجیره را درون این کانال برای ثبت وضعیت جاری تخصیص سرمایه‌ها انجام دهند. دو طرف می‌توانند با هم تبادل اطلاعات کرده و تراکنش‌های تعهدی جدیدی را برای به‌روزرسانی وضعیت کانال امضاء کنند بدون اینکه نیاز باشد این به‌روزرسانی‌ها را به کل شبکه بیت‌کوین ارسال کنند. وقتی تصمیم بگیرند کانال را ببندند، تراکنش نهایی تسویه درون زنجیره‌ای سرمایه‌ها را مطابق با آخرین وضعیت تخصیص مبادله شده توزیع می‌کند. انجام این تراکنش تسویه نیازمند امضای مشترک باب و آلیس است که تضمین می‌کند سرمایه‌ها مطابق با توافق نهایی انجام شده توزیع می‌شوند. شبکه لایتنینگ به این صورت کارایی تراکنش‌های بیت‌کوینی را بهبود داده، هزینه‌ها را کاهش داده و در عین حال شاخصه غیرمتمرکز بودن خود آن را حفظ می‌کند.

 

ساز و کار HTLC

شبکه لایتنینگ بیت‌کوین هم از کانال‌های پرداخت مبتنی بر قرادادهای با قفل زمانی هش شده (HTLC) برای پیاده‌سازی‌ سیستم کانال پرداخت قابل مسیریابی و مالتی‌هاپ (multi-hop) استفاده می‌کند. در پیاده‌سازی‌ HTLC-ها به اسکریپت تراکنش پیچیده‌ای نیاز داریم که زبان اسکریپت‌نویسی تعریف کننده آن باید توانایی تحقق شرایط هش و قفل زمانی را داشته باشد. از این اسکریپت برای فعال‌سازی فرایند باز کردن کانال پرداختی استفاده شده در زمان پرداخت استفاده می‌شود. به این صورت شبکه لایتنینگ بیت‌کوین کارایی و امنیت لازم برای انجام پرداخت‌های میان‌زنجیره‌ای را به دست می‌آورد.

قرارداد قفل زمانی هش شده یا HTLC  یکی از مولفه‌های مهم برای پیاده‌سازی‌ تراکنش‌های میان‌زنجیره‌ای روی بلاک‌چین است. HTLC دو کاربرد متداول دارد: تبادل‌ها (Swap) اَتمیک (Atomic) میان‌زنجیره‌ای و کانال‌های پرداخت در شبکه لایتنینگ. HTLC می‌تواند فرایند انتقالی را قفل و شرایط قفل‌گشایی آن را مثلاً به صورت ارائه اطلاعاتی مشخص طی مدت زمانی مشخص تنظیم کند. به این صورت تضمین می‌شود که با تحقق آن شرایط فقط گیرنده می‌تواند سرمایه‌ها را برداشت کند.

از نظر فنی HTLC یک خروجی اضافی در تراکنش تعهدی با اسکریپت خروجی منحصر‌به‌فرد است. این اسکریپت شامل عملیات‌هایی چون 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

نمونه مسیریابی

آلیس می‌خواهد در شبکه لایتنینگ ۱ بیت‌کوین را به اریک پرداخت کند اما هیچ کانال پرداخت مستقیمی بین آلیس و اریک وجود ندارد. بنابراین آلیس مسیریابی پرداخت را از طریق نود‌های واسطه در شبکه کانال پرداخت (باب، کارول، دیانا) انجام می‌دهد تا مسیر پرداخت امنی را بسازد و بتواند به صورت غیرمستقیم ۱ بیت‌کوین را به اریک پرداخت کند. در مسیریابی پرداخت از HTLC-ها استفاده می‌شود؛ تنها با ارائه «رمز» («Secret») صحیح طی بازه زمانی مشخص می‌توان سرمایه‌ها را قفل‌گشایی و امنیت پرداخت را تضمین کرد.

در این مثال و مرحله ۱ آن، اریک رمز R (جواب) را ایجاد و مقدار هش H (معما) را محاسبه کرده و سپس مقدار هش H را به آلیس می‌دهد.

مراحل ۲ تا ۵: آلیس، باب، کارول، دیانا و اریک هر کدام به صورت یک به یک HTLC می‌سازند که نیازمند ارائه R (جواب) طی دوره زمانی مشخصی برای بازیابی سرمایه‌های قفل شده از طرف بالادستی است.

مراحل ۶ تا ۹: اریک R (جواب) را برای بازیابی ۱ بیت‌کوین به دیانا می‌دهد. سپس دیانا با R بیت‌کوین را از کارول می‌گیرد و R به همین صورت دست به دست می‌شود تا مقدار ۱٫۰۰۳ بیت‌کوین آلیس (۰٫۰۰۳ بیت‌کوین بابت کارمزد خدمات نود‌های واسطه) بازیابی شود.

در این مثال، اگر در مرحله ۶  اریک R (جواب) را طی زمانی معین ارائه نکند، بعد از اتمام زمان، سرمایه‌های قفل شده در مراحل ۲ تا ۵ به طور مستقیم قفل‌گشایی و بازگردانده می‌شوند.

حمله چرخه جایگزینی

ساز و کار جایگزینی تراکنش بیت‌کوین به زمانی اشاره دارد که تراکنشی به‌عنوان تراکنش قابل جایگزینی مشخص می‌شود و به اینصورت ممکن است قبل از تأیید در بلاک با تراکنش دیگری دارای کارمزد بیشتر جایگزین شود. اگر تراکنشی با کارمزد مطلق و نرخ کارمزد بیشتری ارسال شود می‌تواند جایگزین تراکنش‌های تأیید نشده معوقی شود که به طور مستقیم با آن در تضاد هستند. نود‌ها پس از دریافت تراکنش جایگزین تراکنش اولیه با نرخ کارمزد کمتر را از mempool حذف می‌کنند و فقط تراکنش جایگزین را نگه می‌دارند. ساز و کار جایگزینی تراکنش امکان تغییر کارمزد تراکنش‌ها یا دیگر پارامترهای آن قبل از تأیید تراکنش را فراهم می‌کند. اما می‌توان از این ساز و کار برای پیاده‌سازی‌ حملات منع سرویس تراکنشی مثل جایگزینی مکرر تراکنشی حیاتی نیز استفاده کرد که باعث عدم تأیید آن می‌شود. بنابراین، ساز و کار جایگزینی تراکنش تغییر تراکنش را تسهیل می‌کند اما ریسک‌هایی را هم برای سؤاستفاده به همراه دارد.

طبق متن ایمیل Antonie Riard، توسعه دهنده هسته بیت‌کوین، حمله چرخه جایگزینی عمدتاً مربوط به کانال‌های پرداخت شبکه لایتنینگ بیت‌کوین است. مهاجم تراکنش HTLC-preimage با کارمزد مطللق و نرخ کارمزد بیشتر را ارسال می‌کند تا جایگزین تراکنش واقعی HTLC-timeout نود شود. مهاجم می‌تواند در زمان جایگزینی ورودی‌ها یا خروجی‌های بیشتری را اضافه کند تا مطمئن شود تراکنش جایگزین به طور موفقیت‌آمیزی از سوی شبکه پذیرفته می‌شود. این حمله ممکن است منجر به خرج دوگانه سرمایه‌ها در کانال‌های پرداخت شود، یعنی بعد از اینکه نود واقعی تراکنش HTLC-timeout را ارسال کرد، مهاجم به طور موفقیت‌آمیزی سرمایه‌ها را با جایگزینی بازیابی می‌کند. می‌توانیم مشابه با مثال قبلی نمونه ساده‌ای را در اینجا ارائه کنیم، با این فرض که مسیر ساده‌ای متشکل از آلیس، بابا و اریک را داریم و آلیس و اریک با هم تبانی می‌کنند تا بیت‌کوین‌های باب را بدزدند.

مرحله ۱: آلیس قصد دارد ۱ بیت‌کوین را از طریق باب به اریک پرداخت کند. آلیس|باب و باب|اریک هر کدام یک HTLC می‌سازند. اریک باید قبل از بلاک ۱۰۲۰ (با فرض اینکه بلاک جاری ۱۰۰۰ است) مقدار R (جواب) را به باب ارائه کند، در غیراینصورت باب می‌تواند ۱ بیت‌کوین قفل شده را بازیابی کند؛ به طور مشابه، باب هم باید قبل از بلاک ۱۰۸۰ به آلیس پاسخ دهد و در غیراینصورت آلیس می‌تواند ۱ بیت‌کوین را بازیابی کند.

مرحله ۲: اریک قبل از بلاک ۱۰۲۰ مقدار R (جواب) را به باب ارائه نکرد. باب تراکنشی شامل HTLC-timeout را ارسال می‌کند. سرمایه‌های مربوط به این تراکنش به باب بازپرداخت می‌شوند.

مرحله ۳: اریک تراکنش HTLC-timeout باب را پایش و آن را با یک تراکنش HTLC-preimage دارای نرخ کارمزد بیشتر جایگزین می‌کند. سپس اریک تراکنش دیگری را آغاز می‌کند تا HTLC-preimage قبلی را از mempool بیرون بکشد.

مرحله ۴: نود باب دوباره تراکنش HTLC-timeout را قبل از بلاک ۱۰۸۰ ارسال می‌کند. اریک هر زمانی می‌تواند جایگزینی را انجام دهد. با رسیدن به بلاک ۱۰۸۰، تراکنش طرف دیگر کانال یعنی آلیس تأیید می‌شود و آلیس بیت‌کوین قفل شده را بازیابی می‌کند.

مرحله ۵: تراکنش HTLC-preimage اریک تأیید می‌شود و بنابراین ۱ بیت‌کوین قفل شده از سوی باب به اریک منتقل می‌شود.

پس ۱ بیت‌کوین باب به اریک منتقل می‌شود در حالیکه او بدهی بیت‌کوینی خود از آلیس را هم دریافت نکرد.

خلاصه

تا نوامبر ۲۰۲۳، شبکه لایتنینگ از ۱۶۰۰۰ نود و ۵۰۰۰ بیت‌کوین تشکیل شده بود. گرچه نمونه‌های واقعی از حمله چرخه جایگزینی رخ نداده‌اند اما در اینجا بر ضرورت تحقیق و بهبود امنیتی پیوسته شبکه لایتنینگ تأکید داریم. Antonie Riard چندین معیار را نیز برای جلوگیری یا کاهش اثرات حملات چرخه جایگزینیR پیشنهاد کرده است، از جمله پایش محلی mempool و تراکنش‌های منتقل شده، ساخت شبکه‌های پوششی بین ماینرها و نود‌های لایتنینگ و بازپخش (replaying) فعال تراکنش‌های HTLC-timeout برای افزایش هزینه‌ها برای مهاجمان. اما در عین حال، او اعلام کرد که از مشارکت در شبکه لایتنینگ و کارهای مربوط به پیاده‌سازی‌ آن، از جمله راهکارهای هماهنگی‌سازی برای آسیب‌پذیری‌های امنیتی سطح پروتکل، کنار می‌کشد.

با افزایش مقیاس شبکه لایتنینگ، ممکن است تهدید بالقوه حملات چرخه جایگزینی به مانعی بر سر راه توسعه آن بدل شود و جامعه آن را ملزم به تمرکز بر انجام تحقیقات بیشتر و بهبود امنیتی شبکه کند. اما، دقیقاً با پرداختن جدی و بهبود مسائل امنیتی است که می‌توانیم شاهد حل تدریجی ریسک‌های احتمالی از سوی شبکه لایتنینگ در آینده و دستیابی به اکوسیستمی سالم‌تر و قابل اعتمادتر باشیم.

درباره کوینکس

کوینکس که یک صرافی رمزارز بین‌المللی است در سال ۲۰۱۷ تأسیس شد و تعهد آن تسهیل معامله‌گری است. این پلتفرم انواعی از خدمات شامل معاملات اسپات و مارجین، فیوچرز، سوآپ، بازارسازی خودکار (AMM) و خدمات مدیریت مالی را برای بیش از ۵ میلیون کاربر در بیش از ۲۰۰ کشور و منطقه ارائه می‌کند. کوینکس از زمان تأسیس خود پیوسته به اصل ارائه خدمات خود با «اولویت کاربر» متعهد بوده است. کوینکس با هدف صادقانه پرورش محیطی برای معامله منصفانه، محترمانه و امن رمزارزها، دسترسی راحت به دنیای رمزارزها را با محصولات و خدمات با کاربری آسان برای کاربران فراهم می‌کند.

مراجع

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

ارسال نظر