ادامه قسمت چهارم  از بخــــش اول    و بخـــش دوم    و بخـــــش سوم

تاکنون ، ما در مورد استفاده از طرح های کلید متقارن و عمومی برای دستیابی به محرمانه بودن اطلاعات بحث کرده ایم. با این فصل ، بحث خود را در مورد تکنیک های مختلف رمزنگاری طراحی شده برای ارائه سایر خدمات امنیتی آغاز می کنیم.

تمرکز این فصل بر تمامیت داده ها و ابزارهای رمزنگاری است که برای دستیابی به همان مورد استفاده قرار می گیرد.

تهدیدات برای یکپارچگی داده ها
هنگام تبادل اطلاعات حساس ، گیرنده باید این اطمینان را داشته باشد که پیام از ارسال کننده در نظر گرفته نشده است و به طور سهوی یا دیگری اصلاح نشده است. دو نوع تهدید برای یکپارچگی داده ها وجود دارد ، یعنی منفعل و فعال.

تهدیدهای منفعل
این نوع تهدیدات به دلیل تغییرات تصادفی در داده ها وجود دارد.

این خطاهای داده به احتمال زیاد به دلیل نویز در یک کانال ارتباطی رخ می دهد. همچنین ، در هنگام ذخیره پرونده در دیسک ، ممکن است داده خراب شود.

کدهای تصحیح خطا و چک های ساده مانند Cyclic Redundancy Checks (CRC) برای تشخیص از بین رفتن تمامیت داده ها استفاده می شوند. در این تکنیک ها ، هضم داده ها به صورت ریاضی محاسبه می شود و به داده ها پیوست می شود.

تهدیدهای فعال
در این نوع تهدیدات ، یک مهاجم می تواند داده ها را با قصد مخرب دستکاری کند.

در ساده ترین سطح ، اگر داده ها بدون هضم هستند ، می توانند بدون شناسایی اصلاح شوند. این سیستم می تواند از تکنیک های افزودن CRC به داده ها برای تشخیص هرگونه تغییر فعال استفاده کند.

در سطح بالاتری از تهدید ، ممکن است مهاجم داده ها را تغییر داده و سعی کند هضم جدیدی را برای داده های اصلاح شده از خارج هضم استخراج کند. این امر در صورت محاسبه هضم با استفاده از مکانیسم های ساده مانند CRC امکان پذیر است.

مکانیزم امنیتی مانند توابع هاش برای مقابله با تهدیدهای اصلاح فعال استفاده می شود.

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

توابع هش بسیار مفید هستند و تقریباً در همه برنامه های امنیتی اطلاعات ظاهر می شوند.

تابع هش یک عملکرد ریاضی است که یک مقدار ورودی عددی را به یک مقدار عددی فشرده شده دیگر تبدیل می کند. ورودی به عملکرد هش از طول دلخواه است اما خروجی همیشه از طول ثابت است.

مقادیر برگشت یافته توسط یک تابع هش به نام های هضم پیام یا به سادگی مقادیر هش نامیده می شوند. تصویر زیر عملکرد هش نشان داده شده -

 

 

ویژگی های توابع هش
ویژگی های معمولی توابع هش عبارتند از -

خروجی طول ثابت (مقدار هش)

عملکرد هش داده های طول دلخواه را به طول ثابت پنهان می کند. این فرآیند اغلب به هش داده ها گفته می شود.

به طور کلی ، هش بسیار کوچکتر از داده های ورودی است ، از این رو توابع هش گاهی اوقات توابع فشرده سازی نامیده می شوند.

از آنجا که هش نمایش داده ای بزرگتر از داده های بزرگتر است ، به آن هضم نیز گفته می شود.

عملکرد hash با خروجی n bit به یک تابع هش n-bit گفته می شود. توابع هش محبوب باعث ایجاد مقادیر بین 160 تا 512 بیت می شوند.

کارآیی بهره برداری

به طور کلی برای هر عملکرد هش h با ورودی x ، محاسبه h (x) یک عمل سریع است.

توابع هش محاسباتی بسیار سریعتر از رمزگذاری متقارن است.

ویژگی های توابع هش
برای اینکه یک ابزار رمزنگاری مؤثر باشد ، تابع هش می خواهد خصوصیات زیر را داشته باشد -

مقاومت قبل از تصویر

این خاصیت بدان معنی است که برای برگرداندن یک عملکرد هش باید از نظر محاسباتی سخت باشد.

به عبارت دیگر ، اگر یک تابع هش h مقدار هشیاری z را تولید کند ، برای پیدا کردن هر مقدار ورودی x که دارای z است ، یک فرآیند دشوار است.

این ویژگی در برابر مهاجمی محافظت می کند که فقط مقدار هش دارد و در تلاش است ورودی را پیدا کند.

مقاومت دوم قبل از تصویر

این خاصیت به معنی داده شده با ورودی و هش آن است ، پیدا کردن ورودی متفاوت با همان هش سخت است.

به عبارت دیگر ، اگر یک تابع هش h برای ورودی x مقدار هش h (x) تولید کند ، پس یافتن مقدار ورودی دیگر y به گونهای که h (y) = h (x) دشوار باشد.

این ویژگی از عملکرد هش در مقابل مهاجمی که مقدار ورودی و هش آن را دارد محافظت می کند و می خواهد به جای ارزش ورودی اصلی مقدار مختلف را به عنوان مقدار قانونی جایگزین کند.

مقاومت در برابر برخورد

این ویژگی به این معنی است که باید یافتن دو ورودی متفاوت از هر طول که منجر به یک هش یکسان باشد ، کار سختی است. از این ویژگی به عنوان عملکرد hash free collision نیز یاد می شود.

به عبارت دیگر ، برای یک عملکرد هش h ، یافتن هر دو ورودی متفاوت x و y سخت است به گونه ای که h (x) = h (y) باشد.

از آنجا که عملکرد هش عملکرد فشرده سازی را با طول هش ثابت دارد ، غیرممکن است که یک عملکرد هش برخورد نداشته باشد. این خاصیت برخورد رایگان فقط تأیید می کند که این برخوردها باید سخت باشد.

این ویژگی برای یک مهاجم پیدا کردن دو مقدار ورودی با یک هش مشابه بسیار دشوار است.

همچنین ، اگر یک تابع هش مقاوم در برابر برخورد باشد ، دوم مقاوم در برابر تصویر است.

طراحی الگوریتم هاشینگ
در قلب هشینگ یک عملکرد ریاضی است که بر روی دو بلوک داده با اندازه ثابت کار می کند تا یک کد هش ایجاد کند. این عملکرد هش بخشی از الگوریتم هشینگ را تشکیل می دهد.

اندازه هر بلوک داده بسته به الگوریتم متفاوت است. معمولاً اندازه بلوک از 128 بیت تا 512 بیت است. تصویر زیر عملکرد هش را نشان می دهد -

 

 

 

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

این روند برای همان دورها تکرار می شود که برای هش کردن کل پیام مورد نیاز است. شماتیک الگوریتم هشینگ در تصویر زیر به تصویر کشیده شده است -

 

 

از آنجا که مقدار هش بلوک پیام اول به یک ورودی برای عملیات هش دوم تبدیل می شود ، خروجی آن نتیجه کار سوم را تغییر می دهد و غیره. این اثر ، به عنوان یک بهمن اثر هشین شناخته شده است.

اثر بهمن برای دو پیام در مقادیر هشی قابل ملاحظه ای متفاوت ایجاد می کند که حتی با یک بیت داده متفاوت است.

تفاوت بین عملکرد هش و الگوریتم را به درستی درک کنید. تابع هش با استفاده از دو بلوک داده باینری با طول ثابت ، کد هش تولید می کند.

الگوریتم hashing یک فرآیند برای استفاده از عملکرد هش است و مشخص می کند که چگونه پیام به هم می خورد و چگونه نتایج حاصل از بلوک های پیام قبلی با هم زنجیر می شوند.

توابع معروف هش
بگذارید مختصراً برخی عملکردهای مشهور هش را ببینیم -

پیام هضم (MD)
MD5 برای چند سال محبوب ترین و کاربرد گسترده هش بود.

خانواده MD شامل توابع هش MD2 ، MD4 ، MD5 و MD6 هستند. این به عنوان استاندارد استاندارد RFC 1321 به تصویب رسید. این یک عملکرد هش 128 بیتی است.

هضم MD5 به طور گسترده ای در دنیای نرم افزار مورد استفاده قرار گرفته است تا اطمینان خاطر در مورد صحت پرونده منتقل شده فراهم شود. به عنوان مثال ، سرورهای پرونده غالباً یک چک MD5 از پیش محاسبه شده برای پرونده ها را تهیه می کنند ، به طوری که کاربر می تواند چک پرونده بارگیری شده را با آن مقایسه کند.

در سال 2004 ، تصادفات در MD5 مشاهده شد. گزارش شده است که یک حمله تحلیلی تنها در یک ساعت با استفاده از خوشه رایانه ای موفق بوده است. این حمله برخورد منجر به به خطر افتادن MD5 شد و از این رو دیگر برای استفاده توصیه نمی شود.

عملکرد هش ایمن (SHA)
خانواده SHA از چهار الگوریتم SHA تشکیل شده است. SHA-0 ، SHA-1 ، SHA-2 و SHA-3. اگرچه از یک خانواده وجود دارد ، از نظر ساختاری متفاوت است.

نسخه اصلی SHA-0 ، یک عملکرد هش 160 بیتی است که در سال 1993 توسط مؤسسه ملی استاندارد و فناوری (NIST) منتشر شد. این نقاط ضعف کمی داشت و محبوبیت چندانی پیدا نکرد. بعداً در سال 1995 ، SHA-1 برای اصلاح نقاط ضعف ادعایی SHA-0 طراحی شد.

SHA-1 به طور گسترده ای از توابع هش موجود SHA استفاده می شود. این برنامه در چندین برنامه و پروتکل بسیار پرکاربرد از جمله امنیت Secure Socket Layer (SSL) استفاده شده است.

در سال 2005 ، روشی برای کشف برخورد برای SHA-1 در یک بازه زمانی عملی پیدا شد که باعث می شود قابلیت استفاده طولانی مدت از SHA-1 مشکوک باشد.

خانواده SHA-2 بسته به تعداد بیت ها در مقدار هش خود ، چهار نوع SHA دیگر دارد ، SHA-224 ، SHA-256 ، SHA-384 و SHA-512. هنوز حملات موفقی روی عملکرد هش SHA-2 گزارش نشده است.

اگرچه SHA-2 یک عملکرد هش قوی است. گرچه تفاوت قابل توجهی دارد ، اما طراحی اصلی آن هنوز از طراحی SHA-1 پیروی می کند. از این رو ، NIST خواستار طراحی عملکردهای جدید رقابتی هش شده است.

در اکتبر 2012 ، NIST الگوریتم Keccak را به عنوان استاندارد جدید SHA-3 انتخاب کرد. Keccak مزایای بسیاری از جمله عملکرد کارآمد و مقاومت خوب در برابر حملات را ارائه می دهد.

RIPEMD
RIPEND مخفف متن پیام ارزیابی ارزش اولیه RACE Integrity Primitives Digest است. این مجموعه از توابع هش توسط جامعه تحقیقات باز طراحی شده است و عموماً به عنوان خانواده ای از توابع هش اروپا شناخته می شود.

این مجموعه شامل RIPEND ، RIPEMD-128 و RIPEMD-160 می باشد. همچنین 256 و 320 بیتی نسخه از این الگوریتم وجود دارد.

RIPEMD اصلی (128 بیتی) مبتنی بر اصول طراحی مورد استفاده در MD4 است و به نظر می رسد امنیت قابل تردید دارد. نسخه 128 بیتی RIPEMD به عنوان جایگزینی سریع برای غلبه بر آسیب پذیری های موجود در RIPEMD اصلی ارائه شد.

RIPEMD-160 نسخه بهبود یافته و پرکاربردترین نسخه در خانواده است. نسخه های 256 و 320 بیتی احتمال تصادف تصادفی را کاهش می دهند اما در مقایسه با RIPEMD-128 و RIPEMD-160 به ترتیب امنیت بالاتری ندارند.

گرداب
این یک عملکرد هش 512 بیتی است.

این از نسخه اصلاح شده استاندارد رمزگذاری پیشرفته (AES) گرفته شده است. یکی از طراحان وینسنت رجمن ، خالق AES بود.

سه نسخه از گرداب منتشر شده است. یعنی WHIRLPOOL-0 ، WHIRLPOOL-T و WHIRLPOOL.

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

ذخیره سازی رمز عبور
توابع هش محافظت از ذخیره رمز عبور است.

به جای اینکه رمزعبور را به صورت واضح ذخیره کنیم ، اکثر مراحل ورود به سیستم مقادیر هش رمزهای عبور را در پرونده ذخیره می کنند.

پرونده رمز عبور شامل جدول جفت هایی است که به شکل (شناسه کاربر ، h (P)) هستند.

روند ورود به سیستم در تصویر زیر به تصویر کشیده شده است -

 

 

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

بررسی صحت داده ها
بررسی یکپارچگی داده ها متداول ترین کاربرد توابع هش است. برای تولید چک های موجود در پرونده های داده استفاده می شود. این برنامه در مورد صحت داده ها اطمینان به کاربر می دهد.

بررسی ,وضعیت به کاربر کمک می کند تا تغییرات ایجاد شده در پرونده اصلی را تشخیص دهد. اما هیچ تضمینی در مورد اصالت ارائه نمی دهد. مهاجم به جای تغییر داده های پرونده ، می تواند کل پرونده را تغییر داده و همه هش جدید را با هم محاسبه کرده و برای گیرنده ارسال کند. این برنامه بررسی یکپارچگی تنها در صورتی مفید است که کاربر در مورد اصالت پرونده اطمینان داشته باشد.