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

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

تاریخچه توابع هش

ظهور اولین تابع هش به سال ۱۹۶۱ باز می گردد. در آن زمان Wesley peterson تابع Cyclic Redundancy Check را ایجاد کرد. این تابع برای بررسی صحیح بودن داده های ارسال شده در شبکه ها (مانند اینترنت) و در سیستم ذخیره سازی دیجیتال ایجاد شده بود. پیاده سازی آسان و بسیار سریع، باعث شد سریعا مورد پذیرش قرار بگیرد و امروزه یک استاندارد صنعتی است. با تکامل محاسبات و کامپیوترها، این سیستم ها به طور فزاینده ای تخصصی شدند.

از جمله آنها می توانیم به موارد زیر اشاره کنیم:

  1. MD2: یکی از اولین توابع هش رمزنگاری است . ایجاد شده توسط رونالد ریست ، در سال ۱۹۸۹ . با سطح بالایی از کارایی و امنیت در حال حاضر، در امنیت اینترنت ضروری بود. تکامل متعاقب آن منجر به ایجاد تابع هش MD5 شد. که هنوز هم در محیط هایی که ایمنی اولویت بالایی ندارد استفاده می شود.
  2. RIPEMD: یک تابع هش رمزنگاری است که توسط پروژه اروپایی RIPE در سال ۱۹۹۲ ایجاد شد . عملکرد اصلی آن جایگزینی استاندارد فعلی، تابع هش MD4 بود. در حال حاضر هنوز هم بسیار ایمن در نظر گرفته می شود، به خصوص در نسخه های  RIPE MD-160 و  RIPE MD-256 و RIPEMD-320.
  3. SHA: استاندارد فعلی برای هش رمزنگاری. ایجاد شده توسط NSA در سال ۱۹۹۳ ، به عنوان بخشی از پروژه داخلی خود برای احراز هویت اسناد الکترونیکی. SHA و مشتقات آن امن ترین توابع هش تاکنون در نظر گرفته شده اند. SHA-256 به دلیل بنیادی بودن در فناوری بیت کوین ، مورد توجه ویژه قرار گرفته است.

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

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

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

توضیح دقیق تر

در MD5 و SHA-256 موارد زیر را متوجه شویم:

اولین ورودی داده منجر به یک هش منحصر به فرد برای موارد MD5 و SHA-256 می شود. نتایجی که با واقعیت هر یک از این توابع تنظیم شده است. در مدخل دوم، اصلاح کوچکی در متن صورت گرفته است. این اگرچه حداقل است، اما به طور کامل نتیجه هش‌ها را برای MD5 و SHA-256 تغییر می دهد.

این ثابت می کند که هش ها در هر صورت منحصر به فرد خواهند بود. که به ما امکان می دهد مطمئن باشیم که هیچ بازیگر مخربی نمی تواند به راحتی هش را به داده اولیه تبدیل کند. اگرچه دستیابی به این امر غیرممکن نیست، اما یک هکر می تواند صدها سال را صرف پردازش داده ها کند تا به هدف خود دست یابد.

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

ویژگی های توابع هش

از ویژگی های اصلی توابع هش می توان به موارد زیر اشاره کرد:

  1. محاسبه آنها آسان است. الگوریتم های هش بسیار کارآمد هستند و برای اجرا به قدرت محاسباتی زیادی نیاز ندارند.
  2. تراکم پذیر است. این بدان معناست که صرف نظر از اندازه ورودی داده، نتیجه همیشه یک رشته با طول ثابت خواهد بود. در مورد SHA-256، رشته دارای ۶۴ کاراکتر خواهد بود.
  3. عملیات از نوع بهمنی. هر تغییر جزئی در ورود داده ها منجر به هش متفاوتی نسبت به ورودی داده اصلی می شود.
  4. مقاومت ضعیف و قوی در برابر برخورد. این به این واقعیت اشاره دارد که محاسبه هش غیرممکن است، که به شما امکان می دهد هش برابر دیگری پیدا کنید. مفهوم اصلی امنیت هش است که بیشتر به عنوان pre-image یا preimage دوم شناخته می شود.
  5. برگشت ناپذیر هستند. گرفتن هش و به دست آوردن داده هایی که باعث ایجاد آن شده است، در عمل ممکن است امکان پذیر نباشد. این یکی از اصولی است که هش ها را ایمن می کند.

سطح امنیت توابع هش

توابع هش فعلی از امنیت بالایی برخوردار هستند، اگرچه این به معنای خطاناپذیر بودن آنها نیست. یک مثال خوب در این مورد این است؛ تابع هش MD5 در اصل مشخصات همان نوید امنیت بسیار بالایی را می داد. استفاده از آن در اینترنت به دلیل نیاز به سیستم هش برای حفظ امنیت آن گسترش یافت. اما در سال ۱۹۹۶ ، امنیت عملکرد ممکن است شکسته شود. این باعث منسوخ شدن آن شد و توصیه شد از استفاده از آن خودداری شود.

از طرف دیگر عملکردهایی مانند RIPE MD-160 و SHA-256 آنقدر پیچیده هستند که ایمنی آنها هنوز تضمین شده است. به عنوان مثال، برای SHA-256، تخمین زده می شود که هزاران سال طول می کشد تا امنیت آن با استفاده از ابررایانه های فعلی شکسته شود. همین امر در مورد RIPE MD-160 و تحولات متعاقب آن صدق می کند. این بدان معنی است که هر دو عملکرد همچنان سطح بالایی از امنیت را ارائه می دهند و می توان بدون مشکل از آنها استفاده کرد.

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

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

توابع هش در دنیای بلاک چین

از آنجا که آنها سریع، کارآمد، از نظر محاسباتی مقرون به صرفه و منحصر به فرد هستند، توابع هش به طور گسترده در فناوری بلاک چین استفاده می شود. وقتی ساتوشی ناکاموتو وایت پیپر خود را برای بیت کوین منتشر کرد ، توضیح داد که چرا و چگونه از SHA-256 و RIPEMD-160 در بیت کوین استفاده کنید . از آن زمان به بعد، فناوری بلاک چین بسیار تکامل یافته است، اما پایه ها ثابت مانده اند. از رمزنگاری قوی و هش استفاده کنید تا فناوری بسیار امن، خصوصی و حتی ناشناس باشد.

از بین تمام کاربردهای توابع هش در بلاک چین، موارد زیر را می توان برجسته کرد:

ایجاد آدرس (آدرس کیف پول)

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

در بیت کوین، فرآیند ایجاد آدرس کیف پول از توابع هش RIPE MD-160 یا SHA-256 استفاده می کند. هر دو برای بهبود امنیت فرآیند و منحصر به فرد و تکرار نشدن استفاده می شوند.

فرآیند استخراج معدن

فرآیند بازاریابی شامل چندین مرحله است که در زیر منعکس شده است: استخراج است. ، یکی دیگر از مراحل مهم فناوری بلاک چین است که در آن از توابع هش استفاده می شود. در بیت کوین، استخراج به شدت از محاسبه هش SHA-256 توزیع شده در هر یک از گره های آن استفاده می کند. ماینرها مسئول محاسبه میلیون ها هش برای ایجاد بلاک های جدید بیت کوین هستند. این فرآیند همچنین برای تأیید تراکنش هایی که در شبکه انجام می شود استفاده می شود.

اگرچه فرآیند محاسبه هش بسیار سریع است، اما استفاده فشرده از آن این فرآیند را به شدت دشوار می کند. این باعث می شود که ماینرها از قدرت محاسباتی بالایی برای حل معماهای بیت کوین استفاده کنند. با حل آنها، ماینرها با ۶.۲۵ بیت کوین  در هر بلوک پاداش دریافت می کنند. این مقدار نزدیک به ۹۶.۸۷۵ دلار (نوامبر ۲۰۲۰) است. این انگیزه اقتصادی چیزی است که عملکرد و امنیت کل شبکه بیت کوین را حفظ می کند.

قراردادهای هوشمند

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

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