Winter 2013 - החוג למדעי המחשב, אוניברסיטת חיפה

‫החוג למדעי המחשב‬
‫אוניברסיטת חיפה‬
‫מבוא לקריפטוגרפיה‬
‫(‪)44434222/44432222‬‬
‫סמסטר חורף ‪ – 4404‬מועד ב'‬
‫תאריך‪403234404 :‬‬
‫מרצה‪ :‬ד"ר אור דונקלמן‬
‫‪ 30‬משך המבחן שעתיים וחצי‪3‬‬
‫‪ 34‬במבחן ‪ 4‬שאלות‪ ,‬ענה‪/‬י על כולן‪3‬‬
‫‪ 34‬חומר עזר מותר בשימוש‪ :‬כל חומר עזר מודפס‪ 3‬אין להשתמש בכל חומר עזר אלקטרוני‪3‬‬
‫‪ 32‬הקדש‪/‬י את ‪ 04‬הדקות הראשונות לקריאת כל השאלות והבנתן‪3‬‬
‫‪ 35‬ענה‪/‬י תשובות קצרות וברורות ככל האפשר‪ 3‬נמק‪/‬י את תשובתך‪3‬‬
‫‪ 36‬באם אינך יודע‪/‬ת את התשובה לסעיף‪ ,‬ניתן לרשום "לא יודע‪/‬ת"‪ ,‬ולקבל כ‪ 44%-‬מציון‬
‫הסעיף‪3‬‬
‫בהצלחה!‬
‫שאלה ‪ 33( 1‬נק')‬
‫שאלה זו דנה בספריה הקריפטוגרפית ‪3ClosedSSL‬‬
‫א‪3‬‬
‫ב‪3‬‬
‫ג‪3‬‬
‫ד‪3‬‬
‫הגרסא הראשונה של הספריה מממשת את ‪ AES-128‬ללא שום אופטמיזציות (כלומר‪ ,‬כל‬
‫ארבע פעולות השלב הן כפי שתואר בשקפים)‪ 3‬עם זאת בפונקצית ה‪ ,SubBytes-‬נפלה טעות‬
‫בטבלת ה‪ ,S-box-‬ובמקום ‪ S[0]=63x‬נרשם ‪3S[0]=62x‬‬
‫הסבר‪/‬י מדוע במערכת זו‪ ,‬גם משתמש היודע את המפתח הסודי‪ ,‬לא בהכרח יוכל לפענח‬
‫כתבי סתר שהוצפנו ע"י מימוש זה‪ 5( 3‬נק')‬
‫הסבר‪/‬י כיצד תוקף בעל יכולת ‪ Chosen Plaintext‬יכול לנצל טעות זו כדי למצוא את המפתח‬
‫המשמש להצפנה‪ 3‬קבע‪/‬י את סיבוכיות ההתקפה מבחינת נתונים וזמן‪3‬‬
‫(רמז‪ :‬שים‪/‬מי לב כי התוקף יכול לקבוע את הכתבים הגלויים להצפנה‪ ,‬ולקבל את כתבי‬
‫הסתר שלהם שהוצפנו ע"י המערכת)‪ 04( 3‬נק')‬
‫האם תוקף בעל יכולות ‪ Known Plaintext‬יכול לנצל את הטעות במימוש כדי למצוא את‬
‫המפתח הסודי? אם כן הסבר‪/‬י כיצד ומה סיבוכיות ההתקפה‪ ,‬אחרת הסבר‪/‬י מדוע ההתקפה‬
‫מסעיף ב' איננה עובדת‪ 8( 3‬נק')‬
‫בגרסא ‪ 4‬של הספריה‪ ,‬הוחלט לממש את ‪ AES‬כך שפעולות ה‪ SubBytes-‬וה‪MixColumns -‬‬
‫מאוחדות‪ 3‬כחלק מהגרסא החדשה‪ ,‬נוצרו ‪ 2‬טבלאות של ‪ 456‬ערכים בני ‪-44‬ביט‪ 3‬עם זאת‪,‬‬
‫בטבלה הראשונה (לבתים הנמצאים בשורה העליונה של מטריצת המצב)‪ ,‬נפלה שגיאה כך‬
‫שמתקיים ש‪ 3T0[0]=T0[1]-‬הראה‪/‬י איזו התקפה יכול תוקף בעל יכולת ‪Chosen Plaintext‬‬
‫לבצע‪ 3‬קבע‪/‬י מה סיבוכיות ההתקפה‪ ,‬ומה התוקף יכול ללמוד ממנה‪ 04( 3‬נק')‬
‫שאלה ‪ 33( 2‬נק')‬
‫שאלה זו דנה בהשפעות של תכונת הכפליות על בטיחות ההצפנה של ‪3RSA‬‬
‫כחלק מהגדרת פרוטוקול ‪ ,PKCSforKIDS‬הוחלט שלכל משתמש יהיה מפתח ‪ RSA‬עם מודולו בן‬
‫‪-0442‬ביט‪ 3‬יתר על כן‪ ,‬גודל ההודעות למשלוח הוגבל ל‪-044-‬ביט‪ 3‬כדי להמנע מהבעיה של העלאה‬
‫(בת‬
‫בחזקה ללא רדוקציה מודולרית (לדוגמא כשהודעה קטנה ו‪ -‬הוא ‪ (4‬הוחלט שאת ההודעה‬
‫באופן הבא‪:‬‬
‫עד ‪-044‬ביט) יצפינו תחת המפתח הפומבי‬
‫|| || || ||‬
‫היא מחרוזת רנדומית שאינה מכילה בתים שערכם אפס באורך הדרוש כדי ש‪-‬‬
‫כאשר‬
‫|| || || || יהיה באורך ‪-0442‬ביט (הערכים ‪ 4,0‬ו‪ ,4-‬הם בתים המכילים את הערכים הללו)‪3‬‬
‫א‪3‬‬
‫ב‪3‬‬
‫ג‪3‬‬
‫ד‪3‬‬
‫? הסבר‪/‬י כיצד למצוא אותו? (‪ 5‬נק')‬
‫מהו הערך‬
‫‪ ,‬מה הם הביטים העליונים‬
‫נתון כי בכתב הסתר מוצפנת ההודעה‬
‫|| || ||‬
‫(עבור מסעיף א')? (‪ 5‬נק')‬
‫של‬
‫‪ 5( 3‬נק')‬
‫חזור‪/‬י על סעיף ב' עבור ההודעה‬
‫|| || ||‬
‫נניח כי מקבל ההודעה מנסה לפענח את כתב הסתר שקיבל‪ 3‬אם הפענוח נותן הודעה‬
‫מוצפנת שאיננה תואמת לתקן‪ ,‬הוא שולח הודעת שגיאה‪ 3‬אחרת‪ ,‬המקבל מפעיל תהליך‬
‫כלשהו על ההודעה שהתקבלה‪3‬‬
‫הראה‪/‬י כיצד תוקף שאיננו יודע את המפתח הסודי יכול לגלות את הכתב הגלוי שהוצפן ב‪-‬‬
‫עבור ערכי שונים‪ 3‬הסבר‪/‬י‬
‫ע"י בקשות של פענוח הודעות מהפורמט‬
‫מהם אותם ערכי ‪ ,‬האם ההתקפה בהכרח מצליחה‪ ,‬וקבע‪/‬י את סיבוכיות ההתקפה‪08( 3‬‬
‫נק')‬
‫שאלה ‪ 33( 3‬נק')‬
‫)‪ ,‬אשר מחולקת ל‪ -‬משבצות (בנות‬
‫הינו טבלה של תאים (בגודל‬
‫לוח סודוקו בגודל‬
‫‪ ,‬כך‬
‫תאים כל אחת)‪ ,‬כאשר בכל עמודה‪ ,‬שורה‪ ,‬ומשבצת מופיעים ב‪ -‬התאים המספרים‬
‫שכל המספרים מופיעים‪ ,‬ורק פעם אחת‪ 3‬בעיית סודוקו היא לוח סודוקו שההשמה במספר מן התאים‬
‫נתונה‪ ,‬והמטרה היא למצוא את יתר ההשמה‪3‬‬
‫ללוח סודוקו נתון לבין מוודא‪ 3‬מטרת‬
‫בשאלה זו נדון בפרוטוקול אפס‪-‬ידע בין מוכיח היודע פתרון‬
‫המוכיח היא להוכיח את ידיעת הפתרון‪ ,‬כך שהמוודא ישתכנע שאכן המוכיח יודע את הפתרון‪ ,‬מבלי‬
‫לחשוף את הפתרון בפני המוודא‪( 3‬בשאלה זו נניח כי בעיות סודוקו הן ‪-NP‬קשות(‪3‬‬
‫התבונן‪/‬י בפרוטוקול הבא‪:‬‬
‫‪30‬‬
‫‪34‬‬
‫‪34‬‬
‫‪32‬‬
‫‪ ,‬ושולח למוודא התחייבות‬
‫המוכיח מגריל פרמוטציה‬
‫‪3‬‬
‫(‪ )commitment‬על הפתרון‬
‫אשר נמצאים באותה שורה‪ ,‬או באותה‬
‫המוודא בוחר באקראי שני תאים‬
‫עמודה‪ ,‬או באותה משבצת‪ ,‬ומבקש מן המוכיח את ערכי התאים הללו‪3‬‬
‫‪3‬‬
‫המוכיח פותח את ההתחייבות עבור שני התאים‬
‫המוודא בודק שערכי שני התאים שונים‪3‬‬
‫א‪ 3‬הראה‪/‬י כי מוכיח היודע פתרון חוקי מצליח תמיד בהוכחה‪ 2( 3‬נק')‬
‫מכיוון שהפרוטוקול המוצע "מסתיר" גם את הערכים בלוח המקורי (הלא פתור)‪ ,‬מה שמאפשר‬
‫למוכיח רמאי פשוט להתחייב את טבלה שהוא כבר פתר בעבר‪ ,‬ולחשוף את פתרונה‪ ,‬הוחלט לשנות‬
‫את הפרוטוקול כך שהמוודא בוחר באקראי האם לפתוח או זוג תאים (תחת התנאים הקודמים) או‬
‫לפתוח את ההתחייבות על כל התאים הידועים מהלוח המקורי‪3‬‬
‫ב‪ 3‬הוכח‪/‬י כי בהנתן השינוי המוצע‪ ,‬מוכיח שאיננו יודע פתרון חוקי‪ ,‬ובהנחה שכל המספרים‬
‫מופיעים בלוח המקורי‪ ,‬יכשל בסיכוי של‬
‫לפחות‪ 5( 3‬נק')‬
‫ג‪ 3‬כמה סיבובים על המוכיח והמוודא להריץ‪ ,‬כדי שהסיכוי של מוודא לתפוס מוכיח רמאי יהיה‬
‫גבוה מ‪ 5( ?54%-‬נק')‬
‫ד‪ 3‬כדי ליעל את הפרוטוקול‪ ,‬הוחלט לאפשר למוודא לבחור בעמודה‪ ,‬שורה‪ ,‬או משבצת שאותה‬
‫על המוכיח לפתוח (המוודא עדיין יכול לבקש לפתוח את כל התאים מהלוח המקורי)‪ 3‬מה‬
‫סיכוי הכשלון של מוכיח רמאי כעת? (‪ 5‬נק')‬
‫ה‪ 3‬תאר‪/‬י את הסימולטור עבור הפרוטוקול המוצע בסעיף ד'‪ 04( 3‬נק')‬
‫ו‪ 3‬קבע‪/‬י האם הפרוטוקול מסעיף ד' מציע פרוטוקול אפס‪-‬ידע מושלם‪ ,‬חישובי‪ ,‬או סטטיסטי‪3‬‬
‫נמק‪/‬י קביעתך‪ 4( 3‬נק')‬