موضوع مقاله: تابع هش رمزنگاری | مخاطب: عمومی | لحن: دانشنامه‌ای | ساختار: عنوان، مقدمه، 3 بخش، جمع‌بندی | مقاله: | # تابع هش رمزنگاری | مقدمه: یک تغییر کوچک در ورودی (در واژه "over") به شدت خروجی (درهمک یا چکیده) را تغییر داده‌است. | ## بخش 1: تابع هش رمزنگاری | به این موضوع اثر بهمنی گفته می‌شود.تابع هش رمزنگاری (CHF) یک الگوریتم ریاضی است که داده‌هایی با اندازه اختیاری (به آن «پیام» گفته می‌شود) را به یک آرایه بیتی با اندازه ثابت (به آن «درهَمَک»، «هش» یا «چکیده پیام» گفته می‌شود) نگاشت می‌دهد. یک تابع درهمک‌ساز رمزنگارانه به صورت ایدئال دارای این ویژگی‌های اصلی است: قطعی است، یعنی یک پیام یکسان، همیشه منجر به یک درهمک مشابه می‌شود. (یعنی نمی‌توان فرایندی که یک مقدار درهمک معین را تولید کرده‌است را معکوس‌سازی کرد). یک تغییر کوچک در پیام، باید مقدار درهمک را به آن‌اندازه گسترده تغییر دهد که مثل آن باشد که یک مقدار درهمک جدیدی پدیدار شده، که این درهمک با مقدار درهمک قدیمی ارتباطی ندارد (که به آن اثر بهمنی گفته می‌شود). توابع درهمک‌ساز رمزنگاری، کاربردهای زیادی در امنیت اطلاعات دارند، به ویژه آن‌ها در امضای دیجیتال، کدهای احرازهویت پیام (MACs)، و دیگر حالت‌های احرازهویت کاربرد دارند. از این توابع می‌توان به عنوان توابع درهمک‌ساز ساده استفاده کرد، یعنی در اندیس‌دهی به داده در جداول درهمک، برای اثرانگشت‌دهی، برای تشخیص داده تکراری، یا برای تشخیص یکتای فایل‌ها، و به عنوان جمع‌آزما برای تشخیص خرابی تصادفی داده استفاده می‌شود. در واقع در زمینه امنیت رایانه، به مقادیر درهمک رمزنگارانه، اصطلاحات «اثرانگشت دیجیتالی»، «جمع‌آزما»، یا فقط «مقادیر درهمک» هم گفته می‌شود، اگرچه همه این اصطلاحات برای توابع «عمومی‌تر» هستند که ویژگی‌ها و اهداف متفاوتی را دارند. ویژگی‌ها اکثر توابع درهم ساز رمزنگارانه برای بدست آوردن رشته ای با هر طولی به عنوان ورودی و تولید یک مقدار درهم با طول ثابت طراحی می‌شوند. تابع درهم ساز رمزنگارانه باید قادر به رویارویی با همه نوع حملات کشف نوشته رمزی باشد. در رمزنویسی نظری، سطح امنیت تابع درهم ساز رمزنگارانه با استفاده از مشخصه‌های زیر تعریف می‌شود: - مقاومت در برابر تصویر اولیه و پردازش نشده با توجه به مقدار مشخص هش h، پیدا کردن پیام m مثل h=hash(m) باید مشکل باشد. توابعی که از این ویژگی برخوردار نباشند، نسبت به حملات تصویر اولیه و پردازش نشده آسیب‌پذیر هستند. توابعی که از این ویژگی برخوردار نباشند، نسبت به حملات تصویر پردازش نشده دوم آسیب‌پذیر هستند. حداقل نیاز به مقدار هش دو برابر اولیه دارد تا اینکه به مقاومت تصویر پردازش نشده دست پیدا کند. در غیر اینصورت برخوردها می‌توانند جزو حمله روز تولد (حمله ای بدون تغییر معنی اولیه مورد حمله شده) طبقه‌بندی شوند (۴). مقاومت در برابر برخورد، دلالت ضمنی بر مقاومت تصویر اولیه و پردازش نشده دوم دارد، اما نه مقاومت اولیه آن (۵). فرضیه ضعیف تر همیشه در رمزنگاری نظری غالب است، اما عملاً، تابع درهمی که تنها مقاومت در برابر تصویر پردازش نشده دوم است، ناامن تلقی شده و در این صورت برای کاربردهای واقعی توصیه نمی‌شود. این ویژگی‌ها غیررسما، به این معنی هستند که «دشمن یا رقیب متخاصم» نمی‌تواند بدون تغییر چکیده داده ورودی، آن جایگزینش شده یا آن را تغییر دهد؛ بنابراین، اگر دو رشته دارای یک چکیده یکسان باشند، می‌توان اطمینان حاصل کرد که آنها باهم برابرند. مقاومت در برابر تصویر خام پردازش نشده دوم، از دستکاری کردن سند توسط حمله کننده با یک هش یکسان جلوگیری می‌کند. مقاومت در برابر برخورد از ایجاد دو سند متمایز توسط حمله کننده با یک هش مشابه جلوگیری می‌کند. تابعی که از این معیارها برخوردار باشد، هنوز هم دارای ویژگی‌های نامناسبی خواهد بود. در حال حاضر، پرطرفدارترین توابع درهم ساز رمزنگارانه، نسبت به حملات «کششی-طول» آسیب‌پذیر هستند: با در نظر گرفتن hash(m) و len(m) اما نه m، با انتخاب m مناسب، حمله کننده می‌تواند تابع درهم hash(m ∥ m′) را محاسبه کند، در اینجا منظور از ∥ الحاق است (۶). از این ویژگی می‌توان برای ترسیم الگوهای سندیت بخشی ساده بر مبنای توابع درهم استفاده کرد. علاوه بر مقاومت در برابر برخورد، باید پیدا کردن دو پیام با چکیده یا خلاصه‌های کاملاً مشابه توسط رقیب، غیرممکن باشد، یا استنباط هر گونه اطلاعات مفید در مورد داده‌ها. به‌ویژه، تابع درهم باید تا حد ممکن مثل «تابع تصادفی» عمل کند (که در گواه امنیتی، اوراکل تصادفی نامیده می‌شود) در عین حال از نظر محاسباتی قطعی و مؤثر باشد. این توابعی مثل تابع SWIFFT را غیرمحتمل می‌شمارد، و اثبات شده که می‌تواند مقاومت برخورد داشته باشد بااین فرض که مسائل معین روی شبکه‌های ایدئال، به سختی قابل محاسبه هستند، اما در قالب تابع خطی این ویژگی‌های اضافی قابل پوشش دادن نیستند (۷). الگوریتم‌های مجموع مقابله ای یا جمع کنترلی، مثل CRC32 و سایر کنترل‌های افزونگی دوره ای برای پوشش دادن الزامات ضعیف تر طراحی می‌شوند و به‌طور کالی مناسب توابع درهم ساز رمزنگارانه نیستند. برای مثال، CRC برای یکپارچه سازی پیام طبق استاندارد رمزنویسی VEP استفاده شد، امادر یک حمله می‌توان راحتی از حالت خطی جمع کنترلی خبر دار شد. درجه سختی در عمل رمزنویسی، به‌طور کلی غیرمحتمل است که تقریباً اطمینان بدست آورد که رقیب یا دشمن به اطلاعات دسترسی پیدا نخواهد کرد باید تا زمانی که فرض می‌شود امنیت سیستم از اهمیت حیاتی برخوردار است، از ورود او به سیستم باید جلوگیری کرد؛ بنابراین، مفهوم این اصطلاح تاحدی به کاربردش بستگی دارد از آنجاییکه کاری که یک عامل خطرناک یا متخاصم انجام می‌دهد معمولاً به نسبت سود مورد انتظارش از این کار سنجیده می‌شود. هر چند، از آنجاییکه معمولاً تلاش مضاعف برای دست پیدا کردن به پیامی با طول چکیده مضاعف است، حتی مزیت چندین برابر در قدرت پردازش با اضافه کردن بیت‌های متعدد به حروف، می‌تواند خنثی شود. برای پیام‌های انتخاب شده از مجموعه پیام‌های محدود، مثلاً رمز عبور یا دیگر پیام‌های کوتاه، تبدیل هش با سری قرار دادن پیام‌ها، عملی می‌باشد. در برخی از تحلیل‌های نظری، «مشکل یا سخت» به معنی ریاضی خاصی است، مثل «غیرقابل حل در زمان چندجمله ای مجانب». این تفسیر راجع به سختی و مشکل، در مطالعه «توابع درهم ساز رمزنگارانه امنیت قابل اثبات» مهم می‌باشد اما معمولاً ارتباطی قوی با امنیت عملی ندارد. بالعکس، الگوریتم زمان چندجمله ای (الگوریتمی که مستلزم وجود n20 مرحله برای کلیدهای n-رقمی است) ممکن است برای استفاده عملی خیلی آهسته باشد. تصویر سازی تصویرسازی استفاده بالقوه از درهم ساز رمزنگاری به شرح زیر است: آلیس، یک مسئله ریاضی دشوار را برای باب مطرح کرد و ادعا کرد که او را حل کرده‌است. باب دوست داشت خودش آن را حل کند، اما مطمئن بود که آلیس بلوف نمی‌زند؛ بنابراین، آلیس راه حل خودش را نوشت، هش آن را محاسبه کرد و به باب گفت که مقدار هش چقدر است (درحالیکه راه حل آن را به او نگفت). سپس، وقتی که باب راه حل خودش را چند روز بعد به او گفت، آلیس می‌توانست ثابت کند که راه حل او اول ارائه شده و باب آن را درهم کرده‌است و آن را چک کرد تا مقدار هشی که قبلاً بدست آورده بود با مقدار هش محاسبه شده او مطابقت داشته باشد. در واقعیت، آلیس و باب یک برنامه کامپیوتری هستند و راز چیزی خواهد بود که کمتر از یک راه حل معمای ادعا شده قابل تقلب باشد). کاربردها تأیید صحیح بودن یا یکپارچه بودن پیام‌ها و فایل‌ها یک کاربرد مهم هش‌های امنیتی، تأیید صحیح و یکپارچه بودن پیام‌ها است. مقایسه چکیده‌های پیام (چکیده‌های هش در برابر پیام) محاسبه شده قبل و بعد از ارسال می‌تواند مشخص کند که آیا تغییراتی روی پیام یا فایل صورت گرفته یا نه. | ## بخش 2: تابع هش رمزنگاری | چکیده‌های هش MD5, SHA1 یا SHA2 بعضاً روی وب سایت‌ها برای تأیید درستی فایل‌های دانلود شده منتشر می‌شوند (۸)، که شامل فایل‌های بازیابی شده با استفاده از «به اشتراک گذاری فایل» مثل «معکوس نمودن» می‌شود. این عمل یک زنجیره اطمینان می‌سازد تا زمانیکه هش‌ها روی سایت مطمئنی پست شوند- معمولاً سایتی که با پسوند معتبر HTTPS تأیید شود. با استفاده از تابع درهم ساز رمزنگاری و زنجیره اطمینان، تغییرات خطرناک فایل تشخیص داده می‌شوند. سایر «کدهای تشخیص خطا» مثل «کنترل افزونگی دوره ای» تنها از تغییرات غیرخطرناک فایل جلوگیری به عمل می‌آورند. یکی از کاربردهای نوین توابع هش رمزنگاری‌شده در طراحی برنامه ها و بازی‌های دیجیتال مبتنی بر الگوریتم‌های تصادفی و نموداری مشاهده می‌شود. در این ساختار، مقدار اولیه‌ای به‌عنوان ورودی الگوریتم شبه‌تصادفی (PRNG) تولید و پیش از شروع بازی با استفاده از تابع هش، رمزنگاری می‌شود. این مقدار هش‌شده به‌عنوان تعهد اولیه به بازیکن نمایش داده شده و پس از پایان بازی، مقدار واقعی منتشر می‌گردد. کاربران با مقایسه دو مقدار می‌توانند از عدم تغییر داده و صحت فرآیند اطمینان حاصل کنند. این روش که با عنوان شفافیت قابل اثبات (Provably Fair) شناخته می‌شود، نقش مهمی در افزایش اعتماد کاربران و جلوگیری از تقلب در بازی‌های آنلاین ایفا می‌کند. تولید امضاء و تأیید آن تقریباً همه الگوهای امضاء دیجیتالی نیاز به هش رمزنگاری جهت محاسبه پیام دارند. این کار امکان محاسبه امضاء با چکیده هش نسبتاً کوچک و با اندازه ثابت را فراهم می‌کند. پیام در صورتی معتبر و صحیح عنوان می‌شود که تأیید امضاء تصدیق شود و چکیده هش مجدداً محاسبه شده پیام وجود داشته باشد؛ بنابراین، ویژگی صحیح بودن پیام هش رمزنگاری، برای تولید الگوهای امضاء دیجیتالی امن و مؤثر استفاده می‌شود. ذخیره کردن همه رمزهای عبور به شکل «متن پاک یعنی پیام بدون رمز» می‌تواند به اخلال امنیتی گسترده‌ای منجر شود، اگر فایل رمز عبوری افشا شود. برای به رسمیت شناختن کاربر، رمز عبوری ارائه شده توسط کاربر، به‌صورت درهم درآمده و با هش ذخیره شده مقایسه می‌شود. توابع درهم ساز رمزنگاری استاندارد، برای محاسبه سریع طراحی می‌شوند و در نتیجه حدس زدن رمز عبور با سرعت بالا امکان‌پذیر خواهد بود. توابع درهم رمز عبور که کار "امتداد کلید" را انجام می‌دهند- مثل PUKDF2، دست نوشته متنی یا Argon2- معمولاً از نوآوری‌های متعدد درهم رمزنگاری برای افزایش زمان (در برخی موارد حافظه کامپیوتر) مورد نیاز برای انجام "حملات بروت فورس یا جستجوی فراگیر روی چکیده‌های درهم رمز عبوری ذخیره شده استفاده می‌کنند. هش رمز عبور مستلزم وجود یک مقدار salt غیر محرمانه و تصادفی بزرگ می‌باشد تا بتوان آن را با هش رمز عبور ذخیره کرد. salt خروجی هش رمز عبور را به‌صورت تصادفی درمی‌آورد، و امکان ذخیره‌سازی جداول رمز عبور را برای رقیب یا دشمن غیرممکن می‌سازد هم چنین مقادیر هش از پیش محاسبه شده را که در آن‌ها چکیده هش رمز عبور را می‌توان مقایسه کرد. توابع هش رمز عبور نیز به عنوان "توابع مشتق کلید " مبتنی بر رمز عبور شناخته می‌شوند (PBKDF). اثبات کار سیستم اثبات کار (یا پروتکل یا تابع) یک مقیاس سنجش اقتصادی برای تشخیص حملات «رد خدمات» یا دیگر سوء استفاده‌های سرویسی مثل اسپم روی شبکه با درخواست کننده سرویس است که معمولاً زمان پردازش کامپیوتر را تغییر می‌دهد. یک مشخصه اصلی این الگوها، نامتقارنی آنهاست: کار باید از سمت درخواست کننده نسبتاً سخت (اما امکان‌پذیر) باشد اما چک کردن آن توسط ارائه دهنده خدمات باید راحت باشد. یک سیستم پرطرفدار که در داده کاوی بیتکوین و Hashcash استفاده می‌شود- از معکوس تابع درهم جزئی برای اثبات کار انجام شده و برای تعیین پاداش داده کاوی در بیتکوین به عنوان توکن یا کلمه رمزی اعتبار کار برای ارسال ایمیل در Hashcash بکار گرفته می‌شود. کار متوسطی که فرستنده باید برای پیدا کردن پیام معتبر انجام دهد، در تعداد بیت صفر مورد نیاز در مقدار هش، به‌صورت نمایی است، درحالیکه دریافت کننده می‌تواند صحت پیام را با اجرای یک تابع درهم واحد تأیید کند. شناساگر فایل یا داده چکیده پیام نیز به عنوان ابزاری برای شناسایی معتبر یک فایل استفاده می‌شود. هش‌ها برای شناسایی فایل‌ها روی شبکه‌های به اشتراک گذاری فایل ههمتا استفاده می‌شوند. برای مثال، در لینک ed2k، تابع درهم متغیر-MD4 با اندازه فایل ترکیب می‌شود و اطلاعات کافی برای پیدا کردن مکان سورس‌های فایل، دانلود فایل و تأیید محتوای آن فراهم می‌کند. این هش‌های فایل بیشتر هش بالا «فهرست هش» یا «درخت هش» هستند که مزایای زیادی دارند. توابع درهم رمزنگار بعنوان توابع درهم از یک نوع خاص، خودشان کاربردهای متنوعی دارند. هرچند، در مقایسه با توابع درهم استاندارد، توابع درهم ساز رمزنگارانه، هزینه محاسبات بالایی دارند. بهمین دلیل، آنها در زمینه‌هایی کاربرد دارند که در آنها حفاظت کاربران در برابر جعل اسناد و امضاء سازی (تولید داده با یک چکیده به شکل داده مد نظر) ضروری می‌باشد. توابع درهم بر مبنای رمزنگاری بلوکی چند روش برای استفاده از «رمزنگاری بلوکی» برای ساخت تابع درهم ساز رمزنگار به‌ویژه «تابع فشرده یک سویه» وجود دارد. بسیاری از توابع درهم معروف مثل MD4, MD5, SHA-1 و SHA-2 از مولفه‌های رمزنگار بلوکی-مانند طراحی شده برای این منظور ساخته می‌شوند، با این بازخورد تا اطمینان حاصل شود تابع حاصله معکوس پذیر نیست. رمزنگار بلوکی استاندارد مثل AES را می‌توان در محل این رمزهای بلوکی معمول استفاده کرد و زمانی مثمرثمر می‌باشد که «سیستم الحاقی یا جانمایی شده داخل آن» نیاز به اجرای هم رمزنویسی و هم درهم سازی با اندازه کد کمینه یا ناحیه سخت‌افزار داشته باشد. حروف رمزی در توابع درهم برای درهم سازی ساخته می‌شوند: آنها از کلیدها و بلوک‌های بزرگ استفاده می‌کنند، می‌توانند کلیدها را برای هر بلوک به خوبی تغییر دهند و برای مقاومت در برابر «حملات کلید-مربوط» طراحی و انتخاب شوند. به‌ویژه، AES دارای اندازه کلید و بلوکی می‌باشد که استفاده از آن را برای تولید مقادیر هش طولانی غیر بدیهی می‌سازد. رمزنویسی AES وقتی عملکردش ضعیف تر می‌شود که کلید هر بوک را تغییر دهد و حمله کلید-مربوط استفاده از آن را در تابع درهم در مقایسه با رمزنویسی، کم ایمن تر سازد. این کار با تقسیم کردن ورودی به سری بلوک‌هایی با اندازه برابر و عملیات روی آنها به‌صورت متوالی با استفاده از «تابع فشرده یک سویه» انجام می‌شود. به‌ویژه تابع فشرده را می‌توان برای درهم سای یا ساختن از رمزنگاری بلوکی طراحی کرد. لوله پهن در برابر لوله باریک کاربرد ساده سازه فوق که در آن اندازه خروجی هش برابر است با اندازه حالت داخلی (بین هر مرحله فشرده سازی)، به طراحی هش "لوله یا میله-باریک" منجر می‌شود. | ## بخش 3: تابع هش رمزنگاری | این طراحی دارای عیب‌های ذاتی متعددی می‌باشد، مثل "کشیده کردن طول"، چند برخوردی (۹)، حملات پیام طولانی (۱۰)، حملات تولید و paste، ولی نمی‌توانند جفت یا برابر شوند. در نتیجه، توابع درهم پیشرفته روی سازه لوله-پهن ساخته می‌شوند که دارای اندازه حالت داخلی بزرگتری است- و دامنه آن از پیچ ساه فوق تا سازه‌های جدید نظیر "سازه ابر" و سازه HAIFA گستر ده شده‌است (۱۱). در ضمن، کوتاه سازی خروجی هش طولانی، مثل خروجی استفاده شده در SHA-512/256 نیز در برابر حملات متعددی دفاع می‌کند (۱۳). استفاده برای ساخت سایر واحد اولیه رمزنگاری توابع درهم را می‌توان برای ساخت سایر واحدهای اولیه رمزنگاری استفاده کرد. برای امن بودن این واحدها از نظر رمزنگاری، برای ساختن درست آنها باید دقت زیادی خرج کرد. «کدهای تأیید پیام» (MAC) (که توابع درهم کلیدی نیز نامیده می‌شوند) اغلب از توابع درهم ساخته می‌شوند. درست مثل "رمزنگارهای بلوکی که می‌توانند برای ساخت توابع درهم استفاده شوند، توابع درهم را می‌توان برای ساخت رمزهای بلوکی استفاده کرد. هم چنین از حروف رمزی می‌توان در حالت عملیات رایج بدون تضمین امنیت یکسان استفاده کرد. هم چنین رمزهای دنباله ای را می‌توان از از توابع درهم با چکیده طول-ثابت استفاده کرد. اغلب این کار با اولین ساخت «سازنده اعداد تصادفی ساختگی امن از نظر رمزنگاری» و سپس با استفاده از دنباله بایت‌های تصادفی مثل keystream انجام می‌شود. به‌طور مشابه، گسترش کلید رمزنگارهای دنباله ای HC-128 و HC-256 استفاده زیاد از تابع درهم SHA-256 را به دنبال دارد. الحاق خروجی‌های «الحاقی» از چند تابع درهم، مقاومت به برخورد را به خوبی قوی‌ترین الگوریتم‌ها با نتایج بهم پیوسته ایجاد می‌کنند. این کار تضمین می‌کند که روش شنسایی برخورد در یکی از توابع درهمه، از داده‌های حفاظت شده توسط هر دو تابع درهم را مانع نمی‌شود. Antoine Joux مشاهده کرد که ۲-برخورد به n-برخورد می‌انجامد: اگر حمله کننده بتواند دو پیام با یک هش مشابه MD5 را پیدا کند، می‌تواند بسیاری از پیام‌های مورد نظر خود را با هش‌هایی با MD5 یکسان بدون هیچ مشکلی پیدا کند (۱۶). از بین پیام‌های n با تابع درهم مشابه MD5، احتمالاً یک برخورد در SHA-1 وجود دارد. کار بیشتری برای پیدا کردن برخورد SHA-1 لازم است که تنها می‌توان از زمان چندجمله ای برای آن استفاده کرد. الگوریتم‌های درهم ساز رمزنگارانه الگوریتم‌های درهم ساز رمزنگاری متعددی وجود دارند. فهرست بزرگتر آن را می‌توان در صفحه حاوی «مقایسه توابع درهم ساز رمزنگاری» جستجو کرد. برخوردها در برابر MD5 را می‌توان در چند ثانیه محاسبه کرد که باعث می‌شود این الگوریتم در اکثر موارد کابرد مناسبی نداشته باشد در اینجا به تابع درهم رمزنگاری احتیاج داریم. مشخصه اصلی آن که در حال حاضر با SHA-0 شناخته می‌شود- الگوریتمش در سال ۱۹۹۳ تحت استاندارد هش امن، FIPS PUB 180 توسط نهاد استاندارد دولتی آمریکا NIST (مؤسسه ملی استاندارد و فناوری) منتشر شده بود. برخورد در برابر الگوریتم کامل SHA-1 را می‌توان با استفاده از «حمله خرد شده» تولید کرد و باید تابع درهم را شکسته در نظر گرفت. RIPEMD-160 همان‌طور که از نامش پیداست، چکیده هش ۱۶۰ بیتی (۲۰ بایتی) تولید می‌کند. با گذشت زمان، تعداد تکرار را می‌توان آهسته‌تر افزایش داد، بنابراین به حملات جستجوی فراگیر حتی با افزایش توان محاسبه مقاومت نشان می‌دهد. SHA-2 SHA-2 (الگوریتم درهم ایمن ۲) مجموعه توابع درهم رمزنگارانه می‌باشد که توسط آژانس امنیت ملی ایالات متحده (NSA) طراحی شده بود، و اولین بار در سال ۲۰۰۱ منتشر گردید. SHA-224، واریانت یا متغیره SHA-256 با مقادیر آغازین و خروجی کوتاه شده متفاوت می‌باشد. Keccak بر مبنای ساخت ابر است که هم چنین قابل استفاده برای ساخت سایر ساختارهای اولیه رمزنگاری مثل رمزنگار دنباله ای است. در اینجا الحاقی‌های ۱۲۸- و ۲۵۶- دلالت ضمنی بر توان امنیتی تابع به نسبت اندازه خروجی در بیت‌ها دارند. حمله روی الگوریتم‌های درهم ساز رمزنگارانه یک فهرست طولانی از توابع درهم ساز رمزنگار است اما آسیب‌پذیری آن ثابت شده و نباید زیاد استفاده شود. برای نمونه، NIST 51 تابع درهم را به عنوان تابع منتخب برای دور ۱ رقابت هش SHA-3 انتخاب کرد، از بین آنها ۱۰ تابع شکسته و ۱۶ تابع دارای نقاط ضعف قابل توجه در نظر گرفته شدند و لذا در دور بعد شرکت داده نمی‌شدند. اطلاعات بیشتر در مورد این مبحث را می‌توان در مقاله اصلی آن در مورد "رقابت‌های تابع درهم NIST" جستجو کرد. حتی اگر تابع درهم هرگز شکسته نشده باشد، «حمله موفق» در برابر واریانت ضعیف می‌تواند باعث تحلیل بردن اطمینان «کارشناس» شود. برای نمونه، در اوت ۲۰۰۴، برخوردها در چند تابع درهم پرطرفدار مثل MD5 مشاهده شدند (۲۰). آنها به این نتیجه رسیدند که برخورد دارای پیچیدگی 251 بود و ۸۰۰۰۰ ساعت CPU (واحد پردازشگر مرکز) روی ابرکامپیوتری با ۲۵۶ پردازنده Itanium 2- معادل ۱۳ روز استفاده تمام وقت از ابرکامپیوتر فعال بود. در فوریه ۲۰۰۵، حمله ای روی SHA-1 گزارش شد که در حدود عملیات درهم‌سازی ۲۶۹ را شامل می‌شد، به جای مقدار مورد انتظار ۲۸۰ برای تابع درهم ۱۶۰ بیتی. در اوت ۲۰۰۵، حمله دیگر روی SHA-1 گزارش شد که برخورد در ۲۶۳ عملیات را نشان می‌داد. نقاط ضعف نظری دیگر SHA-1 از این قرارند: (۲۱، ۲۲) و در فوریه ۲۰۱۷ گوگل خبر از برخورد در SHA-1 داد (۲۳). محققین حوزه امنیت توصیه کردند که اپلیکیشن‌های جدید می‌توانند با استفاده از اعضای خانواده SHA این مشکلات را برطرف کنند، مثل SHA-2 یا استفاده از تکنیک‌هایی نظیر درهم سازی تصادفی (۲۱ ۱) که نیازی به مقاومت در برابر برخورد ندارد. یک حمله عملی و موفق، MD5 استفاده شده درون گواهی «امنیت لایه انتقال» را در سال ۲۰۰۸ شکست. | ## جمع‌بندی | همه هش‌ها یا درهم رمزنگاری که مستقیماً از خروجی کامل ساختار فوق استفاده می‌کنند نسبت به حملات گسترش طول آسیب پذیرند.