پنج هک جالب توجه ارزهای رمزنگاری شده – قسمت سوم
مترجم: اکرم سبزمکان
در قسمت قبل دیدیم که Mt. Gox، پس از بررسیهای بسیار دریافت که مورد حمله انعطافپذیری (Malleability) قرار گرفته است.
انعطافپذیری (Malleability) تراکنش چیست؟
قبل از پرداختن به مفهوم آن، یک کد ساده از تراکنش بیتکوین را بررسی کنیم.
شکل زیر، یک تراکنش را به فرم کد نمایش میدهد. فرض کنید آلیس می خواهد 0.0015 بیتکوین را برای باب ارسال کند. برای انجام این کار، 0.0015770 بیتکوین را به عنوان ورودی میفرستد. جزئیات تراکنش به صورت زیرخواهد بود:
اولین چیزی که میبینید، به این شکل خواهد بود:
که نام تراکنش یا به عبارت دیگر هش ورودی و خروجی است.
Vin_sz تعداد دادههای ورودی است، چون آلیس اطلاعات را فقط با استفاده از یکی از معاملات قبلی خود ارسال میکند، این عدد 1 است.
Vout_sz برابر 2 است زیرا تنها خروجی، باب و مقداری است که آلیس به عنوان باقیمانده پس میگیرد.
این داده ورودی است :
آلیس تنها از یک تراکنش ورودی استفاده میکند، به همین دلیل مقدارvin_sz برابر یک است.
در زیرِ دادههای ورودی، امضای دادههای او قرار دارد که در ادامه باید آن را به خاطر داشته باشید.
شکل زیر دادههای خروجی را نشان میدهد:
اولین بخش این دادهها نشاندهنده این است که باب ۰٫۰۰۱۵ بیتکوین دریافت میکند. بخش دوم نیز نشان میدهد آلیس ۰٫۰۰۰۰۵۱۲ بیتکوین را بهعنوان باقیمانده دریافت میکند.
به یاد دارید که اطلاعات ورودی ما 0.0015770 بیتکوین بود؟ این بیشتر از «0.0015 + 0.00005120» است. اختلاف این دو، کارمزدی است که ماینرها دریافت میکنند. این ساختارِ یک تراکنش ساده است.
حال قبل از اینکه بفهمیم انعطافپذیری یک تراکنش چیست، باید یک نکته دیگر را نیز بدانید: بلاکچین به منظور تغییرناپذیری، از طریق توابع هش رمزنگاری، ایجاد شده است. این بدین معنی است که اگر دادهای در بلاکچین قرار گیرد، هیچگاه قابل تغییر نیست. این ویژگی به تنهایی به ارزهای مبتنی بر بلاکچین امنیت بیحد و مرزی میدهد.
اما با این حال راه گریزی وجود دارد.
اگر دادهها قبل از قرار گرفتن در بلاکچین، دستکاری شوند، چه؟ حتی اگر متوجه دستکاری شوید، بعد از ورود آنها به بلاکچین، هیچ کاری نمیتوان کرد. این اتفاق، انعطافپذیری تراکنش نامیده میشود.
حال چگونه میتوان دادهها را دستکاری کرد؟
امضای دادهها را به خاطر دارید؟ به نظر میرسد، امضای دادهها، میتواند دستکاری شود. این کار به نوبه خود میتواند شناسه تراکنش را تغییر دهد. در حقیقت، میتوان کاری کرد که گویی معامله اصلا انجام نشده است. بگذارید این اتفاق را در قالب یک مثال ببینیم.
فرض کنید باب از آلیس میخواهد که برایش 3 بیتکوین ارسال کند. آلیس 3 بیتکوین را به آدرس عمومی باب میفرستد و منتظر تایید آن توسط ماینرها میشود. در حالی که تراکنش در صف انتظار است، باب از انعطافپذیری تراکنش برای تغییر امضای آلیس استفاده کرده و شناسه تراکنش را تغییر میدهد.
حالا این احتمال وجود دارد که این تراکنش قبل از تراکنش آلیس تایید شود، با این کار تراکنش آلیس بازنویسی میشود. هنگامی که باب 3 بیتکوین خود را میگیرد، می تواند به راحتی به آلیس بگوید که 3 بیتکوینی را که از او طلبکار بوده، دریافت نکرده است. آلیس نیز که میبیند تراکنشش انجام نشده، آن را دوباره ارسال میکند. در نتیجه، باب به جای 3 بیتکوین، 6 بیتکوین دریافت خواهد کرد.
این دقیقا همان چیزی است که در هک Mt. Gox ، اتفاق افتاد. به دلیل سوء مدیریت شدید و عدم وجود برنامههای مقابلهای، حدود 473 میلیون دلار بیتکوین، که تقریبا 7 درصد از عرضه بیتکوین در جهان بود، از این سیستم ربوده شد.
پیامد
زمان وقوع حمله Mt. Gox بسیار بد بود. چرا که بیتکوین به آرامی در جریان اصلی قرار گرفته بود. این نگرانی وجود داشت که بعد از حمله Mt. Gox حداقل 4-5 سال طول بکشد تا اعتماد مردم به سیستم بازگردد. همانطور که در گراف زیر نشان داده شده است، ارزش بیتکوین به شدت کاهش یافت:
Gox اعلام ورشکستگی کرد و کمی بعد فهمید، پول دزدیده شده، توسط پلتفرم معاملاتی دیگری به نام BTC-e پولشویی شده است. مالک BTC-e ، الکساندر وینیک (Alexander Vinnik) در یونان دستگیر شد. او متهم به پولشویی پولهای Mt. Gox از طریق BTC-e و Tradehill، یک پلتفرم معاملاتی، دیگر بود. در صورت اثبات این اتهام او باید ۵۵ سال را در زندان سر کند.
خوشبختانه بیتکوین از این حادثه گذر کرده و باقدرت در حال رشد است.
منبع: blockgeeks
Leave a Reply