פנקס חד-פעמי (One time pad) היא שיטת הצפנה שהתבססה על צופן ורנם והומצאה ב-1917. ייחודה בכך שאם המפתח הוא אקראי מוחלט ומשמש פעם אחת בלבד, ההצפנה אינה ניתנת לשבירה גם בעזרת כוח חישוב בלתי מוגבל.
המסר והמפתח מיוצגים כמחרוזות ביטים (אפסים ואחדים). ההצפנה נעשית על ידי פעולת XOR (חיבור מודולו 2): בכל סיבית מחברים את סיבית המסר עם סיבית המפתח. XOR היא פעולה שבודקת אם הסיביות שונות; התוצאה שומרת על האקראיות של המפתח. הפענוח נעשה באותו אופן: חיבור הכתבה המוצפנת עם המפתח מעניק בחזרה את המסר.
חיסון מרכזי: אם משתמשים באותו מפתח לשתי הודעות, מקבלים c1××c2 = m1××m2 (XOR בין הכתבים חושף את XOR של המסרים). זה מאפשר ניתוח סטטיסטי וחשיפת טקסטים ידועים. לכן מפתח חייב להיות חד-פעמי.
שימוש חוזר במפתח גרם לשיבושים היסטוריים. במקרה המפורסם של פרשת וינונה, מפתחות מנוּצלו מחדש והמודיעין פענח תשדורות של מרגלים. דוגמאות מודרניות: פרוטוקול MS-PPTP השתמש באותו מפתח לשני הכיוונים וסבל משבירה; WEP השתמש בווקטור אתחול קצר שחזר, מה שהוביל לשידור פריימים שונים עם אותו מפתח ולפריצות.
פנקס חד-פעמי אינו מבטיח שלמות האות (authenticity). ניתן לשנות סיביות בכתבה המוצפנת מבלי לפענח אותה, ולגרום שהנמען יקבל מסר שונה. זה נקרא "חשילות" (malleability). לכן יש צורך באמצעים נוספים לאימות ושלמות, למשל קודי אימות או חתימות דיגיטליות.
קלוד שאנון הוכיח ב-1949 שפנקס חד-פעמי מספק "סודיות מושלמת": הכתבה המוצפנת לא מוסיפה מידע על המסר המקורי. במונחי הסתברויות: P(M|C)=P(M). באופן שווה בערכים של אנטרופיה: H(M|C)=H(M). משמעות זו נובעת מכך שלכל צופן אפשרי קיים בדיוק מפתח אחד שממפה מסר נתון לכתבה נתונה.
שנון הראה שתנאי הכרחי לסודיות מושלמת הוא ש-H(K) ≥ H(M), כלומר אי-הוודאות של המפתח לפחות שווה לזו של המסר. בפועל משמעות הדבר שאורך המפתח צריך להיות לפחות כאורך המסר. זה מקשה על שימוש בפנקס ליישומים ארוכים: קשה לייצר, להעביר ולהשמיד כמות רבה של מפתחות אקראיים. בעיית העברת המפתח עצמה משמעותית: כדי לשתף מפתח בטוח, צריך ערוץ בטוח; אם יש ערוץ כזה, אפשר להעביר את המסר בלי הצפנה.
בנוסף, יש צורך באמצעים חיצוניים להבטחת שלמות המידע. שיטות סימטריות נפוצות שנותנות פתרונות פרקטיים אינן מושלמות אך מספקות אבטחה מסחרית.
הקו החם בין וושינגטון ומוסקבה השתמש בעבר בפנקס חד-פעמי שהועבר בבלדר צבאי. גם תחנות מספרים המשמשות להעברת מסרים למרגלים נודעות בשימוש בפנקסים כאלה.
העיית העברת המפתחות מפחיתה את הפרקטיות של השיטה. אפשריות לשיפור כוללות חילופי מפתחות קוונטיים (QKD) שיכולים לאפשר החלפה בטוחה של מפתחות אקראיים ולייעל את השימוש בפנקס חד-פעמי.
פנקס חד-פעמי (One time pad) הוא צופן שבו מייצרים מפתח אקראי ארוך כמו המסר. המפתח משמש פעם אחת בלבד.
המסר והמפתח הם רצפים של ביטים. ביט הוא ספרה שיכולה להיות 0 או 1. להצפנה עושים פעולה שנקראת XOR: אם שתי הסיביות זהות התוצאה 0, אם שונות התוצאה 1. כדי לפענח עושים את אותה פעולה עם המפתח.
אם משתמשים באותו מפתח פעמיים, האויב יכול להשוות את שני הטקסטים המוצפנים ולגלות דברים על ההודעות. לכן חייבים לא לחדש את המפתח.
כשמפעילים מפתחות שוב ושוב זה בעייתי. זה קרה בעבר בפרשת וינונה, שם מפתחות שיוצרו מחדש אפשרו פענוח. גם פרוטוקולים כמו PPTP ו-WEP סבלו כי השתמשו לא טוב במפתחות.
הצופן לא מגן על כך שאיש לא ישנה את המסר. אפשר לשנות חלק מהמילים בכתבה המוצפנת בלי לפענח אותה. לכן צריך גם דרך לוודא שלמות, למשל חתימה דיגיטלית או קוד אימות.
קלוד שאנון הראה שפנקס חד-פעמי הוא "מושלם": מי שרואה את ההודעה המוצפנת לא מקבל מידע חדש על המסר. כלומר הצופן מסתיר כל דבר אם המפתח באמת אקראי וחד-פעמי.
הבעיה הגדולה היא המפתח: צריך מפתח ארוך ואקראי לכל הודעה. קשה לייצר, להעביר ולאחסן מפתחות כאלה. אם יש דרך בטוחה להעביר מפתח, אפשר להעביר גם את המסר.
בעבר השתמשו בפנקסים בקו החם בין מדינות ובתחנות מספרים למרגלים. פתרון פוטנציאלי לבעיה של העברת המפתחות הוא החלפת מפתחות קוונטית, שיכולה להחליף מפתחות בצורה בטוחה יותר.
תגובות גולשים