פנקס חד-פעמי

פנקס חד-פעמי (באנגלית: One time pad) הוא שיטת הצפנה שהומצאה בשנת 1917 ומבוססת על צופן ורנם. ייחודה בכך שקיימת הוכחה מתמטית לכך שאם המפתח המשמש להצפנה נבחר באקראי והשימוש בו הוא חד-פעמי, ההצפנה בלתי ניתנת לשבירה אפילו ליריב בעל עוצמת חישוב בלתי מוגבלת. שיטה זו היא הדוגמה הבולטת והפשוטה ביותר של שיטת הצפנה מושלמת (Perfect secrecy). למרות זאת מספר בעיות שיובהרו בהמשך מונעות שימוש נרחב בה.

פנקס רב-פעמי

תנאי הכרחי בפנקס חד-פעמי שהוא ישמש להצפנת מסר אחד בלבד. אם משתמשים באותו פנקס להצפנת שני מסרים מה שקרוי "פנקס דו-פעמי" או יותר, גורמים כאמור לשבירה מוחלטת של הצופן. למרות זאת לאורך השנים לא תמיד הקפידו על כך. המקרה הראשון והמפורסם ביותר היה המחדל הסובייטי בפרשת מסמכי וינונה. בגלל התהליך המפרך של הכנת פנקס חד פעמי (בזמנו הדבר בוצע באמצעות הטלת קוביות), המפעילים התעצלו ו"מיחזרו" פנקסים שכבר נעשה בהם שימוש. מה שאפשר למודיעין האמריקאי לפענח במשך שנים רבות תשדורות סודיות של מרגלים רוסים.
מקרה אחר מהתקופה האחרונה קשור בפרוטוקול PPTP של מיקרוסופט שנקרא MS-PPTP שבגרסה הראשונה שלו, הצפנת כל המסרים שנשלחו מהלקוח לשרת ומהשרת ללקוח בוצעה באמצעות אותו מפתח. הבעיה הייתה שהצופן איתו עשו מיקרוסופט שימוש היה RC4 שהוא צופן זרם. כדי לפרוץ את הפרוטוקול כל מה שהמתקיף נדרש לעשות הוא לבצע XOR בין המסרים המוצפנים של השרת לבין המסרים המוצפנים של הלקוח, בכך אפקטיבית הוא מסיר את ההצפנה. הפרוטוקול המביך הזה הכיל מלבד זאת כשלים רבים וגם לאחר שתוקן לא היה בטוח יותר.
דוגמה נוספת גרועה אף יותר היא פרוטוקול WEP שבגרסאות הראשונות שלו הכנת המפתח לצורך הצפנה הייתה באמצעות וקטור אתחול שיחד עם המפתח הסודי מוזן ל-RC4 המייצר את זרם המפתח לצורך הצפנת הפריים ב-XOR. כל פריים הוצפן עם מפתח אחר שהוא פונקציה של המפתח הסודי הקבוע יחד עם וקטור אתחול שונה. היו שתי בעיות חמורות. ראשית, וקטור האתחול היה בעצם מספר סידורי של הפריים והוא שודר בגלוי, היות שווקטור האתחול היה באורך 24 סיביות המשמעות היא שהוא מתאפס אחרי  או 16 מיליון פריימים שזה לא הרבה במונחים של ימינו. שנית, בכרטיסים מסוימים לאחר כיבוי והפעלה וקטור האתחול היה מתאפס. בשני מקרים אילו מה שקרה זה שמסרים שונים הוצפנו עם אותו מפתח, כשהמשמעות היא שבירה מוחלטת של הפרוטוקול. פרוטוקול זה הכיל כשלים רבים נוספים מה שהוביל לבסוף להחלפתו בפרוטוקול WPA.

חשילות

פנקס חד פעמי אינו מבטיח אותנטיות. החיסרון בהצפנה עם פעולת XOR של זרם המפתח עם המסר היא שניתן לבצע מניפולציה של סיביות מסוימות במסר המקורי מבלי לפענח את הטקסט המוצפן. השינוי יכול להיות נקודתי ולא ישפיע על חלקים אחרים של הצופן. תכונה זו נקראת "חשילות". למשל אם המסר המוצפן מכיל הצפנה של השם "דוד" (בקידוד אסקי נניח ) אם המתקיף במקרה יודע שהשם המוצפן הוא דוד ביכולתו לשנותו ל"משה" () מבלי שהמקבל יבחין בכך. כל שעליו לעשות הוא לחבר XOR של השמות משה ודוד  ואז לחבר את התוצאה ב-XOR עם הטקסט המוצפן במיקום הנכון. המקבל לאחר פענוח עלול לחשוב שהשם הנכון הוא משה בעוד שהמצפין שלח את השם דוד. מסיבה זו אין להשתמש בפנקס חד פעמי ללא אמצעי נוסף להבטחת שלמות ואימות.

תכונות

שנון הוכיח כי תנאי הכרחי לכך שהצפנה תיקרא מושלמת (Perfect secrecy) הוא ש- כלומר רמת אי הוודאות של המפתח תהיה לכל הפחות כרמת אי הוודאות של המסר. לפיכך אם המסרים מתפלגים באופן אחיד, אורך המפתח חייב להיות לכל הפחות כאורך המסר. באופן כללי, גודל מרחב המפתחות האפשריים חייב להיות לפחות כגודל מרחב ההודעות האפשריות.
כפועל יוצא, מערכות הצפנה סימטרית שבהן מפתח יחיד משמש להצפנת יותר מאשר הודעה יחידה, אינן מערכות הצפנה מושלמות. עם זאת, אין הדבר מעיד על בטיחות השימוש הפרקטית של מערכות אלו לצורכי אבטחת מידע.

חסרונות

הצורך במפתח שאורכו כאורך המסר המיועד להצפנה, הוא חיסרון בולט שהופך שליחת מסרים ארוכים לבעייתית. הן בשל הקושי בייצור כמות גדולה של חומר מפתח והן בשל הקושי להשמיד את המפתח לאחר השימוש בו כדי שלא ייפול לידיים הלא נכונות (ידוע שגם אם גורסים DVD, שמכיל מפתח, לחלקים קטנים, עדיין אפשר לשחזר מתוכם כמות לא מועטה של חומר מפתח), כמו כן ידוע שגם לאחר מחיקה של קטע הזיכרון בכונן הקשיח המכיל את המפתח אפשר לשחזרו עם ציוד מתאים, אפילו לאחר זמן רב ואפילו אם נדרס במידע אחר.
בעיה מרכזית נוספת היא בעיית העברת מפתח האופיינית לכל שיטת הצפנה סימטרית - כדי ששני הצדדים יוכלו להיתקשר ביניהם עליהם לשתף מפתח, לשם כך הם צריכים למצוא 'ערוץ בטוח' להעברת המפתח הסודי מאחד לשני (אם על ידי פגישה פיזית או באמצעות שליח מהימן). אם הצדדים ימצאו דרך בטוחה להעביר ביניהם מפתח סודי כאורך המסר, הרי שהם לא זקוקים להצפנה כלל, כי הם יכולים לנצל דרך זו להעברת המסר עצמו.
שיטות ההצפנה הא-סימטריות ובראשן RSA פותרות חלקית את הבעיה. אפשר להשתמש בהצפנה אסימטרית, כדי לשתף מפתח (קטן יחסית) ולאחר מכן להשתמש בצופן סימטרי מהיר כמו AES כדי להעביר את המסר עצמו. פתרון זה לא יועיל במקרה של הצפנת מפתח חד-פעמי מכיוון שהקושי בהעברת המפתח זהה לקושי שבהעברת המסר עצמו.
בעיה נוספת היא בעיית "הבטחת השלמות" (Integrity). שיטה זו אינה מונעת שינוי של המסר המוצפן בידי גורם זר המסוגל ליירט את הצופן, לשנות חלקים ממנו ולאפשר למסר להמשיך ליעדו המקורי מבלי שיעד זה יוכל לזהות שינוי זה. גם שיטת ההצפנה האסימטרית אינה פותרת בעיה זו. במקרה כזה יש צורך להפעיל שיטות נוספות שמטרתן הבטחת שלמות המסר או הצופן באופן שיאפשר לצדדים לזהות כל ניסיון לשינויו. זאת עושים בדרך כלל באמצעות קוד אימות מסרים או חתימה דיגיטלית.

שימושים

ידוע כי הקו החם בין וושינגטון ומוסקבה היה מוגן בעבר באמצעות פנקס חד-פעמי שאת המפתח שלו נהגו להעביר באמצעות בלדר צבאי. אחת הסיבות לשימוש דווקא במנגנון "פשוט" זה, הייתה על מנת ששתי המעצמות לא ייאלצו לחשוף שיטות הצפנה אחרות, רגישות יותר, שהן השתמשו בהן. 
הדיעה הרווחת היא שתחנות המספרים המסתוריות הן אמצעי להעברת מסרים למרגלים ברחבי העולם בגלי רדיו קצרים, המוצפנים באמצעות פנקס חד-פעמי.

יישום פנקס חד-פעמי באמצעות הצפנה קוונטית

בעיית העברת המפתח פוגמת ביעילות ובפרקטיות של הצפנה בעזרת פנקס חד-פעמי. לאור זאת יש הסבורים כי כאשר תהיה פריצת דרך בתחום המחשבים הקוונטיים, ניתן יהיה לבצע העברת מפתח קוונטית ובכך לייעל את שיטת הפנקס החד-פעמי ולשנות דרמטית את בטיחות ההצפנה.