برگردان پارسی نوشتهی کالی دربارهی هک شبکهی لیکویید:
شبکهی لیکویید دارای قابلیت انجام نوعی تراکنشهای محرمانه است که برای بهبود حریم خصوصی، مقدارها را پنهان میکند. یک نقص در شیوهی درستیسنجی این تراکنشها باعث ایجاد تورم در لیکویید-بیتکوین (L-BTC) شده و هکرها را روا داشته تا کل زنجیرهی جانبی را خالی کنند.
گرههای لیکویید مقدارهای یک تراکنش محرمانه را نمیبینند؛ بنابراین، برای اطمینان از اینکه تراکنش همچنان درست است و باعث ایجاد تورم نمیشود، گرهها چیزی به نام اثبات ترازمندی (balance proof) و اثبات بازه (range proof) را بررسی میکنند.
اثبات ترازمندی نشان میدهد که جمع مقدارهای درونداد با مقدارهای برونداد برابر است؛ یعنی «هر شماری لیکویید-بیتکوین درون میشود همان شمار لیکویید-بیتکوین بیرون میرود».
اما یک نکته وجود دارد. تنها تکیه کردن بر اثبات ترازمندی کافی نیست. اثبات بازه نیز لازم است.
اثبات بازه نشان میدهد که مقدار یک برونداد پنهانشده در یک بازهی مثبت قرار دارد. یعنی یک برونداد درست باید دستکم ۱ لیکویید-ساتوشی و بیشینه 1-64^2 لیکویید-ساتوشی باشد. اثباتهای بازه اطمینان مییابند که نمیتوان «لیکویید-بیتکوین منفی» پدید آورد.
چرا اصلاً چنین چیزی لازم است؟ یادتان باشد که مقدارها پنهان هستند و یک مقدار منفیِ پنهان میتواند بروندادهای مثبتِ افزون بر آن را روا دارد با آن تراز شوند. بدون اثبات بازه، یک تراکنش میتوانست بگوید: «درونداد من ۱ لیکویید-بیتکوین است و دو برونداد بیرون میکشم: یکی با ۴۰۰۰ لیکویید-بیتکوین و دیگری با ۳۹۹۹- لیکویید-بیتکوین.»
این موضوع کمی بعد باعث یک فاجعه خواهد شد.
هنگامی که اثبات ترازمندی، اثبات بازه و دیگر بررسیها با کامیابی انجام شوند، تراکنش روامند انگاشته میشود و میتواند از سازوکار همداستانی عبور کند. با این حال، از آنجا که بهویژه اثبات بازه از دید محاسباتی پرهزینه است، گرههای لیکویید نتیجهی یک اثبات بازهی موفق را در حافظهی خود میاندوزند.
در اصل، گره به خاطر میسپارد: «من این اثبات بازه را پیشتر دیدهام و درست بوده؛ پس همهچیز درست است!»
برای اینکه بتوان همان اثبات بازه را در آینده دوباره شناسایی کرد، باید یک برچسب به آن نسبت داد. به این برچسب کلید حافظهی نهان (cache key) گفته میشود.
همین کلید حافظهی نهان سرچشمهی واقعی این نقص بود.
شیوهای که این کلید حافظهی نهان ساخته میشد، دو تراکنش گوناگون را روا میداشت تا یک کلید حافظهی نهان یکسان داشته باشند. در اصل، یک تراکنش درست (۱ لیکویید-بیتکوین درونداد ۱ لیکویید-بیتکوین برونداد) همان کلید حافظهی نهانی را داشت که یک تراکنش نادرست (۱ لیکویید-بیتکوین درونداد ۴۰۰۰ لیکویید-بیتکوین برونداد) داشت.
هک از اینجا آغاز شد:
مهاجمان نخست تراکنش درست (۱ لیکویید-بیتکوین درونداد ۱ لیکویید-بیتکوین برونداد) را فرستادند. گرههای لیکویید این تراکنش را با کامیابی بررسی کردند، یک کلید حافظهی نهان به نام REKT ساختند و آن را در حافظهی نهان خود ذخیره کردند.
سپس مهاجمان با دقت یک تراکنش دوم و نادرست با درونداد ۱ لیکویید-بیتکوین و برونداد ۴۰۰۰ لیکویید-بیتکوین و همان کلید حافظهی نهان REKT ساختند.
بهجای اینکه گرههای لیکویید تراکنش دوم را بررسی کنند و بفهمند که این تراکنش در حال بیرون کشیدن پول از هیچ است، آن را در حافظهی نهان خود پیدا کردند و گفتند: «هی، من این تراکنش را پیشتر دیدهام؛ همهچیز درست است.»
و همین باعث ایجاد تورم شد.
مهاجمان سپس ۴۰۰۰ لیکویید-بیتکوین خود را دادند و ۴۰۰۰ بیتکوین را به زنجیرهی اصلی بیتکوین منتقل کردند.
کانال ترجمهی مقالههای بیتکوین
Post #587
708
ترجمهی مقالههای بیتکوین هکرها تاکنون حدود ۳۴۰۰ بیتکوین (کمابیش ۸۵٪ بیتکوینهای ربودهشده) رو بازگردوندند. کالی، یکی از توسعهدهندگان بیتکوین و نوستر دربارهی شیوهی هکی که بهتازگی در شبکهی لیکویید رخ داده نوشته (البته این بیشتر گمانهزنی دربارهی سازوکار هکه و توضیح رسمی از سوی…Telegram ترجمهی مقالههای بیتکوین Admin: @m_gatmiri https://linktr.ee/m_gatmiri X(Twitter): https://x.com/bitcoinarticles Youtube: youtube.com/@bitcoinarticlesfarsi Donations: coinos.io/majid
- ❤ 3
- 👏 2
- 👍 1
- 🤯 1