درهمسازها یا توابع هش (Hash Function) ، نوعی از توابع نگاشت نامتناظر هستند که رشتهای طولانی از دادهها را از ورودی دریافت میکنند و در خروجی یک رشته با طول ثابت را تحویل میدهند. در واقع توابع هَش را میتوان یک اثر انگشت منحصربفرد برای دادههای دیجیتال یا یک متن بحساب آورد.
معمولا از توابع هش در امضاهای دیجیتال، احراز هویت، اسناد دیجیتال، اوراق بهادار دیجیتال و … استفاده میکنند. یکی از کاربردهای مهم توابع درهمساز، بلاکچین یا همان زنجیره بلوکی (Block Chain) میباشد.
توابع هش و ساختار آنها
همانطور که در شکل ۱ مشاهده میشود، توابع درهم سازبا اعمال شدن بر روی یک پیام، چکیدهای منحصربفرد از آن را بوجود میآورند. توابع هَش بایستی دارای ویژگیهای گوناگونی باشند تا بتوانند امنیت مناسبی را ارائه دهند.
باید توجه داشت که فرآیند درهمسازی، یک فرآیند یک طرفه است. بدین معنا که چکیده یک پیام را میتوان با کمک یک Hash Function بدست آورد، امّا از روی یک چکیده پیام با فرض دانستن Hash Function مربوطه نمیتوان، پیام اصلی را استخراج کرد.
درحقیقت توابع هَش، گونهای از توابع رمزنگاری هستند که فرآیند رمزکردن را بصورت یکطرفه انجام میدهند. اینگونه توابع کاربردهای زیادی در رمزنگاری و امنیت دادهها دارند.
ویژگیهای توابع درهمساز
یک تابع درهمساز برای اینکه بتواند قدرت لازم را داشته باشد و امنیت دادهها را تامین کند، بایستی دارای ویژگیهای زیر باشد:
- باید محاسبه چکیده پیام از روی داده بسیار ساده و آسان باشد.
- محاسبه اصل پیام از روی چکیده بسیار سخت و زمانبر باشد(باید تابع درهمساز یک طرفه باشد).
- کوچکترین تغییر در ورودی یک تابع درهمساز، خروجی را به شکل غیرقابل باوری تغییر دهد.
- پیداکردن دو متن که با اعمال یک Hash Function ، چکیده یکسانی را تولید کنند، کاری سخت و دشوار باشد.
- طول پیام ورودی می تواند بسیار طولانی و بلند باشد، امّا طول چکیده پیام نباید زیاد بلند باشد.
بزرگترین مشکل توابع هش، برآورده کردن ویژگی شماره ۴ میباشد. همین ویژگی شماره ۴ بود که باعث شکست شیوه درهمسازی MD5 در سالیان گذشته گردید.
معرفی انواع توابع هش
در گذر زمان، شاهد انواع هَش فانکشنها بوده ایم. دلیل کنار گذاشتهشدن یک تابع هش، شکسته شدن آن میباشد. بدین معنا که ویژگی شماره ۴ که در بالا درباره آن صحبت کردیم، نقض میشود.
در اینجا به معرفی چند دسته از معروفترین توابع میپردازیم:
۱- الگوریتم MD5
این روش توسط آقای رونالد ریوست در سال ۱۹۹۱ عرضه گردید. این الگوریتم در سالیان اخیر کاربردهای بسیار در حوزه امنیت شبکه و امنیت داده پیدا کرده است. امّا در سال ۲۰۰۶ توسط یک لپتاپ در عرض یک دقیقه جعل شد و یک چکیده برای دو پیام متفاوت ایجاد گردید.
این موضوع به معنای شکست این هش فانکشن بود.
۲- الگوریتم SHA1
بعد از شکست MD5، اداره استاندارد و فناوریهای مدرن آمریکا، الگوریتم SHA1 را معرفی کرد. امّا این الگوریتم هم دوام چندانی نیافت و مانند MD5 توسط کامپیوترهای قدرتمند و بوسیله یک تیم از هکرهای چینی به سرپرستی ژیایو ونگ درهم کوبیده شد.
۳- الگوریتم SHA2
این الگوریتم که بعنوان جایگزینی برای SHA1 معرفی شد دارای نسخههی مختلفی میباشد. SHA256، SHA512 و SHA224 معروفترین نسخههای این الگوریتم هستند. عدد انتهایی در این نسخهها، طول چکیده ایجاده شده به بایت را نشان میدهد.
این تابع درهمساز هنوز مقاومت خوبی دارد و تلاش هکرها برای درهمشکستن آن با شکست مواجه گردیده است.
۴- الگوریتم SHA3
از آنجایی که با پیشرفت کامپیوترها و بحث ورود تکنولوژی کوانتومی به تجهیزات دیجیتال، احتمال شکست SHA2 به شدت قوّت گرفته است. بنابراین محققان به دنبال ارائه الگوریتم SHA3 هستند تا در صورت شکست SHA2 آن را جایگزین کنند.
کارشناسان امنیت تنها شش ماه بعد از شکست SHA2 فرصت دارند تا نسخه جدید یک تابع درهمساز را ارائه کنند در غیر اینصورت شاهد جعل گسترده اطلاعات خواهیم بود.
و در پایان..
مطابق اصل کرکهف در رمزنگاری، توابع درهم ساز برای همه آشکار هستند. بنابراین باید قدرت یک تابع هش را در مواردی دیگر جستجو کرد. شکست یا برخورد (Collision) نقطه پایانی برای توابع هش می باشد. بنابراین، همواره هکرهای کلاه سفید به دنبال یافتن این برخورد قبل از هکرها میباشند.