رمزنگاری بیت کوین چگونه انجام می شود؟
رمزنگاری بیت کوین چگونه انجام می شود؟
رمزنگاری بیت کوین کار بسیار پیچیدهای است که هرکسی از عهده آن برنمیآید. به همین جهت، فناوری بلاک چین از امنیت شبکه بالایی برخوردار است.. فرآیند رمزنگاری شبکههای بلاک چین با استفاده از سیستمی پیچیدهای صورت میگیرد که تابع هش (Hash) و فرآیند هشینگ Hashing نقش مهمی در آن دارند.
در این مقاله از کاریزما نحوه کاربرد توابع هش را در تراکنشهای رمزنگاری بلاک چین توضیح میدهیم.
هشینگ چیست؟
به طور خلاصه، هشینگ (Hashing) به فرآیند تولید خروجیها با اندازه ثابت، از ورودیها با اندازههای متغیر گفتـه میشود. این کار با استفاده از فرمولهای ریاضی معروف به توابع و الگوریتمهای Hash صورت میپذیرد. بهعبارتی دیگر، با هش کردن مقداری را که میتواند تصویر، حروف یا اعداد باشد با طول نامعلوم، به یک خروجی با طول مشخص و قطعی تبدیل میکنیم. به این فرایند، “تابع درهم ساز” نیز میگویند.
اگرچه همه کاربردهای Hash شامل استفاده در رمزنگاری بیت کوین نیستند، اما اصطلاحاً توابع هش رمزنگاری در هسته ارزهای رمز پایه قرار دارند. به لطف آنها، بلاک چینها و سایر سیستمهای توزیع شده نیز میتوانند به سطح قابل قبولی از یکپارچگی و امنیت دادهها دست یابند.
خروجی هشینگ را “هش” یا “مقدار هش” میگویند و تابع ریاضی آن به “تابع هش” معروف است.
مقاله پیشنهادی: ارز دیجیتال چیست و چرا باید بخریم!
تابع هش (Hash) چیست و چه کاربردی در رمزنگاری بیت کوین دارد؟
تابع هش یک معادله ریاضی است که بسیاری از اشکال رمزگذاری بیت کوین مانند امضای دیجیتال را امکانپذیر میکند و شامل همه چیز اعم از پروتکل HTTPS تا پرداختهای انجامشده در وبسایتها میشود. این تابع نیز مانند دیگر توابع یک فرمول با مجموعهای از ویژگیهای خاص است که آن را برای رمزگذاری بیت کوین مفید میکند.
تابع هش، دادهها را با اندازه و طول متغیر دریافت و به خروجی یکسان و قطعی تبدیلشان میکند. به عبارتی دیگر، میتوان گفت تابع هش یک رشتـه کد با طول متناوب را دریافت و تبدیل به یک خروجی با طول ثابت میکند. توابع 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 ایمن در نظر گرفتـه میشوند.
ویژگیهای اصلی تابع هش
در حالت کلی، تابع هش شامل خصوصیاتی از قبیل زیر است:
- عملکرد تابع هش با رمزنگاری متفاوت است.
- طول خروجی تابع هش یا مقدار هش، همیشه ثابت است.
- تا زمانی که ورودی تغییر نکند، مقداری خروجی تابع هش قطعی و ثابت است.
- مقدار هش معمولاً بسیار کوچکتر از ورودی است. بههمین خاطر به تابع هش، فشردهساز نیز میگویند.
- توابع هش بهصورت یکطرفه طراحی شدهاند. بهعبارتی دیگر، در هشینگ بهدست آوردن خروجی از ورودی امکانپذیر است و عملیات عکس آن یعنی بهدست آوردن ورودی از خروجی تقریباً غیرممکن است.