هش یکی از پایههای اصلی فناوری بلاک چین است که با تبدیل دادههای متنوع به کدهای یکتا و ثابت، امنیت و یکپارچگی اطلاعات را تضمین میکند. این فرآیند ریاضی پیچیده، امکان شناسایی هرگونه تغییر یا دستکاری در دادهها را فراهم میآورد و باعث میشود بلاکها به صورت زنجیرهای به هم متصل و محافظتشده باقی بمانند.
در این مقاله، ضمن پرداختن به ماهیت هش و الگوریتمهای هشینگ، به کاربردهای کلیدی آن در بلاکچین پرداختهایم و به این سوال پاسخ دادهایم که چرا هشینگ برای امنیت بلاکچین حیاتی است؟
اگر به این موضوع علاقمندید، تا پایان این مقاله با ما همراه باشید.
نکات کلیدی:
|
هش در بلاکچین چست؟
هش یک عبارت با طول مشخص است که خروجی منحصر به فرد یک تابع ریاضی به نام تابع هش (Hash Function) میباشد.
تابع هش یک ورودی با طول دلخواه را گرفته و با انجام یک سری عملیات (به نام هشینگ) روی آن، یک خروجی رمزنگاری شده با طول ثابت که همان هش (Hash) است را تولید میکند. بنابراین، صرفنظر از اندازه یا حجم داده اصلی، هش منحصر به فرد آن همیشه یک اندازه ثابت خواهد داشت.
نکته: تا زمانی که دادهها و تابع هش ثابت بمانند، مقدار هش تغییر نمیکند، اما هر تغییر کوچک در داده یا تابع، هشی کاملاً متفاوت تولید میکند. |
علاوه بر این، هشهای امن نمیتوانند با استفاده از تکنولوژی فعلی “برعکس” شوند تا ورودی را از خروجی هش شده استخراج کنند. این بدان معنی است که هیچ یک از تکنولوژیهای موجود نمیتواند به راحتی داده ورودی را از هش نهایی استخراج کند. به همین دلیل، هشها ابزار امنی برای حفاظت از دادهها و تایید صحت آنها در سیستمهایی مانند بلاکچین هستند.
الگوریتمهای هشینگ
الگوریتمهای هشینگ همان توابع هش هستند که دادهها را دریافت کرده و آنها را به عبارات رمزنگاری شده با طول مشخص تبدیل میکنند. الگوریتمهایی یک طرفه، پایدار و مبتنی بر قواعد بدون تغییر ریاضی که نه کسی میتواند آنها را به هم بریزد و نه کسی -حداقل با تکنولوژیهای در دسترس فعلی- میتواند خروجیهای آنها را رمزگشایی کند. (بنا به مقالهای در Okta)
امروزه الگوریتمهای هشینگ زیادی در دسترس هستند که فارغ از تفاوتهایشان، نحوه عملکرد یکسانی دارند.
فرآیندی که اغلب الگوریتمهای هشینگ دنبال میکنند، از قرار زیر است:
1. کاربر دادهای که میخواهد به هش تبدیل کند (این داده میتواند یک اسم، یک تراکنش، یک عبارت یا هر چیز دیگری باشد) را در الگوریتم هشینگ انتخابی خود وارد میکند؛
2. فارغ از اینکه داده اولیه چه حجم یا طولی دارد، الگوریتم هشینگ داده را به یک هش نهایی با طول و تعداد کاراکتر یا اندازه بیت مشخص تبدیل و فشردهسازی میکند؛
3. در صورت لزوم، الگوریتم پیام را به بلاکهای با اندازه مساوی تقسیم کرده و آنها را به ترتیب فشردهسازی میکند، اما در نهایت یک هش یکتا برای هر داده تولید میشود؛
4. الگوریتم هشینگ کد هشی را که در کمتر از چند ثانیه و در نتیجه فرآیند بالا تولید کرده است در اختیار کاربر قرار میدهد.
معروفترین الگوریتمهای هشینگ
برخی از معروفترین الگوریتمهای هشینگ عبارتند از:
- الگوریتم SHA-256Y؛
- الگوریتم RIPEMD-160؛
- الگوریتم MD5.
در ادامه، هریک از موارد فوق را به اختصار شرح میدهیم.
الگوریتم SHA-256
هشهای تولیدی این الگوریتم 256 بیت طول دارند. به عنوان مثال، اگر ورودی “hello” باشد، خروجی هش SHA-256 به شکل زیر خواهد بود:
2cf24dba5fb0a30e26e83b2ac5b9e29e1b170a27df2e5fae09d91b77d54a6e7c
نکته: طول هشهای تولیدشده توسط هر الگوریتم هشینگ ثابت است و صرف نظر از حجم داده ورودی، همواره خروجیهایی با اندازه یکسان—برای مثال ۲۵۶ بیت در SHA-256—تولید میشود. |
الگوریتم RIPEMD-160
این الگوریتم هشهای 160 بیتی تولید میکند. به عنوان مثال، اگر ورودی “hello” باشد، خروجی هش RIPEMD-160 به شکل زیر خواهد بود:
108f07b8382412612c048d07d13f814118445acd
الگوریتم MD5
این الگوریتم هشهای 128 بیتی تولید میکند. به عنوان مثال، اگر ورودی “hello” باشد، هش MD5 آن به صورت زیر خواهد بود:
5d41402abc4b2a76b9719d911017c592
نکته: سادهترین الگوریتم هشینگ، الگوریتم مربع میانی است که در آن با مربع کردن عدد و انتخاب ارقام میانیِ حاصل، مقدار هش به دست میآید. به طور مثال، هش عدد ۷۵ برابر ۶۲ است چون مربع آن ۵۶۲۵ میشود. |
ساختار هش و ویژگیهای آن
همانطور که گفتیم هش (Hash) یک رشته از کاراکترها با طول و اندازه مشخص است که از اعمال الگوریتم هشینگ روی یک داده ورودی تولید میشود.
مهمترین ویژگیهای هش عبارتند از:
1.قطعی بودن (Deterministic): بدین معنا که مهم نیست چند بار یک داده مشخص را به یک الگوریتم هشینگ مشخص وارد میکنید. تا زمانی که ورودی و تابع هش تغییر نکردهاند، خروجی تابع هشینگ که همان هش (Hash) است ثابت خواهد ماند.
2. یکطرفه بودن (One-way): بدین معنا که نمیتوان با داشتن هش، داده اصلی (ورودی) را بازیابی کرد و تبدیل داده به هش بهطور یکطرفه رخ میدهد.
3. حساسیت به تغییرات کوچک (Avalanche Effect): حتی کوچکترین تغییر در ورودی (مثلاً تغییر یک کاراکتر یا بیت) باعث تغییرات اساسی و غیرقابل پیشبینی در هش میشود. مثلا اگر ورودی “hello” به “hellO” تغییر کند، هشها بهطور کامل تغییر میکنند و مشابه هم نخواهند بود.
4. طول ثابت (Fixed Length): صرفنظر از اندازه داده ورودی، هشها همیشه طول ثابت دارند. بهطور مثال، فارغ از اینکه ورودی یک کلمه ساده یا یک فایل حجیم باشد، الگوریتم SHA-256 همیشه یک هش 64 کاراکتری 256 بیتی تولید میکند.
5. مقاومت در برابر تصادفی بودن (Collision Resistance): الگوریتمهای هش باید در برابر تصادفی بودن مقاوم باشند، یعنی نباید دو ورودی مختلف هش یکسانی تولید کنند. این ویژگی تضمین میکند که هر داده ورودی، هش منحصر به فرد خود را دارد.
کاربردهای هش در بلاکچین
همانطور که در مقاله بلاکچین چیست بروکر آرون گروپس نیز آمده است، بلاکچین یک دفتر کل توزیع شده غیر متمرکز است که از بلاکهای به هم پیوسته تشکیل شده است.
هر کدام از این Blockها حاوی اطلاعات منحصر به فرد و تایید شده هستند؛ منحصر به فرد بودنی که نتیجه تکنولوژی هش و الگوریتمهای هشینگ است. از جمله کاربردهای هش در بلاکچین که در مقالهای در Web3.okx نیز آمده است میتوان به موارد زیر اشاره کرد:
- تامین یکپارچگی دادهها؛
- تولید بلاکها؛
- تایید تراکنشها؛
- امنیت و جلوگیری از تغییر دادهها؛
- ایجاد آدرسها و کلیدهای عمومی؛
- تولید هشهای اجماع؛
- افزایش بهرهوری بلاکچین؛
- امضای دیجیتال.
در ادامه، هر یک از ویژگیهای فوق را شرح میدهیم.
تامین یکپارچگی دادهها
هشها در بلاکچین برای تضمین اینکه دادهها دستکاری نشدهاند، استفاده میشوند. هر بلاک شامل هش بلاک قبلی نیز هست که باعث میشود تغییر در هر بلاک، هشهای همه بلاکهای بعدی را تغییر دهد. این ویژگی، دستکاری یا تغییر تاریخچه تراکنشها را غیرممکن میکند.
تولید بلاکها
در بلاکچینهایی مثل بیتکوین، تولید بلاکها با استفاده از فرآیند ماینینگ (استخراج رمز ارز) انجام میشود. برای افزودن یک بلاک جدید به زنجیره، باید یک معما حل شود که معمولاً شامل محاسبه هش یک بلاک خاص است.
تایید تراکنشها
هر تراکنش در بلاکچین یک هش منحصر به فرد دارد که این هش، به بلاکهایی که تراکنش در آنها قرار دارد اضافه میشود. این باعث میشود که هر تراکنش دارای یک شناسه یکتا باشد که امکان ردیابی و تایید صحت آن را فراهم میکند.
امنیت و جلوگیری از تغییر دادهها
هشها باعث میشوند که هر گونه تغییر در دادهها یا تراکنشها در بلاکچین به راحتی شناسایی شود. به دلیل ویژگی یکطرفه بودن و حساسیت به تغییرات کوچک هشها، هرگونه تغییر در دادههای ورودی باعث تغییر هش شده و به راحتی قابل شناسایی خواهد بود.
بنابراین، هشینگ باعث میشود که دادهها پس از اضافه شدن به بلاکچین بدون تغییر باقی بمانند و امکان حذف یا دستکاری آنها وجود نداشته باشد.
ایجاد آدرسها و کلیدهای عمومی
در بسیاری از بلاکچینها مانند بیتکوین، آدرسهای کیف پولها از هشهای کلید عمومی ایجاد میشوند. این آدرسها به عنوان شناسههای یکتا برای انجام تراکنشها به کار میروند.
تولید هشهای اجماع
هشها در فرآیند اجماع بلاکچینها (مانند اجماع اثبات سهام یا اثبات کار) برای ایجاد اجماع بین گرههای شبکه استفاده میشوند. هشها به گرهها کمک میکنند که بدانند دادهها معتبر هستند و میتوانند به بلاکچین اضافه شوند.
افزایش بهره وری بلاکچین
از آنجا که هشها یکتا هستند، امکان ذخیره سازی و بازیابی راحت دادهها را فراهم میکنند. بدین ترتیب، ردیابی و یافتن یک هش خاص که نشاندهنده یک بلوک و تراکنش خاص در بلاکچین است به سادگی ممکن خواهد بود.
امضای دیجیتال
در برخی سیستمهای بلاکچینی، از هشها برای ایجاد امضاهای دیجیتال استفاده میشود. این امضاها برای تایید اصالت تراکنشها و هویت فرستنده استفاده میشوند.
فرآیند هش کردن در بلاک چین
فرآیند هش کردن در بلاکچین به معنی تبدیل دادههای درون هر بلاک به یک زنجیره یکتا از اعداد و حروف یا همان هش است که با استفاده از الگوریتمهای هشینگ مثل SHA-256 انجام میشود.
هش مثل اثر انگشت دیجیتال بلاک عمل میکند و با استفاده از ویژگیهای هش، تضمین میکند دادهها دستنخورده و معتبر هستند و امن باقی میمانند.
به طور ساده، فرآیند هش کردن در بلاکچین شامل مراحل زیر است:
1. تمام اطلاعات بلاک (لیست تراکنشها، هش بلاک قبلی، زمان و…) کنار هم قرار میگیرند.
2. این اطلاعات در قالب داده اولیه به الگوریتم هشینگ داده میشوند.
3. الگوریتم هشینگ یک کد هش با طول و اندازه مشخص تولید میکند.
4. هش تولید شده در هدر بلاک ذخیره میشود و در بلاک بعدی نیز به عنوان هش بلاک قبلی وارد میشود.
چرا هشینگ برای امنیت بلاکچین حیاتی است؟
هشها بخش اساسی از عملکرد بلاکچین هستند و نقش حیاتی در تامین امنیت، یکپارچگی، و شفافیت اطلاعات ایفا میکنند. به ویژه حساسیت هش به تغییرات در دادههای ورودی، سنگ بنای حفظ امنیت دادهها در بلاکچین و غیر ممکن شدن دستکاری یا تغییر تاریخچه تراکنشها در آن میشود.
دلیل این امر آن است که هر بلاک علاوه بر هش منحصر به فرد، هش بلاک قبلی را نیز در خود ذخیره دارد.
بدین ترتیب، اگر کسی بخواهد دادهای را در بلاکچین تغییر دهد، بایستی هش آن بلاک و تمامی بلاکهای تولید شده بعد از آن را تغییر دهد که عملا کاری غیر ممکن است. در نتیجه، هش کردن در بلاکچین فرآیندی است که امنیت ذخیرهسازی دادهها در بلاکچین را ممکن میکند.
به علاوه، هشینگ باعث میشود که ماهیت غیرمتمرکز و ناشناس بلاکچین محفوظ بماند چرا که، وقتی یک داده به هش تبدیل شده و در بلوک ذخیره میشود به دلیل خاصیت یک طرفه بودن هش، امکان اینکه کسی بتواند آن را رمزگشایی کند و بفهمد که داده اصلی چه بوده است وجود ندارد.
تفاوت هش و رمزنگاری
با توجه به تعریفی که از هش داده شد، شاید این موضوع به ذهن برسد که هش کردن همان رمزنگاری است، اما در واقع اینطور نیست.
هش یک رشته کاراکتر با طول مشخص است که برای هر داده، به شکل منحصر به فرد و یک طرفه تولید میشود. منحصر به فرد بودن هش از آن جهت اهمیت دارد که امکان بررسی صحت داده و تضمین اینکه داده تغییر نکرده است را فراهم میکند.
در مقابل، رمزنگاری فرآیندی است که دادهها را به شکلی تبدیل میکند که فقط افراد دارای کلید مخصوص بتوانند آن را بخوانند یا به شکل اولیه بازگردانند و هدف اصلی آن، محافظت از دادهها و جلوگیری از دسترسی غیرمجاز است.
نکته: رمزنگاری فرآیندی دوطرفه برای حفظ محرمانگی دادهها در زمان انتقال یا ذخیرهسازی است که امکان رمزگذاری و رمزگشایی با کلید مناسب را فراهم میکند. |
در جدولی که در ادامه میآید، تفاوتهای اصلی هش و رمزنگاری به اختصار آورده شدهاند:
تفاوتهای هشینگ و رمزنگاری |
||
ویژگی |
هش (Hashing) |
رمزنگاری (Encryption) |
هدف اصلی |
تولید شناسه یکتا و ثابت برای هر داده |
تبدیل دادهها به شکل غیرقابل فهم |
کاربرد اصلی |
تایید صحت دادهها و اطمینان از دستکاری نشدن آن |
حفظ محرمانگی، انتقال امن دادهها و جلوگیری از دسترسی غیرمجاز |
قابل بازگشت بودن |
یکطرفه؛ بازگشت به داده اصلی با تکنولوژی امروز غیرممکن است |
دوطرفه؛ داده رمز شده با کلید مخصوص قابل رمزگشایی است |
ورودی و خروجی |
فارغ از اینکه داده ورودی چقدر حجیم یا طویل است، طول هش نهایی ثابت است |
طول خروجی ممکن است با طول ورودی متفاوت باشد |
نیاز به کلید |
بدون کلید عمل میکند چون امکان رمزگشایی آن وجود ندارد |
نیازمند کلید رمزنگاری و کلید رمزگشایی است |
تغییر در ورودی |
هر تغییر کوچک در ورودی باعث تغییر بزرگ در هش میشود |
تغییر ورودی، خروجی رمزنگاری را به طور کامل تغییر میدهد |
نمونههایی از کاربرد هش در بلاکچین
از مهمترین کاربردهای هش در بلاکچین میتوان به موارد زیر اشاره کرد:
کاربرد هش در فرآیند اجماع اثبات کار (PoW)
اثبات کار فرایند اجماعی است که در بلاکچینهایی، مثل بیتکوین به کار میرود. در این روش، ماینرها با استفاده از قدرت محاسباتی خود برای حل یک مسئله ریاضی پیچیده رقابت میکنند. اولین ماینری که مسئله را حل کند، اجازه دارد بلاک جدید را به بلاکچین اضافه کرده و پاداش رمز ارزی دریافت کند.
ماینرها برای حل مسئله، باید هدر بلاک (شامل دادههای بلاک) را با یک مقدار تصادفی به نام نانس (Nonce) هش کنند. ماینرها باید نانس را به گونهای پیدا کنند که هش تولیدی شرایط سختی تعیین شده توسط شبکه را داشته باشد. سختی شبکه به طور مرتب تنظیم میشود تا بلاکها با سرعت ثابتی ایجاد شوند. هدف این است که فرآیند، مصرف منابع بالایی داشته باشد تا تقلب سخت شود.
اتصال بلاکها به هم (زنجیرهسازی)
هر بلاک در بلاکچین علاوه بر هش خود، شامل هش بلاک قبلی نیز هست. این کار باعث میشود که بلاکها به صورت زنجیرهای به هم متصل شوند. اگر هر بلاکی تغییر کند، هش آن تغییر میکند و این تغییر در همه بلاکهای بعدی نیز دیده میشود. همین زنجیروار بودن بلاکها است که باعث میشود هر دستکاری در شبکه قابل رویت و ردیابی باشد.
تایید صحت تراکنشها
در بلاکچین جزییات هر تراکنش در قالب یک هش در یک بلاک ذخیره میشود. بنابراین هشها به اعتبارسنجی و تایید تراکنشها کمک میکنند و از تغییر یا تقلب جلوگیری میکنند.
آینده و تحولات هش
همانطور که در rejolut آمده است، هر چه بلاکچین به سمت افزایش حجم تراکنشها و گسترش شبکه میرود، محدودیتهای هشینگ نیز بیشتر به چشم میآیند. مخصوصاً در شبکههای اثبات کار (PoW) که نیاز به محاسبات پیچیده و سنگین دارد، هشینگ میتواند باعث کاهش سرعت پردازش تراکنشها و دشواری در افزایش مقیاس پذیری شبکه میشود. به علاوه، انرژی زیادی که برای تولید هش در این بلاکچینها نیاز هست، منجر به نگرانیهای زیست محیطی زیادی شده است.
از سوی دیگر با پیشرفت فناوریهای کوانتومی، الگوریتمهای هش کنونی ممکن است آسیبپذیر شوند.
بنابراین، آینده هش و تحولات آن بایستی به سمت افزایش امنیت، سرعت و کارایی حرکت کند همچنان که این طور نیز هست.
امروزه پژوهشگران در حال توسعه الگوریتمهای جدید مقاوم در برابر حملات کوانتومی هستند. همچنین، تلاش میکنند که سرعت هشینگ را هم برای بلاکچینهای نسل بعدی و هم کاربردهای دیگری مثل اینترنت اشیا (IoT) افزایش دهند.
علاوه بر این، ترکیب هش با فناوریهای نوین مانند یادگیری ماشین و رمزنگاری پیشرفته، امکانات تازهای برای تامین امنیت دادهها و بهبود عملکرد سیستمهای توزیع شده ایجاد خواهد کرد. در کل، به نظر میرسد که هشها نقش کلیدی و پررنگتری در آینده امنیت سایبری، بلاکچین و فناوریهای دیجیتال خواهند داشت.
نتیجهگیری
هشینگ به عنوان قلب تپنده امنیت و کارایی بلاکچین، نقش منحصر به فردی در حفظ شفافیت و اطمینان در شبکههای غیرمتمرکز ایفا میکند. با پیشرفت فناوریها و ظهور تهدیدات جدید، توسعه و بهبود الگوریتمهای هشینگ برای تضمین آینده امن و پایدار بلاکچین ضروری است.