تابع هش (Hash Function) چیست؟

تابع هش چیست؟تابع هش را می‌توان یکی از اصلی‌ترین ابزار اینترنت امن دانست. توابع هش از علوم رایانه‌ای مهم و پرکاربرد هستند که این روزها در دنیای رمزارز نیز بسیار کارایی دارند. در ادامه به بررسی این تابع خواهیم پرداخت.پیش‌نیاز مطالعه: امنیت بلاکچین چطور تامین می‌شود؟تابع هش (Hash Function) چیست؟تابع هش یا توابع هش الگوریتم‌های ریاضی هستند که داده‌ها را با اندازه و طول متغیر دریافت می‌کنند و به خروجی یکسان و قطعی تبدیل‌شان می‌کنند. توابع هش رکن اصلی فرایند هشینگ هستند (در فرایند هشینگ از طریق یک فرمول ریاضی ورودی‌ها با مقادیر مختلف تبدیل به یک خروجی با مقدار ثابت می‌شوند).به عبارتی دیگر، می‌توان گفت تابع هش یک رشته کد با طول متناوب را دریافت و تبدیل به یک خروجی با طول ثابت می‌کند.ویژگی‌های اصلی تابع هش:طول خروجی تابع هش یا مقدار هش، همیشه ثابت است.تا زمانی که ورودی تغییر نکند، مقداری خروجی تابع هش قطعی و ثابت است.مقدار هش معمولاً بسیار کوچک‌تر از ورودی است. به‌همین خاطر به تابع هش، فشرده‌ساز نیز می‌گویند.عملکرد تابع هش با رمزنگاری متفاوت است.توابع هش به‌صورت یک‌طرفه طراحی شده‌اند. به‌عبارتی دیگر در هشینگ به‌دست آوردن خروجی از ورودی امکان‌پذیر است و عملیات عکس آن یعنی به‌دست آوردن ورودی از خروجی تقریباً غیر‌ممکن است.کاربردهای تابع هشذخیره کلمه عبورامنیت بلاکچینبررسی صحت دادهتابع هش رمزنگاری چیست؟تابع هش رمزنگاریتابع هش رمزنگاری از فرایند رمزنگاری برای افزایش دو‌چندان امنیت استفاده می‌کند. قبل‌تر گفتیم که به‌دست آوردن ورودی از مقدار هش کار بسیار دشوار و تقریباً محال است. این امر سبب شده فرایند هشینگ امن و قابل اطمینان باشد. با این حال توسعه‌دهندگان سعی کرده‌اند از طریق رمزنگاری این امنیت را در تابع هش رمزنگاری شده چند برابر کنند.این توابع نوع خاصی از الگوریتم‌‌های هش هستند که ویژگی‌های مخصوص به خود را دارند؛ این ویژگی‌ها سبب شده برای تشخیص هویت،‌ حفظ امنیت بیشتر،‌ ساخت امضای دیجیتال و تایید صحت داده‌ها در سیستم‌های دیجیتالی مختلف مورد استفاده قرار بگیرند.ویژگی‌های تابع هش رمزنگاریقطعی بودنسرعت بالا در محاسبهیک‌طرفه بودنتغییر خروجی با تغییرات ورودیمقادیر هش برای هر ورودی متفاوت استمیزان خروجی همیشه ثابت استاستفاده از تابع هش در استخراج رمزارزهادر فرایند ماینینگ ارزهای دیجیتال برای مثال بیت کوین یکی از مراحلی که ماینرها باید طی کنند؛ استفاده از تابع هش است. استفاده‌ی بسیار ماینرها از هشینگ در طی فرایند استخراج بلاک‌‌های جدید از اصلی‌ترین دلایل امنیت شبکه بلاکچین است.بیشتر بدانید: 5 روش هک شدن بیت کوین‌؛ آیا بیت کوین امنیت دارد؟یک ماینر برای ایجاد هش بلاکی که در حال ماین کردن آن است، باید ورودی‌های متعددی را بررسی کند. آن‌ها فقط زمانی می‌توانند اعتبارسنجی بلاک جدید خود را نهایی کنند که یک مقدار هش با تعداد صفرهای اولیه مشخص پیدا کنند. مقدار این صفر‌‌ها سختی فرایند استخراج را مشخص می‌کنند و تعداد آن‌ها بستگی به مقدار هش دارد و توسط شبکه بلاکچین مشخص می‌شود.تابع هش در ماینینگنرخ هش ریتاگر در رابطه با کاربرد توابع هش در فرایند ماینینگ ارزهای دیجیتال مطالعه کرده باشید؛ بی‌شک با عبارت هش ریت‌ (Hash Rate) مواجه شده‌اید. "هش ریت" یا "نرخ هش" نشان‌دهنده‌ی میزان قدرت پردازش شبکه در استخراج بیت کوین است و معیاری برای اندازه‌گیری عملکرد یک دستگاه ماینر است. یا می‌توان گفت تعداد عملیات‌های هشینگ که در بستر فرایندهای استخراج شبکه در حال اجرا هستند را نمایش می‌دهد.اگر میزان هش ریت شبکه به‌خاطر افزایش عملیات ماینینگ بالا برود؛ سیستم به‌طور خودکار سختی استخراج را طوری تنظیم می‌کند که میانگین لازم برای استخراج هر بلاک در شبکه بیت کوین همان 10 دقیقه بماند.در حالتی دیگر اگر به خاطر توقف ماینینگ چندین ماینر به‌صورت هم‌زمان نرخ هش کاهش پیدا کند؛ باز هم شبکه سختی استخراج را به‌گونه‌ای تنظیم می‌‌کند که میانگین زمان ماین کردن تغییری نداشته باشد.چند تابع هش پر‌کاربردMD5 - SHA - RIPEMD - Whirlpool - Blakeصحبت پایانیدر آخر باید اشاره کرد که اگر توابع هش نبودند، در دنیای وب خبری از امنیت نبود. این توابع در حالت عادی در فرایند‌هایی مانند جستجو در پایگاه‌های داده، تجزیه و تحلیل پرونده‌ها و داده‌های سنگین و حجیم، مدیریت داده‌ها و اطلاعات و زمینه‌های متعدد دیگر کاربرد دارند. نوع رمزنگاری شده‌ی آن‌ها هم به‌طور گسترده در زمینه‌ی امنیت اطلاعات از جمله تایید اعتبار پیام، اثر انگشت دیجیتال، تایید پرداخت و دیگر موارد امنیتی اطلاعاتی استفاده می‌شود.در سیستم بیت کوین توابع هش رمزنگاری در زیرساخت، فرایند استخراج و ایجاد آدرس‍ها، کلید‌های عمومی و خصوصی نقش دارند.همچنین این توابع در زمانی که با حجم زیادی از اطلاعات مواجه هستیم، به کمک‌مان می‌آیند. در این حالت، می‌توان یک فایل بزرگ و دارای حجم بالای اطلاعات را به عنوان ورودی به یک تابع هش داد و سپس از خروجی آن‌ که حجم بسیار کم‌تری دارد، به‌راحتی استفاده کرد.بیشتر بدانید: آیا حمله 51 درصدی به بلاکچین بیت کوین امکان دارد؟