در مقالههای هر هفته با آنتونی، سعی میکنیم ویدیوهایی از آندرس آنتونوپولوس (Andreas Antonopoulos) را منتشر کنیم تا دانش و آگاهی افراد را در مورد بیت کوین و حوزه ارزهای دیجیتال بالا ببریم. این هفته ویدئویی در ارتباط با وابستگی پروتکل بیت کوین به الگوریتم هشینگ SHA۲۵۶ در نظر گرفته شده است.
کاربران عادی و افراد حرفهای زیادی که در حوزه ارزهای دیجیتال به فعالیت میپردازند، با آنتونی در ارتباط هستند و سوالات مهمی را با او مطرح میکنند. او که میتوان گفت یکی از مسلطترین افراد حوزه ارزهای دیجیتال است، با دقت به این سوالات پاسخ میدهد و اطلاعات مفیدی در اختیار کابران سرتاسر جهان قرار میدهد.
چه عاملی باعث ایجاد خطر در الگوریتم هشینگ SHA۲۵۶ میشود؟
شخصی از آنتونی میپرسد: به نظر میرسد که پروتکل بیت کوین وابستگی شدیدی به الگوریتم هشینگ SHA۲۵۶ دارد. با وجودی که تاکنون هیچ نقطه ضعفی در الگوریتم SHA۲۵۶ مشاهده نشده، چه عاملی میتواند این الگوریتم را به خطر بیاندازد؟
آنتونی پاسخ میدهد: هر تابع رمزنگاری شدهای که از الگوریتم SHA۲۵۶ استفاده میکند، بالاخره و به طریقی آسیب پذیر خواهد شد. دلیل آن هم این است که در آینده سرعت کامپیوترها افزایش مییابد، ریاضیات پیشرفت خواهد کرد و دقت الگوریتمها برای یافتن نقطه ضعف و آسیب پذیری بیشتر خواهد شد.
هر الگوریتم رمزنگاریای که ۳۰ سال قبل قدرتمند بود، اکنون قدرتی ندارند؛ در نتیجه رفته رفته از رده خارج شدند و با الگوریتمهای رمزنگاری شده مدرنتر و قویتر و با کلیدهای بزرگتر جایگزین شدند.
پیشرفت الگوریتمها به منظور توانایی رقابت با الگوریتمهای جدید و قدرت محاسباتی بالا، و همچنین تلاش مردم برای شکستن الگوریتمهای دارای هشینگ ایجاد شدند.
پس موضوع این نیست که آیا مشکلی پیش خواهد آمد یا الگوریتم SHA۲۵۶ تضعیف میشود؛ بلکه موضوع این است که این الگوریتم نیز مانند بسیاری الگوریتمهای دیگر، تا ابد دوام نخواهد آورد. ممکن است الگوریتم SHA۲۵۶ تا یک دهه یا حتی چندین دهه دوام بیاورد، اما بالاخره از رده خارج خواهد شد.
خطرات مختلفی در کمین الگوریتمهای هش هستند؛ دسیسه برای حمله به آنها، انتخاب یک هش خاص و انطباق با آن، استفاده از یک متن کشف شده و تغییر آن به منظور یافتن هش مشخص و موارد دیگری از این قبیل که باعث به خطر افتادن الگوریتمها میشوند.
همچنین باید خاطرنشان کرد که داشتن نقطه ضعفی که بتواند بلافاصله یک الگوریتم را غیر قابل استفاده کند، خیلی بعید است.
اتفاقی که در گذشته افتاده و امروز نیز در حال رخ دادن است، این است که یک تکنیک ریاضیاتی و یا یک ضعف در سیستم الگوریتم به وجود آمده، که حمله به آن را راحتتر میکند. این کار در ابتدا از نظر تئوری و از طریق استفاده از قدرت محاسباتی عظیم امکان پذیر میشود و بعد، در واقعیت این کار ممکن میشود. سپس در مرحله بعدی، این کار حتی با قدرت محاسباتی پائینتر نیز انجام میگیرد و در آخر نیز حتی با لپ تاپ نیز این رمزگشاییها انجام میشود.
این اتفاق برای الگوریتمهایی مثل MD۵ و استاندارد رمزنگاری دیتا افتاد. نقطه ضعف این الگوریتم این بود که در شرایط خیلی محدودی با قدرت محاسباتی بالا کار میکرد. امروزه شما میتوانید به سادگی با استفاده از لپ تاپ خود و در مدت زمان معقولی، این الگوریتم را بشکنید.
پس ما هرگز الگوریتم SHA۲۵۶ را کاملا امن یا کاملا ناامن نمیبینیم؛ بلکه این الگوریتم نیز در آینده فرسوده، و در طی زمان ضعیف میشود و نیاز به جایگزین خواهد داشت.
سیستم سِگویت (Segwit)
الگوریتم SHA۲۵۶ در جاهای مختلفی در داخل سیستم بیت کوین استفاده شده و اکنون نیز تقویت شده است. مثلا سگویت (Segwit) روشهای محاسبه آدرسهای اسکریپتها را تغییر داده و آنها را قویتر کرده است؛ یک اسکریپت، با Segwit V.0 و با یک الگوریتم Double SHA۲۵۶ به جای یک الگوریتم RIPEMD-۱۶۰ رمزنگاری شده است. سیستم سگویت با افزایش قابل توجه اندازه کلیدها، پتانسیل حمله به هش “پرداخت به اسکریپت” را کاهش داده است. همچنین بخش بزرگی از سیستم بیت کوین را میتوان با سگویت تقویت کرد.
پس الگوریتمها قابلیت آپدیت شدن و ایجاد تغییرات مثبت در آنها را دارند. با این کار، میتوان آینده طولانیتری برای انواع الگوریتمها و توابعهش متصور شد.
با تمام این تفاصیل، یکی از جاهایی که تقویت کردن آن بسیار مشکل است، خودِ ماینینگ است. تغییر دادن الگوریتم ماینینگ بیت کوین بسیار سخت است و دلیل آن هم وجود دستگاههای ماینینگ است.
اگر ماین کردن الگوریتم SHA۲۵۶ ساده و سادهتر میشد، این بر روی سختی الگوریتم تاثیر میگذاشت؛ چون ماینرها از میانبرها برای سودآوری بیشتر استفاده میکردند. این کار هش ریت (Hash Rate) را بالا میبرد و سختی را نیز افزایش میداد.
البته این اتفاق اکنون نیز افتاده است؛ سوءاستفاده ویژهای از الگوریتم SHA۲۵۶ شده که با نام Asic Boost یا تقویت کننده ایسیک شناخته میشود. این ویژگی سه سال پیش راه اندازی شد و کار آن، کاهش دادن مقدار الکتریسیته برای هشینگ الگوریتم SHA۲۵۶ است. با این کار، راندمان ماینینگ افزایش مییابد و در نتیجه، هش ریت و سختی سیستم بیت کوین را نیز بالا میبرد.
دو بار هش کردن یک کلید عمومی
دلیل دو بار هش کردن یک کلید عمومی برای تولید آدرس و دو بار هش کردن آن با دو الگوریتم SHA۲۵۶ و RIPEMD-۱۶۰ چیست؟
دلیل اول آن ایجاد سطحی از جداسازی است؛ جایی که چیزی که شما پرداخت میکنید، یک هش است و نه یک کلید عمومی. این کار به ما انعطاف زیادی میدهد. مثل توانایی پرداخت به اسکریپتهایی که نسبت به کلیدهای عمومی پیچیدهتر هستند.
دلیل دوم آن فاصله انداختن بین الگوریتمهای امضای دیجیتال بیضی شکل که تضعیف شدهاند، است. اما در این مقوله، شما کلید عمومی ندارید و باید یک آدرس بیت کوین و دو الگوریتم هش را قبل از شکستن الگوریتم امضای دیجیتال بیضی شکل، بشکنید؛ که این کار، سختی زیادی را در سیستم ایجاد میکند چون دو الگوریتم هش و الگوریتم امضای دیجیتال بیضی شکل، نسبت به هم رفتار متفاوتی دارند.