ارتباطات و فناوري اطلاعاتپرداخت الکترونیک

چکش خواری تراکنش های بیت کوین یعنی چه و چه راهکاری برای آن وجود دارد؟

به گزارش پایگاه خبری آرمان اقتصادی،

در سال ۲۰۱۴ بزرگترین صرافی بیت کوین Mt.Gox نام داشت و حدود ۷۰ درصد معاملات بیت کوین در این صرافی انجام می‌شد. در فوریه ۲۰۱۴ مبادلات Mt.Gox به حالت تعویق درآمدند، و وبسایت و سرویس صرافی آن بسته شدند. در آپریل ۲۰۱۴ روند انحلال این صرافی که در توکیوی ژاپن تاسیس شده بود، آغاز گردید. Mt.Gox اعلام کرد که حدود ۸۵۰ هزار بیت کوین متعلق به مشتریان صرافی، که در آن زمان ارزشی در حدود ۴۵۰ میلیون دلار داشتند، احتمالا به سرقت رفته است. در نتیجه این سرقت بزرگ، یکی از بزگترین سقوط های قیمت بیت کوین اتفاق افتاد. در ابتدا اعلام شد که این تعداد بیت کوین در اثر سرقت، کلاهبرداری، سوءمدیریت و یا ترکیبی از آن‌ها از دست رفته اند. در سال ۲۰۱۵ یک شرکت امنیتی ژاپنی اعلام کرد که اکثر بیت کوین ها به تدریج از سال ۲۰۱۱ به صورت مستقیم از کیف پول آنلاین این شرکت به سرقت رفته‌اند.

Mt.Gox مدعی بود که این سرقت در نتیجه وجود باگی در بیت کوین انجام شده است. باگی که تا پیش از آن کسی ازش مطلع نبود و از آن استفاده نکرده بود و اکنون به نام چکش خواری تراکنش های بیت کوین (Transaction Malleability) شناخته می‌شود. در این مقاله قصد داریم به بررسی این باگ نرم افزاری بیت کوین، تبعات و راه حل آن بپردازیم.

همچنین بخوانید

برای درک بهتر چکش خواری تراکنش های بیت کوین، ابتدا باید با ساختار تراکنش های بیت کوین آشنا شوید. به این منظور پیشنهاد می‌شود ابتدا این مقاله را در مورد تراکنش‌ های بیت کوین مطالعه کنید.

چکش خواری تراکنش های بیت کوین چیست؟
چکش خواری تراکنش های بیت کوین

در یک تراکنش بیت کوین، تمام اطلاعات موجود در تراکنش از قبیل مقادیر خروجی‌های تراکنش (مبلغ تراکنش)، آدرس گیرنده، کلیدعمومی فرستنده و … از طریق امضای دیجیتال (Digital Signature) محافظت می‌شوند و با استفاده از آن هر کسی می‌تواند صحت اطلاعات موجود در تراکنش را تایید کند. یعنی اگر هر کدام از اطلاعات موجود در تراکنش کوچکترین تغییری کنند آنگاه دیگر با امضای دیجیتال سازگار نخواهند بود و چون امضای دیجیتال با استفاده از کلید خصوصی فرستنده بوجود آمده است، هر کسی با دیدن یک تراکنش می‌تواند تایید کند که اطلاعات موجود در آن تراکنش توسط فرستنده آن (کسی که به کلید خصوصی دسترسی داشته) تعیین شده‌اند و کسی این اطلاعات را تغییر نداده است.

شناسه تراکنش (Transaction ID)

هر تراکنش بیت کوین یک شناسه منحصر به فرد (Transaction ID) دارد که از هش (Hash) تمام اطلاعات موجود در تراکنش به دست می‌اید. یعنی با کوچکترین تغییر در هرکدام از اجزای تراکنش، هش آن تغییر می‌کند و در نتیجه Transaction ID عوض می‌شود. همانطور که گفتیم امضای دیجیتال تمام اطلاعات تراکنش را از تغییر مصون نگه می‌دارد، اما اگر دقیق‌تر بخواهیم بگوییم تمام اطلاعات موجود در تراکنش به جز خودش! می‌توان با یک تغییر جزئی در امضای دیجیتال، به نحوی که کارکرد آن تغییر نکند و کماکان با اطلاعات موجود در تراکنش مرتبط باشد، Transaction ID را تغییر داد. برای درک بهتر این موضوع فرض کنید امضای دیجیتال که در اصل یک رشته طولانی از اعداد و حروف است، عددی مثل ۵ باشد، حال اگر آن را به ۰۵ تغییر دهیم به لحاظ ریاضی تغییری در آن ایجاد نکرده‌ایم ولی از آنجا که هش عدد ۵ با ۰۵ متفاوت است، Transaction ID در این دو حالت با هم متفاوت خواهد بود. در صورتیکه در هر دو حالت تمام اطلاعات تراکنش‌ با هم یکی است اما شناسه تراکنش‌ ها با هم متفاوت خواهد بود. به این خصلت تراکنش های بیت کوین، چکش خواری تراکنش های بیت کوین (Transaction Malleability) می گویند.

شناسه تراکنش کاربردهای متفاوتی دارد، مثلا با استفاده از آن می‌توانید در یک مرورگر بلاکچین بیت کوین (مانند blockchain.info) به جستجوی تراکنش مورد نظر خود بپردازید و تمام اطلاعات مرتبط با آن را مشاهده کنید.

چکش خواری تراکنش های بیت کوین

چگونه چکش خواری تراکنش های بیت کوین بلای جان صرافی Mt.Gox شد

 

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

همانطور که توضیح داده شد، در این روش شناسه تراکنش با ایجاد تغییر جزئی در امضای دیجیتال تغییر می‌کند، اما این تغییر جزئی باید با اطلاعات تراکنش همخوانی داشته باشد، پس با استفاده از این روش کسی نمی‌تواند آدرس گیرنده بیت کوین انتقالی یا مبلغ تراکنش را تغییر دهد. پس چگونه این باگ موجب سرقت از Mt.Gox شد؟!

 

صرافی Mt.Gox برای ردیابی تراکنش هایش و بررسی اینکه آیا تراکنشش تایید شده یا خیر از شناسه تراکنش ها استفاده می کرد،. یک هکر که به وجود این باگ در تراکنش های بیت کوین پی برده بود و مقداری بیت کوین در اکانت این صرافی داشت، ابتدا درخوست برداشت (Withdraw) موجودی بیت کوینش در صرافی Mt.Gox را می‌داد و صرافی یک تراکنش برای انتقال بیت کوین مورد نظر به آدرس هکر ایجاد می کرد و این تراکنش را در شبکه بیت کوین منتشر می‌کرد. سپس هکر پیش از تایید تراکنش توسط ماینرها، با استفاده از روش توضیح داده شده، Transaction ID این تراکنش را تغییر می‌داد. Mt.Gox با استفاده از شناسه تراکنشی که خودش ایجاد کرده بود به انتظار تایید تراکنش می‌نشست، اما چون شناسه تراکنش توسط هکر تغییر کرده بود، از دید صرافی Mt.Gox هیچگاه آن تراکنش تایید نمی‌شد، در صورتیکه تراکنش بعد از مدتی تایید میشده و بیت کوین ها به حساب هکر واریز میشده است. Mt.Gox که میدیده تراکنشش تایید نشده، مجدد موجودی بیت کوین در اکانت هکر در صرافی را به حالت قبل از تراکنش بر میگردانده است و هکر که در اصل بیت کوینش را دریافت کرده بوده است، مجدد در خواست برداشت (Withdraw) از حسابش را میداده و این روند را مرتب تکرار کرده ست. به دلیل سوء مدیریت این صرافی و عدم کنترل دقیق حساب‌ها، آن ها تنها زمانی متوجه این موضوغ می‌شوند که دیگر کار از کار گذشته بود. البته برخی مطالعات صورت گرفته حاکی از این هستند که تنها درصد کمی از بیت کوین های گم شده با استفاده از چکش خواری تراکنش های بیت کوین به سرقت رفته اند، ولی صحت این امر هنوز کامل مشخص نیست.

آیا هنوز این باگ یک تهدید محسوب می‌شود؟

 

این مشکل هرچند که یک خطر بزرگ برای شبکه بیت کوین به حساب نمی‌آید، ولی در حال حاضر با اعمال تغییراتی در کدهای بیت کوین، تا حد زیادی حل شده است. یکی از اصلی ترین راهکارها برای حل این مشکل فورک نرم (Soft Fork) سگویت (Segwit) است. Segwit با جدا کردن امضای دیجیتال از ساختار تراکنش و جایگزینی آن با Witness علاوه بر حل مشکل چکش خوای تراکنش های بیت کوین، موجب کاهش حجم تراکنش های بیت کوین و مقیاس پذیرتر شدن آن شده است و زمینه را برای فناوری‌های نوینی همچون شبکه لایتنینگ (Lightening Network) که قرار است به عنوان لایه دوم بر روی بلاکچین بیت کوین فعال شود، فراهم نموده است. همچنین در حال حاضر اکثر صرافی ها و کیف پول ها از تمهیداتی به منظور جلوگیری از آسیب دیدن توسط این باگ استفاده می‌کنند.

منبع
میهن بلاکچین

همچنین بخوانید

دکمه بازگشت به بالا