צופן ויז'נר

צופן ויז'נר הוא צופן החלפה רב־אלפביתי, המחליף כל אות במסר באות אחרת מתוך אלפבית שונה, קרי במפתח שונה. השימוש במפתח נעשה באופן מחזורי. לאחר שימוש בכל האלפביתים חוזרים לאלפבית הראשון. מיקומה של כל אות במסר המקורי קובע באיזה אלפבית מתוך קבוצת האלפבית של מפתח הצופן להצפינה. בכל מפתח אלפבית סדר האותיות שונה, כך שכל אות זהה במסר תוצפן לאות אחרת בצופן, על כן לא נשמרת תדירות האותיות שבמסר המקורי, זאת בניגוד לצופן חד־אלפביתי המבצע הזזה או החלפה של כל אותיות המסר במרחק קבוע. ועל כן את צופן ויז'נר לא ניתן לפצח בעזרת ניתוח תדירויות. צופן ויז'נר מיוחס לדיפלומט הצרפתי בלז דה ויז'נר (1586), אולם למעשה הומצא מספר שנים לפניו על ידי הקריפטוגרף האיטלקי ג'ובני בטיסטה בלאסו (בשנת 1553). צופן זה יוחס בטעות לוויז'נר בתחילת המאה ה-19, ומאז נקרא על שמו. צופן ויז'נר פשוט עם מחזוריות t {\displaystyle t} , מעל אלפבית בעל s {\displaystyle s} אותיות, ממפה מפתח בעל t {\displaystyle t} ערכים k 1 , k 2 , … , k t {\displaystyle k_{1},k_{2},\ldots ,k_{t}} על אותיות המסר m 1 , m 2 , m 3 , … {\displaystyle m_{1},m_{2},m_{3},\ldots } בעזרת הפונקציה c i = ( m i + k i ) mod s {\displaystyle c_{i}=(m_{i}+k_{i}){\bmod {s}}} לקבלת הטקסט המוצפן c 1 , c 2 , … , c t {\displaystyle c_{1},c_{2},\ldots ,c_{t}} . כאשר אינדקס המפתחות i {\displaystyle i} מצומצם מודולו t {\displaystyle t} , כלומר המפתח מחזורי. לאחר שמשתמשים במפתח k t {\displaystyle k_{t}} חוזרים להשתמש במפתח k 1 {\displaystyle k_{1}} וכן הלאה עד לגמר המסר. לצורך המחשה, בצופן החלפה חד־אלפביתי, החלפת כל אות במילה "אמת" באות השלישית הבאה אחריה תתן: "דעג" (אותיות סופיות לא הובאו במנין), האות "ת" הוחלפה באות השלישית מההתחלה (ההזזה היא מחזורית) כשהמפתח הוא k = 3 {\displaystyle k=3} . בצופן החלפה רב־אלפביתי לעומת זאת, ההחלפה היא מרובה במובן שכל אות במסר מוחלפת לפי מפתח (היסט) אחר, האות הראשונה מוחלפת במרחק המוגדר על ידי המפתח k 1 {\displaystyle k_{1}} , האות השנייה לפי k 2 {\displaystyle k_{2}} ... האות t {\displaystyle t} במסר מוחלפת לפי k t {\displaystyle k_{t}} ואילו האות t + 1 {\displaystyle t+1} מוחלפת לפי k 1 {\displaystyle k_{1}} וחוזר חלילה. בדוגמה לעיל בהינתן מפתח k 1 = 1 , k 2 = 2 , k 3 = 3 {\displaystyle k_{1}=1,k_{2}=2,k_{3}=3} אזי צופן ויז'נר מחליף את האות "א" במילה "אמת" באות "ב" (הזזה של 1) האות "מ" באות "ס" (הזזה של 2 אותיות) ואילו "ת" תוחלף באות "ג" (הזזה של 3 אותיות) ומתקבל "בסג". כדי להקל על תהליך ההצפנה והפענוח, ניתן להכין טבלה של כל ההיסטים האפשריים (ראו ריבוע ויז'נר בתמונה). ישנן גרסאות נוספות של צופן ויז'נר הבסיסי המתואר לעיל, בהן: צופן ויז'נר מורכב – צופן זה משתמש בפונקציית מיפוי מורכבת יותר מהמתואר לעיל והיא: c i = m i + ( k i 1 + k i 2 + ⋯ + k i r ) mod s {\displaystyle c_{i}=m_{i}+(k_{i}^{1}+k_{i}^{2}+\cdots +k_{i}^{r}){\bmod {s}}} . כל אחד מהמפתחות k j {\displaystyle k^{j}} הוא בעל מחזוריות t j {\displaystyle t_{j}} שונה (הציון התחתי i {\displaystyle i} מייצג את האות ה־ i {\displaystyle i} של המפתח k j {\displaystyle k^{j}} ). צופן זה הוא בעצם יישום רציף של r {\displaystyle r} צפני ויז'נר פשוטים. המחזוריות של צופן זה היא המכנה המשותף של t 1 , … , t r {\displaystyle t_{1},\ldots ,t_{r}} מחזורי צופן ויזנ'ר פשוטים. צופן ביופורט (Beaufort) – דומה לצופן ויזנ'ר הפשוט אולם משתמש בפונקציית המיפוי c i = k i − m i mod s {\displaystyle c_{i}=k_{i}-m_{i}{\bmod {s}}} . ויז'נר מעורב – הוא שילוב של צופן ויז'נר הפשוט עם פונקציית החלפה (תמורה) לא בהכרח פונקציית הזזה אלפביתית. השילוב יכול להתבצע בשני אופנים הראשון שילוב מאוחר: c i = e ( m i ) + k i mod s {\displaystyle c_{i}=e(m_{i})+k_{i}{\bmod {s}}} עם מיפוי הופכי לפענוח: m i = e − 1 ( c i − k i ) mod s {\displaystyle m_{i}=e^{-1}(c_{i}-k_{i}){\bmod {s}}} . הפונקציה e i {\displaystyle e_{i}} היא תמורה כלשהי. השני הוא שילוב מוקדם: c i = e ( m i + k i mod s ) {\displaystyle c_{i}=e(m_{i}+k_{i}{\bmod {s}})} , כאשר המיפוי ההופכי הוא m i = e − 1 ( c i ) − k i mod s {\displaystyle m_{i}=e^{-1}(c_{i})-k_{i}{\bmod {s}}} . ספר־צופן (Running key) – צופן הדומה לצופן ויזנ'ר, רק שבצופן זה אורך המפתח k {\displaystyle k} זהה לאורך המסר. מפתח ההצפנה יכול להיות קטע טקסט מתוך ספר כלשהו ומכאן שמו. אם נאמר, לדוגמה, שמגילת העצמאות היא המפתח, אז המפתח יהיה ב, א, ר, צ, י, ש, ר, א, ל, ק, מ, וכן הלאה עד שאורך המפתח יהיה באורך המסר. ספר צופן ניתן לחיזוק על ידי הצפנה חוזרת של המסר בעזרת מספר מפתחות שהם קטעי טקסט שונים. אם חוזרים על תהליך זה כארבע פעמים מטשטשים את יתירות השפה באופן כזה שהצופן המתקבל מתקרב באיכותו לפנקס חד-פעמי. מפתח עצמי (Auto-key) – צופן ויז'נר מסוג זה מיושם בעזרת מפתח ראשוני k {\displaystyle k} שלאחר השימוש הראשוני בו, המסר עצמו משמש כמפתח הצפנה להצפנת יתר אותיות המסר בעזרת פונקציה: c i = ( m i + m i − t ) mod s {\displaystyle c_{i}=(m_{i}+m_{i-t}){\bmod {s}}} . אף על פי שצופן ויז'נר אינו משמר תדירות אותיות, מבחינה קריפטוגרפית אינו בטוח לשימוש, כיוון שהוא חשוף לניתוח סטטיסטי. לפי תורת האינפורמציה, לכל שפה יתירות טבעית, כלומר אותיות המסר חוזרות על עצמן בתדירות שונה. יתירות מאפשרת ניתוח סטטיסטי של הצופן בהתאם לכללי היתירות של השפה הספציפית, למשל, האות "י" בשפה העברית אמורה לחזור על עצמה בתדירות גבוהה יותר מאשר האות "פ". ניתן להכין טבלת שכיחויות של אותיות האלפבית לשפה הנתונה, מתוך כמות נכבדה של טקסט רגיל ולפי זה לבצע ניתוח של הצופן, למשל, בשיטת קסיסקי. בשיטה זו מסתמכים על כך שכאשר המפתח קצר, הרי שבמסר ארוך אותיות מסוימות יוצפנו תחת מפתח זהה. הרעיון הוא למצוא נקודות בהן חוזר השימוש במפתח מסוים, כלומר מציאת אורך המפתח. זאת עושים על ידי דגימת מרחקים שבין קטעי טקסט מוצפן קצרים החוזרים על עצמם. מרחקים אלו מרמזים על אורך המפתח: ככל שהם קרובים יותר לאורך המפתח תדירותם עולה. כאשר נמצא אורך המפתח – הפיצוח קל: מחלקים את הצופן לבלוקים באורך המפתח ומפעילים ניתוח סטטיסטי פשוט על כל בלוק בנפרד. כל בלוק בנפרד יכיל תדירויות זהות לטקסט המקורי באופן שמאפשר ניחוש אותיות רבות וחשיפת המסר כולו בקלות רבה. אף על פי ששיטת קסיסקי לא תועיל כנגד ספר־צופן המתואר לעיל (בשל המפתח הארוך), צופן זה חשוף גם הוא להתקפה המבוססת על חוסר איזון סטטיסטי בטקסט הצופן. אם מפתח ההצפנה עצמו סובל מיתירות מסוימת כגון אם הוא טקסט מתוך ספר, ייתכנו מופעים תדירים של קטעי טקסט מוצפן החוזרים על עצמם, שמצביעים על כך שהוצפנו תחת אות בעלת תדירות גבוהה בטקסט המפתח. ככל שכמות הטקסט המוצפן גדולה יותר, עולים סיכויי ההתקפה. ניתן להכין טבלאות שכיחויות המבוססות על שפת טקסט המפתח, בעזרתן לבצע ניתוח סטטיסטי בשיטה המיוחסת לויליאם פרידמן, שפענח בדרך זו את הצופן היפני "PURPLE". צופן ויז'נר נחשב במשך שנים לצופן בלתי ניתן לפיצוח, אך בסופו של דבר פוצח על ידי צ'ארלס בבג' בשנת 1845. זאת בשל חולשתו העיקרית – אורך המפתח. אפשר לפתור בעיה זו על ידי שימוש במפתח חד־פעמי באורך הרצוי. כגון ספר שבו רצף פסקאות חסרות משמעות. כל הודעה מוצפנת בעזרת הפסקה הבאה בספר ואורך ההודעה לעולם לא יעלה על אורך הפסקה. במקרה כזה הצופן בעצם הופך לפנקס חד פעמי בתנאי שפסקאות הצופן נבחרו באופן אקראי לחלוטין. בהינתן הודעה מוצפנת אין דרך לדעת מה הייתה ההודעה המקורית, שכן בהסתברות שווה כל הודעה באורך המתאים יכולה להיות המקור. הבעיה בשיטה זו היא הצורך בהכנת ספר צופן ובהעברת עותק ממנו מראש לצד המקבל. אם ייפול הספר לידי צד שלישי, יוכל לפענח בקלות את כל המסרים שהוצפנו תחתיו. במסרים ארוכים מאוד יעילות הספר הופכת למסורבלת ופחות מעשית. ליאור ויצהנדלר, המפצחים: צופן ויז'נר, במדור "שאל את המומחה" באתר של מכון דוידסון לחינוך מדעי, 19 ביולי 2022 הצפנה במאות ה־16 וה־17 מאתר ירחון Cryptologia. דף אינטרנט המאפשר הצפנה ופענוח לפי צופן ויז'נר בעברית. topic/Vernam-Vigenere-cipher צופן ויז'נר, באתר אנציקלופדיה בריטניקה (באנגלית) בכל החלפה של אות בודדת, מחליפים בשיטה של צופן חד־אלפביתי. אולם המסר כולו משתמש בכמה מפתחות במקביל, מה שמקשה על פיענוח הצופן היינו האות הראושנה במסר מוחלפת לפי המפתח הראשון, האות השנייה לפי המשתח השני, וכן הלאה, עד שנגמרים המפתחות, ואז חוזרים למפתח הראשון Franksen, O. I. (1985) Mr. Babbage's Secret: The Tale of a Cipher—and APL. Prentice Hall