160 likes | 408 Views
הגנה במערכות מתוכנתות. תרגול 3 – קריפטוגרפיית מפתח פומבי. הערה: שקפים אלה אינם מהווים תחליף לחומר התרגולים המפורסם באתר הקורס, ומשמשים כעזר הוראה בלבד. קריפטוגרפיית מפתח פומבי. שני מפתחות מפתח פומבי מפתח פרטי (סודי) נציג שני שימושים הצפנה באמצעות צופן מפתח פומבי חתימה דיגיטלית. RSA.
E N D
הגנה במערכות מתוכנתות תרגול 3 – קריפטוגרפיית מפתח פומבי הערה: שקפים אלה אינם מהווים תחליף לחומר התרגולים המפורסם באתר הקורס, ומשמשים כעזר הוראה בלבד.
קריפטוגרפיית מפתח פומבי • שני מפתחות • מפתח פומבי • מפתח פרטי (סודי) • נציג שני שימושים • הצפנה באמצעות צופן מפתח פומבי • חתימה דיגיטלית הגנה במערכות מתוכנתות - תרגול 3
RSA Ron Rivest, Adi Shamir, Leonard Adleman (MIT) הגנה במערכות מתוכנתות - תרגול 3
אלגוריתם RSA אלגוריתם ליצירת מפתחות: • בוחרים שני מספרים ראשוניים גדולים p ו-q • מחשבים n=pq, φ(n)=(p-1)(q-1) [ φ(n) שווה למספר המספרים הקטנים מ-n והזרים ל-n ] • בוחרים e שלם כך ש- 3≤e<φ(n), ו-e זר ל-φ(n).המפתח הפומבי להצפנה: (e,n) • בעזרת אלגוריתם אוקלידס המורחב מחשבים את d – ההופכי של eמודולו φ(n).המפתח הפרטי (לפענוח): (d,n) • הצפנה של הודעה M:C=Me (mod n) • פענוח הודעה C:M=Cd (mod n) הגנה במערכות מתוכנתות - תרגול 3
אלגוריתם אוקלידס • קלט: שני שלמים a ו-b, נניח a≥b. • פלט: gcd(a,b) A=a; B=b; r=A mod B; while (r!=0) { A=B; B=r; r=A mod B; } Output B as gcd(a,b) הגנה במערכות מתוכנתות - תרגול 3
הערות • האלגוריתם מסתמך על בעיית פירוק מספר גדול לגורמיו הראשוניים (נחשבת בעיה קשה) • סודיים: d, p, q, φ(n) • נתייחס ל-M כאל מספר בכתיב בינארי • |M|<|n| • עבור הערכים 0, 1, -1 ההצפנה ידועה תמיד. הגנה במערכות מתוכנתות - תרגול 3
מפתח הצפנה פומבי, מפתח פענוח פרטי. קשה לממש בחומרה. חישובים איטיים. מספר המפתחות כמספר המשתמשים במערכת. מפתח יחיד להצפנה וגם לפענוח. מהיר בחומרה ותוכנה. קשה להחליף מפתחות. במערכת עם N משתמשים דרושים O(N2) מפתחות. מפתח סימטרי מפתח פומבי בד"כ משלבים בין השיטות, למשל: RSApubB(K) || EK(M) הגנה במערכות מתוכנתות - תרגול 3
חתימה דיגיטלית • מטרות: • אימות זהות השולח • שלמות ההודעה • תכונת אי ההכחשה • השימוש עם מפתח פומבי: • המפתח הפרטי משמש לחתימה על ההודעה • המפתח הפומבי משמש לאימות ההודעה הגנה במערכות מתוכנתות - תרגול 3
M M || Sig(M) S V PrU PubU Sig(M) True/False אלגוריתם חתימה דיגיטלית פונקציית חתימה פונקציית אימות שולחים: M || Sig(M) הגנה במערכות מתוכנתות - תרגול 3
M M || Sig(M) S V PrU PubU Sig(M) True/False חתימה דיגיטלית באמצעות RSA פונקציית חתימה פונקציית אימות Sig(M) = S (M, (d,n)) = Md (mod n) V(M,Sig(M), (e,n)) = true iff M=[Sig(M)]e (mod n) הגנה במערכות מתוכנתות - תרגול 3
בעיות... • Existential Forgery • עבור Sig כלשהו, מחשבים Sige(mod n). • מאפשר "לזייף" חתימה, למרות שאין שליטה על התוכן. • Multiplication Property • תוקף ששמע שתי הודעות והחתימות עליהן, יכול לשלוח הודעה חתומה M=(M1·M2) (mod n) הגנה במערכות מתוכנתות - תרגול 3
הפתרון – שילוב עם פונקציית תמצות קריפטוגרפית • פונקציה h תיקרא פונקציית תמצות (hash) קריפטוגרפית אם היא מקיימת: • h:{0,1}*→{0,1}c • h חד כיוונית • h חסרת התנגשויות • לדוגמה: SHA-1, SHA-256, Tiger, (MD5) הגנה במערכות מתוכנתות - תרגול 3
M M || Sig(M) S V PrU PubU Sig(M) True/False RSA + פונקציית תמצות קריפט' פונקציית חתימה פונקציית אימות Sig(M) = S (M, (d,n)) = (h(M))d (mod n) V(M,Sig(M), (e,n)) = true iff h(M)=[Sig(M)]e (mod n) הגנה במערכות מתוכנתות - תרגול 3
איך פותר? • אין מגבלת אורך • חד-כיווניות של h פותרת Existential Forgery. • שימוש בפונקציית התמצות "מחביא" תכונות אלגבריות של RSA. • בפועל חתימה והצפנה בצורה נכונה עם RSA הינה מורכבת יותר (PKCS#1, ANSI X9.31) הגנה במערכות מתוכנתות - תרגול 3
שאלה על RSA(אביב תשס"ג, מועד ב', 18.9.03) רוני הוא הסטודנט היחיד שניגש לבחינה במקצוע מתמטיקה טהורה מ'. לרוע המזל, קיבל רוני ציון חד-ספרתי (גדול מ-1) בבחינה. רוני גילה שהמרצה עומד להעביר את ציונו למזכירות בפורמט הבא:Name, Grade, Sig(Grade) כאשר: Sig(Grade) – חתימת RSA (ללא hash) של המרצה על הציון. (e,n) – מפתח RSA הפומבי של המרצה, כאשר n מספר גדול באורך 1024 ביט. הנח שהמפתח הפומבי של המרצה ידוע לכולם, וזו הפעם הראשונה שהמרצה חותם על הודעה כלשהי. ניתן להניח שרוני יכול לקרוא ולשנות הודעות שנשלחות מהמרצה למזכירות. האם רוני יכול לגרום לכך שהציון שיועבר יהיה דו-ספרתי? אם כן, הראה כיצד, אחרת נמק. הגנה במערכות מתוכנתות - תרגול 3