hash چیست؟

BirHosting hash index
توسط

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

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

BirHosting hash

تابع Hash یا توابع هش الگوریتم‌های ریاضی هستند که داده‌ها را با اندازه و طول متغیر دریافت می‌کنند و به خروجی یکسان و قطعی تبدیلشان می‌کنند. توابع Hash رکن اصلی فرایند هشینگ هستند.

به عبارتی دیگر، می‌توان گفت تابع Hash یک رشته کد با طول متناوب را دریافت و تبدیل به یک خروجی با طول ثابت می‌کند.

چرا هش ها مهم هستند؟

کاربردهای هش در کریپتوگرافی
یک تابع Hash که تکنیک‌های رمزنگاری را به کار می‌برد، به عنوان یک “تابع هش رمزنگاری” تعریف می‌شود. به طور کلی، شکستن عملکرد Hash رمزنگاری نیاز به تلاش مداوم بسیار زیادی دارد. برای اینکه شخص یک عملکرد هش رمزنگاری را برگرداند، باید با استفاده از سعی و خطا، حالات مختلف ورودی را امتحان کند تا به خروجی مدنظر برسد.

با این وجود، امکان تولید یک خروجی مشابه از ورودی‌های مختلف نیز وجود دارد که به آن مشکل خروجی یکسان یا تصادم (Collision) می‌گویند.

از نظر فنی، یک تابع Hash رمزنگاری باید سه ویژگی داشته باشد تا ایمن محسوب شود. این ویژگی‌ها را می‌توانیم تحت عناوین: عدم تصادم، یک طرفه بودن و عدم پیش بینی خروجی یکسان توصیف کنیم.

قبل از بحث در مورد هر ویژگی، بیایید منطق آن‌ها را در سه جمله کوتاه خلاصه کنیم.

عدم تصادم: هر ورودی خاص، خروجی مختص به خود را دارد.
یک طرفه بودن: برگرداندن تابع Hash (یافتن ورودی از یک خروجی معین) غیرممکن است.
عدم پیش بینی خروجی یکسان: با داشتن یک ورودی و خروجی مشخص، امکان یافتن ورودی متفاوت دوم که همان خروجی قبلی را تولید کند، وجود ندارد.

کاربردهای هش در بلاکچین

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

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

بررسی صحت داده
یکی دیگر از کاربردهای الگوریتم‌‌های هش، تولید چک سام‌ (CheckSum) بر روی فایل‌هاست. چک سام، به کاربران تضمین صحت داده می‌دهد و به آن‌ها کمک می‌کند تا هر تغییری را بر روی فایل‌ها سریعاً متوجه شوند. اما این سیستم در مورد اصالت فایل تضمینی نمی‌دهد و هکرها می‌توانند با تغییر کلی فایل، Hash جدید تولید و از این طریق به داده‌‌های فایل دسترسی پیدا کنند. استفاده از چک سام زمانی کاربرد دارد که کاربر در رابطه با اصالت فایل اطمینان داشته باشد.

کاربرد Hash در استخراج

مراحل زیادی در استخراج بیت کوین وجود دارد که در آن‌ها از توابع هش استفاده می‌شود؛ مانند بررسی مانده، پیوند دادن ورودی و خروجی تراکنش‌ها و هش تراکنش‌های درون یک بلاک برای تشکیل یک درخت مرکل. اما یکی از دلایل اصلی امنیت بلاک چین بیت کوین این مسئله است که ماینرها برای یافتن یک Hash معتبر برای بلاک بعدی، نیاز به اجرای بی‌شمار تابع هش دارند.

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

در این حالت، نرخ هش یا هش ریت (Hash rate) نشان‌دهنده میزان قدرت پردازش شبکه در استخراج بیت کوین است. اگر میزان Hash شبکه افزایش یابد، پروتکل بیت کوین به طور خودکار سختی استخراج را تنظیم می‌کند تا میانگین زمان لازم برای استخراج یک بلاک نزدیک به ۱۰ دقیقه باقی بماند. در مقابل، اگر چندین استخراج کننده تصمیم بگیرند که از شبکه خارج شوند و باعث کاهش قابل توجه میزان Hash شوند، سختی استخراج تنظیم شده و ماینینگ آسان‌تر می‌شود (تا میانگین زمان بلاک ​​به ۱۰ دقیقه برسد).

BirHosting hash2

تابع هش چگونه کار می‌کند؟

توابع هش با توجه به سبک ساز‌ و‌‌ کارشان خروجی‌هایی با اندازه‌های متفاوت تولید می‌کنند؛ اما اندازه‌ی خروجی یک نوع خاص از تابع Hash همیشه یکسان است. برای مثال الگوریتم SHA-256 که تابع هش بیت کوین و پرکاربردترین هش جهان است؛ فقط قادر به تولید خروجی ۲۵۶ بیتی است. طول و مقدار ورودی هر میزان که باشد، مقدار هش ۲۵۶ بیت خواهد بود.

تابع هش رمزنگاری چیست؟

تابع هش رمزنگاری همان تابع Hash است با این تفاوت که این الگوریتم از فرایند رمزنگاری برای افزایش دوچندان امنیت استفاده می‌کند.

به‌دست آوردن ورودی از مقدار هش کار بسیار دشواری است و تقریباً محال است. این امر سبب شده فرایند هشینگ امن و قابل اطمینان باشد. با این حال، توسعه‌دهندگان سعی کرده‌اند از طریق رمزنگاری این امنیت را در تابع Hash رمزنگاری شده چند برابر کنند.

این توابع نوع خاصی از الگوریتم‌‌های Hash هستند که ویژگی‌های مخصوص به خود را دارند؛ این ویژگی‌ها سبب شده برای تشخیص هویت، ‌ حفظ امنیت بیشتر، ‌ ساخت امضای دیجیتال و تأیید صحت داده‌ها در سیستم‌های دیجیتالی مختلف مورد استفاده قرار بگیرند.


پست های توصیه شده