تابع هش، هشینگ و هش ریت چیست؟

در حال حاضر استفاده از فضای مجازی و اینترنت بسیار فراگیر شده است. موضوع امنیت و نگهداری از اطلاعات ورودی و خروجی از این فضا بسیار حائز اهمیت است. اگر امنیت اینترنتی وجود نداشت، این طور میتوان گفت که نحوه استفاده از اینترنت به شکلی که امروز وجود دارد، امکانپذیر نبود. اما چه چیزی باعث امنیت اینترنت میشود؟ حالا که مبحث ارزهای دیجیتال و سرمایه افراد به میان آمده است، چطور باید امنیت را برقرار کرد؟ در ادامه بررسی میکنیم که تابع هش و هشینگ چیست؟ از چه الگوریتمهایی در آن استفاده میشود؟ هش ریت چیست و چه تاثیری بر سرمایهگذاران دارد؟ در این مطلب از وبسایت OMPfinex بهطور جامع به موضوع هش و هشینگ خواهیم پرداخت.
تابع هش و هشینگ چیست؟
تابع هش و هشینگ تابعی است که مجموعهای از دادههای ورودی را دریافت کرده و آنها را به رشتههای مبتنی تبدیل میکند. از این تابع بهمنظور پایگاه داده برای بازیابی اطلاعات با سرعت بالا استفاده میشود. هشینگ یا هش کردن عملیاتی است که در آن تابع هش بهعنوان یک عملگر ریاضی، انواع دادههای ورودی را به خروجی رمزنگاری شده تبدیل میکند. تابع درهمساز نام دیگر تابع هش است. هش، خروجی تابع هش نام دارد و به استفاده از تابع هش برای هش کردن، هشینگ میگویند.
بهطور کلی تابع هش شناسه خاص و منحصربهفردی بوده که برای هر قسمت از یک محتوای خاص استفاده میشود. عملیاتی که تابع هش و هشینگ بر روی ورودیها انجام میدهد سبب ساده شدن دادهها شده و آنها را به یک جمله رمزدار با طول مشخص تبدیل میکند. هیچ محتوایی هش یکسانی ندارد و اگر محتوا تغییر کند هش آن نیز تغییر میکند.
چگونگی انجام فرآیند هشینگ
هر شخصی که در ریاضیات و عمل رمزنگاری دارای تخصص باشد میتواند تابع هش برای خود بسازد. تابع هش انواع مختلفی داشته و برای ساخت آن روشهای متنوعی وجود دارد. پرکاربردترین نوع تابع هش sha-256 نام دارد. هر مقدار ورودی تحویل تابع هش شود، به جملهای رمزنگاری شده بهصورت یک رشته با طول ثابت تبدیل میشود. برای مثال اگر جملهی “الاغها پرواز نمیکنند” را توسط الگوریتم به هش تبدیل کنیم، به یک رشته مثل 4e17j835 خواهیم رسید.

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

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

تغییر ورودی هش را تغییر میدهد
تابع هش به تغییرات بسیار کوچک نیز حساس است و با ایجاد هر تغییر در ورودی، هش آن نیز تغییر میکند. بهعنوان مثال تابع هش کلمه “سلام” و کلمه “سلام؟” با یکدیگر متفاوت است. این مزیت بسیار حائز اهمیت و کاربردی است. استفاده در صحت کلمه ورودی یک نمونه از کاربردهای آن است. برای مثال هنگامی که میخواهید وارد سایتی شوید و کلمه عبور را وارد میکنید، سیستم هش کلمه ورودی را با هش پایگاه داده مطابقت میکند و در صورت صحیح بودن اجازه ورود میدهد. اگر دقت کرده باشید برخی از سایتها نسبت به حروف بزرگ و کوچک کلمه ورودی حساس هستند، این بهمعنی حساسیت در تابع هش است.
عدم یکسان بودن خروجیها
دو ورودی A و B تابع هش با یکدیگر تفاوت دارند و احتمال این که دو ورودی توابع یکسانی داشته باشند غیرممکن است. این مطلب به این معنی است که هر ورودی، هش منحصربه فرد خود را دارد. در بحث ارزهای دیجیتال، تابع هش سبب برقراری مهمترین اصل بلاکچین یعنی تغییرناپذری میشود.
توابع هش
پس از بررسی کامل اینکه تابع هش و هشینگ چیست؟ خوب است با الگوریتمهای آن نیز آشنا شویم. الگوریتمهای مختلفی برای رمزنگاری توابع هش وجود دارد. در ادامه برخی از این الگوریتمها و کارکرد آنها را بررسی میکنیم.
الگوریتم RIPEMD
این کلمه مخفف RACE Integrity Primitives Evaluation Message Digest است. این الگوریتم مجموعهای از توابع هش بوده که توسط گروه بلژیکی COSIC در سال ۱۹۹۶ توسعه یافت. طول هش توابع این الگوریتم ۱۲۸، ۱۶۰، ۲۵۶ و ۳۲۰ بیتی است. تاکنون در خصوص حمله نسخه ۱۶۰ آن گزارشی اعلام نشده است؛ اما دو مورد ۲۵۶ و ۳۲۰ دارای سطح امنیتی کمتری بوده و تنها از یکسان بودن خروجیها جلوگیری میکنند.
الگوریتم MD5
این الگوریتم که مخفف کلمه Message Digest به معنی خلاصه پیام بوده و توسط رونالد ریوست در سال ۱۹۹۱ بهمنظور جایگزینی برای تابع قبلی MD4 طراحی شده است. این الگوریتم به شکل گسترده استفاده شده و هش ۱۲۸ بیتی ایجاد میکند.
برخی از مشکلات بهوجود آمده برای الگوریتم MD5 سبب شده تا روند استفاده از آن روبه کاهش برود. در حال حاضر از این الگوریتم بهمنظور جلوگیری از دستکاری ناخواسته پایگاه اطلاعات استفاده میشود.

الگوریتم BLAKE
این الگوریتم در رقابتی که از طرف موسسه ملی استاندارد و فناوری آمریکا با هدف انتخاب بهترین تابع برای توسعه SHA-3 برگزار شد، در میان ۵ الگوریتم برتر حضور داشت.
الگوریتم بلیک دارای ۲ نسخه متفاوت است. شناختهشدهترین عضو در خانواده بلیک، نسخه blake-2 است. این الگوریتم در سال ۲۰۱۲ انتشار یافت. هدف از ایجاد آن، جایگزینی مناسب برای الگوریتمهای MD5 و SHA-1 بود. الگوریتمهای نام برده شده کاربردهای بسیاری داشتند و از طرفی آسیبپذیر نیز بودند.
الگوریتم blake-2 به دو گروه blake-2s و blake-2b تقسیم میشود. گزارشات نشان میدهند که نسخه blake-2 از از الگوریتمهای MD5، SHA-3، SHA-2 و SHA-1 بسیار سریعتر بوده و از نظر امنیت با آخرین نسخه تابع هش SHA برابری میکند.
کاربرد هش در بلاکچین چیست؟
تا اینجا بررسی کردیم که تابع هش و هشینگ چیست؟ اما این موضوع چطور به بلاکچین مربوط میشود؟ هش به منظور نشان دادن وضعیت فعلی شبکه در بلاکچین مورد استفاده قرار میگیرد. نحوه عملکرد هش در بلاکچین به این صورت است که تمامی اطلاعات ورودی در بلاکچین و تراکنشها را با هم ترکیب کرده و هش خروجی براساس تمامی تراکنشها و اتفاقات پیشینی است که در بلاکچین اتفاق افتاده است.
با ایجاد اولین بلاک، اولین هش با توجه به تراکنشهای داخل آن محاسبه میشود. پس از این هر بلاک جدیدی که ایجاد میشود علاوهبر تراکنش آن، هش بلاک پیشین نیز به اطلاعات ورودی تابع هش تحویل داده میشود. این عمل سبب ایجاد زنجیرهای از بلاکها میشود. دقت داشته باشید که هش بلاک جدید با توجه به هش بلاک قبل از آن ایجاد میشود. این سیستم هش کردن بلاکها با یکدیگر نشاندهنده آن است که دستکاری تراکنشها ممکن نیست.
اگر کوچکترین تغییر در اطلاعات تراکنش ایجاد شود، هش آن بلاک ثبت شده و تغییر میکند. به همین شکل هش تمامی بلاکهای پس آن تغییر خواهد کرد؛ بنابراین اگر قصد تغییر تراکنشی در بلاک شبکه بلاکچین را داشته باشیم، باید تمامی هش همهی بلاکهای قبل آن را تغییر دهیم؛ زیرا هر بلاک علاوهبر هش خود، هش بلاکهای پیشین را نیز دارد. انجام این عمل ناممکن بوده و براساس آن میتوان از هرگونه تقلب و دستکاری جلوگیری کرد. این مورد یکی از ویژگیهای هیجانانگیز و جالب بلاکچین است.

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

اعتبارسنجی و امضای دیجیتال
امضای دیجیتال فرایندی رمزنگاری شده است که به منظور تأیید صحت و اعتبارسنجی دادهها مورد استفاده قرار میگیرد. به عبارتی دیگر امضای دیجیتال نوعی کد متصل به پیام است که اثبات میکند پیام در طول مسیر دستکاری نشده است.
مکانیزم امضای دیجیتال اولینبار در سال ۱۹۷۰ ارائه شد و نقش قابلتوجهی در توسعه علم رمزنگاری ایجاد کرد. توجه داشته باشید که برای امضا کردن سندهای طولانی نباید از الگوریتمهای رمزنگاری کلید عمومی استفاده کرد. معمولاً بیشتر پروتکلهای ارزهای دیجیتال برای صرفهجویی در زمان، بهجای رمزنگاری کل پیام از توابع هش استفاده میکنند.

امضا کردن
پس از آن که فرآیند هشینگ اطلاعات انجام گرفت، فرستنده نیز باید آنها را امضا نماید. در این نقطه رمزنگاری کلید عمومی وارد عمل میشود. برای الگوریتمهای امضای دیجیتال انواع مختلفی وجود دارد. هر کدام از این موارد دارای مکانیزم خاصی هستند.
در کل پیام هش توسط کلید خصوصی امضا میشود و دریافت کننده با استفاده از کلید عمومی میتواند صحت آن را مشاهده نماید. اگر در هنگام امضا فرستنده از کلید خصوصی استفاده نکند، گیرنده نمیتواند از کلید خصوصی مربوطه برای تایید صحت آن اطلاعات نیز استفاده کند.
هش ریت چیست؟
هش پاور یا هش ریت معیاری است برای اندازهگیری عملکرد دستگاه ماینر یا تعداد تلاشهای یک دستگاه ماینر در هر ثانیه برای کامل کردن محاسبات. همچنین هش ریت را میتوان میزان سرعت یک ماینر برای حل کردن هش موجود در هر بلاک برای رسیدن به پاداش دانست. هش ریت که معادل فارسی آن قدرت هش یا نرخ هش است، از جمله اساسیترین و مهمترین مفاهیم در فرآیند استخراج است. بهعنوان مثال در شبکه بیتکوین، برای استخراج این رمزارز محبوب، باید محاسبه کرد برای ایجاد و پیدایش یک بلاک جدید در مدت زمان ده دقیقهای، چه میزان قدرت هش لازم است.
واحد هش ریت چیست و چگونه اندازهگیری میشود؟
قدرت هش براساس محاسباتی که ماینر در مدت زمان یک ثانیه انجام میدهد اندازهگیری میشود و واحد آن “هش بر ثاینه” (H/S) است. این واحد به مانند دیگر عملیاتهای محاسباتی دارای واحدهای بزرگتر و کوچکتر است.
- یک کیلوهش بر ثانیه یا هزارش هش بر ثانیه KH/S1
- یک مگاهش بر ثانیه یا یک میلیون هش بر ثانیه MH/S1
- یک گیگاهش بر ثانیه یا یک میلیارد هش بر ثانیه GH/S1
- یک تراهش بر ثانیه یا یک تریلیون هش بر ثانیه TH/S1
- یک پتاهش بر ثانیه یا یک کوادریلیون هش بر ثانیه PH/S1
- یک اگزاهش بر ثانیه یا کوئینتیلیون هش بر ثانیه EH/S1
این رشته تا بینهایت میتواند ادامه یابد. هر ارز دیجیتالی با دستگاه مختلفی استخراج میشود و هش آنها نیز یکسان نیست؛ زیرا عملیات استخراج به اندازههای مختلفی از حافظه، توان و محاسبات نیاز دارد. افرادی که در زمینه استخراج فعال هستند میتوانند هش ریت خود را با استفاده از نرم افزارهای محاسبه هش ریت نیز محاسبه کنند.
ارتباط هش ریت با سود آوری چیست
هش ریت یا هش پاور با سود استخراج رابطه مستقیم دارد. پایین آمدن یا کاهش هش ریت به این معنا است که دستگاههای ماینر برای حل معاملات و دریافت پاداش ارز دیجیتال بابت ایجاد بلاک، باید سختتر تلاش کنند و در هر ثانیه هشهای بسیاری بزنند؛ بدین ترتیب سودآوری استخراج کمتر میشود. خلاف این فرآیند سبب سودآوری بیشتر میشود. بالا بودن یا افزایش هش ریت نشان از استخراج ارز بیشتر و بهطبع سودآوری بیشتر است.
پاداش بلاک چیست و چه نقشی در عملکرد بلاکچین دارد؟
تاثیر هش ریت بر سرمایه گذاران و سختی شبکه
هش ریت شبکه استخراج رمزارزها مانند بیتکوین نسبت به سال اول ورود این ارزهای دیجیتالی بسیار بیشتر شده است و این موضوع بهدلیل ایجاد سختی شبکه است. هر چند سال یکبار سختی شبکه ارزهای دیجیتال رو به افزایش میرود و بهطبع در پی آن باید هش ریت دستگاههای ماینر نیز افزایش پیدا کند. افزایش قدرت هش دستگاههای ماینر سبب افزایش دارایی سرمایه گذاران میشود و این اصلیترین دلیل برای آگاهی از خریدی دستگاههای ماینر است.
جمعبندی
در این مطلب سعی شد تا حد امکان در خصوص اینکه تابع هش، هشینگ و هش ریت چیست به طور کامل توضیح داده شود. این اطلاعات بهمنظور افزایش سطح دانش عمومی نسبت به چگونگی برقراری امنیت موجود در فضای مجازی و ارزهای دیجیتال است.