آشنایی با توابع هش (درهم‎سازی )

درهم‎سازها یا توابع هش (Hash Function) ، نوعی از توابع نگاشت نامتناظر هستند که رشته‎ای طولانی از داده‎ها را از ورودی دریافت می‎کنند و در خروجی یک رشته با طول ثابت را تحویل می‎دهند. در واقع توابع هَش را می‎توان یک اثر انگشت منحصربفرد برای داده‎های دیجیتال یا یک متن بحساب آورد.

توابع هش
توابع هش

معمولا از توابع هش در امضاهای دیجیتال، احراز هویت، اسناد دیجیتال، اوراق بهادار دیجیتال و … استفاده می‎کنند. یکی از کاربردهای مهم توابع درهم‎ساز، بلاک‎چین یا همان زنجیره بلوکی (Block Chain) می‎باشد.

توابع هش و ساختار آنها

چکیده پیام
شکل 1 : چکیده پیام

همانطور که در شکل 1 مشاهده می‎شود، توابع درهم ساز با اعمال شدن بر روی یک پیام، چکیده‎ای منحصربفرد از آن را بوجود می‎آورند. توابع هَش بایستی دارای ویژگی‎های گوناگونی باشند تا بتوانند امنیت مناسبی را ارائه دهند.

باید توجه داشت که فرآیند درهم‎سازی، یک فرآیند یک طرفه است. بدین معنا که چکیده یک پیام را می‎توان با کمک یک Hash Function بدست آورد، امّا از روی یک چکیده پیام با فرض دانستن Hash Function مربوطه نمی‎توان، پیام اصلی را استخراج کرد.

درحقیقت توابع هَش، گونه‎ای از توابع رمزنگاری هستند که فرآیند رمزکردن را بصورت یک‎طرفه انجام می‎دهند. اینگونه توابع کاربردهای زیادی در رمزنگاری و امنیت داده‎ها دارند.

ویژگی‎های توابع درهم‎ساز

یک تابع درهم‎ساز برای اینکه بتواند قدرت لازم را داشته باشد و امنیت داده‎ها را تامین کند، بایستی دارای ویژگی‎های زیر باشد:

  1. باید محاسبه چکیده پیام از روی داده بسیار ساده و آسان باشد.
  2. محاسبه اصل پیام از روی چکیده بسیار سخت و زمانبر باشد(باید تابع درهم‎ساز یک طرفه باشد).
  3. کوچکترین تغییر در ورودی یک تابع درهم‎ساز، خروجی را به شکل غیرقابل باوری تغییر دهد.
  4. پیداکردن دو متن که با اعمال یک Hash Function ، چکیده یکسانی را تولید کنند، کاری سخت و دشوار باشد.
  5. طول پیام ورودی می تواند بسیار طولانی و بلند باشد، امّا طول چکیده پیام نباید زیاد بلند باشد.

بزرگترین مشکل توابع هش، برآورده کردن ویژگی شماره 4 می‎باشد. همین ویژگی شماره 4 بود که باعث شکست شیوه درهم‎سازی MD5 در سالیان گذشته گردید.

معرفی انواع توابع درهم‎ساز

در گذر زمان، شاهد انواع هَش فانکشن‎ها بوده ایم. دلیل کنار گذاشته‎شدن یک تابع هش، شکسته شدن آن می‎باشد. بدین معنا که ویژگی شماره 4 که در بالا درباره آن صحبت کردیم، نقض می‎شود.

در اینجا به معرفی چند دسته از معروفترین توابع می‎پردازیم:

الگوریتم های هش
ساختار الگوریتم های هش

1- الگوریتم MD5

این روش توسط آقای رونالد ری‎وست در سال 1991 عرضه گردید. این الگوریتم در سالیان اخیر کاربردهای بسیار در حوزه امنیت شبکه و امنیت داده پیدا کرده است. امّا در سال 2006 توسط یک لپ‎تاپ در عرض یک دقیقه جعل شد و یک چکیده برای دو پیام متفاوت ایجاد گردید.

این موضوع به معنای شکست این هش فانکشن بود.

2- الگوریتم SHA1

بعد از شکست MD5، اداره استاندارد و فناوری‎های مدرن آمریکا، الگوریتم SHA1 را معرفی کرد. امّا این الگوریتم هم دوام چندانی نیافت و مانند MD5 توسط کامپیوترهای قدرتمند و بوسیله یک تیم از هکرهای چینی به سرپرستی ژیایو ونگ درهم کوبیده شد.

3- الگوریتم SHA2

این الگوریتم که بعنوان جایگزینی برای SHA1 معرفی شد دارای نسخه‎هی مختلفی می‎باشد. SHA256، SHA512 و SHA224 معروفترین نسخه‎های این الگوریتم هستند. عدد انتهایی در این نسخه‎ها، طول چکیده ایجاده شده به بایت را نشان می‎دهد.

این تابع درهم‎ساز هنوز مقاومت خوبی دارد و تلاش هکرها برای درهم‎شکستن آن با شکست مواجه گردیده است.

4- الگوریتم SHA3

از آنجایی که با پیشرفت کامپیوترها و بحث ورود تکنولوژی کوانتومی به تجهیزات دیجیتال، احتمال شکست SHA2 به شدت قوّت گرفته است. بنابراین محققان به دنبال ارائه الگوریتم SHA3 هستند تا در صورت شکست SHA2 آن را جایگزین کنند.

کارشناسان امنیت تنها شش ماه بعد از شکست SHA2 فرصت دارند تا نسخه جدید یک تابع درهم‎ساز را ارائه کنند در غیر اینصورت شاهد جعل گسترده اطلاعات خواهیم بود.

و در پایان …

مطابق اصل کرکهف در رمزنگاری، توابع درهم ساز برای همه آشکار هستند. بنابراین باید قدرت یک تابع هش را در مواردی دیگر جستجو کرد. شکست یا برخورد (Collision) نقطه پایانی برای توابع هش می باشد. بنابراین، همواره هکرهای کلاه سفید به دنبال یافتن این برخورد قبل از هکرها می‎باشند.