هش (Hash) چیست؟
هش (Hash) چیست؟
?Hashing روشی است که برای بررسی یکپارچگی دیتا از آن استفاده می شود. هش یک تباع یکطرفه است به این معنی که اگر دو کامپیوتر متفاوت یک دیتا را دریافت کنند و یک تابع hash یکسان را روی آن اجرا کنند باید مقدار hash یکسانی را بدست آورند. امکان ندارد که شما یک hash یکسان را از بلوک های دیتا متفاوت بدست آوردید. که به آن collision resistance گفته می شود. خروجی hash کوچک و با اندازه ثابت می باشد که به آن digest ، message digest یا simply the hash گفته می شود.
?یک مثال از استفاده hash برای بررسی یکپارچگی دیتا این است که فرستنده یک الگوریتم hash را برای هر بسته از دیتا اجرا می کند و نتیجه را به بسته متصل می کند. دریافت کننده بسته همان hash را روی بسته دریافتی اجرا می کند و نتیجه بدست آمده را با خروجی hash که فرستنده ارسال کرده است مقایسه می کند. اگر مقایسه یکی بود به این معناست که بسته در حین ارسال تغییری نداشته و سالم به مقصد رسیده است. اگر یک بیت از بسته ارسالی تغییر کند hash مقصد با hash ارسالی توسط مبدا متفاوت خواهد بود و مقصد متوجه خواهد شد که بسته مشکل دارد.
مشهورترین روش های هش به شرح زیر هستند :
?(Message digest 5 (MD5 :در این الگوریتم digest ایجاد شده 128 بیتی است.
?(Secure Hash Algorithm 1 (SHA-1 :در این الگوریتم digest ایجاد شده 160 بیتی است.
?(Secure Hash Algorithm 2 (SHA-2 :در این الگوریتم digest ایجاد شده می تواند بین 224 تا 512 بیت باشد.
?در روش های hashing نیز همانند بحث رمزنگاری مقدار بزرگتر نشان دهنده امنیت بیشتر است.
هش ها دارای ویژگی های هستند:
?hash ها دارای ویژگی های هستند: اگر شما 10 بار هم (یا بیشتر) عملیات Hash را بر روی یک متن ساده انجام دهید هر بار خروجی یکسان است. این ویژگی بسیار مهم است چون اگر خروجی های متفاوت تولید کنی، رهگیری ورودیها غیرممکن میشود. تابع یکطرفه است.
?یعنی از متن Hash شده نمی توان به متن اصلی رسید اما میتوان آن را کرک کرد. یعنی هش سلام همیشه ثابت است.و اگر من یک هش داشته باشم و آن را با هش سلام مقایسه کنم می توانم بفهمم متن قبل از عملیات هشینگ، سلام بوده است مقاوم در مقابل تصادم قوی و ضعیف.یعنی پیدا کردن 2 پیام که دارای hash یکسان باشند بسیار بسیار سخت است.
2 نوع روش احراز هویت :
?MDC: مخفف Modification Detection Code (کد شناسایی تغییر) است. این روش برای بانک ها و سازمان ها مناسب است.در این روش 2 کانال بین فرستنده وگیرنده ایجاد میشود. پیغام از یک کانال ارسال می شود و بعد پیام از طریق توابع hashing ، hash شده و بعد یک MDC که کد شناسایی تغییر است تولید میشود. سپس MDC از طریق کانال دیگر ارسال می شود.سپس گیرنده پس از دریافت پیغام و MDC ، خود از طریق پیام یک MDC تولید میکند. اگر MDC تولید شده توسط خودش و آنکه فرستنده ارسال کرده بود برابر بود پس درست است و احراز هویت صورت میگیرد. مشکل این روش این است که مقیاس پذیر نیست و مدیریت آن سخت است.
?MAC : مخفف Message Authentication Code (کد تایید پیام) است. در این روش 1 کانال ایجاد می شود و یک کلید هم رد و بدل می شود. MAC تولید شده از پیام رمز شده همراه با پیام ارسال می شود. سپس سمت گیرنده این 2 از هم جدا شده و پیام رمز شده، رمز گشایی شده،عملیات hashing بر روی آن صورت میگیرد و دوباره MAC تولید میشود.سپس MAC تولید شده توسط گیرنده با MAC ارسالی توسط فرستنده مقایسه می شود. اگر برابر بود پس عملیات صحیح است و احراز هویت صورت میگیرد.این روش مدیریت راحت تری دارد و مقیاس پذیر است.
معروف ترین استاندارد های هش :
?MD5 :یک digest 128 بیتی تولید میکنید
?SHA 1 :یک digest 160 بیتی تولید میکنید
?SHA 256 : یک digest 256 بیتی تولید میکنید
Collision (تصادف) در Hash:
?البته معنی صحیح Collision “تصادم” و “برخورد” می باشد . زمانی که مقدار Hash دو ورودی متفاوت یکسان باشند می گوییم Collision رخ داده است.
?اما تا کنون هیچ موردی از Collision دیده نشده است که این امر از این حقیقت ناشی می شود که تعداد مقادیر یک الگوریتم hash بسیار زیاد می باشند.
?برای مثال یک Hash 128 بیتی می تواند 3.4 x 1038 مقدار ممکن داشته باشد. که معادل 340,282,366,920,938,463,463,374,607,431,768,211,456 می باشد.
دیدگاهتان را بنویسید