هش و امنیت ارزهای دیجیتال!
بهتر است در ابتدا با یک مثال معنای کلمه هش را برای شما توضیح دهیم، زمانی که قصد ارسال پیامی بسیار مهم و ضروری را برای فردی مانند کارفرما دارید، احتمالا پس از ارسال پیام، با او تماس خواهید گرفت تا از تحویل آن پیام اطمینان حاصل نمایید.
به عبارتی دیگر اگر میخواهید تمامی نوشتههای شما به طور دقیق و کامل به کارفرما برسد، باید بخواهید که متن را مجددا برای شما ارسال نماید تا از درست و دقیق بودن محتوا اطمینان پیدا کنید. انجام تمامی این موارد به دقت و زمان بالایی نیاز دارد و حتی ممکن است در انجام برخی از این مراحل با مشکل و یا خطا مواجه شوید. در ادامه این مقاله درباره تابع هش بیشتر با شما صحبت خواهیم کرد.
هش کردن چیست؟
الگوریتم هش درواقع یک تابع رمزنگاری شده است. در زبان ریاضی از تابع برای نشان دادن رابطه یک یا چند متغیر، عبارت و یا مجموعه استفاده میشود. لذا، میتوان اینگونهدبیان کرد که تابع هش یک ورودی دریافت و درنهایت یک خروجی متناسب و هماهنگ را تحویل خواهد داد. هش یک ورودی دلخواه از متن، عکس و یا هر مورد دیگری را دریافت کرده و سپس یک رشته را با ساختار و طول ثابت تحویل خواهد داد و خروجی که تحویل میگیرید، مقدار تابع نامیده میشود. لازم به ذکر است که تابع هش به صورت یک طرفه میباشد و نمیتوان آن را از طریق وارونه کردن، بازسازی کرد و بنابراین انجام این فرایند تاثیر بسزایی در افزایش امنیت اطلاعات خواهد داشت.
ویژگیهای هش رمزنگاری شده
تابع هش رمزنگاری شده را میتوان به عنوان یکی از پایههای مهم بلاک چین امن معرفی کرد. این تابع ویژگیهای متعددی دارد، همچون:
- قطعی بودن: همانطور که در قسمتهای قبلی به آن اشاره کردیم، تابع هش موظف است که در قبال ورودی مشخصی که دریافت میکند، یک خروجی درست و مرتبط را به شما تحویل دهد. مقدار این خروجی ثابت بوده و اصلا مهم نیست که ورودی برای چندین بار در تابع قرار گیرد، زیرا در نهایت یک خروجی ثابت به شما تحویل داده خواهد شد. ثابت بودن این خروجی به شما کمک میکند که دادهها را راحتتر پیگیری کنید. پس اگر از هر ورودی، مقدار خروجی متفاوتی را دریافت میکردید، لذا هر بار با تعداد کثیری از کدهای هش مواجه گشته و پیگیری و بررسی آنها کاری دشوار و سخت خواهد بود.
- سرعت بالا در محاسبه: تابع هش بایستی ورودی مورد نظر را با سرعت زیادی به مقدارهش تبدیل نماید. اگر سرعت این تابع پایین باشد، عملکرد سیستم ناکارآمد خواهد بود.
- یکطرفه بودن: همانطور که میدانید تابع هش، یکطرفه است یعنی در ازای ورودی، یک خروجی ثابت به دست خواهد آمد، ولی نمیتوان این عملکرد را به صورت بالعکس انجام داد. البته در نظر داشته باشید که انجام وارونه این روند شدنی است، اما بسیار سخت و پیچیده بوده و هرکسی از پس آن برنخواهد آمد.
- تغییر خروجی در صورت تغییر ورودی: در صورتی که در ورودی هش، تغییراتی حتی بسیار کوچک به وجود آید، خروجی به طور کامل تغییر خواهد کرد؛ به عنوان مثال زمانی که وارد اینستاگرام خود میشوید، سیستم رمز ورودی شما را ذخیره کرده است و شما میتوانید به راحتی وارد صفحه کاربری خود شوید. این در حالی است که اگر تغییرات بسیار کوچک و جزیی را در پسورد به وجود آورید، دیگر امکان وارد شدن به صفحه با پسورد ذخیره شده در سیستم وجود ندارد.
- متفاوت بودن مقدار هش برای ورودی: ورودی هر مقدار هش، دارای مقدار مشخصی است و نمیتوان گفت که هش دو مقدار متفاوت، دارای یک ورودی و هش یکسان یا مشابه باشند. به عبارتی دیگر امکان ندارد که دو هش متفاوت، خروجی یکسانی داشته باشند.
- ثابت بودن میزان خروجی: در فرآیند هشینگ، به ازای هر ورودی، یک میزان خروجی ثابت و یک اندازه به شما داده میشود؛ حتی اگر ورودی اندازهای بسیار بزرگ داشته باشد.
بیشتر بدانید:ارز دیجیتال به زبانی ساده!
کاربرد هش رمزنگاری شده
هش کردن دو کاربرد اصلی دارد که عبارتند از:
۱-ذخیره کردن رمز عبور
تابع هش موظف است که در زمان خروج، رمز را ذخیره کند. به عبارتی دیگر به جای ذخیره کردن رمز به صورت شفاف، هش رمز عبور را به صورت یک فایل ذخیره خواهد کرد. این فایل به صورت جفتهایی به شکل آیدی کاربر ذخیره میشود. در نظر داشته باشید که تنها نفوذ کننده میتواند هش رمز عبور را مشاهده نماید و نمیتواند از طریق هشها، وارد شده و یا رمز عبور را به دست آورد.
۲-بررسی صحت داده
از کاربردهای رایج هش کردن، بررسی صحت و درستی داده است که از آن میتوان برای تولید چکسام بر روی داده فایل استفاده گردد. در صورتیکه هر تغییری بر فایل اصلی ایجاد شود، کاربرمتوجه آن خواهد شد. در نظر داشته باشید که کاربر باید از اصالت فایل اطمینان حاصل نماید.
استفاده از توابع هش در دنیای کریپتو
در صورتیکه یک هش از تمامی تکنیکهای رمزنگاری استفاده نماید، در اصطلاح به آن تابع هش رمزنگاری شده گفته میشود. شکستن هش رمزنگاری بسیار سخت و زمانبر است و به تلاش زیاد نیاز دارد. برای آنکه شخصی بتواند عملکرد یک هش رمزنگاری شده را بازگرداند، میبایست حالتهای مختلف یک ورودی را امتحان نماید تا در نهایت به خروجی درست دست یابد. با این حال ممکن است یک خروجی مشابه خروجی اصلی، به وجود آید که به آن مشکل خروجی یکسان گفته میشود. تابع هش در کریپتو باید سه ویژگی کلی داشته باشد که عبارتند از:
- عدم تصادم: یعنی هر ورودی خاص، میبایست خروجی درستی داشته باشد.
- یکطرفه بودن: برگردان یک تابع هش از طریق یافتن ورودی از یک خروجی مشخص غیر ممکن است.
- عدم پیشبینی خروجی یکسان: در صورتیکه یک ورودی و خروجی یکسان داشته باشید، احتمال یافتن یک ورودی متفاوت دوم که همان خروجی را تولید میکند، وجود ندارد.
بیشتر بدانید: چالش های مهم امنیت سایبری در متاورس!
پرکاربردترین توابع هش در کریپتو
در این بخش از مقاله درباره پرکاربردترین توابع هش در کریپتو صحبت خواهیم کرد:
-تابع MD5
این تابع به معنای “خلاصه پیام” بوده که هش 128 بیتی تولید میکند. از این تابع بهعنوان هش رمزنگاری شده در چندین سال گذشته استفاده میشد، اما به علت ایرادات متعددی که داشت، به تدریج کنار گذاشته شد.
-تابع SHA
تابع نامبرده؛ توسط موسسه ملی استاندارد و فناوری کشور آمریکا و همچنین دیگر سازمانهای امنیتی طراحی شده است. این نسخه در ابتدا ایرادات زیادی داشت. به همین علت نسخه جدید آن طراحی شد تا برخی از نقایص نسخه قبلی برطرف شود.
-تابع RIPMED
این تابع مجموعهای از توابع هش بوده که توسط یک گروه تحقیقاتی بلژیکی معرفی شده است. توابع این مجموعه دارای مقادیر 128، 160، 256، 320 بیتی هستند که دارای امنیت بسیار بالایی میباشند.
-تابع Whirlpool
این تابع باتوجه به نسخه اصلاح شده استاندارد رمزنگاری پیشرفته، طراحی شده است. تابع ذکر شده قادر است هر پیامی که طول کمتر از 2256 بایت دارد را دریافت کرده و آن را به هش 64 بایتی تبدیل نماید.
-تابع Blake
این تابع را میتوان بهعنوان یکی از پنج الگوریتم برتر معرفی کرد. این الگوریتم از دو تابع متفاوت تشکیل شده است که یکی از آنها از کلمات 32 بیتی و دیگری از کلمات 64 بیتی استفاده میکند. طول هش محاسبه شده این تابع حداکثر تا 256 بیت میباشد.
سریعترین تابع هش
تابع MD5 را میتوان بهعنوان سریعترین تابع هش برای دادهها و پیامهای طولانی شبکه معرفی کرد که سرعت آن 400 مگابایت بر ثانیه است. “رونالدریوست” این تابع را درسال 1991 به عنوان جایگزین دیگر تابعهای قدیمی؛ یعنی MD4 معرفی کرد. این تابع قادر است هش 128 بیتی را تولید نماید. متاسفانه تابع نامبرده مشکلات متعددی داشت به همین علت کنار گذاشته شده است و امروزه از تابع MD5 برای چک سام استفاده میشود.
خلاصه مطلب
هش کردن به منظور تغییر ناپذیری اطلاعات و امنیت میباشد. با مطالعه این مقاله تمامی اطلاعات لازم را درباره معنای هش کردن و کاربردهای آن، در جهت ارتقای اطلاعات فضای دیجیتالی خود، به دست خواهید آورد.
دیدگاهتان را بنویسید