هش – Hash در بلاک چین و ارزهای دیجیتال چیست؟

تابع هش در دنیای ارزهای دیجیتال مانند بیت کوین بسیار کاربردی است. در این مطلب، نحوه کاربرد توابع Hash در تراکنش های بلاک چین را توضیح میدهیم.
در این مقاله به ارائه مفهوم هش و انواع آن خواهیم پرداخت. همچنین در رابطه با جایگاه Hash در رمز ارزها، بلاک چین، هشهای ایمن و توابع هش به کار رفته در استخراج ارزهای دیجیتال از جمله بیت کوین صحبت خواهیم کرد. با ما همراه باشید. در این مطلب درباره عناوین زیر صحبت خواهیم کرد:
- هشینگ چیست؟
- تابع Hash چگونه کار میکند؟
- چرا هش ها مهم هستند؟
- کاربردهای هش در کریپتوگرافی
- کاربرد Hash در استخراج
- سخن پایانی
هشینگ چیست؟
هشینگ (Hashing) به فرآیند تولید خروجیها با اندازه ثابت، از ورودیها با اندازههای متغیر گفته میشود. این کار با استفاده از فرمولهای ریاضی معروف به توابع و الگوریتمهای Hash صورت میپذیرد.
اگرچه همه کاربردهای Hash شامل استفاده در رمزنگاری نیستند، اما اصطلاحاً توابع هش رمزنگاری در هسته ارزهای رمز پایه قرار دارند. به لطف آنها، بلاک چینها و سایر سیستمهای توزیع شده میتوانند به سطح قابل قبولی از یکپارچگی و امنیت دادهها دست یابند.
خروجیهای الگوریتمهای هش مرسوم و الگوریتمهای مورد استفاده در رمزنگاری، قطعی هستند. قطعی بودن به این معنی است که تا زمانی ورودی تغییر نکند، این الگوریتمها همیشه همان خروجی را تولید میکنند.
به طور معمول، الگوریتمهای Hash رمز ارزها به عنوان توابع یک طرفه طراحی میشوند، بدین معنی که بدون صرف مقدار زیادی زمان و محاسبات پیچیده، نمیتوان آنها را به راحتی برگرداند. به عبارت دیگر، ایجاد خروجی از ورودی کاملاً آسان بوده، اما حرکت در جهت مخالف (تولید ورودی از خروجی) بسیار دشوار است. به طور کلی، یافتن ورودی هرچه دشوارتر باشد، الگوریتم هش امنتر محسوب میشود.
تابع Hash چگونه کار میکند؟
توابع Hash مختلف، خروجیهایی با اندازههای متفاوت تولید میکنند، اما اندازههای خروجی برای هر الگوریتم همیشه ثابت است. به عنوان مثال، الگوریتم SHA-256 فقط میتواند خروجی با اندازه 256 بیت را تولید کند، در حالی که SHA-1 همیشه یک خروجی 160 بیتی ایجاد میکند.
برای توضیح، بیایید کلمات “Ircc” و “ircc” را از طریق الگوریتم هش SHA-256 (الگویی که در بیت کوین استفاده میشود) اجرا کنیم.
Ircc: 65592d00da56347062e6dc84e8ff978ba021267b288bbe3c7f2cb5c04d797bd4
ircc: 478734e921cc9b571d7ab5fc226dcb2ce59fcab83fb73258ab8082382d86c6ee
توجه داشته باشید که یک تغییر جزئی (بزرگ یا کوچک بودن حرف اول) منجر به یک مقدار Hash کاملا متفاوت میشود. اما از آنجایی که ما از SHA-256 استفاده میکنیم، خروجیها همیشه یک اندازه ثابت 256 بیت (یا 64 کاراکتر مبتنی بر هگزادسیمال) بدون تاثیر از اندازه ورودی خواهند داشت. همچنین، مهم نیست که چند بار دو کلمه را از طریق الگوریتم اجرا کنیم، دو خروجی ثابت میمانند.
برعکس، اگر ورودیهای مشابه را از طریق الگوریتم هش SHA-1 اجرا کنیم، نتایج زیر را خواهیم داشت:
Ircc: a6f9af856be33de008c9f5ffb942e2c4e2d644f7
ircc: 3ec8e2b221402e786dfa6f0884a0e7f7be11c32a
SHA مخفف عبارت الگوریتمهای هش ایمن (Secure Hash Algorithms) است. این عبارت به مجموعهای از توابع هش رمزنگاری اشاره داشته که الگوریتمهای SHA-0 ،SHA-1 ،SHA-2 و SHA-3 را در بر میگیرد. SHA-256 به همراه SHA-512 و انواع دیگر، بخشی از گروه SHA-2 هستند. در حال حاضر، فقط گروههای SHA-2 و SHA-3 ایمن در نظر گرفته میشوند.
چرا هش ها مهم هستند؟
توابع هش دارای کاربردها و موارد استفاده گستردهای هستند؛ از جمله جستجوی پایگاه داده، تجزیه و تحلیل پروندههای بزرگ و مدیریت دادهها. از طرف دیگر، توابع Hash رمزنگاری به طور گسترده در برنامههای امنیتی اطلاعات، مانند تأیید اعتبار پیام و اثر انگشت دیجیتال استفاده میشود. وقتی صحبت از بیت کوین میشود، تابع هش رمزنگاری یک بخش اساسی از فرآیند استخراج است و همچنین در تولید آدرسها و کلیدهای جدید نقش مهمی دارد.
قدرت واقعی Hash در هنگام مواجهه با حجم عظیمی از اطلاعات مشخص میشود. به عنوان مثال، میتوان یک فایل یا مجموعه داده بزرگ را از طریق یک تابع هش اجرا و سپس از خروجی آن استفاده کرد تا سریعا صحت دادهها بررسی شود. این امر به دلیل ماهیت قطعی توابع هش امکانپذیر است، به این معنی که ورودی همیشه منجر به یک خروجی ساده و متراکم (هش) میشود. چنین تکنیکی، نیاز به ذخیرهسازی و به خاطر سپردن مقادیر زیاد داده را از بین میبرد.
هش به ویژه در زمینه فناوری بلاک چین بسیار کارایی دارد. بلاک چین بیت کوین چندین عملیات که هش کردن یکی از آنهاست را شامل میشود. کاربرد عمده هش در فرآیند استخراج است. در واقع، تقریبا تمام پروتکلهای رمز ارزها برای ایجاد ارتباط و متراکم کردن گروه تراکنشها، به بلاکها و همچنین تولید پیوندهای رمزنگاری بین هر بلاک، به هش نیاز دارند. به گونهای که Hash به طور موثر، ایجاد بلاک چین را ممکن میسازند.
کاربردهای هش در کریپتوگرافی
یک تابع Hash که تکنیکهای رمزنگاری را به کار میبرد، به عنوان یک “تابع هش رمزنگاری” تعریف میشود. به طور کلی، شکستن عملکرد Hash رمزنگاری نیاز به تلاش مداوم بسیار زیادی دارد. برای اینکه شخص یک عملکرد هش رمزنگاری را برگرداند، باید با استفاده از سعی و خطا، حالات مختلف ورودی را امتحان کند تا به خروجی مدنظر برسد.
با این وجود، امکان تولید یک خروجی مشابه از ورودیهای مختلف نیز وجود دارد که به آن مشکل خروجی یکسان یا تصادم (Collision) میگویند.
از نظر فنی، یک تابع Hash رمزنگاری باید سه ویژگی داشته باشد تا ایمن محسوب شود. این ویژگیها را میتوانیم تحت عناوین: عدم تصادم، یک طرفه بودن و عدم پیش بینی خروجی یکسان توصیف کنیم.
قبل از بحث در مورد هر ویژگی، بیایید منطق آنها را در سه جمله کوتاه خلاصه کنیم.
- عدم تصادم: هر ورودی خاص، خروجی مختص به خود را دارد.
- یک طرفه بودن: برگرداندن تابع Hash (یافتن ورودی از یک خروجی معین) غیرممکن است.
- عدم پیش بینی خروجی یکسان: با داشتن یک ورودی و خروجی مشخص، امکان یافتن ورودی متفاوت دوم که همان خروجی قبلی را تولید کند، وجود ندارد.
عدم تصادم در Hash
همانطور که گفته شد، خروجی یکسان زمانی اتفاق میافتد که ورودیهای مختلف، هش دقیقا یکسانی را تولید کنند. بنابراین، تابع هش تا لحظهای که چنین دادههایی را تولید نکند، در برابر خروجی یکسان مقاوم محسوب میشود. توجه داشته باشید که خروجی یکسان برای هر تابع هش همیشه وجود خواهد داشت، زیرا ورودیهای احتمالی بینهایت بوده، در حالی که خروجیهای ممکن محدود هستند.
به عبارت دیگر، عملکرد هش هنگامی که احتمال یافتن خروجی یکسان بسیار کم است، بهطوری که به میلیونها سال محاسبات نیاز باشد، در برابر تصادم، مقاوم در نظر گرفته میشود. بنابراین علیرغم این واقعیت که هیچ عملکرد هش بدون تصادمی وجود ندارد، برخی از آنها به اندازه کافی قوی هستند که بتوان آن را مقاوم دانست (به عنوان مثال SHA-256).
در میان الگوریتمهای مختلف SHA، گروههای SHA-0 و SHA-1 دیگر ایمن نیستند زیرا خروجی یکسان در دادههای آنها مشاهده شده است. در حال حاضر، گروههای SHA-2 و SHA-3 در برابر تصادم مقاوم در نظر گرفته میشوند.
یک طرفه بودن هش
توابع هش، یک طرفه هستند. یک تابع هش هنگامی دارای این ویژگی است که احتمال بسیار کمی برای پیدا کردن ورودی یک خروجی خاص وجود داشته باشد. این ویژگی برای عملکرد یک تابع Hash و امنیت آن بسیار مهم است.
توجه داشته باشید که ویژگی یک طرفه بودن با عدم تصادم متفاوت است، زیرا در این حالت یک مهاجم سعی میکند با دیدن یک خروجی داده شده، ورودی را حدس بزند، اما تصادم هنگامی رخ میدهد که کسی دو ورودی متفاوت پیدا کند که یک خروجی را تولید میکنند، ولی مهم نیست که از کدام ورودیها استفاده شده است.
ویژگی یک طرفه بودن برای محافظت از دادهها بسیار ارزشمند است، زیرا هش ساده یک پیام، میتواند صحت آن را اثبات کند، بدون اینکه نیازی به افشای اطلاعات باشد. در عمل، بسیاری از ارائهدهندگان خدمات و برنامههای وب، هشهای تولید شده از رمزهای عبور را به جای رمزهای عبور ذخیره و استفاده میکنند.
عدم پیش بینی خروجی یکسان
برای ساده کردن موضوع میتوانیم بگوییم که عدم پیش بینی خروجی یکسان در واقع بین دو ویژگی قبلی قرار میگیرد. حمله پیش بینی خروجی یکسان زمانی اتفاق میافتد که فردی با داشتن یک ورودی و خروجی مشخص، بتواند ورودی جدیدی را پیدا کند که خروجی آن، با خروجی قبلی یکسان باشد. به عبارت دیگر، یک حمله پیش بینی خروجی یکسان شامل یافتن خروجی یکسان دو ورودی است، اما آنها به جای جستجوی دو ورودی تصادفی که هش یکسان تولید میکنند، ورودی را جستجو میکنند که همان Hash تولید شده توسط ورودی خاص دیگری را ایجاد میکند.
بنابراین، هر تابع Hash که در برابر عدم خروجی یکسان مقاوم باشد، در برابر حملات پیش بینی خروجی یکسان نیز مقاوم است، زیرا ویژگی سوم همیشه به معنی خروجی یکسان است. با این حال، هنوز هم میتوان یک حمله پیش بینی خروجی را به عملکرد مقاوم در برابر خروجی یکسان انجام داد، زیرا این امر به معنای یافتن یک ورودی واحد از یک خروجی است.
کاربرد Hash در استخراج
مراحل زیادی در استخراج بیت کوین وجود دارد که در آنها از توابع هش استفاده میشود؛ مانند بررسی مانده، پیوند دادن ورودی و خروجی تراکنشها و هش تراکنشهای درون یک بلاک برای تشکیل یک درخت مرکل. اما یکی از دلایل اصلی امنیت بلاک چین بیت کوین این مسئله است که ماینرها برای یافتن یک Hash معتبر برای بلاک بعدی، نیاز به اجرای بیشمار تابع هش دارند.
به طور خاص، یک ماینر هنگام ایجاد مقدار هش برای بلاک مورد نظر خود، مجبور است چندین ورودی مختلف را امتحان کند. در واقع، آنها فقط در صورتی قادر به اعتبارسنجی بلاک خود هستند که بتوانند یک هش با تعداد صفرهای اولیه مشخص پیدا کنند. تعداد صفرها چیزی است که سختی استخراج را تعیین میکند و بسته به میزان Hash اختصاص داده شده متفاوت بوده و توسط شبکه تعیین میشود.
در این حالت، نرخ هش یا هش ریت (Hash rate) نشاندهنده میزان قدرت پردازش شبکه در استخراج بیت کوین است. اگر میزان Hash شبکه افزایش یابد، پروتکل بیت کوین به طور خودکار سختی استخراج را تنظیم میکند تا میانگین زمان لازم برای استخراج یک بلاک نزدیک به 10 دقیقه باقی بماند. در مقابل، اگر چندین استخراج کننده تصمیم بگیرند که از شبکه خارج شوند و باعث کاهش قابل توجه میزان Hash شوند، سختی استخراج تنظیم شده و ماینینگ آسانتر میشود (تا میانگین زمان بلاک به 10 دقیقه برسد).
توجه داشته باشید که ماینرها مشکلی با خروجی یکسان Hash ندارند، زیرا چندین هش وجود دارد که میتوانند به عنوان یک خروجی معتبر تولید کنند (شروع هش با تعداد مشخصی صفر). بنابراین چندین راه حل ممکن برای یک بلاک خاص وجود دارد و استخراج کنندگان فقط باید یکی از آنها را پیدا کنند. این مسئله با توجه به آستانه تعیین شده توسط سختی استخراج مشخص میگردد.
از آنجایی که استخراج بیت کوین یک کار هزینهبر است، استخراجکنندگان دلیلی برای تقلب در سیستم ندارند، زیرا این امر منجر به ضررهای مالی قابل توجهی میشود. هر چه ماینرهای بیشتری به بلاک چین بپیوندند، شبکه بزرگتر و قویتر خواهد شد.
سخن پایانی
تردیدی نیست که توابع Hash ابزاری مهم در علوم رایانه هستند، به ویژه هنگامی که با حجم عظیمی از دادهها روبرو هستیم. هنگامی که هش با رمزنگاری ترکیب میشود، الگوریتمهای آن کاملا متنوع بوده و امنیت و احراز هویت را به روشهای مختلف ارائه میدهند. به همین ترتیب، توابع هش رمزنگاری تقریبا برای همه شبکههای ارزهای رمز پایه حیاتیاند، بنابراین شناخت ویژگیها و مکانیسمهای کار آنها مطمئنا برای هر کسی که به فناوری بلاک چین علاقهمند است، میتواند مفید باشد.
منبع: academy.binance.com
نظرات کاربران (0 نظر)