DataNetSec-Dousti-06-MAC_HashFuncs-v3.pdf

‫دانشگاه صنعتی شریف‬
‫دانشکده مهندسی کامپیوتر‬
‫آزمایشگاه امنیت داده و شبکه‬
‫‪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‬است‪.‬‬
‫‪Cyclic Redundancy Check‬‬
‫‪ CRC:‬‬
‫‪ ‬مثال‪:‬‬
‫‪CRC-32(“Hello”) = 0xF7D18982‬‬
‫‪ ‬گیرنده‪ ،‬بعد از رمز گشایی چک متیکنتد کت آیتا «کتد تشتخیص‬
‫خطای» محاسب شده توسط ‪ F‬با برچسب پیام مطابقت دارد یا ن ؟‬
‫‪8 / 59‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫انواع روشهای اِعمال کدهای تشخیص خطا‬
‫‪ ‬دو مدل اضاف کردن کد تشخیص خطا (دومی کامالً ناامن است)‬
‫کنترل خطای درونی‬
‫کنترل خطای بیرونی‬
‫‪9 / 59‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫نااَمن بودن کدهای تشخیص خطا‬
‫‪ ‬کدهای تشخیص خطا مانند ‪ CRC‬برای تشخیص خطای حاصتل‬
‫از نویز در کاربردهای مخابراتی طراحی شدهاند‪.‬‬
‫‪‬نویز‪:‬‬
‫• تغییرات غیرهوشمندان و غیرعمدی‬
‫‪‬حمل دشمن‪:‬‬
‫• تغییرات هوشمندان و عمدی‬
‫‪ ‬حمالت موفقی ب الیتوریتمهتایی کت از کتدهای تشتخیص خطتا‬
‫استفاده میکردند‪ ،‬صورت پذیرفت است‪.‬‬
‫‪‬مثال‪ :‬پروتال ‪WEP‬‬
‫‪10 / 59‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫جمعبندی‬
‫‪ ‬هدف رمزگذاری‪ ،‬محرمانیی است و ن صحت‪.‬‬
‫‪ ‬کد تشخیص خطا از هیچ کلیدی استفاده نمیکند‪.‬‬
‫‪ ‬کد تشخیص خطا نمیتواند در حالت کلتی از دستتااری بستت هتا‬
‫جلوگیری کند‪.‬‬
‫‪ ‬راهحل‪ :‬کدهای تصدیق صحت پیام‬
‫‪11 / 59‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫فهرست مطالب‬
‫• مفاهیم اولی‬
‫• رمزگذاری پیام و کدهای تشخیص خطا‬
‫• کدهای تصدیق صحت پیام‬
‫• اصول توابع درهمساز‬
‫• توابع درهمساز مهم‬
‫• ‪HMAC‬‬
‫‪12 / 59‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫کد های تصدیق صحت پیام ‪1 -‬‬
‫‪Message Authentication Code‬‬
‫‪ MAC:‬‬
‫‪ ‬نام دییر‪Cryptographic Checksum :‬‬
‫‪ ‬هدف‪ :‬تولید یک برچسب (‪ )Tag‬با طول ثابت‪:‬‬
‫‪ ‬وابست ب پیام‬
‫‪‬لزوماً برگشت پذیر نیست (بر خالف توابع رمزنیاری)‬
‫‪‬نیازمند اشتراک یک کلید مخفی بین طرفین‬
‫‪13 / 59‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫کد های تصدیق صحت پیام ‪2 -‬‬
‫‪ ‬برچسب تولید شده توسط ‪ MAC‬ب پیام الحاق میشود‪.‬‬
‫‪ ‬گیرنتتتده پیتتتام‪ ،‬برچستتتب‪ ،‬و کلیتتتد را بت ت الیتتتوریتم تصتتتدیق‬
‫(‪ )Verification‬میدهد‪.‬‬
‫‪ ‬در صورتی ک خروجی الیوریتم ‪ TRUE‬باشتد‪ ،‬از صتحت پیتام و‬
‫هویت فرستنده اطمینان حاصل میشود‪.‬‬
‫‪14 / 59‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫نحوه عملکرد کد های تصدیق صحت پیام‬
‫‪T: Tag‬‬
‫‪V: Verification‬‬
‫حسن‬
‫علی‬
‫کلید مشترک‬
‫کلید مشترک‬
‫‪ 0‬یا ‪1‬‬
‫‪V‬‬
‫کد تصدیق‬
‫داده خام‬
‫‪15 / 59‬‬
‫کد تصدیق‬
‫شبکه‬
‫امنیت داده و شبکه‬
‫داده خام‬
‫‪T‬‬
‫داده‬
‫خام‬
‫محمد صادق دوستی‬
‫ با رمزنگاری‬MAC ‫سه روش برای ترکیب‬
 AtE
(Authenticate then Encrypt)
EK2(
 EtA
|| TK1(
M

) )
(Encrypt then Authenticate)
EK2(
 E&A
EK2(
‫محمد صادق دوستی‬
M
M
)
|| TK1( EK2(
M
) )

(Encrypt & Authenticate)
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‬‬
‫‪MN‬‬
‫‪+‬‬
‫‪CN-1‬‬
‫‪E‬‬
‫‪K‬‬
‫‪CN‬‬
‫…‬
‫‪M3‬‬
‫‪M2‬‬
‫‪M1‬‬
‫‪+‬‬
‫‪+‬‬
‫‪+‬‬
‫‪IV‬‬
‫‪E‬‬
‫‪K‬‬
‫‪E‬‬
‫‪E‬‬
‫‪K‬‬
‫‪C2‬‬
‫‪C3‬‬
‫‪K‬‬
‫‪C1‬‬
‫‪ ‬پیام‪𝑀 = (𝑀1 , … , 𝑀𝑁 ) :‬‬
‫‪ ‬برچسب‪𝑇 = (𝐼𝑉, 𝐶𝑁 ) :‬‬
‫‪ ‬پیام ب همراه برچسب فرستاده میشود‪.‬‬
‫‪ ‬برای تصدیق‪ ،‬برچسب از نو محاسب و با برچسب دریافتی مقایست‬
‫میشود‪.‬‬
‫‪19 / 59‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫حمله به تالش ‪1‬‬
‫‪ ‬مهاجم میتواند با انتخاب ‪ IV‬ب دلخواه‪ ،‬قطع اول پیتام را تغییتر‬
‫دهد‪.‬‬
‫‪ ‬بتتتا داشتتتتن پیتتتام ) 𝑁𝑀 ‪ 𝑀 = (𝑀1 , 𝑀2 , … ,‬و برچستتتب‬
‫)‪ T = (IV, CN‬میتوان پیام و برچسب جدیدی را بتدون داشتتن‬
‫کلید جعل کرد‪:‬‬
‫𝑁𝑀 ‪𝑀′ = 𝑀1′ , 𝑀2 , … ,‬‬
‫𝑁𝐶 ‪𝑇′ = 𝐼𝑉 ′ ,‬‬
‫‪𝐼𝑉 ′ ⊕ 𝑀1′ = 𝐼𝑉 ⊕ 𝑀1‬‬
‫‪20 / 59‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫‪ – CBC-MAC‬تالش ‪2‬‬
‫‪ ‬راهکار‪ :‬استفاده از ‪ CBC-MAC‬با یک ‪ IV‬ثابتت متثالً بتردار‬
‫تمام صفر‪.‬‬
‫‪ ‬برچسب مساوی ‪ CN‬است‪.‬‬
‫‪MN‬‬
‫‪+‬‬
‫‪CN-1‬‬
‫‪E‬‬
‫‪K‬‬
‫‪CN‬‬
‫‪21 / 59‬‬
‫…‬
‫‪M3‬‬
‫‪M2‬‬
‫‪M1‬‬
‫‪+‬‬
‫‪+‬‬
‫‪+‬‬
‫‪0‬‬
‫‪E‬‬
‫‪K‬‬
‫‪E‬‬
‫‪K‬‬
‫‪C3‬‬
‫‪E‬‬
‫‪C2‬‬
‫امنیت داده و شبکه‬
‫‪K‬‬
‫‪C1‬‬
‫محمد صادق دوستی‬
‫حمله به تالش ‪ – 2‬افزایش طول (‪)Length Extension‬‬
‫‪ ‬بتتا داشتتتن پیتتام تتتکقتتالبی ) ‪ 𝑀 = (𝑀1‬و برچستتب ‪T = C1‬‬
‫میتوان پیام و برچسب جدیدی را بدون داشتن کلید جعل کرد‪:‬‬
‫‪𝑀′ = 𝑀1 , 𝑀2‬‬
‫‪𝑇 ′ = 𝑇 = 𝐶1‬‬
‫‪𝑀2 = 𝑀1 ⊕ 𝐶1‬‬
‫‪ ‬ب همین ترتیب میتوان جعل را ادام داد و ب پیامهایی بتا طتول‬
‫بیشتر رسید‪.‬‬
‫‪22 / 59‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫حمله به تالش ‪ – 2‬برچسب جدید از دو برچسب موجود‬
‫‪PL‬‬
‫‪PL-1‬‬
‫‪P1‬‬
‫‪+‬‬
‫‪+‬‬
‫‪+‬‬
‫‪0‬‬
‫‪E‬‬
‫‪K‬‬
‫‪E‬‬
‫‪K‬‬
‫‪CL‬‬
‫‪E‬‬
‫‪CL-1‬‬
‫‪… K‬‬
‫‪C1‬‬
‫‪MN‬‬
‫‪MN-1‬‬
‫‪M1‬‬
‫‪+‬‬
‫‪+‬‬
‫‪+‬‬
‫‪0‬‬
‫‪E‬‬
‫‪E‬‬
‫‪K‬‬
‫‪E‬‬
‫‪K‬‬
‫‪DN‬‬
‫‪… K‬‬
‫‪DN-1‬‬
‫‪D1‬‬
‫‪ ‬دو پیام و برچسب روی هریک را داریم‪:‬‬
‫‪‬پیام ) 𝐿𝑃 ‪ 𝑃 = (𝑃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‬‬
‫مقاوم در برابر‬
‫تصادم‬
‫)‪(CR‬‬
‫‪32 / 59‬‬
‫امنیت داده و شبکه‬
‫مقاوم در‬
‫برابر یافتن‬
‫پیشنیاره‬
‫)‪(OW‬‬
‫محمد صادق دوستی‬
‫‪ 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‬ورودی (یعنی ‪ ،)1.252n/2‬تصادم پیدا میشود (بتا‬
‫احتمال ‪.)%50‬‬
‫‪‬علت‪ :‬تناقض روز تولد‬
‫‪36 / 59‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫تناقض روز تولد‬
‫‪ ‬در میان ‪ 23‬نفر‪ ،‬احتمتال یتافتن دو نفتر کت در یتک روز از ستال‬
‫متولد شدهاند بیش از ‪ %50‬است‪.‬‬
‫‪1/25  365  23‬‬
‫‪37 / 59‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫ساختار مِرکل – دَمگارد (‪)MD‬‬
‫‪ ‬مورد استفاده در بسیاری از توابع درهمساز معروف‬
‫‪ ‬اِعمال مارر یک تابع فشردهساز ب یک رشت با طول ثابت‬
‫‪ ‬اگر تابع فشردهساز ‪ CR‬باشد‪ ،‬تابع درهمساز نیز ‪ CR‬خواهد بود‪.‬‬
‫‪Ivan Bjerre‬‬
‫) – ‪Damgård (1956‬‬
‫‪38 / 59‬‬
‫امنیت داده و شبکه‬
‫‪Ralph Merkle‬‬
‫) – ‪(1952‬‬
‫محمد صادق دوستی‬
‫ساختار درونی توابع درهم ساز‬
‫‪‬‬
‫پیام ب قطعات ‪ Yi‬تقسیم شده است‪.‬‬
‫‪‬‬
‫‪ IV‬یک رشت ثابت میباشد‪.‬‬
‫‪CV0 = IV‬‬
‫)‪CVi = f (CVi1, Yi1‬‬
‫‪Hash = CVL‬‬
‫پیام‬
‫‪39 / 59‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫ضعف ساختار ‪ MD‬در برابر حمالت افزایش طول‬
‫‪ ‬ساختار ‪ MD‬ب گون ای ک در اسالید قبلی نمتایش داده شتد در‬
‫برابر حمالت افزایش طول آسیبپذیر است‪.‬‬
‫‪‬چرا؟‬
‫‪ ‬برای حل این مشال‪ ،‬میتوان‪:‬‬
‫‪‬طول پیام را ب عنوان قطع نخست ب ساختار ‪ MD‬داد‪.‬‬
‫‪‬برای قطع آخر‪ ،‬از یک تابع فشردهساز متفاوت بهره گرفت‪.‬‬
‫‪40 / 59‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫فهرست مطالب‬
‫• مفاهیم اولی‬
‫• رمزگذاری پیام و کدهای تشخیص خطا‬
‫• کدهای تصدیق صحت پیام‬
‫• اصول توابع درهمساز‬
‫• توابع درهمساز مهم‬
‫• ‪HMAC‬‬
‫‪41 / 59‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫تابع ‪MD5‬‬
‫‪Message Digest 5‬‬
‫‪ MD5:‬‬
‫‪ ‬طراحی در ‪ 1992‬توسط رایوست‪ ،‬یای از س طراح ‪RSA‬‬
‫‪ ‬استفاده گسترده در گذشت ‪ ،‬اما از کاربرد آن کاست شده است‪.‬‬
‫‪ ‬ویژگیها‪:‬‬
‫‪‬ساختار مرکل‪-‬دمیارد‬
‫‪‬پیام ب قطعات ‪ 512‬بیتی تقسیم میشود‪.‬‬
‫‪‬خروجی ‪ 128‬بیتی‬
‫‪42 / 59‬‬
‫‪Ronald Linn Rivest‬‬
‫) – ‪(1947‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫امنیت ‪MD5‬‬
‫‪ ‬مقاومت در برابر تصادم تحت حمل روز تولد‪264 :‬‬
‫‪‬امروزه امن محسوب نمیشود‪.‬‬
‫‪ ‬حمالت کاراتری ب این الیوریتم یافت شدهاند‪:‬‬
‫‪‬بهترین حمله تصادم‪ :‬سال ‪ 2013‬توسط ‪ Liu ،Tao‬و ‪Feng‬‬
‫‪‬حمل در ‪ 218‬گام‬
‫‪‬کمتر از ‪ 1‬ثانی !‬
‫‪ ‬در سال ‪ ،2012‬ویروس ‪ Flame‬با سوء استفاده از آستیبپتذیری‬
‫‪ ،MD5‬امضای دیجیتال مایاروسافت را جعل نمود‪.‬‬
‫‪43 / 59‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫تابع ‪SHA-1‬‬
‫‪Secure Hash Algorithm – 1‬‬
‫‪ SHA-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‬‬
‫‪46 / 59‬‬
‫‪80 bits‬‬
‫‪< 264‬‬
‫‪512‬‬
‫‪160‬‬
‫‪SHA-1‬‬
‫‪112 bits‬‬
‫‪< 264‬‬
‫‪512‬‬
‫‪224‬‬
‫‪SHA-224‬‬
‫‪128 bits‬‬
‫‪< 264‬‬
‫‪512‬‬
‫‪256‬‬
‫‪SHA-256‬‬
‫‪192 bits‬‬
‫‪< 2128‬‬
‫‪1024‬‬
‫‪384‬‬
‫‪SHA-384‬‬
‫‪256 bits‬‬
‫‪< 2128‬‬
‫‪1024‬‬
‫‪512‬‬
‫‪SHA-512‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫مشکالت ‪1 -‬‬
‫‪ SHA-1 ،MD5 ‬و تمتتامی توابتتع ختتانواده ‪ SHA-2‬در برابتتر‬
‫حمالت افزایش طول آسیبپذیر هستند‪.‬‬
‫‪‬اگر بخواهیم پیتام ‪ m‬را بت صتورت )‪ H(K || m‬تصتدیق هویتت‬
‫کنتتیم‪ ،‬مهتتاجم بتت ستتادگی طتتول ‪ m‬را افتتزایش داده و مقتتدار‬
‫)’‪ H(K || 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‬‬
‫‪Hugo Krawczyk‬‬
‫‪53 / 59‬‬
‫‪Ran Canetti‬‬
‫امنیت داده و شبکه‬
‫‪Mihir Bellare‬‬
‫محمد صادق دوستی‬
‫کد تصدیق اصالت ‪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
pad

inner
pad
H K   opad || H  K   ipad || M 
‫محمد صادق دوستی‬
‫امنیت داده و شبکه‬

57 / 59
‫امنیت ‪HMAC‬‬
‫‪ ‬ارتباط دقیق بین امنیت ‪ HMAC‬با امنیت تابع درهمساز اثبتات‬
‫شده است‪.‬‬
‫‪ ‬حمل ب ‪:HMAC‬‬
‫‪‬حمل آزمون جامع بر روی کلید (میزان مقاومتت بستت بت طتول‬
‫کلید)‬
‫‪‬حمله روز تولد‪ :‬با توج ب نداشتن کلید‪ ،‬نیازمند مشاهده تعتداد‬
‫زیادی پیام و ‪ HMAC‬آنها با کلید یاسان‬
‫‪ ‬مقاومت ‪ HMAC‬در برابر حمل روز تولد از تابع درهمساز ب کار‬
‫گرفت شده‪ ،‬بیشتر است‪.‬‬
‫‪58 / 59‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫پایان‬
‫صفحه درس‪:‬‬
‫‪http://ce.sharif.edu/courses/94-95/2/ce442-1/‬‬
‫مراجعه حضوری جهت رفع اشکال‪ :‬یاشنب ها ‪ 17‬الی ‪18‬‬
‫(طبق پنجم دانشاده‪ ،‬درب شیش ای جنب آسانسور)‬
‫یا در زمانهای دیگر با قرار قبلی‬
‫یا به وسیله رایانامه‪dousti@ce :‬‬
‫‪59 / 59‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬