ההתקדמות בפיצוח צופני החלפה פשוטים חייבה להמציא "מפתח" שיסבך מעט את העניינים. סודות ההצפנה: כתבה שלישית בסדרה
זוהי הכתבה השלישית בסדרת כתבות העוסקות בצפנים, אך היא עומדת בפני עצמה. לקריאת הכתבה הקודמת; הכתבה הראשונה.
בראשית, או ליתר דיוק בסביבות שנת 100 לפנה"ס, היה היסט קיסר, שיטת הצפנה פשוטה המבוססת על החלפה חד-חד ערכית של אותיות. חד-חד ערכיות היא מושג מתמטי שמתאר סוג מיוחד של התאמה בין האיברים בשתי קבוצות: כל איבר בקבוצה האחת תואם לאיבר יחיד בקבוצה השנייה. כלומר בהיסט קיסר כל אות בטקסט המקורי תוחלף תמיד באותה אות בכתב הצופן. לא יכול להיות שהאות א' תוצפן פעם כאות ב' ופעם אחרת כאות ג'. צופן כזה נקרא צופן החלפה חד-אלפביתי.
תיאור פונקציית החלפת האותיות עבור היסט קיסר 1 | איור: ליאור ויצהנדלר
הבעיה בצופני החלפה פשוטים כאלה היא שלא רק קל להשתמש בהם, אלא גם הפיצוח שלהם פשוט למדי. בשיטת ניתוח התדירויות יכול כל מפענח מיומן להיעזר בידע קודם על השכיחות של כל אות בשפה כדי לנחש בסבירות גבוהה למדי איזה סמל בכתב הצופן מייצג אות ספציפית בטקסט המקורי. על כן מפתחי הצפנים היו זקוקים לצופן חדש, שיאפשר העברה מוגנת וחשאית של מידע. את הפתרון הציע לראשונה במאה ה-16 הקריפטוגרף האיטלקי ג'ובאן בטיסטה בלסו (Bellaso), שפיתח את הצופן המכונה כיום צופן ויז'נר. הצופן קרוי על שמו של הדיפלומט והאלכימאי הצרפתי בלז דה-ויז'נר (Vigenère), שעסק גם הוא בהצפנה ולמעשה מיוחס לו בטעות.
מכונת הצפנה שבה השתמשו מדינות הדרום במהלך מלחמת האזרחים בארצות הברית בשנים 1865-1861 והתבססה על צופן ויז'נר | Library of Congress, Science Photo Library
הצופן
צופן ויז'נר יוצר הצפנה שבה כל אות תוצפן לפי היסט קיסר שונה. ראשית, יש להכיר את "ריבוע ויז'נר" – עזר ויזואלי כמו הטבלה בעלת שני הטורים המשמשת בצופן קיסר פשוט. כל שורה בריבוע מייצגת את היסט קיסר המתאים לה לעומת האלפבית המקורי (האפור).
לאחר מכן בוחרים מילת מפתח וכותבים אותה שוב ושוב מעל אותיות הטקסט. מה שנשאר כעת הוא לעבור על הטקסט אות אחרי אות ולהצפין כל אחת לפי השורה בריבוע ויז'נר שמתחילה באות המפתח שלה.
מבלבל? הבה נדגים. נתחיל בהכנת ריבוע ויז'נר:
נניח שנרצה להצפין את הטקסט "החתול של שרדינגר".
לפי השלב השני באלגוריתם יש לבחור מילת מפתח, נבחר במילה "קוונטה" ונקבל:
עכשיו, נתחיל להצפין. מעל האות ה' נמצאת אות המפתח ק'. לכן נלך לשורה 18, שהאות הראשונה בה היא ק'. זה בעצם היסט קיסר 18. האות ה' תוצפן בתור א'. האות הבאה היא ח', ואות המפתח ו' שמעליה מפנה אותנו לשורה 5. לכן האות ח' תוצפן בתור מ'. כך נמשיך אות אחרי אות, ונגלה שבגלל ההיסט השונה, האות ל' שבסוף "החתול" תוצפן בתור ר', ואילו הל' בסוף "של" תוצפן בתור ח'. הטקסט המוצפן הסופי יהיה:
אמהקר גח דגפצצשג
מאחר שההיסט שלפיו תוצפן האות תלוי באות המתאימה של המפתח, סביר להניח שאותיות שחוזרות על עצמן בטקסט המקורי יוצפנו תחת אותיות שונות לאורך הטקסט. בנוסף, ככל שמילת המפתח תהיה ארוכה יותר ותכלול יותר אותיות שונות, הסבירות לכך תגדל. נסו וחישבו בעצמכם מדוע.
פענוח
נניח שאנחנו נמעני ההודעה המוצפנת שבדוגמה. איך נפענח אותה? תנאי מקדים להצפנת ויז'נר הוא ששני הצדדים בתכתובת, המוען והנמען, ידעו את המפתח. כמו בשלב ההצפנה, גם הפעם נכתוב את מילת המפתח שוב ושוב מעל ההודעה.
עכשיו נעבור על כל האותיות ועבור כל אות נמצא את השורה של אות המפתח, בשורה הזאת נמצא את האות שבהודעה ונראה איזו אות היא מצפינה. למשל, בהודעה המוצפנת שלנו אות המפתח של האות הראשונה א' היא ק'. בשורה שבה האות הראשונה היא ק' נמצא את האות א' ונראה שהיא החליפה את האות ה'. כך נמשיך עד סוף הצופן, ואם לא דילגנו על אף אות – הפענוח מובטח.