פנקס חד-פעמי – הבדלי גרסאות

תוכן שנמחק תוכן שנוסף
מ הגהה
שורה 1:
[[קובץ:OneTimePadExcerpt.agr.jpg|שמאל|ממוזער|250px|קטע מפנקס חד-פעמי, במשמעותו הפשוטה: פנקס שבו מודפס רצף אקראי של אותיות]]
'''פנקס חד-פעמי''' (ב[[אנגלית]]: '''One time pad''') הוא שיטת [[הצפנה]] שהומצאה בשנת [[1917]] ומבוססת על [[צופן ורנם]]. ייחודה בכך שקיימת הוכחה מתמטית לכך שאם המפתח המשמש להצפנה נבחר באקראי והשימוש בו הוא חד-פעמי, ההצפנה בלתי ניתנת לשבירה אפילו ליריב בעל עוצמת חישוב בלתי מוגבלת. שיטה זו היא הדוגמה הבולטת והפשוטה ביותר של שיטת [[סודיות מושלמת|הצפנה מושלמת]] (Perfect secrecy). למרות זאת מספר בעיות שיבוארו בהמשך מונעות שימוש נרחב בה.
 
==אופן ההצפנה==
לצורך הפשטות מניחים שהמסר להצפנה מיוצג כ[[מחרוזת (מדעי המחשב)|מחרוזת]] [[בסיס בינארי|בינארית]] (שהוא הייצוג הטבעי ב[[מחשב]]). המפתח המשמש להצפנה מיוצג גם הוא כמחרוזת בינארית שאורכה כאורך הקלט. ההצפנה מבוצעת על ידי פעולת [[XOR]] ([[חשבון מודולרי|חיבור מודולו 2]] המיוצג באמצעות הסמל <math>\oplus</math>) של המסר עם המפתח [[סיבית]] אחר סיבית. הפיענוחהפענוח מבוצע באותה דרך, אך עם הצופן והמפתח. בהצגה מתמטית:
 
'''הצפנה''': <math>\ c=m\oplus k</math>
שורה 21:
|}
 
שיםיש לשים לב שאם <math>c=m\oplus k</math> מזה נובע בהכרח ש-<math>k=c\oplus m</math>.
 
כדי שההצפנה תהיה בטוחה על התנאים הבאים להתקיים:
*מפתח ההצפנה צריך להיבחר ב[[מספר אקראי|אקראי]] מתוך מקסימום טווח המפתחות האפשריים באופן כזה שכל מפתח יכול היה להיבחר במידה שווה.
*אורך המפתח חייב להיות לפחות כאורך המסר עצמו.
*אסור להשתמש במפתח אחד יותר מפעם אחת.
 
מהדרישה השלישית נגזר שמו של הצופן. שימוש חוזר במפתח יהפוך את הצופן לקל מאוד לשבירה: בהינתן שני מסרים שהוצפנו עם אותו מפתח, ביצוע חיבור בינארי (XOR) בין שניהם יחזיר את תוצאת XOR של שני המסרים כשהם לא מוצפנים, כלומר יבטל את השפעת המפתח על הצופן ואז בהינתן אחד מהם ניתן לחשוף את השני בקלות. יתרה מזו, מצב זה משמר את תדירויות המסרים המקוריים, וקיימות שיטות פשוטות יחסית המבוססות על ניתוח סטטיסטי של [[ניתוח תדירויות|תדירויות השפה]], להפרדתם זה מזה.
שורה 57:
מקרה אחר מהתקופה האחרונה קשור בפרוטוקול [[PPTP]] של [[מיקרוסופט]] שנקרא MS-PPTP שבגרסה הראשונה שלו, הצפנת כל המסרים שנשלחו מהלקוח לשרת ומהשרת ללקוח בוצעה באמצעות אותו מפתח. הבעיה הייתה שהצופן איתו עשו מיקרוסופט שימוש היה [[RC4]] שהוא צופן זרם. כדי לפרוץ את הפרוטוקול כל מה שהמתקיף נדרש לעשות הוא לבצע XOR בין המסרים המוצפנים של השרת לבין המסרים המוצפנים של הלקוח, בכך אפקטיבית הוא מסיר את ההצפנה. הפרוטוקול המביך הזה הכיל מלבד זאת כשלים רבים וגם לאחר שתוקן לא היה בטוח יותר.
 
דוגמה נוספת גרועה אף יותר היא פרוטוקול [[WEP]] שבגרסאות הראשונות שלו הכנת המפתח לצורך הצפנה הייתה באמצעות [[וקטור אתחול]] שיחד עם המפתח הסודי מוזן ל-RC4 המייצר את זרם המפתח לצורך הצפנת הפריים ב-XOR. כל פריים הוצפן עם מפתח אחר שהוא פונקציה של המפתח הסודי הקבוע יחד עם וקטור אתחול שונה. היו שתי בעיות חמורות. ראשית, וקטור האתחול היה בעצם מספר סידורי של הפריים והוא שודר בגלוי, היות שוקטורשווקטור האתחול היה באורך 24 סיביות המשמעות היא שהוא מתאפס אחרי <math>2^{24}</math> או 16 מיליון פריימים שזה לא הרבה במונחים של ימינו. שנית, בכרטיסים מסויימיםמסוימים לאחר כיבוי והפעלה וקטור האתחול היה מתאפס. בשני מקרים אילו מה שקרה זה שמסרים שונים הוצפנו עם אותו מפתח, כשהמשמעות היא שבירה מוחלטת של הפרוטוקול. פרוטוקול זה הכיל כשלים רבים נוספים מה שהוביל לבסוף להחלפתו בפרוטוקול [[WPA]].
 
==חשילות==
פנקס חד פעמי אינו מבטיח אותנטיות. החסרוןהחיסרון בהצפנה עם פעולת XOR של זרם המפתח עם המסר היא שניתן לבצע מניפולציה של סיביות מסוימות במסר המקורי מבלי לפענח את הטקסט המוצפן. השינוי יכול להיות נקודתי ולא ישפיע על חלקים אחרים של הצופן. תכונה זו נקראת "[[חשילות (קריפטוגרפיה)|חשילות]]". למשל אם המסר המוצפן מכיל הצפנה של השם "דוד" (בקידוד [[אסקי]] נניח <math>\text{E3E5E3}</math>) אם המתקיף במקרה יודע שהשם המוצפן הוא דוד ביכולתו לשנותו ל"משה" (<math>\text{EEF9E4}</math>) מבלי שהמקבל יבחין בכך. כל שעליו לעשות הוא לחבר XOR של השמות משה ודוד <math>\text{EEF9E4}\oplus\text{E3E5E3}=\text{D1C07}</math> ואז לחבר את התוצאה ב-XOR עם הטקסט המוצפן במיקום הנכון. המקבל לאחר פענוח עלול לחשוב שהשם הנכון הוא משה בעוד שהמצפין שלח את השם דוד. מסיבה זו אין להשתמש בפנקס חד פעמי ללא אמצעי נוסף ל[[קוד אימות מסרים|הבטחת שלמות ואימות]].
 
==סודיות מושלמת==
שורה 93:
{{cite book
| isbn= 0-684-83130-9| last=Kahn|
title=שוברי הצפנים {{כ|ימינה=כן}}(The Codebreakers)
|page=715}}
}}.
שורה 106:
 
== קישורים חיצוניים==
*[http://www.schneier.com/blog/archives/2005/12/totally_secure.html הבלוג של ברוס שנייר: "Totally Secure Classical Communications?{{D}}"]
 
==הערות שוליים==
שורה 112:
 
{{קריפטוגרפיה}}
 
[[קטגוריה:הצפנה]]