You are on page 1of 59

‫آزمایشگاه امنیت داده و شبکه‬ ‫دانشگاه صنعتی شریف‬

‫دانشکده مهندسی کامپیوتر‬


‫‪http://dnsl.ce.sharif.edu‬‬

‫درس ‪ :6‬کدهای تصدیق صحت پیام و‬


‫توابع درهمساز‬

‫محمد صادق دوستی‬

‫محمد صادق دوستی‬ ‫امنیت داده و شبکه‬ ‫‪1 / 59‬‬


‫فهرست مطالب‬

‫• مفاهیم اولیه‬
‫• رمزگذاری پیام و کدهای تشخیص خطا‬
‫• کدهای تصدیق صحت پیام‬
‫• اصول توابع درهمساز‬
‫• توابع درهمساز مهم‬
‫• ‪HMAC‬‬

‫محمد صادق دوستی‬ ‫امنیت داده و شبکه‬ ‫‪2 / 59‬‬


‫تصدیق صحت پیام چیست؟‬
‫‪ ‬اطمینان از صحت محتوای پیام‪ .‬یعنی پیام دریافتی دستتااری‬
‫نشده است‪:‬‬
‫‪‬بدون تغییر‬
‫‪‬بدون درج‬
‫‪‬بدون حذف‬

‫‪ ‬پیام از جانب فرستنده ادعا شده ارسال شده است‪.‬‬

‫محمد صادق دوستی‬ ‫امنیت داده و شبکه‬ ‫‪3 / 59‬‬


‫تصدیق صحت پیام‬
‫‪ ‬در بسیاری از کاربردها‪ ،‬مثالً تراکنشهای بانای‪ ،‬حفظ محرمتانیی‬
‫محتوای ارتباطات اهمیت زیادی ندارد‪ ،‬ولتی اینات محتتوای آنهتا‬
‫قابل اعتماد باشند از اهمیت بسیار باالتری برخوردار است‪.‬‬

‫‪ ‬نیاز ب دو سطح کارکرد داریم‪:‬‬


‫‪‬سطح اول‪ :‬استفاده از یک تابع برای تولید عامل تصدیق کننده‬
‫‪‬سطح دوم‪ :‬استفاده از یک تابع برای وارسی عامل تصدیق کننده‬

‫محمد صادق دوستی‬ ‫امنیت داده و شبکه‬ ‫‪4 / 59‬‬


‫فهرست مطالب‬

‫• مفاهیم اولی‬
‫• رمزگذاری پیام و کدهای تشخیص خطا‬
‫• کدهای تصدیق صحت پیام‬
‫• اصول توابع درهمساز‬
‫• توابع درهمساز مهم‬
‫• ‪HMAC‬‬

‫محمد صادق دوستی‬ ‫امنیت داده و شبکه‬ ‫‪5 / 59‬‬


‫رمزگذاری پیام برای تصدیق صحت پیام‬
‫‪ ‬فرستنده پیام را رمز میکند‪.‬‬

‫‪ ‬اگر متن رمز شده دستااری شتود بتا رمزگشتایی بت متتن آشتاار‬
‫نامفهوم (درهم و برهم) میرسیم‪.‬‬

‫‪ ‬گیرنده‪ ،‬بعد از رمزگشایی چک میکند ک آیا پیام مفهوم استت یتا‬


‫ن ؟‬

‫‪ ‬میتوان از الیوریتمهای رمز متقارن و یا نامتقارن برای این منظتور‬


‫استفاده کرد‪.‬‬

‫محمد صادق دوستی‬ ‫امنیت داده و شبکه‬ ‫‪6 / 59‬‬


‫مشکالت رمزنگاری‬
‫‪ ‬بررسی مفهوم بودن محتوا همواره آسان نیست‪.‬‬
‫‪‬در حالت کلی با نتوعی افزونیتی‪ ،‬ستاختار درونتی متورد انتظتار را‬
‫جستجو میکنند‪.‬‬
‫‪‬دشواری خودکارسازی فرآیند چک کردن‪...‬‬

‫‪ ‬راهحل اولیه‪ :‬استفاده از کدهای تشخیص خطا‬


‫‪‬مثال (‪ :)Parity‬یک بیت ب انتهای پیام اضاف نماییم‪ ،‬ب گون ای‬
‫ک تعداد بیتهای یک‪ ،‬زوج شود‪.‬‬

‫محمد صادق دوستی‬ ‫امنیت داده و شبکه‬ ‫‪7 / 59‬‬


‫کدهای تشخیص خطا‬
‫‪ ‬تابع ‪ F‬یک کد تشخیص خطا است‪.‬‬
‫‪‬یک مثال از تابع ‪ ،F‬کد ‪ CRC‬است‪.‬‬

‫‪ CRC:‬‬ ‫‪Cyclic Redundancy Check‬‬

‫‪ ‬گیرنده‪ ،‬بعد از رمز گشایی چک متیکنتد کت آیتا «کتد تشتخیص‬


‫خطای» محاسب شده توسط ‪ F‬با برچسب پیام مطابقت دارد یا ن ؟‬

‫محمد صادق دوستی‬ ‫امنیت داده و شبکه‬ ‫‪8 / 59‬‬


‫انواع روشهای اِعمال کدهای تشخیص خطا‬
‫‪ ‬دو مدل اضاف کردن کد تشخیص خطا (دومی کامالً ناامن است)‬

‫کنترل خطای درونی‬

‫کنترل خطای بیرونی‬

‫محمد صادق دوستی‬ ‫امنیت داده و شبکه‬ ‫‪9 / 59‬‬


‫نااَمن بودن کدهای تشخیص خطا‬
‫‪ ‬کدهای تشخیص خطا مانند ‪ CRC‬برای تشخیص خطای حاصتل‬
‫از نویز در کاربردهای مخابراتی طراحی شدهاند‪.‬‬
‫‪‬نویز‪:‬‬
‫• تغییرات غیرهوشمندان و غیرعمدی‬
‫‪‬حمل دشمن‪:‬‬
‫• تغییرات هوشمندان و عمدی‬

‫‪ ‬حمالت موفقی ب الیتوریتمهتایی کت از کتدهای تشتخیص خطتا‬


‫استفاده میکردند‪ ،‬صورت پذیرفت است‪.‬‬
‫‪‬مثال‪ :‬پروتال ‪WEP‬‬
‫محمد صادق دوستی‬ ‫امنیت داده و شبکه‬ ‫‪10 / 59‬‬
‫جمعبندی‬
‫‪ ‬هدف رمزگذاری‪ ،‬محرمانیی است و ن صحت‪.‬‬

‫‪ ‬کد تشخیص خطا از هیچ کلیدی استفاده نمیکند‪.‬‬

‫‪ ‬کد تشخیص خطا نمیتواند در حالت کلتی از دستتااری بستت هتا‬


‫جلوگیری کند‪.‬‬

‫‪ ‬راهحل‪ :‬کدهای تصدیق صحت پیام‬

‫محمد صادق دوستی‬ ‫امنیت داده و شبکه‬ ‫‪11 / 59‬‬


‫فهرست مطالب‬

‫• مفاهیم اولی‬
‫• رمزگذاری پیام و کدهای تشخیص خطا‬
‫• کدهای تصدیق صحت پیام‬
‫• اصول توابع درهمساز‬
‫• توابع درهمساز مهم‬
‫• ‪HMAC‬‬

‫محمد صادق دوستی‬ ‫امنیت داده و شبکه‬ ‫‪12 / 59‬‬


‫کد های تصدیق صحت پیام ‪1 -‬‬
‫‪ MAC:‬‬ ‫‪Message Authentication Code‬‬

‫‪ ‬نام دییر‪Cryptographic Checksum :‬‬

‫‪ ‬هدف‪ :‬تولید یک برچسب (‪ )Tag‬با طول ثابت‪:‬‬

‫‪ ‬وابست ب پیام‬
‫‪‬لزوماً برگشت پذیر نیست (بر خالف توابع رمزنیاری)‬
‫‪‬نیازمند اشتراک یک کلید مخفی بین طرفین‬

‫محمد صادق دوستی‬ ‫امنیت داده و شبکه‬ ‫‪13 / 59‬‬


‫کد های تصدیق صحت پیام ‪2 -‬‬
‫‪ ‬برچسب تولید شده توسط ‪ MAC‬ب پیام الحاق میشود‪.‬‬

‫‪ ‬گیرنتتتده پیتتتام‪ ،‬برچستتتب‪ ،‬و کلیتتتد را بت ت الیتتتوریتم تصتتتدیق‬


‫(‪ )Verification‬میدهد‪.‬‬

‫‪ ‬در صورتی ک خروجی الیوریتم ‪ TRUE‬باشتد‪ ،‬از صتحت پیتام و‬


‫هویت فرستنده اطمینان حاصل میشود‪.‬‬

‫محمد صادق دوستی‬ ‫امنیت داده و شبکه‬ ‫‪14 / 59‬‬


‫نحوه عملکرد کد های تصدیق صحت پیام‬

‫‪T: Tag‬‬
‫‪V: Verification‬‬

‫حسن‬ ‫علی‬
‫کلید مشترک‬ ‫کلید مشترک‬

‫کد تصدیق‬
‫کد تصدیق‬
‫داده‬ ‫‪T‬‬
‫‪V‬‬ ‫‪ 0‬یا ‪1‬‬
‫خام‬
‫داده خام‬ ‫شبکه‬ ‫داده خام‬

‫محمد صادق دوستی‬ ‫امنیت داده و شبکه‬ ‫‪15 / 59‬‬


‫ با رمزنگاری‬MAC ‫سه روش برای ترکیب‬
 AtE (Authenticate then Encrypt)

EK2( M || TK1( M ) ) 
 EtA (Encrypt then Authenticate)

EK2( M ) || TK1( EK2( M ) ) 


 E&A (Encrypt & Authenticate)

EK2( M ) || TK1( M ) 

‫محمد صادق دوستی‬ ‫امنیت داده و شبکه‬ 16 / 59


‫توضیح در مورد سه روش‬
‫‪ ‬در حالت کلی‪ ،‬فقط روش ‪ EtA‬امن است‪.‬‬
‫‪‬در حالتهای خاص ممان است روشهای دییر هم امن باشند‪.‬‬
‫‪ IPSec‬از این روش استفاده میکند‪.‬‬

‫‪ SSL ‬از حالت خاصی از ‪ AtE‬استفاده میکند ک امن است‪.‬‬

‫‪ SSH ‬از حالت خاصی از ‪ E&A‬استفاده میکند ک امن است‪.‬‬


‫‪‬‬ ‫‪H. Krawczyk. The Order of Encryption and Authentica-‬‬
‫‪tion for Protecting Communications (Or How Secure Is‬‬
‫‪SSL), CRYPTO 2001.‬‬

‫محمد صادق دوستی‬ ‫امنیت داده و شبکه‬ ‫‪17 / 59‬‬


‫ساختن ‪ MAC‬امن با استفاده از توابع رمزگذاری‬
‫‪ ‬با استفاده از توابع رمزگذاری امن و برخی از سبکهای رمزنیتاری‬
‫میتوان توابع ‪ MAC‬امن ساخت‪.‬‬
‫‪‬مثال‪ :‬سبکهای ‪ CBC‬و ‪CFB‬‬

‫‪ ‬در ساختن ‪ MAC‬از این سبکها باید دقت زیادی کرد‪.‬‬

‫‪‬جزئیات بسیار مهماند‪.‬‬


‫‪‬در ادام تالش میکنیم تا ‪ CBC-MAC‬بسازیم!‬

‫محمد صادق دوستی‬ ‫امنیت داده و شبکه‬ ‫‪18 / 59‬‬


‫‪ – CBC-MAC‬تالش ‪1‬‬
‫‪M1‬‬ ‫‪M2‬‬ ‫‪M3‬‬ ‫‪MN‬‬

‫‪IV‬‬ ‫‪+‬‬ ‫‪+‬‬ ‫‪+‬‬ ‫‪CN-1‬‬ ‫‪+‬‬

‫‪K‬‬ ‫‪E‬‬ ‫‪K‬‬ ‫‪E‬‬ ‫‪K‬‬ ‫‪E‬‬ ‫…‬ ‫‪K‬‬ ‫‪E‬‬

‫‪C1‬‬ ‫‪C2‬‬ ‫‪C3‬‬ ‫‪CN‬‬

‫‪ ‬پیام‪𝑀 = (𝑀1 , … , 𝑀𝑁 ) :‬‬


‫‪ ‬برچسب‪𝑇 = (𝐼𝑉, 𝐶𝑁 ) :‬‬
‫‪ ‬پیام ب همراه برچسب فرستاده میشود‪.‬‬
‫‪ ‬برای تصدیق‪ ،‬برچسب از نو محاسب و با برچسب دریافتی مقایست‬
‫میشود‪.‬‬
‫محمد صادق دوستی‬ ‫امنیت داده و شبکه‬ ‫‪19 / 59‬‬
‫حمله به تالش ‪1‬‬
‫‪ ‬مهاجم میتواند با انتخاب ‪ IV‬ب دلخواه‪ ،‬قطع اول پیتام را تغییتر‬
‫دهد‪.‬‬

‫‪ ‬بتتتا داشتتتتن پیتتتام ) 𝑁𝑀 ‪ 𝑀 = (𝑀1 , 𝑀2 , … ,‬و برچستتتب‬


‫)‪ T = (IV, CN‬میتوان پیام و برچسب جدیدی را بتدون داشتتن‬
‫کلید جعل کرد‪:‬‬
‫𝑁𝑀 ‪𝑀 = 𝑀1′ , 𝑀2 , … ,‬‬
‫𝑁𝐶 ‪𝑇 = 𝐼𝑉 ′ ,‬‬
‫‪𝐼𝑉 ′ ⊕ 𝑀1′ = 𝐼𝑉 ⊕ 𝑀1‬‬

‫محمد صادق دوستی‬ ‫امنیت داده و شبکه‬ ‫‪20 / 59‬‬


‫‪ – CBC-MAC‬تالش ‪2‬‬
‫‪ ‬راهکار‪ :‬استفاده از ‪ CBC-MAC‬با یک ‪ IV‬ثابتت متثالً بتردار‬
‫تمام صفر‪.‬‬

‫‪ ‬برچسب مساوی ‪ CN‬است‪.‬‬

‫‪M1‬‬ ‫‪M2‬‬ ‫‪M3‬‬ ‫‪MN‬‬

‫‪0‬‬ ‫‪+‬‬ ‫‪+‬‬ ‫‪+‬‬ ‫‪CN-1‬‬ ‫‪+‬‬

‫‪K‬‬ ‫‪E‬‬ ‫‪K‬‬ ‫‪E‬‬ ‫‪K‬‬ ‫‪E‬‬ ‫…‬ ‫‪K‬‬ ‫‪E‬‬

‫‪C1‬‬ ‫‪C2‬‬ ‫‪C3‬‬ ‫‪CN‬‬

‫محمد صادق دوستی‬ ‫امنیت داده و شبکه‬ ‫‪21 / 59‬‬


‫حمله به تالش ‪ – 2‬افزایش طول (‪)Length Extension‬‬

‫‪ ‬بتتا داشتتتن پیتتام تتتکقتتالبی ) ‪ 𝑀 = (𝑀1‬و برچستتب ‪T = C1‬‬


‫میتوان پیام و برچسب جدیدی را بدون داشتن کلید جعل کرد‪:‬‬

‫‪𝑀′ = 𝑀1 , 𝑀2‬‬
‫‪𝑇 = 𝐶1‬‬
‫‪𝑀2 = 𝑀1 ⊕ 𝐶1‬‬

‫‪ ‬ب همین ترتیب میتوان جعل را ادام داد و ب پیامهایی بتا طتول‬
‫بیشتر رسید‪.‬‬

‫محمد صادق دوستی‬ ‫امنیت داده و شبکه‬ ‫‪22 / 59‬‬


‫حمله به تالش ‪ – 2‬برچسب جدید از دو برچسب موجود‬
‫‪M1‬‬ ‫‪MN-1‬‬ ‫‪MN‬‬ ‫‪P1‬‬ ‫‪PL-1‬‬ ‫‪PL‬‬

‫‪0‬‬ ‫‪+‬‬ ‫‪+‬‬ ‫‪+‬‬ ‫‪0‬‬ ‫‪+‬‬ ‫‪+‬‬ ‫‪+‬‬

‫‪K‬‬ ‫‪E‬‬ ‫‪… K‬‬ ‫‪E‬‬ ‫‪K‬‬ ‫‪E‬‬ ‫‪K‬‬ ‫‪E‬‬ ‫‪… K‬‬ ‫‪E‬‬ ‫‪K‬‬ ‫‪E‬‬

‫‪D1‬‬ ‫‪DN-1‬‬ ‫‪DN‬‬ ‫‪C1‬‬ ‫‪CL-1‬‬ ‫‪CL‬‬

‫‪ ‬دو پیام و برچسب روی هریک را داریم‪:‬‬


‫‪‬پیام ) 𝐿𝑃 ‪ 𝑃 = (𝑃1 , … ,‬با برچسب 𝐿𝐶‪.‬‬
‫‪‬پیام ) 𝑁𝑀 ‪ 𝑀 = (𝑀1 , … ,‬با برچسب 𝑁𝐷‪.‬‬
‫) 𝐿𝑃 ‪𝑀′ = (𝑀1 , … , 𝑀𝑁 , 𝐷𝑁 ⊕ 𝑃1 , 𝑃2 , … ,‬‬
‫𝐿𝐶 = 𝑇‬
‫محمد صادق دوستی‬ ‫امنیت داده و شبکه‬ ‫‪23 / 59‬‬
‫راهکارها‬
‫‪ ‬راهکار ‪ :1‬هم پیامهای سیستم‪ ،‬طول ‪ N‬دارند‪.‬‬

‫‪‬جلوگیری از حمل افزایش طول‬


‫‪‬مناسب برای بسیاری از پروتالها‬

‫‪ ‬راهکار ‪ :2‬همیشت طتول پیتام را بت عنتوان قطعت اول بت تتابع‬


‫‪ CBC-MAC‬میدهیم‪.‬‬

‫‪ ‬راهکار ‪ :3‬قطع آخر (‪ )CN‬را یک مرتب مجدداً رمز میکنیم‪.‬‬

‫‪ ‬اثبات شده است ک هر س راهاار امن هستند‪.‬‬

‫محمد صادق دوستی‬ ‫امنیت داده و شبکه‬ ‫‪24 / 59‬‬


‫سواالت متداول در مورد ‪MAC‬‬
‫‪ ‬آیا ‪ MAC‬همانند امضا غیر قابل اناار است؟‬

‫‪ ‬خی ر‬
‫‪ ‬امضا با یک زوج کلید عمومی‪/‬خصوصی فراهم میشود ولتی کلیتد‬
‫‪ MAC‬یک کلید مشترک سری است‪.‬‬
‫‪‬بر خالف امضا‪ ،‬دو طرف قادر ب ایجاد ‪ MAC‬هستند‪.‬‬

‫محمد صادق دوستی‬ ‫امنیت داده و شبکه‬ ‫‪25 / 59‬‬


‫معایب تولید ‪ MAC‬با رمزنگاری‬
‫‪ ‬در بعضی موقعیتهتا‪ ،‬قتوانین اجتازه ارتبتاب بت کتارگیری توابتع‬
‫رمزنیاری را نمیدهند‪.‬‬

‫‪ ‬الیوریتمهای بسیار سریعتری برای تولید ‪ MAC‬وجود دارد‪.‬‬


‫‪‬ب کارگیری توابع درهمساز‬

‫محمد صادق دوستی‬ ‫امنیت داده و شبکه‬ ‫‪26 / 59‬‬


‫فهرست مطالب‬

‫• مفاهیم اولی‬
‫• رمزگذاری پیام و کدهای تشخیص خطا‬
‫• کدهای تصدیق صحت پیام‬
‫• اصول توابع درهمساز‬
‫• توابع درهمساز مهم‬
‫• ‪HMAC‬‬

‫محمد صادق دوستی‬ ‫امنیت داده و شبکه‬ ‫‪27 / 59‬‬


‫توابع درهمساز‬
‫‪ ‬تابع یکطرف‬

‫‪ ‬طول ورودی دلخواه‬

‫طول خروجی ثابت (نیاشت از فضای بزرگتر ب فضای کوچاتر)‬ ‫‪‬‬

‫‪ ‬در حالت کلی‪ ،‬کلیدی در کار نیست!‬


‫‪‬بر خالف ‪ MAC‬و رمزنیاری‬

‫محمد صادق دوستی‬ ‫امنیت داده و شبکه‬ ‫‪28 / 59‬‬


‫امنیت توابع درهمساز‪ :‬ایده کلی‬
‫‪ ‬نیاشت پیامهای طوالنی ب رشت های کوتاه ب گون ای ک ‪:‬‬
‫‪‬یافتن پیامهای متفاوتی ک ب یک رشت یاسان نیاشت متیشتوند‬
‫دشوار باشد‪.‬‬
‫‪‬ب ایتن رشتت ‪ ،‬عصتاره یتا چایتده پیتام (‪)Message Digest‬‬
‫میگوییم‪.‬‬

‫محمد صادق دوستی‬ ‫امنیت داده و شبکه‬ ‫‪29 / 59‬‬


‫نیازمندیهای امنیتی توابع درهمساز‬
‫‪ ‬دشواری یافتن پیشنیاره (‪)Preimage Resistance‬‬
‫‪‬نام دیگر‪ :‬یک طرف بودن (‪)One-wayness‬‬

‫‪ ‬دشواری یافتن پیشنیاره دوم (‪)2nd Preimage Resistance‬‬


‫‪‬نام دیگر‪ :‬مقاومتت ضتعید در برابتر تصتادم ( ‪Weak Collision‬‬
‫‪)Resistance‬‬

‫‪ ‬مقاومت در برابر تصادم (‪)Collision Resistance‬‬


‫‪‬نام دیگرر‪ :‬مقاومتت قتوی در برابتر تصتادم ( ‪Strong Collision‬‬
‫‪)Resistance‬‬

‫محمد صادق دوستی‬ ‫امنیت داده و شبکه‬ ‫‪30 / 59‬‬


‫تعریف نیازمندیهای امنیتی توابع درهمساز‬
‫‪ ‬دشواری یافتن پیشنگاره‪ :‬بترای یتک ‪ x‬تصتادفی‪ ،‬یتافتن ‪ y‬بتا‬
‫داشتتتن فقتتط )‪ H(x‬بت گونت ای کت )‪ H(y) = H(x‬از لحتتا‬
‫محاسباتی ناممان باشد (مهاجم ‪ x‬را ندارد)‪.‬‬

‫‪ ‬دشواری یافتن پیشنگاره دوم‪ :‬مثل قبل این بتار مهتاجم ‪ x‬را‬
‫دارد و باید ‪ x  y‬باشد‪.‬‬

‫‪ ‬مقاومت در برابر تصادم‪ :‬یافتن ‪ x  y‬ب گونت ای کت = )‪H(y‬‬


‫)‪ ،H(x‬از لحا محاسباتی ناممان باشد‪.‬‬

‫محمد صادق دوستی‬ ‫امنیت داده و شبکه‬ ‫‪31 / 59‬‬


‫نمودار وِن انواع توابع‬

‫مقاوم در برابر یافتن‬


‫پیشنیاره دوم‬
‫مقاوم در‬ ‫)‪(2PR‬‬
‫برابر یافتن‬
‫پیشنیاره‬
‫)‪(OW‬‬ ‫مقاوم در برابر‬
‫تصادم‬
‫)‪(CR‬‬

‫محمد صادق دوستی‬ ‫امنیت داده و شبکه‬ ‫‪32 / 59‬‬


‫‪ CR‬نتیجه میدهد ‪2PR‬‬
‫‪ ‬برهان خلف‪:‬‬
‫‪‬فرض کنیم تابع ‪ H‬خاصیت ‪ 2PR‬را نداشت باشد‪.‬‬

‫‪‬در این صورت ب ازای ‪ x‬تصتادفی‪ ،‬یتافتن ‪ x  y‬بت گونت ای کت‬


‫)‪ ،H(y) = H(x‬از لحا محاسباتی ممان است‪.‬‬
‫‪‬زوج )‪ (x, y‬یک تصادم برای تابع ‪ H‬هستند‪.‬‬
‫‪‬تناقض‪ :‬فرض کرده بودیم تابع ‪ H‬خاصیت ‪ CR‬را دارا است‪.‬‬

‫‪ ‬نتیجه‪ H :‬خاصیت ‪ 2PR‬را دارا است‪.‬‬

‫محمد صادق دوستی‬ ‫امنیت داده و شبکه‬ ‫‪33 / 59‬‬


‫‪ CR‬الزاماً نتیجه نمیدهد ‪OW‬‬
‫‪ ‬مثال‪ :‬تابع ‪.H(x) = x‬‬
‫‪‬این تابع ‪( CR‬و ‪ )2PR‬است چون هیچ تصادمی ندارد‪.‬‬
‫‪‬این تابع ‪ OW‬نیست چون پتیشنیتاره هتر مقتداری را متیتتوان‬
‫یافت‪.‬‬

‫‪ ‬نتیجه‪ 2PR :‬الزاماً نتیج نمیدهد ‪.OW‬‬

‫‪ ‬توابع فشردهساز‪ :‬اگر برد ‪ H‬نسبت ب دامن آن خیلتی کوچتک‬


‫باشد‪ CR ،‬نتیج میدهد ‪.OW‬‬
‫‪‬هم توابع درهمساز چنین هستند‪.‬‬
‫محمد صادق دوستی‬ ‫امنیت داده و شبکه‬ ‫‪34 / 59‬‬
‫‪ OW‬الزاماً نتیجه نمیدهد ‪2PR‬‬
‫‪ ‬فرض کنید ‪ n = pq‬حاصل ضرب دو عدد اول باشد‪.‬‬

‫‪ ‬میتوان ثابت کرد ک ‪ f(x) = x2 mod n‬تابعی یکطرف استت‬


‫(با فرض دشواری تجزی )‪.‬‬

‫‪ ‬با این حال ‪ f‬خاصیت ‪( 2PR‬و ‪ )CR‬را ندارد‪.‬‬


‫‪‬هر ‪ ،x‬با مقدار ‪ x‬تصادم دارد‪.‬‬

‫محمد صادق دوستی‬ ‫امنیت داده و شبکه‬ ‫‪35 / 59‬‬


‫حمله آزمون جامع به توابع درهمساز‬
‫‪ ‬تابع درهمساز ‪ H : {0,1}*  {0,1}n‬را در نظر بییریتد (ورودی‬
‫ب طول دلخواه خروجی ب طول ‪.)n‬‬
‫‪ ‬پیچیدگی یافتن پیشنگاره و پیشنگاره دوم‪ :‬ب طور متوستط‬
‫پس از امتحان ‪ 2n/2‬ورودی (یعنی ‪ ،)2n1‬پتیشنیتاره متد نظتر‬
‫پیدا میشود (با احتمال ‪.)%50‬‬
‫‪ ‬پیچیدگی یافتن تصادم‪ :‬ب طور متوسط پس از امتحتان حتدوداً‬
‫)‪ (2n/2‬ورودی (یعنی ‪ ،)1.252n/2‬تصادم پیدا میشود (بتا‬
‫احتمال ‪.)%50‬‬
‫‪‬علت‪ :‬تناقض روز تولد‬
‫محمد صادق دوستی‬ ‫امنیت داده و شبکه‬ ‫‪36 / 59‬‬
‫تناقض روز تولد‬
‫‪ ‬در میان ‪ 23‬نفر‪ ،‬احتمتال یتافتن دو نفتر کت در یتک روز از ستال‬
‫متولد شدهاند بیش از ‪ %50‬است‪.‬‬
‫‪1/ 25  365  23‬‬

‫محمد صادق دوستی‬ ‫امنیت داده و شبکه‬ ‫‪37 / 59‬‬


‫ساختار مِرکل – دَمگارد (‪)MD‬‬
‫‪ ‬مورد استفاده در بسیاری از توابع درهمساز معروف‬

‫‪ ‬اِعمال مارر یک تابع فشردهساز ب یک رشت با طول ثابت‬

‫‪ ‬اگر تابع فشردهساز ‪ CR‬باشد‪ ،‬تابع درهمساز نیز ‪ CR‬خواهد بود‪.‬‬

‫‪Ralph Merkle‬‬ ‫‪Ivan Bjerre‬‬


‫) – ‪(1952‬‬ ‫) – ‪Damgård (1956‬‬
‫محمد صادق دوستی‬ ‫امنیت داده و شبکه‬ ‫‪38 / 59‬‬
‫ساختار درونی توابع درهم ساز‬
‫‪CV0 = IV‬‬ ‫پیام ب قطعات ‪ Yi‬تقسیم شده است‪.‬‬ ‫‪‬‬
‫)‪CVi = f (CVi1, Yi1‬‬
‫‪Hash = CVL‬‬ ‫‪ IV‬یک رشت ثابت میباشد‪.‬‬ ‫‪‬‬

‫پیام‬

‫محمد صادق دوستی‬ ‫امنیت داده و شبکه‬ ‫‪39 / 59‬‬


‫ضعف ساختار ‪ MD‬در برابر حمالت افزایش طول‬
‫‪ ‬ساختار ‪ MD‬ب گون ای ک در اسالید قبلی نمتایش داده شتد در‬
‫برابر حمالت افزایش طول آسیبپذیر است‪.‬‬
‫‪‬چرا؟‬

‫‪ ‬برای حل این مشال‪ ،‬میتوان‪:‬‬


‫‪‬طول پیام را ب عنوان قطع نخست ب ساختار ‪ MD‬داد‪.‬‬
‫‪‬برای قطع آخر‪ ،‬از یک تابع فشردهساز متفاوت بهره گرفت‪.‬‬

‫محمد صادق دوستی‬ ‫امنیت داده و شبکه‬ ‫‪40 / 59‬‬


‫فهرست مطالب‬

‫• مفاهیم اولی‬
‫• رمزگذاری پیام و کدهای تشخیص خطا‬
‫• کدهای تصدیق صحت پیام‬
‫• اصول توابع درهمساز‬
‫• توابع درهمساز مهم‬
‫• ‪HMAC‬‬

‫محمد صادق دوستی‬ ‫امنیت داده و شبکه‬ ‫‪41 / 59‬‬


‫تابع ‪MD5‬‬
‫‪ MD5:‬‬ ‫‪Message Digest 5‬‬

‫‪ ‬طراحی در ‪ 1992‬توسط رایوست‪ ،‬یای از س طراح ‪RSA‬‬

‫‪ ‬استفاده گسترده در گذشت ‪ ،‬اما از کاربرد آن کاست شده است‪.‬‬

‫‪ ‬ویژگیها‪:‬‬
‫‪‬ساختار مرکل‪-‬دمیارد‬
‫‪‬پیام ب قطعات ‪ 512‬بیتی تقسیم میشود‪.‬‬

‫‪‬خروجی ‪ 128‬بیتی‬
‫‪Ronald Linn Rivest‬‬
‫) – ‪(1947‬‬
‫محمد صادق دوستی‬ ‫امنیت داده و شبکه‬ ‫‪42 / 59‬‬
‫امنیت ‪MD5‬‬
‫‪ ‬مقاومت در برابر تصادم تحت حمل روز تولد‪264 :‬‬
‫‪‬امروزه امن محسوب نمیشود‪.‬‬

‫‪ ‬حمالت کاراتری ب این الیوریتم یافت شدهاند‪:‬‬


‫‪‬بهترین حمله تصادم‪ :‬سال ‪ 2013‬توسط ‪ Liu ،Tao‬و ‪Feng‬‬

‫‪‬حمل در ‪ 218‬گام‬
‫‪‬کمتر از ‪ 1‬ثانی !‬

‫‪ ‬در سال ‪ ،2012‬ویروس ‪ Flame‬با سوء استفاده از آستیبپتذیری‬


‫‪ ،MD5‬امضای دیجیتال مایاروسافت را جعل نمود‪.‬‬
‫محمد صادق دوستی‬ ‫امنیت داده و شبکه‬ ‫‪43 / 59‬‬
‫تابع ‪SHA-1‬‬
‫‪ SHA-1:‬‬ ‫‪Secure Hash Algorithm – 1‬‬

‫‪ ‬استاندارد ‪ ،NIST‬سال ‪1995‬‬

‫‪ ‬ساختار مرکل‪-‬دمیارد‬

‫‪ ‬طول ورودی کوچاتر از ‪ 264‬بیت‬

‫‪ ‬طول خروجی ‪ 160‬بیت‬

‫محمد صادق دوستی‬ ‫امنیت داده و شبکه‬ ‫‪44 / 59‬‬


‫امنیت ‪SHA-1‬‬
‫‪ ‬مقاومت در برابر تصادم تحت حمل روز تولد‪280 :‬‬

‫‪ ‬بهترین حمل ‪ Marc Stevens :‬در سال ‪2011‬‬

‫‪‬پیچیدگی حمل بین ‪ 260/3‬و ‪265/3‬‬

‫‪ ‬در آمریاا از سال ‪ 2010‬باید با گون های امنتر آن یعنتی ختانواده‬


‫‪ SHA-2‬جاییزین شده باشد‪.‬‬

‫‪ ‬متأسفان هنوز ب طور گسترده مورد استفاده است‪.‬‬

‫محمد صادق دوستی‬ ‫امنیت داده و شبکه‬ ‫‪45 / 59‬‬


‫توابع درهم ساز مهم‪SHA-2 :‬‬
‫‪ ‬نسخ های زیر نیز عالوه بر ‪ SHA-1‬استاندارد شده اند‪:‬‬
‫‪ SHA-384 ،SHA-256 ،SHA-224‬و ‪SHA-512‬‬
‫‪‬معروف ب خانواده ‪ SHA-2‬هستند‪.‬‬
‫‪‬از لحا ساختار و جزئیات مشاب ‪ SHA-1‬هستند‪.‬‬

‫‪Algorithm Digest size Block size Message size CR Security‬‬


‫‪SHA-1‬‬ ‫‪160‬‬ ‫‪512‬‬ ‫‪< 264‬‬ ‫‪80 bits‬‬
‫‪SHA-224‬‬ ‫‪224‬‬ ‫‪512‬‬ ‫‪< 264‬‬ ‫‪112 bits‬‬
‫‪SHA-256‬‬ ‫‪256‬‬ ‫‪512‬‬ ‫‪< 264‬‬ ‫‪128 bits‬‬
‫‪SHA-384‬‬ ‫‪384‬‬ ‫‪1024‬‬ ‫‪< 2128‬‬ ‫‪192 bits‬‬
‫‪SHA-512‬‬ ‫‪512‬‬ ‫‪1024‬‬ ‫‪< 2128‬‬ ‫‪256 bits‬‬

‫محمد صادق دوستی‬ ‫امنیت داده و شبکه‬ ‫‪46 / 59‬‬


‫مشکالت ‪1 -‬‬
‫‪ SHA-1 ،MD5 ‬و تمتتامی توابتتع ختتانواده ‪ SHA-2‬در برابتتر‬
‫حمالت افزایش طول آسیبپذیر هستند‪.‬‬
‫‪‬اگر بخواهیم پیتام ‪ m‬را بت صتورت )‪ H(K || m‬تصتدیق هویتت‬
‫کنتتیم‪ ،‬مهتتاجم بتت ستتادگی طتتول ‪ m‬را افتتزایش داده و مقتتدار‬
‫)’‪ H(K || m‬را بدست میآورد (‪ m‬پیشوندی از ’‪ m‬است)‪.‬‬

‫محمد صادق دوستی‬ ‫امنیت داده و شبکه‬ ‫‪47 / 59‬‬


‫مشکالت ‪2 -‬‬
‫‪ ‬هم توابع تاراری (‪ )Iterative‬در برابر حمالت تصادم جزئتی از‬
‫پیام (‪ )Partial-Message Collision‬ضعد دارند‪.‬‬
‫‪‬فرض کنید بخواهیم پیتام ‪ m‬را بت صتورت )‪ H(m || K‬تصتدیق‬
‫هویت کنیم‪.‬‬
‫‪‬اگر مهاجم تصادم ‪ m‬و ’‪ m‬را در ‪ H‬بیابد‪ ،‬آنیاه داریم‪:‬‬

‫)‪H(m || K) = H(m’ || K‬‬

‫محمد صادق دوستی‬ ‫امنیت داده و شبکه‬ ‫‪48 / 59‬‬


‫راهکار‬
‫‪ NIST ‬در سال ‪ 2007‬مسابق ای را برای انتخاب تتابع درهتمستاز‬
‫جدید و معرفی آن ب عنوان استاندارد ‪ SHA-3‬آغاز کرد‪.‬‬

‫‪ ‬از شرایط ‪ SHA-3‬آن است ک حمل افتزایش طتول بت آن وارد‬


‫نباشد‪.‬‬

‫‪ ‬ساختارهای جدید (غیتر مرکتل‪-‬دمیتارد) بیشتتر متورد استتقبال‬


‫هستند‪.‬‬

‫‪ SHA-3 ‬ب عنوان مامل ‪ SHA-2‬است‪ ،‬ن جاییزین آن‪.‬‬

‫محمد صادق دوستی‬ ‫امنیت داده و شبکه‬ ‫‪49 / 59‬‬


‫استاندارد ‪SHA-3‬‬
‫‪ ‬در سال ‪ 2012‬تابع درهمساز ‪ Keccak‬ب عنوان برنده و تابع ‪SHA-‬‬
‫‪ 3‬تعیین گردید‪.‬‬
‫‪‬تلفظ رسمی‪Catch-Ack :‬‬

‫‪‬ساختار‪ :‬توابع اسفنجی (‪)Sponge‬‬

‫‪‬طراحان‪( Daemen ،Bertoni :‬طتراح ‪ Peeters ،)Rijndael‬و‬


‫‪.Van Assche‬‬

‫‪ ‬استاندارد ‪ SHA-3‬در آگوست ‪ 2015‬منتشر شد‪.‬‬

‫‪ ‬طول ورودی‪ :‬دلخواه طول خروجی ‪ ،512 ،384 ،256 ،224‬و دلخواه‪.‬‬

‫محمد صادق دوستی‬ ‫امنیت داده و شبکه‬ ‫‪50 / 59‬‬


Keccak ‫معنی لغوی‬

J.P. Aumasson: It comes from “Kecak,” a Balinese dance (Indonesia).

‫محمد صادق دوستی‬ ‫امنیت داده و شبکه‬ 51 / 59


‫فهرست مطالب‬

‫• مفاهیم اولی‬
‫• رمزگذاری پیام و کدهای تشخیص خطا‬
‫• کدهای تصدیق صحت پیام‬
‫• اصول توابع درهمساز‬
‫• توابع درهمساز مهم‬
‫• ‪HMAC‬‬

‫محمد صادق دوستی‬ ‫امنیت داده و شبکه‬ ‫‪52 / 59‬‬


‫کد تصدیق اصالت ‪HMAC‬‬
‫‪ ‬ابداع توسط بلّاری‪ ،‬کانِتی و کِرَوْچیک در سال ‪.1996‬‬

‫‪Mihir Bellare‬‬ ‫‪Ran Canetti‬‬ ‫‪Hugo Krawczyk‬‬

‫محمد صادق دوستی‬ ‫امنیت داده و شبکه‬ ‫‪53 / 59‬‬


‫کد تصدیق اصالت ‪HMAC‬‬
‫‪ HMAC ‬روشی برای ترکیب کردن کلید مخفی با الیوریتمهتای‬
‫درهمساز فعلی است‪.‬‬
‫‪‬دیدیم ک )‪ H(m || K‬یا )‪ H(K || m‬برای توابع خانواده ‪SHA‬‬
‫(غیر از ‪ )SHA-3‬مناسب نیست‪.‬‬

‫‪‬راهکار‪ :‬استفاده از دو مرتب ‪ H‬یعنی ))‪.H(K2 || H(K1 || m‬‬

‫‪‬بهتر است کلیدهای درونی و بیرونی متفاوت باشند‪.‬‬

‫‪ HMAC ‬ب طور گستترده استتفاده متیشتود (متثالً در ‪ SSL‬و‬


‫‪.)IPSec‬‬

‫محمد صادق دوستی‬ ‫امنیت داده و شبکه‬ ‫‪54 / 59‬‬


‫اهداف طراحی ‪HMAC‬‬
‫‪ ‬استفاده از توابع درهمساز بدون تغییر آنها‬

‫‪ ‬پشتیبانی از توابع درهمساز متنوع‬


‫‪‬مانند ‪ ،SHA-2 ،SHA-1 ،MD5 ،RIPEMD-160‬و‬
‫‪Whirlpool‬‬

‫‪ ‬حفظ کارایی و سرعت تابع درهمساز ب کار گرفت شده‬


‫‪‬الی دوم ‪ Hash‬معادل ‪ 1‬یا ‪ 2‬تابع فشردهسازی‬

‫‪ ‬استفاده ساده از کلید‬

‫محمد صادق دوستی‬ ‫امنیت داده و شبکه‬ ‫‪55 / 59‬‬


‫نماد گذاری الگوریتم ‪HMAC‬‬
‫‪ :H ‬تابع درهم ساز ب کار گرفت شده (با خروجی ‪ n‬بیتی)‬
‫‪ :M ‬پیام ورودی (با قطعات ‪ b‬بیتی)‬
‫‪ :K ‬کلید مخفی (طول پیشنهادی‪ :‬بیشتتر از ‪ .n‬اگتر از ‪ b‬بیشتتر‬
‫بود‪ H(K) ،‬ب عنوان ورودی داده میشود)‬
‫‪ :K+ ‬کلید مخفی ک از سمت چپ ‪ 0-pad‬شده است (تا ب طول‬
‫‪ b‬برسد)‬
‫‪ :ipad ‬رشت ‪ b‬بیتی حاصل از تارار رشت ‪ 0x36‬ب تعداد ‪b/8‬‬
‫‪ :opad ‬رشت ‪ b‬بیتی حاصل از تارار رشت ‪ 0x5c‬ب تعداد ‪b/8‬‬
‫محمد صادق دوستی‬ ‫امنیت داده و شبکه‬ ‫‪56 / 59‬‬
HMAC ‫نحوه محاسبه‬

outer inner
pad pad


H K   opad || H  K   ipad || M  
‫محمد صادق دوستی‬ ‫امنیت داده و شبکه‬ 57 / 59
‫امنیت ‪HMAC‬‬
‫‪ ‬ارتباب دقیق بین امنیت ‪ HMAC‬با امنیت تابع درهمساز اثبتات‬
‫شده است‪.‬‬

‫‪ ‬حمل ب ‪:HMAC‬‬
‫‪‬حمل آزمون جامع بر روی کلید (میزان مقاومتت بستت بت طتول‬
‫کلید)‬
‫‪‬حمله روز تولد‪ :‬با توج ب نداشتن کلید‪ ،‬نیازمند مشاهده تعتداد‬
‫زیادی پیام و ‪ HMAC‬آنها با کلید یاسان‬

‫‪ ‬مقاومت ‪ HMAC‬در برابر حمل روز تولد از تابع درهمساز ب کار‬


‫گرفت شده‪ ،‬بیشتر است‪.‬‬
‫محمد صادق دوستی‬ ‫امنیت داده و شبکه‬ ‫‪58 / 59‬‬
‫پایان‬
‫صفحه درس‪:‬‬

‫‪http://ce.sharif.edu/courses/94-95/1/ce442-1/‬‬

‫مراجعه حضوری جهت رفع اشکال‪ :‬شنب ها ‪ 15‬الی ‪16‬‬

‫(طبق پنجم دانشاده‪ ،‬درب شیش ای جنب آسانسور)‬

‫یا در زمانهای دیگر با قرار قبلی‬

‫یا به وسیله رایانامه‪dousti@ce :‬‬

‫محمد صادق دوستی‬ ‫امنیت داده و شبکه‬ ‫‪59 / 59‬‬

You might also like