הטכניון -המכון הטכנולוגי לישראל הפקולטה למדעי המחשב
הגנה במערכות מתוכנתות תרגיל בית מס' 3
סמסטר אביב תשע"ז
הגשה :עד יום ב 23:55 ,05/06/2017 ,
הגשה ביחידים
חל איסור חמור על החזקת פתרונות של סטודנטים אחרים .על כל סטודנט לרשום את תשובותיו עצמאית ובמילותיו שלו. נא להגיש את התרגילים אלקטרונית בלבד בנוגע לשאלות 1-2נא לפנות לג'ליל ) (jalilm@cs בנוגע לשאלות 3-4נא לפנות לאסתר )(esterliv@cs
שאלה – 1חתימות דיגיטליות ופונקציות תמצות: א( תארו כיצד מבוצעת חתימה דיגיטלית באמצעות RSAעם פונקציית תמצות . ב( ציינו יתרון שאיננו קשור לאבטחת מידע בשימוש בפונקציית תמצות במהלך חתימה דיגיטלית )לעומת חתימה דיגיטלית ללא פונקציית תמצות( . ג(
ציינו כיצד שימוש בפונקצית תמצות ,שאינה מתוכננת נכון ,עלול להחליש מבחינה אבטחתית את החתימה הדיגיטלית .
בסעיפים הבאים נתייחס לבטיחות סכמות חתימה שונות. מומחה אבטחת מידע מעוניין לתכנן מערכת שתחתום על קבצים גדולים במיוחד .המומחה טען כי חישוב תמצית על קובץ גדול עלול לקחת זמן רב מידי ,ולכן תכנן את אלגוריתם החתימה הבא. יהא Mהקובץ הגדול עליו יש לחתום .נחלק תחילה את הקובץ לבלוקים של 64ביט באופן הבא: … (M = m$ m% m& ||m כאשר 𝑚+הינו בלוק של 64ביט במקום המתאים בקובץ .כעת ,נבצע את הפעולות הבאות: • • •
נפעיל פונקציית XORעל הביטים של הבלוקים כך X .X = m$ ⊕ m% ⊕ m& ⊕ m( … :הינו בלוק בן 64ביט המייצג את תוצאת החישוב . נחשב תמצית של Xעם פונקציית תמצות קריפטוגרפית בטוחה .ℎ = 𝐻 𝑋 :H נחשב את חתימת ה RSA-על .ℎ
ד( האם השינוי המוצע מחליש ,מחזק או לא משנה את הבטיחות של החתימה לעומת שיטת החתימה הרגילה של RSAעם פונקציית תמצות? תארו את ההתקפה היעילה ביותר כנגד חתימה זו . מומחה אחר הציע להפוך את סדר פעולות התמצות וה XOR-כך: • • •
לכל בלוק ,𝑚+נחשב תמצית של הבלוק ) .ℎ+ = 𝐻(𝑚+ נחשב … ( .ℎ = ℎ% ⊕ ℎ& ⊕ ℎ נחשב את חתימת ה RSA-על .ℎ
ה( האם השינוי המוצע מחליש ,מחזק או לא משנה את הבטיחות של החתימה לעומת שיטת החתימה הרגילה של RSAעם פונקציית תמצות? תארו את ההתקפה היעילה ביותר כנגד חתימה זו . מומחה אחר הציע את השינוי הבא:
• • • ו(
לכל בלוק ,𝑚+נחשב )𝑖|| .ℎ+ = 𝐻(𝑚+ נחשב … ( .ℎ = ℎ% ⊕ ℎ& ⊕ ℎ נחשב את חתימת ה RSA-על .ℎ
האם השינוי המוצע מחליש ,מחזק או לא משנה את הבטיחות של החתימה לעומת שיטת החתימה הרגילה של RSAעם פונקציית תמצות? תארו את ההתקפה היעילה ביותר כנגד חתימה זו .
מומחה נוסף הציע את השינוי הבא.
ז(
•
נחשב )𝑀(𝐻 ⊕ )𝑀(𝐻 = ) ℎכאשר 𝑀 הינו היפוך הביטים של 𝑀( .
•
נחשב את חתימת ה RSA -על .ℎ
האם השינוי המוצע מחליש ,מחזק או לא משנה את הבטיחות של החתימה לעומת שיטת החתימה הרגילה של RSAעם פונקציית תמצות? תארו את ההתקפה היעילה ביותר כנגד חתימה זו.
שאלה – 2בקרת כניסה: יוסי שם לב שבתקופה האחרונה ,הרבה משקי בית שוקלים למחזר משכנתאות בין בנקים שונים .היות שהוא מחפש רעיון לחברת סטארט-אפ ,הוא החליט לפתח תוכנה אשר תרכז את כל המידע מכל הבנקים במקום אחד ותיתן ללקוח המלצות על בסיס המידע האישי שלו ,איך לנהל את המשכנתאות שלקח כדי לחסוך בעלויות. אב הטיפוס שיוסי פיתח ,מבוסס על כך שהתוכנה שלו תדרוש מכל משתמש שמעוניין בשירות לספק את שם המשתמש והסיסמא של כל אחד מחשבונות הבנק שלו. לאחר ההשקה ולמרות שאב-הטיפוס עבד כמו שצריך ואלגוריתם ההמלצה הביא לחסכון עבור משתמשי המבחן שלו ,יוסי שם לב שהרבה משתמשים מגיעים לאתר של התוכנה ,מעיינים במידע לגבי התוכנה ,אך נרתעים מליצור חשבון. א( מה הם חסרונות מנגנון בקרת הכניסה שיוסי השתמש בו ,אשר יכולים להסביר את התנהגות המבקרים באתר? מנה 3חסרונות והסבר אותם . לאחר שהבין שהלקוחות מוותרים על השירות עקב חסרונות מנגנון בקרת הכניסה ,פנה יוסי לחברו מוטי על מנת שייעץ לו .מוטי בהיותו חוקר נודע בתחום אבטחת המידע ,המליץ לו להשתמש במנגנון ה"תקני" הבא: .1כאשר לקוח מעוניין לאפשר לשירות של יוסי לקבל גישה לנתונים שלו .הלקוח פונה לבנק ומזדהה באמצעות פרוטוקול ,EKEומציין שהוא מעוניין לאפשר לשירות של יוסי גישה לנתונים שלו . .2לאחר ההזדהות הבנק יספק ללקוח כרטיס גישה ,הכרטיס מכיל את שם הלקוח ,תאריך תוקף של שבוע מעת ההנפקה וקוד אימות המאמת את הכרטיס .הבנק לא שומר אצלו רישום של הפעולה . > Ticket=<customer_name, expiration_date, verification_code .3הלקוח יעביר את הכרטיס שקיבל מהבנק לשרת של יוסי . .4אשר השירות של יוסי רוצה לגשת למידע של הלקוח הוא קודם כל מזדהה בתור יוסי באמצעות פרוטוקול EKEואז מעביר לבנק את הכרטיס שקיבל מהלקוח .רק לאחר שהבנק מאמת גם את ההזדהות וגם את הכרטיס ,הוא יאפשר גישה למידע של הלקוח . להלן תיאור סכמתי של המנגנון שהציע מוטי:
ב( ציין חסרון שיש לשיטה הנ"ל לעומת השיטה הקודמת מבחינת הבנק והסבר . ג( יוסי הצליח לשכנע את מוטי שהמנגנון חשוף להתקפת שידור חוזר ,למרות שפרוטוקול הכניסה EKE אינו חשוף לשידור חוזר .תאר את ההתקפה והסבר מדוע היא אפשרית . ד( יוסי טוען שהצפנת הכרטיס ע"י הבנק לפני שליחתו ללקוח באמצעות master_enc_keyהידוע רק לבנק ,תפתור את בעיית השידור החוזר ,היות שכעת התוקף לא יכול להבין את הכרטיס ולכן לא יצליח לבצע את ההתקפה .האם הוא צודק? אם כן ,הסבר איך ההצפנה מונעת את ההתקפה .אם לא ,תאר איך לבצע את ההתקפה למרות ההצפנה .
ה( מוטי טוען שאפשר למנוע את התקפת השידור החוזר ,מבלי שהכרטיס יוצפן בכלל במהלך הפרוטוקול וזאת ע"י שינוי מבנה הכרטיס .תאר את השינוי הנדרש כדי לענות על טענתו של מוטי והסבר איך השינוי שהצעת פותר את הבעיה . ו( מוטי ויוסי לא הצליחו להסכים על אופן יצירת קוד האימות שבכרטיס .מוטי טוען שמספיק להשתמש בפונקציית אימות ) ,(MACלעומתו יוסי טוען שבמקרה הזה שימוש בפונקציית אימות אינו בטוח ויש להשתמש בחתימה דיגיטלית .מי מהם צודק? הסבר תוך התייחסות לתכונות של כל אחת מהשיטות .
שאלה :SRP – 3 שאלה זו עוסקת בפרוטוקול SRPהנלמד בהרצאה. א( הסבירו מהי חשיבותה של המחרוזת saltהנבחרת על ידי המשתמש בעת אתחול הפרוטוקול. ב( השוו בין הבטיחות של פרוטוקול בקרת הכניסה של UNIXלפרוטוקול SRPכאשר קובץ הסיסמאות נחשף .בתשובתכם התייחסו לתוחלת ההתקפה ,והשוו את הזמן הדרוש לבדיקת כל ניחוש. נניח שאנו מעוניינים לקצר את הפרוטוקול ,SRPכך שבמקום 6הודעות יעברו בו רק 4הודעות ,באופן הבא: Server:
¬ s,B,u
Client:
® username
® A,M1 ¬ M2 כל הערכים זהים לערכים הנשלחים בפרוטוקול המקורי. ג( הציגו התקפה שניתן לבצע על הפרוטוקול המקוצר ולא ניתן לבצע על הפרוטוקול המקורי. ד( על מנת להתמודד עם הבעיה מהסעיף הקודם ,התקבלה הצעה שהערך uלא ייבחר רנדומלית על ידי השרת ,אלא יחושב על ידי כל אחד מהצדדים באופן סימטרי .שימו לב שבמקרה זה הערך uלא יעבור ברשת .האם ההצעה אכן מאפשרת להתמודד עם הבעיה? במידה והתשובה היא לא ,הסבירו .במידה והתשובה היא כן ,הציעו דרך שבה יוכל כל אחד מהצדדים לחשב את הערך ,uכך שההתקפה מהסעיף הקודם לא תתאפשר. בשני הסעיפים הבאים נתייחס לפרוטוקול SRPהמקורי .הניחו כי גודל מרחב הסיסמאות הוא ) Nכלומר ,כל משתמש יכול לבחור אחת מ N -סיסמאות אפשריות( .כמו כן ,הניחו כי ההתקפה היחידה שהתוקף יכול לבצע היא התחזות לשרת מול המשתמש. ה( תוקף מעוניין לגלות מהי הסיסמה שבחר משתמש מסוים .כמה התקפות של התחזות לשרת ידרשו לתוקף לכל היותר על מנת לדעת בוודאות מהי הסיסמה אותה בחר המשתמש? שימו לב שלא מדובר על תוחלת מספר ההתקפות שיש לבצע ,אלא על מספר ההתקפות המרבי שתוקף יצטרך לבצע .רמז :שימו לב לערך Bשמחושב בפרוטוקול וחישבו כמה סיסמאות ניתן לבדוק בהתחזות יחידה לשרת. ו( )הציעו שינוי פשוט ככל הניתן לפרוטוקול אשר יגדיל את מספר התקפות ההתחזות לשרת המרבי שיהיה על התוקף לבצע ,על מנת לשפר את בטיחות הפרוטוקול.
שאלה :PKI – 4 אחרי שסילביו למד בקורס על תשתית ,PKIהוא החליט להקדיש את הסמסטר האחרון שלו בתואר כדי לשפר את התשתית ולתת מענה לחלק מהבעיות שהוא מצא בה . אבל לפני שנציג את ההצעה שלו - א( הסבירו מהי ,CRLמי משתמש בה וכיצד . ב( הסבירו מהי ,OCSPמי משתמש בה וכיצד . סילביו הבין ששימוש בשתי השיטות מצריך חתימה של ה CA-על ה CRL-או נתוני ה OCSP-הנשלחים למשתמש, אשר מצידו צריך לוודא את החתימה .סילביו מעוניין למצוא שיטה שמייתרת את הצורך בחתימה על המידע הנוגע לביטול סרטיפיקטים .לצורך המשך השאלה ,נניח כי כל סרטיפיקט שנוצר מקבל תוקף של שנה בדיוק. סילביו הציע את השיטה הבאה : ביצירה של סרטיפיקט ,בנוסף לשדות שראינו בקורס )לפי ,(X.509v3כל סרטיפיקט יכיל שני שדות נוספים בגודל ביט. 80 באורך פלט עם בטוחה תמצות פונקציית H תהיי 80ביט. נתאר את החישוב הנוסף שיבצע ה CA-בעת יצירת הסרטיפיקט: .1 .2 .3 .4 .5
תחילה ה CA-בוחר ערכים בגודל 160ביט 𝑋$ו 𝑌$ -באופן אקראי. לאחר מכאן מבצע את החישוב ) .𝑌% =H(𝑌$ בנוסף ה CA-יחשב את 𝑋(67באופן הבא ) 𝑋% =H(𝑋$ ), 𝑋& =H(𝑋% ), ..., 𝑋(67 = H(𝑋(68 ) -כלומר מתבצע חישוב 365 hashפעמים ,כל פעם על הפלט של החישוב הקודם ,החל מ .(𝑋$ - את 𝑋(67ואת 𝑌%ה CA-ישמור בסרטיפיקט לצד שאר השדות )שימו לב שגם הם בגודל 80ביט( . החתימה שנמצאת בסוף הסרטיפיקט תהיה חתימה שביצע ה CA-על כל השדות של הסרטיפיקט ,בפרט על השדות שנוספו כאן .
סילביו ציין שכעת אם CAמעוניין לבטל סרטיפיקט ,הוא יפרסם את 𝑌$ברשימה פומבית המכילה את כל ערכי 𝑌$המתאימים לכל הסרטיפיקטים שבוטלו ,שימו לב שהרשימה מכילה רק את ערכי 𝑌$ללא מזהים של הסרטיפיקטים המבוטלים עצמם .ה CA-ימחק גם את כל ערכי 𝑋+מהזיכרון של שרת ה .CA-בנוסף ,סילביו ציין שאם מישהו פונה ל CA-בבקשה לבדוק האם הסרטיפיקט בוטל ,אז ה CA-מחזיר את התשובה הבאה : -
אם הסרטיפיקט לא בוטל ,אזי ביום מספר ) iמאז יצירת הסרטיפיקט( ה CA-ישלח בתשובה את .𝑋(679+ אם הסרטיפיקט בוטל ,אזי ה CA -יפנה לרשימה הפומבית המכילה את ערכי 𝑌$של כל הסרטיפיקטים שבוטלו עד כה .
ג(
מדוע פרסום 𝑌$מוכיח שהסרטיפיקט בוטל ע"י ה ?CA-ומדוע פרסום 𝑋(679+מוכיח שהסרטיפיקט עדיין תקף? בהסבר ציינו גם כיצד יאמת זה שפנה ל CA-את המידע ,ולמה אין צורך שה CA-יחתום על התשובה שלו .
ד( בהינתן שהיום הוא יום iולתוקף יש את כל הערכים שפרסם ה CA-מיום יצירת הסרטיפיקט ועד היום, האם יש לתוקף דרך לזייף את הערך של מחר? כלומר את ? 𝑋(679+9%אם כן תארו כיצד ,אם לא הסבירו מדוע. הסעיף הבא דן במצב בו תוקף הצליח לפרוץ לשרת ,CAבין היתר התוקף הצליח לגלות את המפתח הפרטי של השרת שבאמצעותו נחתמו הסרטיפיקטים שעליהם אחראי השרת. ה( אם נשתמש בשיטה שהציע סילביו ,האם תוקף יהיה מסוגל "להחיות" סרטיפיקט שפורסם בעבר כלא תקף? אם כן תארו כיצד ,אם לא הסבירו מדוע.