DataNetSec-Dousti-08-CryptoProtoDesign-v3.pdf

‫دانشگاه صنعتی شریف‬
‫دانشکده مهندسی کامپیوتر‬
‫آزمایشگاه امنیت داده و شبکه‬
‫‪http://dnsl.ce.sharif.edu‬‬
‫درس ‪ :8‬طراحی پروتکلهای رمزنگاری‬
‫محمد صادق دوستی‬
‫‪1 / 61‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫مقدمه‬
‫‪ ‬پروتکلهای رمزنگاری‪ :‬پروتکلهایی که در آنها از الگوریتمهای رمز‬
‫استفاده میشود‪.‬‬
‫‪‬مثال‪ :‬تصدیق هویت‪ ،‬توزیع کلید‪ ،‬رأیگیری الکترونیکی‪ ،‬پرداختت‬
‫الکترونیکی‪ ،‬امضای قرارداد‪... ،‬‬
‫‪ ‬در این درس به پروتکلهای توزیع کلید میپردازیم‪.‬‬
‫‪2 / 61‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫فهرست‬
‫‪ ‬مدیریت کلید‬
‫‪‬مفاهیم اساسی مدیریت کلید‬
‫‪‬سلسله مراتب کلید‬
‫‪‬تولید کلید و طول عمر کلید‬
‫‪‬اشتراک کلید مبتنی بر رمز متقارن‬
‫‪‬اشتراک کلید مبتنی بر رمز کلید عمومی‬
‫‪ ‬طراحی پروتکلهای تبادل کلید‬
‫‪3 / 61‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫مدیریت کلید چیست؟‬
‫‪ ‬مدیریت کلید عبارت است از مجموعه فرآینتدهای تولیتد‪ ،‬تبتادل‪،‬‬
‫نگهداری‪ ،‬استفاده‪ ،‬امحا و جایگزینی کلیدهای موجود در سیستم‪.‬‬
‫‪ ‬کلیدها میتوانند عمومی یا خصوصی باشند‪.‬‬
‫‪4 / 61‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫اهمیت مدیریت کلید‬
‫‪ ‬اکثر حمالت به رمزنگاری یک سیستم امنیتی‪ ،‬در بخت‬
‫متدیریت‬
‫کلید است‪.‬‬
‫‪‬چرا که طرفهای ارتباط‪ ،‬امکان ارتباط فیزیکی بترای تبتادل کلیتد‬
‫امن را با یکدیگر ندارند‪.‬‬
‫‪ ‬در حقیقت برخی این مسأله را دشوارترین جزء یک سیستتم امتن‬
‫میدانند‪.‬‬
‫‪5 / 61‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫فهرست‬
‫‪ ‬مدیریت کلید‬
‫‪‬مفاهیم اساسی مدیریت کلید‬
‫‪‬سلسله مراتب کلید‬
‫‪‬تولید کلید و طول عمر کلید‬
‫‪‬اشتراک کلید مبتنی بر رمز متقارن‬
‫‪‬اشتراک کلید مبتنی بر رمز کلید عمومی‬
‫‪ ‬طراحی پروتکلهای تبادل کلید‬
‫‪6 / 61‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫کلید اصلی و کلید جلسه‬
‫‪ ‬کلید اصلی (‪)Master Key‬‬
‫‪‬یا کلید طوالنی مدت (‪ Long-Term Key‬یا ‪)LTK‬‬
‫‪‬کلیدی که برای رمزگذاری و‪/‬یا تصدیق هویت کلیدهای دیگر مورد‬
‫استفاده قرار میگیرد‪.‬‬
‫‪ ‬از کلید جلسه (نشست) برای رمزنگتاری و تصتدیق هویتت پیامهتا‬
‫استفاده میکنیم‪.‬‬
‫‪‬رمزنگاری متقارن‬
‫‪7 / 61‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫سلسله مراتب کلیدها‬
‫خسارت در‬
‫حجم‬
‫عمر‬
‫نوع کلید‬
‫صورت لو رفتن‬
‫اطالعات‬
‫خیلی زیاد‬
‫کلید اصلی خیلی کم طوالنی‬
‫زیاد‬
‫کوتاه‬
‫کم‬
‫کلید جلسه‬
‫بسته به کاربرد‬
‫‬‫زیاد‬
‫داده‬
‫‪8 / 61‬‬
‫امنیت داده و شبکه‬
‫نحوه محافظت‬
‫محافظت فیزیکی‬
‫با رمزنگاری‬
‫با رمزنگاری‬
‫محمد صادق دوستی‬
‫فهرست‬
‫‪ ‬مدیریت کلید‬
‫‪‬مفاهیم اساسی مدیریت کلید‬
‫‪‬سلسله مراتب کلید‬
‫‪‬تولید کلید و طول عمر کلید‬
‫‪‬اشتراک کلید مبتنی بر رمز متقارن‬
‫‪‬اشتراک کلید مبتنی بر رمز کلید عمومی‬
‫‪ ‬طراحی پروتکلهای تبادل کلید‬
‫‪9 / 61‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫تولید کلید‬
‫‪ ‬کلیدهای تولیدی باید کامالً تصادفی باشند‪.‬‬
‫‪‬کامپیوتر نمیتواند اعداد تصادفی واقعی تولید نماید‪.‬‬
‫‪ ‬استفاده از منابع تصادفی بیرونی (تعامل با کاربر و ‪)...‬‬
‫‪‬تولید یک بذر (‪ )seed‬تصادفی‬
‫‪ ‬گستتتترذ بتتتذر تصتتتادفی بتتته یتتتک مقتتتدار شتتتبهتصتتتادفی‬
‫(‪)pseudorandom‬‬
‫‪‬غیر قابل تمیز از مقدار تصادفی واقعی‬
‫‪ ‬نیاز به الگوریتمهای مولد اعداد شبه تصادفی (‪)PRNG‬‬
‫‪10 / 61‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫‪PRNG‬‬
‫بذر تصادفی‬
‫‪011001100111100011‬‬
‫خروجی شبهتصادفی‬
‫‪0100001101111000011010011100010101110101‬‬
‫‪PRNG‬‬
‫الگوریتم قطعی‬
‫(غیر تصادفی)‬
‫الگوریتم تمیز دهنده‬
‫؟؟؟‬
‫‪0011010110011001101111011011100011100100‬‬
‫مقدار تصادفی واقعی‬
‫‪11 / 61‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫طول عمر کلید جلسه‬
‫‪ ‬اگر طول عمر کوتاه باشد‪:‬‬
‫‪ ‬امنیت باال‬
‫• حجم داده برای تحلیل رمز ناچیز است‪.‬‬
‫• میزان استفاده کم است‪.‬‬
‫• حتی پس از افشای کلید‪ ،‬زمان زیادی برای سوء استفاده موجود نیست‪.‬‬
‫‪‬کارایی کم‬
‫• دائما باید کلید را بروز کنیم‪.‬‬
‫‪ ‬اگر طول عمر زیاد باشد‪:‬‬
‫‪ ‬کارایی باال‪ ،‬امنیت کم‬
‫‪12 / 61‬‬
‫یک مصالحه میان امنیت و‬
‫کارایی بر سر تعیین طول‬
‫عمر کلید جلسه برقرار است‪.‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫روشهای تبادل کلید جلسه (‪)Key Distribution‬‬
‫‪ ‬توافق کلید (‪)Key Agreement‬‬
‫‪‬هر دو طرف در انتخاب کلید تاثیرگذار هستند‪.‬‬
‫‪‬مثال‪ :‬روذ ‪Diffie-Hellman‬‬
‫‪ ‬انتقال کلید (‪)Key Transport‬‬
‫‪‬یکی از دو طرف کلید را معین کرده و به دیگری ارسال مینماید‪.‬‬
‫‪13 / 61‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫فهرست‬
‫‪ ‬مدیریت کلید‬
‫‪‬مفاهیم اساسی مدیریت کلید‬
‫‪‬سلسله مراتب کلید‬
‫‪‬تولید کلید و طول عمر کلید‬
‫‪‬اشتراک کلید مبتنی بر رمز متقارن‬
‫‪‬اشتراک کلید مبتنی بر رمز کلید عمومی‬
‫‪ ‬طراحی پروتکلهای تبادل کلید‬
‫‪14 / 61‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫دو رویکرد در اشتراک کلید جلسه‬
‫‪ ‬بدون واسطه (همتا به همتا)‬
‫‪k‬‬
‫‪B‬‬
‫‪A‬‬
‫‪ ‬با واسطه (مرکز توزیع کلید یا ‪)KDC‬‬
‫‪Key Distribution Center‬‬
‫‪KDC‬‬
‫‪KDC‬‬
‫‪k‬‬
‫‪k k‬‬
‫‪B‬‬
‫‪15 / 61‬‬
‫‪ KDC:‬‬
‫‪B‬‬
‫‪A‬‬
‫امنیت داده و شبکه‬
‫(‪)3‬‬
‫‪k‬‬
‫‪A‬‬
‫محمد صادق دوستی‬
‫روش همتا به همتا در توزیع کلید‬
‫‪ ‬مزیت‪ :‬بدون نیاز به اعتماد به یک شخص ثالث‬
‫‪ ‬عیب‪ :‬مشتکل مقیتاسپتذیری؛ نیتاز بته کلیتد اصتلی بتین هتر دو‬
‫موجودیت‬
‫‪‬برای ارتباط ‪ n‬نفر باهم به ‪ n(n1)/2‬کلید اصلی احتیاج داریم‪.‬‬
‫‪16 / 61‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫روش با واسطه توزیع کلید‬
‫‪ ‬هر کاربر یک کلید اصلی با ‪ KDC‬به اشتراک گذاشته است‪.‬‬
‫‪ KDC‬یک شخص ثالث مورد اعتماد است‪.‬‬
‫‪‬کلیدهای اصلی با یک روذ امتن (متثالً مراجعته فیزیکتی) توزیتع‬
‫شدهاند‪.‬‬
‫‪ ‬هر بار که کاربری قصد ارتباط با دیگران را داشته باشتد از ‪KDC‬‬
‫یک کلید جلسه درخواست میکند‪.‬‬
‫‪ ‬کلید جلسه به صورت تصدیق هویت شتده در اختیتار متقا تی (و‬
‫بعضاً مخاطب) قرار میگیرد‪.‬‬
‫‪17 / 61‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫روش متمرکز توزیع کلید‬
‫‪ ‬نکات مثبت‪:‬‬
‫‪‬تعداد کلید کمتر و قابلیت مقیاسپذیری‬
‫‪ ‬نکات منفی‪:‬‬
‫‪‬نیاز به اعتماد به شخص ثالث‬
‫‪ KDC‬تک نقطه خرابی (‪ )SPOF‬است‪.‬‬
‫‪‬ترافیک باال در ‪ KDC‬گلوگاه کارایی سیستم است‪.‬‬
‫‪‬نیاز به یک کارگزار برخط داریم‪ .‬دخالت کتارگزار در برقتراری هتر‬
‫ارتباط روری است‪.‬‬
‫‪18 / 61‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫فهرست‬
‫‪ ‬مدیریت کلید‬
‫‪‬مفاهیم اساسی مدیریت کلید‬
‫‪‬سلسله مراتب کلید‬
‫‪‬تولید کلید و طول عمر کلید‬
‫‪‬اشتراک کلید مبتنی بر رمز متقارن‬
‫‪‬اشتراک کلید مبتنی بر رمز کلید عمومی‬
‫‪ ‬طراحی پروتکلهای تبادل کلید‬
‫‪19 / 61‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫جایگاه رمزنگاری کلید عمومی‬
‫‪ ‬الگوریتمهای نامتقارن بسیار کندتر از الگوریتمهای متقارن هستند‬
‫‪‬از الگوریتمهای نامتقارن جهت توزیع کلید جلسه (و نه رمزگذاری)‬
‫استفاده میشود‪.‬‬
‫‪ ‬با استفاده از رمزنگاری کلید عمومی‪:‬‬
‫‪‬نیازی به تبادل کلیدهای اصلی و حفظ محرمانگی آنها نیست‪.‬‬
‫‪‬اما کلید عمومی باید به روشی امن منتقل شود (مثالً ‪.)PKI‬‬
‫‪‬نیازی به کارگزار بر خط نیست‪.‬‬
‫‪20 / 61‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫فهرست‬
‫‪ ‬مدیریت کلید‬
‫‪‬مفاهیم اساسی مدیریت کلید‬
‫‪‬سلسله مراتب کلید‬
‫‪‬تولید کلید و طول عمر کلید‬
‫‪‬اشتراک کلید مبتنی بر رمز متقارن‬
‫‪‬اشتراک کلید مبتنی بر رمز کلید عمومی‬
‫‪ ‬طراحی پروتکلهای تبادل کلید‬
‫‪21 / 61‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫عالئم و نمادها – ‪1‬‬
‫‪ ‬عاملها‪/‬طرفهای ارتباط‬
‫‪ A‬و ‪ B‬با شناسه های ‪ IDA‬و ‪IDB‬‬
‫‪ T‬شخص ثالث مورد اعتماد‬
‫‪ KAT ‬و ‪ KBT‬کلید طوالنی مدت بین ‪ A‬و ‪ T‬و بین ‪ B‬و ‪T‬‬
‫‪ ks ‬کلید جلسه (‪)Session‬‬
‫‪22 / 61‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫عالئم و نمادها – ‪2‬‬
‫‪ ‬مُهر زمانی (‪)Timestamp‬‬
‫‪ tA‬مُهر زمانی تولید شده توسط ‪A‬‬
‫‪‬طرفین ساعتهای خود را به کمک پروتکلی هماهنگ نگه میدارند‪.‬‬
‫‪ ‬نانس (‪)Nonce‬‬
‫‪‬مقداری تصادفی که تنها یک بار مورد استفاده قرار میگیرند‪.‬‬
‫‪ nA‬نانس تولید شده توسط ‪A‬‬
‫‪23 / 61‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫عالئم و نمادها – ‪2‬‬
‫‪{M ║ IDA ║ IDB}KAT‬‬
‫‪AB:‬‬
‫‪ A ‬فرستنده و ‪ B‬گیرنده‬
‫‪ ‬ترکیب ‪( M‬پیام)‪ ،‬شناسته ‪ A‬و شناسته ‪ B‬بتا کلیتد ‪ KAT‬رمتز و‬
‫تصدیق هویت شده است (مثال‪ :‬روذ ترکیب ‪.)EtA‬‬
‫‪ ‬اگر فقط قصد تصدیق هویت پیامی را داشته باشیم‪:‬‬
‫‪M ║ IDA ║ IDBKAT‬‬
‫‪24 / 61‬‬
‫امنیت داده و شبکه‬
‫‪AB:‬‬
‫محمد صادق دوستی‬
‫اهداف و خصوصیات پروتکلهای تبادل کلید – ‪1‬‬
‫‪ ‬تازگی کلید (‪)Freshness‬‬
‫‪‬کلید جلسه توسط اجرای جاری پروتکل تولید شده باشد (و نه اجراهای‬
‫قبلی)‪.‬‬
‫‪ ‬محرمانگی پیشرو (‪)Forward Secrecy‬‬
‫‪‬با لو رفتن کلید بلند مدت (اصلی)‪ ،‬کلیدهای جلسه قبلی امن بمانند‪.‬‬
‫‪ ‬استحکام در برابر کلید فاذ شده (‪)Known-Key Resilience‬‬
‫‪‬مهاجمی که به کلید یک جلسه دست یافته‪ ،‬نتواند در مورد کلید اصتلی‬
‫یا کلید جلسات دیگر اطالعی به دست آورد‪.‬‬
‫‪25 / 61‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫اهداف و خصوصیات پروتکلهای تبادل کلید – ‪2‬‬
‫‪ ‬تصدیق هویت کلید (‪)Key Authentication‬‬
‫‪‬یک طرف مطمئن است که هیچ کس جتز طترف دوم (و احتمتاالً ستایر‬
‫معتمدین) نمیتواند به کلید جلسه دسترسی داشته باشد‪.‬‬
‫‪ ‬تأیید کلید (‪)Key Confirmation‬‬
‫‪‬یک طرف مطمئن است که طرف دوم واقعتاً کلیتد جلسته را در اختیتار‬
‫دارد‪.‬‬
‫‪ ‬تصدیق هویت صریح کلید (‪)Explicit Key Authentication‬‬
‫‪‬تصدیق هویت کلید ‪ ‬تأیید کلید‬
‫‪26 / 61‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫اهداف و خصوصیات پروتکلهای تبادل کلید – ‪3‬‬
‫‪ ‬تصدیق هویت یک طرفه (‪)Unilateral‬‬
‫‪‬تنها یک طرف ارتباط‪ ،‬هویت خود را اثبات میکند‪.‬‬
‫‪‬مثال‪ :‬یک شخص یک پیام را در یک گروه عمومی منتشر میکند‪.‬‬
‫‪ ‬تصدیق هویت دو طرفه (‪)Mutual‬‬
‫‪‬هر دو طرف ارتباط هویت خود را اثبات میکنند‪.‬‬
‫‪27 / 61‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫انواع حمالت به پروتکلهای تبادل کلید‬
‫‪ ‬شنود (‪)Eavesdropping‬‬
‫‪‬مهاجم اطالعتات و پیامهتای تبتادل شتده در پروتکتل را دریافتت‬
‫مینماید‪.‬‬
‫‪ ‬تغییر (‪)Modification‬‬
‫‪‬مهاجم اطالعات ارسالی را تغییر میدهد‪.‬‬
‫‪ ‬منع سرویس (‪)Denial of Service‬‬
‫‪‬مهاجم مانع از کامل شدن پروتکل توسط طرفهای مجاز میشود‪.‬‬
‫‪28 / 61‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫برخی گونههای مهم از «حمله تغییر»‬
‫‪ ‬تکرار (‪)Replay‬‬
‫‪‬مهاجم پیامهای ارسالی در طی پروتکل را ثبت نمتوده‪ ،‬ستپس بته‬
‫اجرای پروتکل با ارسال مجدد آنها میپردازد‪.‬‬
‫‪ ‬مرد میانی (‪)Man in the Middle‬‬
‫‪‬مهاجم نق‬
‫‪ A‬را برای ‪ B‬و نق‬
‫‪ B‬را برای ‪ A‬بازی میکند‪.‬‬
‫‪ ‬دستکاری گواهی (‪)Certificate Manipulation‬‬
‫‪‬مهاجم اطالعات گواهی را تغییر میدهد‪.‬‬
‫‪29 / 61‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫روشهای مقابله با تکرار – ‪1‬‬
‫‪ ‬استفاده از مُهر زمانی (‪)Timestamp‬‬
‫‪ ‬گیرنده به پیام اعتماد میکند اگر در محدوده زمانی قابتل قبتولی‬
‫باشد‪.‬‬
‫‪‬‬
‫‪30 / 61‬‬
‫رورت همگامی ساعتها‪.‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫روشهای مقابله با تکرار – ‪2‬‬
‫‪ ‬استفاده از چال ‪-‬پاسخ (‪)Challenge-Response‬‬
‫‪ A‬انتظار یک پیام نو از ‪ B‬دارد‪.‬‬
‫‪ A‬یک چال‬
‫یا نانس به ‪ B‬ارسال میکند‪.‬‬
‫‪ A‬انتظار دارد که پیامی که دریافت میکنتد حتاوی تغییتر یافتته‬
‫(رمزشده) چال‬
‫‪31 / 61‬‬
‫یا نانس موردنظر باشد‪.‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫روشهای مقابله با تکرار – ‪3‬‬
‫‪ ‬استفاده از توالی شمار (‪)Sequence Number‬‬
‫‪‬پیامهای اجرای ‪ N‬اُم پروتکل باید حاوی عدد ‪ N‬باشند‪.‬‬
‫‪‬طرفین باید همواره مقدار ‪ N‬را نگه دارند‪.‬‬
‫‪‬مشکالت در همگام نگه داشتن طرفین‬
‫‪32 / 61‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫طراحی پروتکل‬
‫‪ ‬در اسالیدهای بعد چگونگی طراحی پروتکلی برای اشتتراک کلیتد‬
‫بین دو طرف ‪ A‬و ‪ B‬را بررسی مینماییم‪.‬‬
‫‪ ‬با معرفی هر پروتکتل‪ ،‬مشتکالت موجتود در آن را بررستی نمتوده‪،‬‬
‫سعی میکنیم در طراحی پروتکل بعدی آنها را مرتفع نماییم‪.‬‬
‫‪33 / 61‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫مبنای طراحی پروتکلهای سری اول‬
‫‪ ‬مبتنی بر رمز متقارن‪ :‬استفاده از ‪( KDC‬با نام ‪)T‬‬
‫‪ T‬کلید جلسه را تولید میکند‪.‬‬
‫‪‬کلیدهای اصلی (بین هر طرف با ‪ )T‬برای انتقال کلید جلسه بکتار‬
‫میرود‪.‬‬
‫‪ ‬تصدیق هویت دو طرفه‬
‫‪34 / 61‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫پروتکل ‪1‬‬
‫‪AT: IDA ║ IDB‬‬
‫‪1.‬‬
‫‪TA: ks‬‬
‫‪2.‬‬
‫‪AB: ks ║ IDA‬‬
‫‪3.‬‬
‫‪ ‬عیب‪:‬‬
‫‪‬مهاجم میتواند با شنود کلید جلسه ‪ ks‬را به دست آورد‪.‬‬
‫‪ ‬راه حل‪ :‬نیاز به رمزگذاری و تصدیق هویت کلید داریم‪.‬‬
‫‪35 / 61‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫پروتکل ‪2‬‬
‫‪AT: IDA ║ IDB‬‬
‫‪1.‬‬
‫‪TA: {ks}KAT ║ {ks}KBT‬‬
‫‪2.‬‬
‫‪AB: {ks}KBT ║ IDA‬‬
‫‪3.‬‬
‫‪ ‬عیب ‪ :1‬پروتکل تصدیق هویت طرفین ندارد‪.‬‬
‫‪‬مهاجم ‪ X‬میتواند مانع رسیدن پیام سوم به ‪ B‬شود‪.‬‬
‫‪‬به جای ‪ IDA‬در آن‪ IDX ،‬خودذ را قرار دهد و پیام را بفرستد‪.‬‬
‫‪ B‬فکر میکند که باید با ‪ X‬صحبت کند‪.‬‬
‫‪36 / 61‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫پروتکل ‪2‬‬
‫‪AT: IDA ║ IDB‬‬
‫‪1.‬‬
‫‪TA: {ks}KAT ║ {ks}KBT‬‬
‫‪2.‬‬
‫‪AB: {ks}KBT ║ IDA‬‬
‫‪3.‬‬
‫‪ ‬عیب ‪ :2‬پروتکل تازگی پیام را بررسی نمیکند‪.‬‬
‫‪‬مهاجم ‪ X‬مانع رسیدن پیام ‪ 2‬و ‪ 3‬پروتکل میشود‪.‬‬
‫‪‬مهاجم ‪ X‬پیام ‪ 2‬و ‪ 3‬را از اجراهای قبلی پروتکل ارسال میکند‪.‬‬
‫‪37 / 61‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫پروتکل ‪2‬‬
‫‪AT: IDA ║ IDB‬‬
‫‪1.‬‬
‫‪TA: {ks}KAT ║ {ks}KBT‬‬
‫‪2.‬‬
‫‪AB: {ks}KBT ║ IDA‬‬
‫‪3.‬‬
‫‪ ‬عیب ‪ :3‬پروتکل در برابر حمله ‪ MITM‬آسیبپذیر است‪.‬‬
‫‪‬مهاجم ‪ X‬پیام اول را عوض کرده و به جای ‪ IDX ،IDB‬میگذارد‪.‬‬
‫‪‬توصیف حمله در اسالید بعد‪.‬‬
‫‪38 / 61‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
2 ‫ به پروتکل‬MITM ‫حمله‬
AT:
IDA ║ IDB
TA:
{ks}KAT ║ {ks}KBT
AB:
{ks}KBT ║ IDA
IDA ║IDB
IDA ║IDX
T
A
X
{ks}KAT ║ {ks}KXT
{ks}KAT ║ {ks}KXT
{ks}KXT ║ IDA
‫محمد صادق دوستی‬
‫امنیت داده و شبکه‬
39 / 61
‫پروتکل ‪3‬‬
‫‪AT: IDA ║ IDB‬‬
‫‪1.‬‬
‫‪TA: {ks ║ IDB}KAT ║ {ks ║ IDA}KBT‬‬
‫‪2.‬‬
‫‪AB: {ks ║ IDA}KBT‬‬
‫‪3.‬‬
‫‪ ‬خصوصیات‪ :‬شناسه مخاطب ارتباط و کلید جلسه بتا کلیتد اصتلی‬
‫رمز و تصدیق هویت میشوند‪.‬‬
‫‪ ‬عیب‪ :‬کماکان تازگی پیام وارسی نمیشود‪.‬‬
‫‪40 / 61‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫پروتکل ‪4‬‬
‫‪AT: IDA ║ IDB ║ nA‬‬
‫‪1.‬‬
‫‪TA:‬‬
‫‪2.‬‬
‫‪AB: {ks ║ IDA}KBT‬‬
‫‪3.‬‬
‫‪{nA ║ ks ║ IDB ║ {ks ║ IDA}KBT}KAT‬‬
‫‪ ‬خصوصیات‪:‬‬
‫‪‬تازگی کلید برای ‪( A‬و نه ‪ )B‬با استفاده از نانس تصدیق میگردد‪.‬‬
‫‪41 / 61‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫پروتکل ‪4‬‬
‫‪AT: IDA ║ IDB ║ nA‬‬
‫‪1.‬‬
‫‪TA:‬‬
‫‪2.‬‬
‫‪AB: {ks ║ IDA}KBT‬‬
‫‪3.‬‬
‫‪{nA ║ ks ║ IDB ║ {ks ║ IDA}KBT}KAT‬‬
‫‪ ‬معایب‪:‬‬
‫‪‬طرف ‪ A‬مطمئن نیست که طرف ‪ B‬کلید را دریافت کرده و زنتده‬
‫است‪.‬‬
‫‪‬طرف ‪ B‬نیز نمیداند که واقعاً طترف ‪ A‬کلیتد را متیدانتد و زنتده‬
‫است (ممکن است پیغام سوم دریافتی‪ ،‬قدیمی و تکراری باشد)‪.‬‬
‫‪42 / 61‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫پروتکل ‪Needham–Schroeder‬‬
‫‪ ‬یکی از نخستین پروتکلهای تبادل کلید (‪)1978‬‬
‫‪‬شناسایی حمله تکرار توسط ‪ Denning‬و ‪)1981( Sacco‬‬
‫‪‬ابداع منطقی توسط ‪ Abadi ،Burrows‬و ‪ Needham‬برای‬
‫وارسی خودکتار پروتکلهتا و جلتوگیری از حمتالت مشتابه (منطتق‬
‫‪ )BAN‬در سال ‪.1990‬‬
‫‪ ‬کاربرد نسخه اصالح شده‪:‬‬
‫‪Kerberos‬‬
‫‪Active Directory‬‬
‫‪43 / 61‬‬
‫‪Michael Schroeder‬‬
‫) – ‪(1945‬‬
‫امنیت داده و شبکه‬
‫‪Roger Needham‬‬
‫)‪(1935 – 2003‬‬
‫محمد صادق دوستی‬
‫پروتکل ‪Needham–Schroeder‬‬
‫‪AT: IDA ║ IDB ║ nA‬‬
‫‪1.‬‬
‫‪TA: {nA ║ ks ║ IDB ║ {ks ║ IDA}KBT}KAT‬‬
‫‪2.‬‬
‫‪AB: {ks ║ IDA}KBT‬‬
‫‪3.‬‬
‫‪BA: {nB}ks‬‬
‫‪4.‬‬
‫‪AB: {nB  1}ks‬‬
‫‪5.‬‬
‫در نسخه اصلی پروتکل‪ ،‬نانس فقط رمز‬
‫میشد و تصدیق هویت نمیشد‪.‬‬
‫‪ ‬خصوصیات‪:‬‬
‫‪‬دو گام آخر برای تأیید کلید (از سوی ‪ )B‬است‪.‬‬
‫‪44 / 61‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫معایب پروتکل ‪Needham–Schroeder‬‬
‫‪ ‬این پروتکل نسبت به حمله تکرار آسیب پذیر است‪.‬‬
‫‪‬مهاجم میتواند پیام ‪ 3‬پروتکل را تکرار کند‪.‬‬
‫‪ Denning ‬و ‪ Sacco‬عتتالوه بتتر یتتافتن عیتتب فتتوق‪ ،‬پروتکتتل‬
‫جدیدی را بر مبنای مهر زمانی پیشنهاد کردند‪.‬‬
‫‪ ‬ایراد دیگر‪ A :‬نمیتواند از زنده بودن ‪ B‬و دریافت کلید توسط وی‬
‫مطمئن باشد‪.‬‬
‫‪‬پیام ‪ 4‬مقداری تصادفی است (رمز شده یک نانس تصتادفی) و بته‬
‫‪ A‬اطالع خاصی نمیدهد‪.‬‬
‫‪45 / 61‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫پروتکل ‪Denning–Sacco‬‬
‫‪IDA ║ IDB‬‬
‫‪AT:‬‬
‫‪1.‬‬
‫‪{ ks║IDB║tT║ {ks║IDA║tT}KBT }KAT‬‬
‫‪TA:‬‬
‫‪2.‬‬
‫‪{ks ║ IDA ║ tT}KBT‬‬
‫‪AB:‬‬
‫‪3.‬‬
‫‪{nB}ks‬‬
‫‪BA:‬‬
‫‪4.‬‬
‫‪{nB  1}ks‬‬
‫‪AB:‬‬
‫‪5.‬‬
‫‪ ‬استفاده از مُهر زمانی برای جلوگیری از حمله تکرار؛ ولی‪:‬‬
‫‪‬همچنان ‪ A‬از زنده بودن ‪ B‬نمیتواند مطمئن شود‪.‬‬
‫‪‬پیام ‪ 3‬را میتوان بالفاصله فرستاد ‪ B ‬دو بار ‪ ks‬را میپذیرد‪.‬‬
‫‪46 / 61‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫پروتکل ‪Denning–Sacco‬‬
‫‪ A ‬و ‪ B‬از طریق زیر به تازه بودن پیام پی میبرند‪:‬‬
‫‪ tT| < ∆t1 + ∆t2‬‬
‫‪ |NOW‬‬
‫‪ :∆t1‬اختالف ساعت محلی با ‪T‬‬
‫‪ :∆t2‬میزان تأخیر مورد انتظار در شبکه‪.‬‬
‫‪ ‬حمله ‪ :Gong‬وقتی ساعت ‪ T‬جلوتر از ساعت ‪ A‬یا ‪ B‬باشد‪.‬‬
‫‪‬مهاجم میتواند پیام را نگه داشته و وقتی زمان ‪ A‬یتا ‪ B‬بتا زمتان‬
‫ارسال پیام یکی شد ارسال نماید‪.‬‬
‫‪‬معروف به حمله منع – تکرار (‪.)Suppress-Replay‬‬
‫‪47 / 61‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫حمله منع – تکرار و مقابله با آن‬
‫‪ ‬پروتکتل ‪ Denning–Sacco‬نستبت بته حملته منتع – تکترار‬
‫آسیبپذیر است‪.‬‬
‫‪ ‬روشهای مقابله‬
‫‪‬همگام سازی زمان در ابتدای پروتکل با زمان ‪T‬‬
‫‪‬توافق از طریق نانس به جای توافق از طریق زمان‬
‫‪‬ترکیب نانس و زمان ‪ ‬پروتکل ‪( Neuman‬نیتاز بته همگتامی‬
‫ساعتها ندارد؛ فقط از ساعت ‪ B‬استفاده میشود)‬
‫‪48 / 61‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫پروتکل ‪Neuman‬‬
‫‪AB: IDA ║ nA‬‬
‫‪1.‬‬
‫‪BT: IDB ║ nB ║ {IDA ║ nA ║ B}KBT‬‬
‫‪2.‬‬
‫║ ‪TA: {IDB ║ nA ║ ks ║ B}KAT‬‬
‫‪3.‬‬
‫‪{IDA ║ ks ║ B}KBT ║ nB‬‬
‫‪AB: {IDA ║ ks ║ B}KBT ║ {nB}ks‬‬
‫‪4.‬‬
‫‪ B ‬مدت زمان مجاز استفاده از ‪( ks‬بر حسب ساعت ‪ )B‬است‪.‬‬
‫‪‬در این مدت‪ ،‬نیاز به تماس مجدد بتا ‪ T‬بترای دریافتت ‪ ks‬جدیتد‬
‫نیست‪.‬‬
‫‪49 / 61‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫مفهوم «بلیت» در پروتکل ‪Neuman‬‬
‫‪ ‬عبارت ‪ {IDA ║ ks ║ B}KBT‬برای ‪( A‬شروع کننده پروتکل)‬
‫مثل بلیت عمل میکند‪.‬‬
‫‪ ‬مادام که برحسب ساعت ‪ B‬به زمان ‪ B‬نرسیدهایم‪ A ،‬میتواند بتا‬
‫استفاده از بلیت و ‪ ks‬نشست جدیدی را آغاز کند‪:‬‬
‫‪50 / 61‬‬
‫‪AB: {IDA ║ ks ║ B}KBT ║ n’A‬‬
‫‪1.‬‬
‫‪BA: n’B ║ {n’A}ks‬‬
‫‪2.‬‬
‫‪AB: {n’B}ks‬‬
‫‪3.‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫مبنای طراحی پروتکلهای سری دوم‬
‫‪ ‬مبتنی بر رمز متقارن‬
‫‪‬بدون شخص ثالث معتمد‬
‫‪‬هتتر دو موجودیتتت‪ ،‬از قبتتل کلیتتد طتتوالنی متتدتی را بتته اشتتتراک‬
‫گذاردهاند‪.‬‬
‫‪ ‬تصدیق هویت دو طرفه‬
‫‪51 / 61‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫پروتکل انتقال کلید (‪)Key Transfer‬‬
‫‪IDA ║ nA‬‬
‫‪AB:‬‬
‫‪1.‬‬
‫‪{ ks ║ IDA ║ IDB ║ nA ║ nB }KAB‬‬
‫‪BA:‬‬
‫‪2.‬‬
‫‪{nB}ks‬‬
‫‪AB:‬‬
‫‪3.‬‬
‫‪ ‬پیام ‪ 2‬به ‪ A‬اطمینان میدهتد کته ‪ B‬زنتده استت و کلیتد ‪ KAB‬را در‬
‫اختیار دارد (چرا که ‪ B‬نانس ‪ A‬را با این کلید تصدیق هویت میکند)‪.‬‬
‫‪‬همچنین ‪ B‬کلید ‪ ks‬را دارد‪ ،‬چون آن را تصدیق هویت نموده است‪.‬‬
‫‪ ‬پیام ‪ 3‬به ‪ B‬اطمینان میدهد که ‪ A‬زنده است و کلیتدهای ‪ KAB‬و ‪ks‬‬
‫را در اختیار دارد (چرا که ‪ A‬نانس ‪ B‬را با ‪ ks‬تصدیق هویت میکند‪ ،‬و‬
‫‪ ks‬فقط توسط کسی که ‪ KAB‬را دارد قابل خواندن است)‪.‬‬
‫‪52 / 61‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫پروتکل توافق کلید (‪)Key Agreement‬‬
‫فقط تصدیق هویت پیام‬
‫(بدون محرمانگی)‬
‫‪AB: IDA ║ nA‬‬
‫‪1.‬‬
‫‪BA: IDB ║ nAks ║ nB‬‬
‫‪2.‬‬
‫‪AB: IDA ║ nBks‬‬
‫‪3.‬‬
‫‪ ‬در گام ‪ 2‬و ‪ ،3‬مقدار ‪ ks‬با اعمال تابع ویژه ‪ f‬به مقادیر ‪ nB ،nA‬و‬
‫‪ KAB‬بدست میآید‪.‬‬
‫‪ ‬مثالً ‪ f‬میتواند ‪ HMAC‬باشد‪:‬‬
‫) 𝐵𝑛 || 𝐴𝑛( 𝐵𝐴𝐾‪𝑘𝑠 = HMAC‬‬
‫‪53 / 61‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫دیفی – هلمن تصدیق هویت شده (‪ - )ADH‬تالش ‪1‬‬
‫‪ gℤp* ‬عنصری از مرتبه اول ‪ .q‬کلیه محاسبات به پیمانه ‪.p‬‬
‫‪1. AB: IDA ║ g‬‬
‫‪2. BA: IDB ║ g ║ gKAB‬‬
‫‪3. AB: IDA ║ g ║ gKAB‬‬
‫‪ ‬مقدار کلید نشست (‪ )ks‬با استفاده از روذ دیفی – هلمن بدستت‬
‫میآید‪:‬‬
‫‪ks = g‬‬
‫‪54 / 61‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫ایراد تالش ‪1‬‬
‫‪1. AB: IDA ║ g‬‬
‫‪2. BA: IDB ║ g ║ gKAB‬‬
‫‪3. AB: IDA ║ g ║ gKAB‬‬
‫‪ ‬نه ‪ A‬و نه ‪ B‬کلید ‪ ks‬را تأیید (‪ )confirm‬نمیکنند‪.‬‬
‫‪55 / 61‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫دیفی – هلمن تصدیق هویت شده (‪ - )ADH‬تالش ‪2‬‬
‫‪1. AB: IDA ║ g‬‬
‫‪ IDB ║ g ║ gKAB ks‬‬
‫‪2. BA:‬‬
‫‪ IDA ║ g ║ gKAB ks‬‬
‫‪3. AB:‬‬
‫‪ ‬خاصیت مهم ‪:ADH‬‬
‫‪‬برقراری امنیت پیشرو (‪)Forward Secrecy‬‬
‫‪‬هزینه‪ :‬محاسبات زمانبر دیفی ‪ -‬هلمن‬
‫‪56 / 61‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
)Key Transfer( ‫پروتکل انتقال کلید‬
1.
AB: IDA ║ nA
2.
BA: Msg ║ Sign(PRB , E(PUA , ks ║ Msg))
3.
AB:
IDA ║ Sign(PRA, nB)
Msg = IDB ║ nA ║ nB
‫محمد صادق دوستی‬
‫امنیت داده و شبکه‬
57 / 61
‫ با تصدیق هویت توسط کلید عمومی‬ADH
1. AB: IDA ║ g
2. BA: IDB ║ g ║
Sign(PRB, IDB ║ g ║ g)ks
3. AB: IDA ║ Sign(PRA, IDA ║ g ║ g)ks
‫محمد صادق دوستی‬
‫امنیت داده و شبکه‬
58 / 61
‫پروتکل ‪1 – HMQV‬‬
‫‪ ‬اهداف‪:‬‬
‫‪‬اجرای دیفی – هلمن بدون هیچگونه سربار ارتباطی‬
‫‪‬مقاومت در برابر حمله ‪MITM‬‬
‫‪‬بدون تأیید کلید (‪ )Key Confirmation‬و تصدیق هویت دو‬
‫جانبه‪.‬‬
‫‪ x ‬و ‪ y‬به ترتیب کلید خصوصی ‪ A‬و ‪B‬‬
‫‪ ‬کلیدهای عمومی به صورت ‪ X = gx‬و ‪Y = gy‬‬
‫‪ H ‬یک تابع درهمساز (تصادفی) که برد آن ‪ ℤq‬است‪.‬‬
‫‪59 / 61‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫پروتکل ‪2 – HMQV‬‬
‫کلید خصوصی‪y :‬‬
‫‪B‬‬
‫کلیدهای عمومی‪:‬‬
‫‪X = gx, Y = gy‬‬
‫‪IDA, D = g‬‬
‫‪IDB, E = g‬‬
‫کلید خصوصی‪x :‬‬
‫‪A‬‬
‫)‪d = H(D ║ IDB‬‬
‫)‪e = H(E ║ IDA‬‬
‫‪ks = (DXd) + ey‬‬
‫‪60 / 61‬‬
‫=‬
‫امنیت داده و شبکه‬
‫‪ks = (EYe) + dx‬‬
‫محمد صادق دوستی‬
‫پایان‬
‫صفحه درس‪:‬‬
‫‪http://ce.sharif.edu/courses/94-95/1/ce442-1/‬‬
‫مراجعه حضوری جهت رفع اشکال‪ :‬شنبهها ‪ 15‬الی ‪16‬‬
‫(طبقه پنجم دانشکده‪ ،‬درب شیشهای جنب آسانسور)‬
‫یا در زمانهای دیگر با قرار قبلی‬
‫یا به وسیله رایانامه‪dousti@ce :‬‬
‫‪61 / 61‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬