Bruce Schneier  یکی از GURU های رمزنگاری جدیدا اعلام کرده که SHA1 شکسته شده. کسانی که به این شاخه ی علم ریاضی علاقه دارند (که البته تعدادشون بیشتر از انگشتان دست نیست) حتما می دونند که این الگوریتم نسخه بهبود یافته MD5 هست که خودش نسخه ی بهینه ی MD4.
نظر به این مهم که من بدجوری امشب بیکارم قصد دارم یه کمی در مورد الگوریتم های Hash تایپ کنم  البته سعی می کنم خیلی ساده و مفید باشه.
یکی از هزاران مشکل ساختن سیستم های امن, ساختن مکانی مطمئن برای ذخیره ی پسورد افراده. اگر این اطلاعات بدون رمز شدن در جایی قرار بگیره حتما توسط CRACKER پیدا می شه و می تونه از حساب کاربری یک کاربر معتبر سوء استفاده کنه. پس ما باید از یک الگوریتم برای رمز کردن پسورد ها استفاده کنیم. از هر الگوریتم رمز کردن که استفاده کنیم به یه کلید احتیاج داریم که رمز نیست ( چرا؟) خوب حالا هر چقدر هم سعی کنیم این کلید رو پنهان کنیم CRACKER به داشتن امکانات ابزاری و زمان کافی حتما پیداش می کنه. حالا هم اطلاعات رمز شده رو داره هم کلید رو پس اطلاعات رو به دست آورده. چون میتونه با الگوریتم معکوس اولی و داشتن کلید اطلاعات اصلی رو به دست بیاره اینجاست که الگوریتم های Hash به درد می خورند.
یکی از دو خصوصیت الگوریتم های Hash اینه که معکوس پذیر نیستند! دومی اینه که هرگز دو ورودی متفاوت به خروجی یکسان منجر نمی شوند. هر یک از این دو خصوصیت اگر نقض بشه می گیم الگوریتم شکسته!!!
خوب در این شرایط CRACKER هم داده رو داره هم کلید رو ولی الگوریتم قابل معکوس کردن نیست. یعنی اگر می خواد بدونه  “ـِ؛آِّ)*$#)#(#ٍ]\ً[ٌٍ«َـُِ”  رمز شده چه رشته ای هست باید همه رشته های ممکن رو رمز کنه با الگوریتم و کلیدی که داره تا یکیش برابر این بشه یعنی حتی با ابرکامپیوتر های جهان یه چندین صد سال. 
قبلا لازم بود برای شکستن SHA1  دو به توان 80 حالت بررسی بشه ولی برادران چینی موفق شدن روشی رو بوجود بیارن(البته به دلیل ضعف الگوریتم) که با امتحان کردن دو به توان 69 حالت بشه این رمز روز باز کرد یعنی 2025 بار سریعتر که البته هنوز یه چند صد سالی می شه  اما چون کمتر از میزان ضمانت شده توسط الگوریتمه میگن شکسته!
در پایان به دوستانی که به موضوع علاقه مند شدن توصیه میکنم این کتاب رو بخونند. Applied Cryptography


دیدگاه‌ها

5 پاسخ به “SHA1 Broken”

  1. salaam
    site maa ro bebinid. age be ma link bedin bad nist

  2. Next time i’ll remember 2^11 = 2048