تابع هش رمزنگاری
ویژگی‌ها

اکثر توابع درهم ساز رمزنگارانه برای بدست آوردن رشته ای با هر طولی به عنوان ورودی و تولید یک مقدار درهم با طول ثابت طراحی می‌شوند.
تابع درهم ساز رمزنگارانه باید قادر به رویارویی با همه نوع حملات کشف نوشته رمزی باشد. در رمزنویسی نظری، سطح امنیت تابع درهم ساز رمزنگارانه با استفاده از مشخصه‌های زیر تعریف می‌شود:
- مقاومت در برابر تصویر اولیه و پردازش نشده
با توجه به مقدتر مشخص هش h، پیدا کردن پیام m مثل h=hash(m) باید مشکل باشد. این مفهوم به تابع یک سویه ارتباط پیدا می‌کند. توابعی که از این ویژگی برخوردار نباشند، نسبت به حملات تصویر اولیه و پردازش نشده آسیب‌پذیر هستند.
- مقاومت در برابر تصویر پردازش نشده دوم
با توجه به مقدار ورودی m1، پیدا کردن ورودی متفاوت m2 باید مشکل باشد با تساوی مقابل: hash(m1) = hash(m2). این ویژگی بعضاً "مقاومت تصادم ضعیف نامیده می‌شود. توابعی که از این ویژگی برخوردار نباشند، نسبت به حملات تصویر پردازش نشده دوم آسیب‌پذیر هستند.
- مقاومت برخورد
پیدا کردن دو پیام متفاوت m1 و m2 با در نظر گرفتن تساوی hash(m1) = hash(m2) مشکل است. این جفت «برخورد هش رمزنگاری نامیده می‌شوند». این ویژگی بعضاً «مقاومت قوی در برابر برخورد» نامیده می‌شود. حداقل نیاز به مقدار هش دو برابر اولیه دارد تا اینکه به مقاومت تصویر پردازش نشده دست پیدا کند. در غیر اینصورت برخوردها می‌توانند جزو حمله روز تولد (حمله ای بدون تغییر معنی اولیه مورد حمله شده) طبقه‌بندی شوند (۴).
مقاومت در برابر برخورد، دلالت ضمنی بر مقاومت تصویر اولیه و پردازش نشده دوم دارد، اما نه مقاومت اولیه آن (۵). فرضیه ضعیف تر همیشه در رمزنگاری نظری غالب است، اما عملاً، تابع درهمی که تنها مقاومت در برابر تصویر پردازش نشده دوم است، ناامن تلقی شده و در این صورت برای کاربردهای واقعی توصیه نمی‌شود.
این ویژگی‌ها غیررسما، به این معنی هستند که «دشمن یا رقیب متخاصم» نمی‌تواند بدون تغییر چکیده داده ورودی، آن جایگزینش شده یا آن را تغییر دهد؛ بنابراین، اگر دو رشته دارای یک چکیده یکسان باشند، می‌توان اطمینان حاصل کرد که آنها باهم برابرند. مقاومت در برابر تصویر خام پردازش نشده دوم، از دستکاری کردن سند توسط حمله کننده با یک هش یکسان جلوگیری می‌کند. مقاومت در برابر برخورد از ایجاد دو سند متمایز توسط حمله کننده با یک هش مشابه جلوگیری می‌کند.
تابعی که از این معیارها برخوردار باشد، هنوز هم دارای ویژگی‌های نامناسبی خواهد بود. در حال حاضر، پرطرفدارترین توابع درهم ساز رمزنگارانه، نسبت به حملات «کششی-طول» آسیب‌پذیر هستند: با در نظر گرفتن hash(m) و len(m) اما نه m، با انتخاب m مناسب، حمله کننده می‌تواند تابع درهم hash(m ∥ m′) را محاسبه کند، در اینجا منظور از ∥ الحاق است (۶). از این ویژگی می‌توان برای ترسیم الگوهای سندیت بخشی ساده بر مبنای توابع درهم استفاده کرد. سازه HAMC روشی است برای غلبه بر این مشکلات.
عملاً مقاومت در برابر برخورد، در خیلی از کاربردهای عملی کافی بنظر نمی‌رسد. علاوه بر مقاومت در برابر برخورد، باید پیدا کردن دو پیام با چکیده یا خلاصه‌های کاملاً مشابه توسط رقیب، غیرممکن باشد، یا استنباط هر گونه اطلاعات مفید در مورد داده‌ها. به‌ویژه، تابع درهم باید تا حد ممکن مثل «تابع تصادفی» عمل کند (که در گواه امنیتی، اوراکل تصادفی نامیده می‌شود) در عین حال از نظر محاسباتی قطعی و مؤثر باشد. این توابعی مثل تابع SWIFFT را غیرمحتمل می‌شمارد، و اثبات شده که می‌تواند مقاومت برخورد داشته باشد بااین فرض که مسائل معین روی شبکه‌های ایدئال، به سختی قابل محاسبه هستند، اما در قالب تابع خطی این ویژگی‌های اضافی قابل پوشش دادن نیستند (۷).
الگوریتم‌های مجموع مقابله ای یا جمع کنترلی، مثل CRC32 و سایر کنترل‌های افزونگی دوره ای برای پوشش دادن الزامات ضعیف تر طراحی می‌شوند و به‌طور کالی مناسب توابع درهم ساز رمزنگارانه نیستند. برای مثال، CRC برای یکپارچه سازی پیام طبق استاندارد رمزنویسی VEP استفاده شد، امادر یک حمله می‌توان راحتی از حالت خطی جمع کنترلی خبر دار شد.