צופן סימטרי
הגדרות ומוסכמות > ביטחון

מקובל שאורך המפתח צריך להיות לפחות כאורך הבלוק. השאלה מהו אורך בטוח היא שאלה מורכבת שאין לה תשובה חד משמעית, נכון לימינו מקובל בהנחה שלא תתגלה בזמן הקרוב טכנולוגיה חדשה ומהפכנית, אורך של 128 סיביות מספק מרווח ביטחון מניח את הדעת לכל צורך מעשי. יש לשים לב שאם המפתח קצר מדי הרי שהמתקיף עלול לנסות את כל האפשרויות של המפתח עד שהוא ימצא את המפתח הנכון. להתקפה בסגנון כזה קוראים התקפת כוח גס והשאיפה של מפתח האלגוריתם היא שהתקפת כוח גס לא תהיה יעילה במונחי מחשוב בכלים הקיימים כיום. כאשר מחשבים קוונטיים יהיו מעשיים יהיה צורך להכפיל את אורך המפתח כלומר לפחות 256 סיביות.
ההנחה הבסיסית היא שאיב (האויבת או המתחרה) מכירה את שיטת ההצפנה בה בחרו אליס ובוב לפרטי פרטים. הדבר היחידי שהיא אינה יודעת הוא מהו מפתח ההצפנה  k. עובדה זו מהווה עיקרון בסיסי בהצפנה מודרנית הנקרא עקרון קרקהופס שאומר בתמצית ש"ביטחון ההצפנה אינו תלוי בסודיות שיטת ההצפנה אלא אך ורק בסודיות המפתח". על מערכת הצפנה סימטרית להכיל את התכונות הבאות:
בהינתן מפתח הצפנה  k וטקסט גלוי  m כלשהם, אמור להיות קל לכל אדם לחשב את  c={\text{Enc}}_{k}(m).
בהינתן מפתח הצפנה  k וטקסט מוצפן  c כלשהו אמור להיות קל לכל אדם לחשב את  m={\text{Dec}}_{k}(c).
בהינתן אחד או יותר טקסטים מוצפנים  c_{1},c_{2},c_{3},... שהוצפנו עם המפתח  k, אמור להיות קשה מאוד לחשב את הטקסטים המקוריים המתאימים  m_{1},m_{2},m_{3},... או אפילו אחד מהם ללא ידיעת המפתח  k.
בהינתן טקסט מוצפן אחד או יותר  c_{1},c_{2},c_{3},... וטקסטים מקוריים מתאימים  m_{1},m_{2},m_{3},... כך שמתקיים  c_{1}={\text{Enc}}_{k}(m_{1}),c_{2}={\text{Enc}}_{k}(m_{2}),c_{3}={\text{Enc}}_{k}(m_{3}),... יהיה "מאוד קשה" לפענח טקסט מוצפן  c (שאינו נמנה עם רשימה זו) ללא ידיעת מפתח ההצפנה  k. תכונה זו נקראת ביטחון נגד התקפת גלוי-ידוע או התקפת גלוי-נבחר.
התכונה הראשונה והשנייה אומרות שבהינתן הפרמטרים הדרושים כולל הפרמטרים הסודיים, מערכת ההצפנה צריכה להיות ברורה וקלה לביצוע בזמן פולינומי. התכונה השלישית היא תכונת הסודיות העיקרית של כל מערכת הצפנה שאומרת שמערכת הצפנה חייבת לספק סודיות במובן שאמור להיות קשה מאוד לגלות מהו הטקסט המקורי לפי הטקסט המוצפן ללא ידיעת המפתח. בביטוי קשה מאוד מתכוונים באופן לא פורמלי שלא קיים אלגוריתם יעיל המאפשר לגלות את הטקסט הגלוי שהוצפן ללא ידיעת המפתח. התכונה הרביעית היא החשובה ביותר והיא מתייחסת למספר מודלים של הערכת ביטחון צופן סימטרי שמביאים בחשבון מצבים בהם למתקיפה, המתחרה (או מנתח הצופן) "יתרון" מסוים. לדוגמה בידי המתקיפה כמות מוגבלת של זוגות טקסטים גלויים וטקסטים מוצפנים המתאימים להם שהושגו באמצעים לא קריפטוגרפיים, למשל ייתכן על ידי חדירה למחשבו של הקורבן המכיל קבצים מוצפנים או הודעות דואר מוצפנות שבחלקם מצוי מידע קבוע שקל לנחשו כמו קובצי כותר. במודל אחר מניחים שלא רק שבידי המתקיפה איב זוגות טקסטים גלויים ומוצפנים, אלא שהיא יכולה לבחור את הטקסטים הגלויים שברצונה לראות את תוצאת הצפנתם, למשל נניח שלפני שפרצה למחשב היא שלחה לקורבן הודעות דואר כלשהן שאותן הקורבן הצפין ואחסן בדיסק הקשיח. המודל המחמיר ביותר נקרא עמידות נגד התקפת מוצפן-נבחר שמניח עוד כי המתקיפה מסוגלת לבחור טקסטים מוצפנים ולקבל בדרך כלשהי את מקורם הגלוי. המודל הזה אינו נפוץ במציאות אך יש לזכור שבדרך כלל התקשורת נעשית בין מחשבים ללא התערבות אנושית. אפשר לחשוב למשל על מכשיר נייד המצפין מסרים כקופסה שחורה המוגנת מפני חדירה ואותה המתקיפה רשאית להפעיל למשך פרק זמן. או שהמתקיפה הצליחה לחדור לשרת קבצים מוגן. הרעיון מאחורי מודלים אילו הוא שיהיה קל לנסח בצורה פורמלית את המושג ביטחון אלגוריתם הצפנה, להגדיר במדויק את היעדים של האלגוריתם בהתאם למידת האיום והסביבה בה הוא פועל.
התכונה הרביעית קשה להשגה והשאיפה בכל צופן סימטרי מודרני היא שיקיים תכונה זו. צופן ההחלפה המתואר לעיל הוא דוגמה קלאסית לצופן סימטרי המקיים את שלוש התכונות הראשונות אך לא את הרביעית. כיוון שאם ידוע למתקיף על זוגות מועטים של טקסטים מוצפנים והטקסטים המקוריים שהוצפנו ביכולתו לשבור את ההצפנה ולגלות את מפתח ההצפנה במאמץ מועט. הצפנה סימטרית הייתה והיא עדיין נושא מחקר חשוב בקריפטוגרפיה ולה היסטוריה עשירה. הצפנים הקלאסיים הם צפנים סימטריים. לדוגמה צופן ויז'נר בדוגמה לעיל הוא סימטרי. כל הצפנים הקלאסיים למעט פנקס חד-פעמי אינם בטוחים לשימוש מעשי כיום לאבטחת תעבורת האינטרנט. הסיבות הן, ההצפנה מבוצעת ברמה של אותיות ומילים לכן המפתח אינו אלא מחרוזת אותיות באורך מוגבל. מספר המפתחות האפשריים בשל כך קטן מאוד במונחים של ימינו, במיוחד לאור העובדה שמחשב ביתי רגיל מסוגל לנתח מיליוני אפשרויות בשנייה. שנית הטקסט המוצפן אינו לגמרי אקראי בגלל יתירות המפתח ויתירות הטקסט המקורי. מה שמאפשר ניתוח תדירויות השפה על מנת לנחש את הטקסט המקורי או את המפתח הסודי בהינתן טקסט מוצפן מועט בלבד.
צפנים מודרניים עוקפים את הבעיה על ידי הצפנה של בלוקים גדולים יותר בבת אחת. למשל צופן AES מצפין בלוק באורך 16 תווים (אליו מתייחסים כאל מספר שלם באורך 128 סיביות). בניגוד לצופן קלאסי כל אות בבלוק הקלט משפיעה על תוצאת ההצפנה של כל האותיות האחרות. כל בלוק קריא מניב בלוק מוצפן אקראי (על פניו) מתוך הטווח המקסימלי של  2^{128} בלוקים אפשריים, לכן כדי שניתוח סטטיסטי של תדירויות הבלוקים יהיה אפקטיבי יש צורך לנתח כמות עצומה של בלוקים ולכן זה לא מעשי.
כדי להבין למה רוב הסיכויים ש"גישה פשטנית" מדי להשגת הצפנה סימטרית בטוחה לא תצלח. נניח שנתון מספר ראשוני  p באורך 160 סיביות (בערך כחמישים ספרות עשרוניות) ונניח שמרחב הטקסט הקריא, הטקסט המוצפן והמפתח זהה. כלומר מספר שלם בטווח  [1,p-1]. בטרמינולוגיה אלגברית המספרים הם אלמנטים (איברים הפיכים) של השדה הראשוני  \mathbb {F} _{p}^{*}. אליס ובוב מסכימים ביניהם מראש על מפתח  k סודי משותף שהוא אלמנט אקראי כלשהו הנמוך מ- p ונניח שהם הסכימו על פונקציית הצפנה פשוטה בתכלית כדלקמן:
כאן הכוונה היא ש- {\text{Enc}}_{k}(m) הוא שלם ייחודי השקול ל- k\cdot m מודולו  p (ראו חשבון מודולרי). ופונקציית הפענוח המתאימה היא:
כאשר  k' הוא ההופכי הכפלי של  k (מודולו  p) כך שמתקיים  k\cdot k'\equiv 1{\text{ (mod }}p). את המפתח ההופכי אפשר לחשב בקלות באמצעות אלגוריתם אוקלידס המורחב.
על פניו נראה שלאיב תהיה בעיה קשה לפענח את הטקסט המוצפן ללא ידיעת המפתח, כיוון שקיימים  2^{160} אפשרויות למפתח ולכן התוצאה תראה כאילו אקראית לעיניה.
הניסיון לנחש את מפתח ההצפנה מתוך  2^{160} מפתחות אפשריים בלתי אפשרי בזמן סביר אפילו עם מיליון מחשבי על הפועלים במקביל. אבל מה יקרה אם איב הצליחה להניח ידה על טקסט קריא יחיד  m ועל טקסט מוצפן  c המתאים לו (מה שקרוי התקפת גלוי-ידוע או התקפת גלוי נבחר), היות שהפונקציה המתוארת היא פונקציה על העובדה הבאה נכונה:
כלומר איב הצליחה לחשב את המפתח הסודי מתוך הצפנה אחת בלבד. צריך לזכור, כשמפתחים אלגוריתם הצפנה תמיד מביאים בחשבון שחלק מהטקסט שהוצפן יתגלה בדרך כלשהי לא בהכרח על ידי שבירת האלגוריתם, אלא על ידי גנבה או ציתות. לכן ההנחה שאיב הצליחה להשיג טקסט גלוי וטקסט מוצפן המתאים לו היא הנחה ריאלית שחובה להתייחס אליה.
קל לראות שהצופן הזה מקיים את שלוש התכונות הראשונות אך לא את הרביעית. אם מסירים את החשבון המודולרי עם  p וההצפנה הייתה פשוט הכפלה בשלם כלשהו  k ואילו הפענוח היה פשוט חילוק ב- k אז גם התכונה השלישית לא הייתה מתקיימת. בגלל העובדה שנכון שניסיון לפענח טקסט מוצפן אחד ללא ידיעת המפתח זו משימה קשה, אך בהינתן מספר טקסטים מוצפנים המשימה יותר קלה מפני שבסבירות גבוהה המחלק המשותף המקסימלי שלהם עלול להיות המפתח הסודי עצמו או כפולה שלו. זו אינדיקציה טובה למה צמצום מודולרי מניב אפקט "ערבוב" מצוין שמשמיד תכונות מסוימות כמו התחלקות אך לחלוטין לא מספיק כדי להבטיח סודיות טובה בסטנדרטים של ימינו.
גישה אחרת היא להשתמש בחיבור מודולו  p במקום כפל שהוא פשוט ויעיל יותר במחשב כי הוא דורש פחות פקודות מכונה. למשל:
אם  p=26 שזה מספר האותיות באלפבית האנגלי, הביטוי הזה בעצם מתאר צופן הזזה שהוא לא יותר מאשר פונקציית חיבור פשוטה לפי היסט קבוע או משתנה. זו רק דרך אחת להציג את אותו הצופן. אם למשל המפתח קבוע נניח  k=3 מתקבל צופן קיסר.
גם אם משלבים את שתי השיטות חיבור וכפל יחד, למשל אם נתונים שני מפתחות  k_{1},k_{2} ומבצעים:
עדיין הצופן אינו מספק ביטחון ראוי במונחים של ימינו ואינו עונה להגדרה הרביעית של צופן סימטרי בטוח תחת המודלים המתוארים. הסיבות לכך הן, ראשית מספר ההיסטים או ההזזות מוגבל לכמות האותיות באלפבית, מספר זה נמוך מאוד בסטנדרטים של ימינו, למחשב ביתי ייקח מספר מילי שניות לחשב את כל האפשרויות. מלבד זאת, היות שכל אות מוצפנת בנפרד ללא תלות באחרות, שכיחות האותיות לפי אופי השפה שבה נכתב הטקסט הגלוי נשמר בחלקו גם בטקסט המוצפן, מה שמאפשר ניתוח תדירויות על מנת לחשוף את המפתח תוך שימוש בכלים סטטיסטיים.
דרך מהירה יותר מחיבור במחשב היא XOR המסומן כאן באמצעות  \oplus . לדוגמה:
העדפת אופרטור זה על פני אופרטורים אחרים כמו AND או OR שגם הם יעילים במחשב, נובעת מהעובדה שמלבד היותו יעיל הוא מכיל את התכונה החשובה שהוא משמר את אקראיות התוצאה גם אם רק אחד משני האופרנדים אקראי. שיטה זו נחשבת להצפנה הסימטרית המהירה ביותר והיא בטוחה כל עוד המפתח קשה לניחוש. אם המפתח נבחר באקראי והוא באורך המסר ונוצל רק פעם אחת מתקבל פנקס חד-פעמי.