آزمایش Nethermind: افزایش سقف validation در EIP-8141 چه خطر DoS دارد؟

چرا مهم است

اگر با validation در Ethereum کار می‌کنی، این آزمایش نشان می‌دهد افزایش سقف gas فقط مسئله پشتیبانی از امضاهای پرهزینه نیست. پردازش بدون پرداخت می‌تواند با پردازش block بر سر CPU رقابت کند.

قبل از خواندن، این‌ها را بدان۴ مفهوم
Node

نرم‌افزاری متصل به شبکه که داده‌های blockchain را دریافت و بررسی می‌کند و در پردازش و انتشار آن‌ها مشارکت دارد.

بیشتر: Node

mempool

محل نگهداری transaction‌های پذیرفته‌شده در یک Node که هنوز داخل block قرار نگرفته‌اند.

در حال نگارش: mempool

gas

واحد اندازه‌گیری کار محاسباتی عملیات در Ethereum که برای تعیین بودجه اجرا به کار می‌رود.

در حال نگارش: gas

Denial of Service

حمله‌ای که با مصرف منابع یک سامانه، انجام کار عادی آن یا ارائه خدمت به درخواست‌های سالم را مختل می‌کند.

در حال نگارش: Denial of Service

پژوهشگران Nethermind بررسی کرده‌اند که افزایش سقف validation بدون پرداخت در EIP-8141 چقدر می‌تواند پردازش block را مختل کند. مقدار فعلی MAX_VERIFY_GAS برابر با ۱۰۰ هزار gas است؛ سقفی که برای برخی کاربردهای حریم خصوصی مبتنی بر Groth16 و بعضی امضاهای post-quantum کافی نیست.

در transaction‌های معمول Ethereum،؜ بررسی امضا هزینه‌ای کم و ثابت دارد. اما در frame transaction‌های EIP-8141،؜ بررسی می‌تواند شامل اجرای کد دلخواه EVM در VERIFY frame باشد. Node پیش از پذیرش transaction در mempool باید بخش آغازین آن را تا تعیین پرداخت‌کننده شبیه‌سازی کند. اگر validation شکست بخورد، کسی هزینه این پردازش را نمی‌پردازد. همین ویژگی مسیر یک حمله Denial of Service را باز می‌کند: مهاجم تمام بودجه validation را مصرف می‌کند و سپس عمداً شکست می‌خورد.

آزمایش روی سه دستگاه، با محدودکردن پردازش به یک CPU core به‌عنوان بدترین حالت، انجام شد. پژوهشگران سقف‌های ۱۰۰ تا ۵۰۰ هزار gas را با دو نوع بار بررسی کردند: حلقه‌های hashing در EVM و مجموعه‌ای از امضاهای secp256k1. معیارها شامل تأخیر واردکردن و ساختن block و سهم transaction‌های سالم پذیرفته‌شده بود.

بدون محافظت داخل client،؜ کندترین دستگاه فقط تا حدود ۱۵ میلیون gas در ثانیه، تأخیر اضافی واردکردن block را زیر ۲۵ میلی‌ثانیه نگه داشت. با توجه به اینکه Nethermind از هر اتصال حدود ۱۰۰ transaction ناموفق در ثانیه پردازش می‌کند، در این نرخ فقط سقف فعلی ۱۰۰ هزار gas در محدوده تعیین‌شده باقی ماند.

راهکار آزمایش‌شده این بود که هنگام پردازش block،؜ validation جدیدی برای frame transaction‌های دریافتی از شبکه آغاز نشود. با این تغییر، تأخیر اضافی واردکردن block روی همه دستگاه‌ها به حدود ۲ میلی‌ثانیه یا کمتر رسید و سقف ۳۰۰ هزار gas در نرخ ۱۰۰ transaction در ثانیه، زیر بودجه ۲۵ میلی‌ثانیه باقی ماند.

بااین‌حال، فشار حمله از بین نرفت و به mempool منتقل شد. زیر همین بار، فقط ۱۲ تا ۲۷ درصد frame transaction‌های سالم پذیرفته شدند؛ سهم کندترین دستگاه ۱۲ درصد بود. بنابراین نتیجه آزمایش میان حفظ زمان پردازش block و پذیرش transaction‌های سالم تفاوت می‌گذارد.

نکته کلیدی

در خواندن این نتیجه، زمان پردازش block را از پذیرش transaction جدا کن. محافظت آزمایش‌شده اولی را حفظ کرد، اما زیر حمله هنوز فقط ۱۲ تا ۲۷ درصد frame transaction‌های سالم وارد mempool شدند.

خواندن مقاله اصلی (در زبانه‌ی جدید باز می‌شود)
برچسب‌ها (۱)