اغلب به بیت کوین یک سرویس برچسب زمانی (timestamp) ایمن گفته میشود. ما هرگز یک سابقه ثبت جهانی با برچسبهای زمانی مورد اطمینان نداشتیم، پس این تعریف از کجا آمده است؟ این تعریف به طور کل به دلیل ترکیب گواه اثبات کار با چند قانون ساده است که ماینر باید آنها را رعایت کند.
تو صرافی ارز پلاس میتونی فقط با ۱۰ هزار تومان و با کارمزد صفر، همه ارزهای دیجیتال رو معامله کنی!
بدین ترتیب بیت کوین میتواند عرضه کوینهای جدید را کنترل کند. در غیر این صورت، بیت کوین با تورم سریع هنگام افزایش هشریت مواجه خواهد شد. اما این ویژگی، کاربردهای بسیاری را برای پروتکل بیت کوین به همراه دارد و همچنین به کاربران امکان میدهد تا از بیت کوین به عنوان ذخیره اطلاعاتی برای سرویسهای دیگر استفاده کنند. از آنجایی که اطمینان کاملی از این موضوع داریم چون برچسبهای زمانی در محدوده مورد نظر قرار میگیرند و تضمین ریاضیاتی از میزان انرژی مورد نیاز برای بازنویسی سابقه بلاک چین داریم، در نتیجه بیت کوین منبع مناسبی برای برچسب زمانی اطلاعات است. اما این برچسب زمانی تا چه حد معتبر و مطمئن است؟
انعطافپذیری برچسب زمانی بیت کوین
به منظور آنکه محدوده زمانی هدر بلاک توسط نودها معتبر قلمداد شود، باید دو معیار را داشته باشد:
- زمان آن کمتر از دو ساعت بعد از زمان کنونی رایانه شما باشد.
- بیشتر از میانگین برچسبهای زمانی ۱۱ بلاک قبلی باشد.
قانون اول بسیار منطقی است. مشخصا نمیخواهیم کسی مدعی شود که از آینده آمده است و رد چنین ادعایی توسط نودها بسیار آسان است، زیرا همه ما در یک توافق کلی درباره زمان کنونی قرار داریم. روشهای مختلفی برای بررسی زمانی کنونی وجود دارد، هرچند یکی از ابزارهای محبوب رایانهها برای همگامسازی ساعت خود، از طریق پروتکل زمان شبکه است.
هرچند اطمینان از این موضوع که زمان کنونی، فاصله بسیار زیادی با زمان مشخص ندارد دشوارتر است. این موضوع به دلیل آن است که نمیتوانیم اینطور فرض کنیم که یک نود، بلاک را نزدیک به زمان ایجاد شدن خود تایید کند. نودها باید بتوانند از شبکه خارج و مجددا به آن ملحق شوند. اگر بلاکهای طی چند ساعت پس از زمان کنونی ایجاد شوند، نودی که فاصله بسیار زیادی از ابتدای زنجیره دارد شروع به رد کردن بلاکها میکند.
ساتوشی ناکاموتو در وایت پیپر بیت کوین نوشته است:
نودها میتوانند به خواست خود از شبکه خارج شده و مجددا به آن ملحق شوند و زنجیره گواه اثبات کار را به عنوان مدرکی از اتفاقات طی مدت عدم حضور خود بپذیرد.
شاید اینطور به نظر برسد که به هیچگونه قانونی نیاز نباشد که برچسب زمانی یک بلاک باید پس از برچسب زمانی بلاک قبلی باشد. اگر به این موضوع فکر کنید شاید به این نتیجه برسید که چنین قانونی منجر به ایجاد مشکلاتی میشود. اگر ماینر بلاکی با برچسب زمانی تقریبا ۲ ساعت بعد ایجاد کند، بلاک بعدی باید بیش از دو ساعت بعد باشد و اصلاح زمان میانگین ۱۱ بلاک قبلی برای سایر ماینرها دشوارتر خواهد شد.
همچنین این موضوع را به یاد داشته باشید اگرچه انتظار میرود تقریبا هر ۱۰ دقیقه یک بلاک ایجاد شود، اما تضمینی برای این موضوع وجود ندارد. ایجاد بلاکها میتواند از چند میلی ثانیه تا چندین ساعت طول بکشد. اگرچه انتظار میرود زمان میانگین ۱۱ بلاک قبلی یک ساعت قبل باشد، اما این زمان میتواند کمتر یا بیشتر شود.
افزایش مدت زمان برچسب زمانی
اگر به این موضوع فکر میکنید که عامل مخرب چگونه میتواند برچسب زمانی قابل قبول را افزایش دهد، میتوان گفت که کاملا واضح است هیچ عامل مخربی نمیتواند برچسب زمانی را بیش از ۲ ساعت بعد افزایش دهد و مهم نیست که چه مقدار توان هشینگ در اختیار دارد. هرچند، حملهکننده با توان هشینگ کافی میتواند با صدور بلاکهایی با برچسبهای زمانی تقریبا معتبر که فقط یک ثانیه پس از زمان میانگین ۱۱ بلاک قبلی است، سرعت پیشرفت “زمان بیت کوین” را کاهش دهد.
آیا پاداش یا مشوقی برای انجام این کار وجود دارد؟ در موارد شدید، یک حمله انحراف زمانی (time warp attack) مشوقهای مالی کوتاهمدت ارائه میدهد، اما مشخص نیست که صرفا به تاخیر انداختن چند ساعته برچسبهای زمانی چه مشوقی میتواند ارائه دهد. هرچند با توجه به اینکه سایر پروتکل را میتوان بر بستر بین کوین ایجاد کرد (نظیر شبکه لایتنینگ) احتمال وجود پروتکلهای دیگر در آینده وجود خواهد داشت که میتوانند بازیچه تاخیر در پیشرفت برچسب زمانی قرار بگیرند.
طولانی شدن زمان توان هش
از آنجایی که اولین زمان بلاک معتبر بر اساس زمان میانگین ۱۱ بلاک قبلی است، ماینر مخرب باید بلاکهای بسیار زیادی ایجاد کند تا تاخیر قابل توجهی بر MTP اعمال کند.
شرایطی را تصور کنید که تمام ماینرها از طریق NTP همگامسازی (sync) شده باشند، اما یک ماینر مخرب وجود دارد که در صدد طولانی کردن زمان میانگین ۱۱ بلاک قبلی است.
یک نکته کاملا مشخص است: استفاده از برچسب زمانی حد وسط (مدیان) ۱۱ بلاک قبلی به جای استفاده از میانگین، یک تصمیم هوشمندانه از جانب ساتوشی ناکاموتو بود زیرا امکان دستکاری میانگین بیشتر است. روش دیگر بیان “زمان سپری شده مدیان” این است که اگر برچسبهای زمانی به ترتیب مشخص شده باشند، این موضوع اساسا به معنای برچسب زمانی ششمین بلاک قبلی است. اگر برچسبهای زمانی به ترتیب دستهبندی نشده باشند، الگوریتم ترتیب آنها را اصلاح میکند. بدین ترتیب، اگر میخواهید تاثیر غیرقابل چشمپوشی بر این مقدار بگذارید باید ۶ بلاک از ۱۱ بلاک قبلی را حل و ایجاد کرده باشید. به منظور انجام چنین حملهای، باید ۵۵ درصد توان هشینگ را در اختیار داشته باشید که این موضوع به معنای از بین بردن یکی از مولفههای اصلی امنیت بیت کوین است. اما ماینری با توان هش کمتر همچنان میتواند در صورت خوششانس بودن این حمله را انجام دهد.
یافتن و ایجاد ۶ بلاک از ۱۱ بلاک قبلی تا چه حد دشوار است؟
احتمال اینکه ماینر مورد نظر بتواند بلاک بعدی را حل کند اساسا برابر با درصد توان هش او از کل هشریت شبکه است. در نتیجه، اگر فقط یک درصد هشریت در اختیار داشته باشید، احتمال ایجاد ۶ بلاک از ۱۱ بلاک قبلی برابر با یک تقسیم بر دو میلیارد ( یک دو میلیاردم) است. اگر فقط یک درصد هشریت را در اختیار داشته باشید بیش از ۴۳,۰۰۰ سال طول میکشد تا ۶ بلاک از ۱۱ بلاک قبلی را ایجاد کنید.
فرمول کلی برای زمان انتظار برای انجام حمله طولانیتر کردن زمان بلاک به صورت زیر خواهد بود:
(1 / (462 * (% hashrate⁶ * (1- % hashrate)⁵))) / 144 blocks/day = # days
همانطور که مشاهده میکنید، برای انجام چنین حملهای باید یک استخر ماینینگ بسیار بزرگ با حداقل ۱۰ درصد هشریت کل شبکه در اختیار داشت.
حداکثر مقدار تاخیر
هرچند، به منظور اعمال حداکثر تاخیر بر روی MTP، ماینر باید ۶ بلاک پشتسر هم را حل کند. اگر ۶ بلاک از ۱۱ بلاک قبلی به ترتیب نباشند، شکاف زمانی ایجادشده توسط سایر ماینرها، ماینر مخرب را مجبور میکند تا برچسب زمانی بلاک آنها را بیش از یک ثانیه پس از یکدیگر تعیین کند، زیرا ماینرهای درستکار برچسبهای زمانی دقیقتری در بلاک خود قرار میدهند و MTP هر بلاک جهش چشمگیری خواهد داشت. حل کردن ۶ بلاک پشت سر هم تا چه حد دشوار است؟
اگر مجددا فرض کنیم که ماینر یک درصد هشریت شبکه را در اختیار داشته باشد، احتمال ایجاد ۶ بلاک پشت سر هم تقریبا یک در یک تریلیون (یک تریلیونم) است. اگر یک درصد هشریت را در اختیار داشته باشید، یافتن ۶ بلاک پشت سر هم تقریبا ۲ میلیون سال طول میکشد.
فرمول کلی این مورد به صورت زیر خواهد بود:
(1 / % hashrate⁶ ) / 144 blocks/day = # days
این حمله از حمله قبلی حتی دشوارتر است و به بیش از ۲۰ الی ۳۰ درصد هشریت کل شبکه نیاز دارد تا زمان انجام آن منطقی باشد. احتمال وقوع این مورد بسیار اندک است و در صورت انجام آن، کاربران متوجه آن میشوند. آخرین بار که چنین حملهای انجام شد در ماه جولای ۲۰۱۴ توسط Ghash بود که بیش از ۴۰ درصد توان هش را برای مدتی در اختیار داشت و حتی در یک بازه کوتاه، توان هش آن به ۵۱ درصد نیز رسید. این موضوع ۹ ماه قبل نیز رخ داد که طی آن، BTC Guild تقریبا نیمی از توان هش را در اختیار داشت. اگر ۵۰ درصد توان هش را در اختیار داشته باشید، احتمال ایجاد ۶ بلاک پشت سر هم برابر با یک در ۶۴ میشود. اگر ۵۰ درصد هشریت را در اختیار داشته باشید، یافتن ۶ بلاک پشت سر هم تقریبا ۱۲ ساعت طول میکشد.
این موضوع مشخص است که طولانی کردن مدیان زمان سپری شده در مقیاس بلندمدت بدون داشتن بخش زیادی از توان هش امکانپذیر نیست، اما با صبر و شانس کافی در کوتاهمدت تا چند ساعت میتوان این زمان را طولانیتر کرد. اگر فرض کنید که سایر ماینرها در خصوص برچسب زمانی خود دقیق هستند، مدیان زمان سپری شده تقریبا یک ساعت قبل میشود، هرچند بر اساس متغیر بودن بلاکهای پیدا شده این زمان میتواند بیشتر باشد. اگر بتوانید ۶ بلاک با برچسب زمانی یک ساعت قبل به علاوه ۱، ۲ و ۳ ثانیه پیدا کنید، در ششمین بلاک MTP تقریبا ۲ ساعت قبل میشود. اگر شرایطی را در نظر بگیریم کن فاصله زمانی بلاکها یک ساعت است، MTP برابر با ۶ ساعت قبل میشود.
با امکانپذیر ساختن مقدار منطقی انعطافپذیری در برچسبهای زمانی بلاک و با توجه به زمان مدیان بلاکهای اخیر، به الگوریتمی دست مییابیم که دستکاری آن بسیار دشوار است.
انجام مجدد حمله انحراف زمان
اگر حملهکننده بیش از ۵۰ درصد توان هش شبکه را در اختیار داشته باشد و بخواهد زمان بیت کوین را طولانیتر کند و به عبارتی در آن تاخیر به وجود آورد چه اتفاقی رخ میدهد؟ در این صورت، حملهکننده میتواند اقدامات ناخوشایندی انجام دهد. این ماینر مخرب میتواند از افزایش بیش از یک ثانیهای برچسب زمانی هر بلاک جدید جلوگیری کند. اگر حملهکننده به مدت کافی این کار را انجام دهد، میتواند منطق تنظیم سختی ماینینگ را تغییر داده و آن را تا ۷۵ درصد کاهش دهد. در آخر، با کاهش چشمگیر سختی ماینینگ، حملهکننده میتواند در بازه زمانی مورد نظر خود هر مقدار که بخواهد بلاکهای جدید ایجاد کند و در نتیجه پاداش ماینینگ بیشتر از حد انتظار دریافت کند. یک حمله انحراف زمان موفق میتواند منجر به این موضوع شود که بیت کوینهای باقی مانده طی ۱۸.۷ روز استخراج شوند. چنین شرایطی را در شبکه آزمایشی سوم بیت کوین مشاهده کردیم، به طوری که به دلیل وجود یک باگ در تنظیم سختی، این شبکه آزمایشی طی ۸ سال ۱,۴۸۲,۸۷۸ بلاک ایجاد کرده است که ۳۵۰ درصد بیشتر از حد انتظار است.
حملههای انحراف زمان موضوع جدیدی نیست. چنین حملهای ابتدا برای کوینی به اسم Geist Geld در سال ۲۰۱۱ رخ داد و به عنوان نوعی از حمله ۵۱ درصد بیان شد.هدف Geist Geld آزمایش سقف نرخ تولید بلاک از طریق زمانهای بلاک بسیار کوتاه و همچنین واکنش یک ارز دیجیتال به نرخ ثابت تولید بود.
وایت کوین (Whitecoin) نیز در سال ۲۰۱۴ با حمله انحراف زمان مواجه شد. در سال ۲۰۱۸ نیز Verge شاهد چنین حملهای بود و پس از ۶ هفته مجددا این حمله را تجربه کرد. به طور کل، ارزهای دیجیتال که توان هش اندکی برای نوع خاصی از سختافزار دارند در مقابل حمله انحراف زمان آسیبپذیر هستند.
نکته جالب این است که اگرچه انحراف زمان اغلب به نوعی حمله گفته میشود، اما بعضی از افراد نشان دادهاند که میتوان از آن برای کاربردهای مورد نظر خود استفاده کنند. در سال ۲۰۱۵، ویتالیک بوترین روشی را برای افزایش سرعت بلاکها از طریق سافت فورک و در نتیجه افزایش ظرفیت درون زنجیرهای عنوان کرد. در سال ۲۰۱۸، مارک فرایدنباخ (Mark Friedenbach) یکی از توسعهدهندگان بیت کوین، پروپوزالی برای استفاده از این واکنش ارائه داد تا عملکرد جدیدی به بیت کوین اضافه کند. فرایدنباخ در پروپوزال خود بیان کرد که روش او، مقیاسپذیری تراکنشها تا ۳۵۸۴ برابر سطح کنونی، تغییر الگوریتم گواه اثبات کار به صورت پشتیبانی از نسخه قبلی، شاردینگ، تخفیف کارمزد و کاهش پروتکلهای پیش نیاز برای تراکنشهای محرمانه، میمبل ویمبل، خرج کردنهای ناشناس و زنجیرههای فرعی را امکانپذیر میسازد.
نتیجه گیری
امنیت برچسب زمانی بیت کوین و قوانین ساده برای محدودسازی مدت برچسب زمانی قابل قبول، ۱۰ سال است که علیرغم ضعفهای شناخته شده همچنان پابرجاست. میدانیم که توطئه ۵۱ درصدی ماینرها میتواند در شبکه اختلال ایجاد کند، اما این موضوع هرگز رخ نداده است، زیرا مشوقها و پاداشهای این موضوع مطابق میل ماینرها نیست. ماینرهای منطقی، سود کوتاهمدت را به غاز تخم طلا ترجیح نمیدهند.