هر هفته با آنتونی؛ تابع هش چیست و چگونه کار میکند؟
در مقاله های هر هفته با آنتونی، سعی میکنیم ویدیوهایی از آندرس آنتونوپولوس (Andreas Antonopoulos) را منتشر کنیم تا دانش و آگاهی افراد را در مورد بیت کوین و حوزه ارزهای دیجیتال بالا ببریم. این هفته ویدئویی در ارتباط با طرز کار توابع هش در نظر گرفته شده است.
کاربران عادی و افراد حرفهای زیادی که در حوزه ارزهای دیجیتال به فعالیت میپردازند، با آنتونی در ارتباط هستند و سوالات مهمی را با او مطرح میکنند. او که میتوان گفت یکی از مسلطترین افراد حوزه ارزهای دیجیتال است، با دقت به این سوالات پاسخ میدهد و اطلاعات مفیدی در اختیار کابران سرتاسر جهان قرار میدهد.
تابع هش چیست؟ چگونه کار میکند؟ آیا میتوان آن را معکوس کرد؟
تابع هش یک سری عملیات ریاضی یا عملیات حساب است. طرز کار آن نیز به این شکل است که یک سری دیتا یا جریان دیتا را میگیرد و آنها را با دستورالعملهای خاصی ترکیب میکند. به تابع هش، الگوریتم هش رمزنگاری نیز میگویند.
توابع هش نمیتوانند معکوس شوند، که این اصلیترین قابلیت آنهاست.
الگوریتم SHA۲۵۶ از دستورالعملهای خاصی برای ترکیب کردن بیتها استفاده میکند که این عملیات در سطوح مختلف باینری انجام میگیرد؛ مانند جابجا کردن بیتها به چپ و راست و عملیات دیگر باینری. تمام این عملیات، یک جریان قراردادی دیتا از طول دیتاهای ورودی تولید میکند. این دیتا در این الگوریتم، ۲۵۶ بیت ثابت است.
نکاتی مهم درباره تابع هش:
- شما نمیتوانید با معکوس کردن توابع هش، به دیتای اولیه برسید
- نمیتوانید پیش بینی کنید که تابع هش چه خروجیای تولید میکند
- نمیتوانید عمدا و با تنظیمات خاصی برای این توابع، یک خروجی مشخص تولید کنید
هر وقت که شما یک دیتا را وارد تابع هش میکنید، تابع با آن یک شماره تصادفی تولید میکند. شماره تصادفیای که ثابت است؛ یعنی اگر شما همان دیتا را بدهید، همان خروجی را میگیرید. فقط شما نمیتوانید این خروجی را پیش بینی کنید. با ذکر مثال توضیح میدهیم:
بازی بیلیارد را تصور کنید. شما یکی از توپها را برمیدارید و یک ضربه بسیار محکم به آن میزنید، به طوری که توپ ۱۰۰ بار به لبههای میز برخورد کند. در نهایت این توپ در یک جای مشخصی میایستد.
اگر شما به همان توپ، در همان مکان، با همان قدرت و با همان زاویه ضربه بزنید، توپ پس از ۱۰۰ بار برخورد با لبههای میز، دقیقا در همان جای قبلی میایستد. اما اگر از مکان نهایی توپ عکس بگیرید و بعد به دنبال جای اولیه توپ بگردید، غیرممکن است بتوانید آن را پیدا کنید؛ چون ممکن است توپ حرکت خود را از زوایای مختلفی شروع کرده باشد و معنی آن این است که تقریبا بینهایت جایگاه و زوایای بسیار زیادی برای ضریه زدن وجود دارد، اما تعداد بسیار محدودی نقطه پایان وجود دارد که توپ میتواند بایستد.
توابع هش بسیار شبیه به مثال بالا کار میکنند. این توابع تقریبا اطلاعات را فشرده میکنند که این برای ایجاد ارتباط بین تابع هش و رمزنگاری سودمند است.
در حقیقت، توابع هش بسیار شبیه به رمزنگاری هستند؛ با این تفاوت که رمزنگاری قابلیت معکوس شدن دارد اما توابع هش این ویژگی را ندارند. همچنین توابع هش قابلیت فشردهسازی دارند. به این معنی که مهم نیست شما چه مقدار دیتا به آن بدهید؛ دیتای خروجی آن همیشه ۲۵۶ بیت خواهد بود.
ویژگیهای تابع هش به صورت مختصر
- تابع هش یک سری عملیات ریاضی است.
- تابع هش قابل معکوس شدن نیست؛ این ویژگی اصلی تابع هش است.
- الگوریتم SHA۲۵۶ از دستورالعملهای خاصی در سطوح مختلف باینری برای ترکیب کردن بیتها استفاده میکند.
- تابع هش قابلیت فشرده سازی دارد که برای الگوریتم SHA۲۵۶ این یک عدد ۲۵۶ بیتی ثابت است.
- اگر یک دیتای ثابت به تابع هش بدهید، خروجی آن نیز ثابت خواهد بود.
- تابع هش بسیار شبیه به رمزنگاری است.