צופן סימטרי

מתוך ויקיפדיה, האנציקלופדיה החופשית
קפיצה אל: ניווט, חיפוש
Symmetric.jpg

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

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

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

דוגמאות לצופנים סמיטריים מודרניים Twofish, Serpent, AES, Blowfish, CAST5, RC4, DES וכן IDEA.

צפנים סימטריים מודרניים[עריכת קוד מקור | עריכה]

ניתן לחלק את הצפנים סימטריים לשני סוגים עיקריים:

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

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

דוגמאות לפעולות אלגבריות שניתן לשלבן כדי להגיע לצופן סימטרי חזק:

  • רשת פייסטל מהצורה F:\{0,1\}^{n/2} \times {0,1}^N \mapsto \{0,1\}^{n/2}. היא טרנספורמציה גנרית שממירה כל פונקציה F לתמורה. כאשר הפונקציה F תלויה במפתח הצפנה. היתרון בשימוש בה הוא שהצופן יהיה בר פענוח לעיתים בשינוי קל בלבד של המפתח כמו סדר הבתים.
  • תיבות תמורה (P-box); קיצור של permutaion, ערבוב סיביות או שיכול ליניארי, באמצעות פונקציית תמורה קבועה או משתנה. פונקציה קבועה ניתנת לייצוג כטבלת תמורה.
  • תיבות החלפה (S-box); פונקציות פיזור לא לינאריות המיוצגות כפונקציות או טבלאות סטטיות או משתנות בהתאם למפתח. הוצגו לראשונה בצופן לוציפר של הורסט פייסטל. הן טובות במיוחד לסיכול התקפה דיפרנציאלית.
  • טרנספורמציה לינארית עם פעולות אריתמטיות על סיביות כמו XOR, AND. פעולה זו מכונה לעיתים הלבנה (whitening).
  • פונקציה חד-חד-ערכית ועל (bijection), במקרה שהיא פועלת על איברי הקבוצה עצמה נקראת תמורה.
  • הזזה מעגלית (cyclic shift או rotation) בסיביות שבה סיביות המשתנה מוסטות ימינה או שמאלה והסיבית הנפלטת מצד אחד מוחזרת מהצד השני.
  • פעולות אלגבריות בשדות סופיים כגון \mathbb{F}_{2^8}. כאשר פעולות כפל מבוצעות מודולו פולינום פרימיטיבי.
  • כפל מטריצות, שהן מיפוי ליניארי מעל וקטורים. הכפלה במטריצה בדרך כלל נעשית עם פולינום פרימיטיבי מתאים. מטריצה המתאימה במיוחד להצפנה נקראת MDS קיצור של maximum distance separable בה נעשה שימוש בצופן Twofish.
  • התמרת פסבדו-הדמר. מהצורה a'=(a+b)\mbox{ mod }2^n, b'=(a+2b)\mbox{ mod }2^n.
  • אריתמטיקה מודולרית; פעולות חיבור וכפל בחבורות מודולו n. כאשר n יכול להיות ראשוני.


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

יתרונות[עריכת קוד מקור | עריכה]

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

אנליזה של צופנים סימטריים[עריכת קוד מקור | עריכה]

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

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

להלן פירוט השיטות הידועות:

  • כוח גס (Brute Force): חיפוש ממצה של לפחות מחצית מטווח המפתחות האפשריים במקרה הממוצע עד למציאת המפתח שאיתו נעשה שימוש. כשמה, זוהי שיטה ברוטלית ולא יעילה אולם עם מספיק זמן וכוח חישוב מובטח בסופו של דבר תוצאות. סיבוכיותה אינה מעשית ברוב המקרים. למעשה ממציאי אלגוריתמים סימטריים שואפים כי האלגוריתם שלהם יהיה טוב עד כי רק כוח גס מסוגל לפצחו. הוכחה כי אלגוריתם מסוים ניתן לשבירה אך ורק באמצעות כח גס מהווה הוכחת איכות, כיוון שניתן לשלוט במידת בטיחותו על ידי בחירה מושכלת של גודל המפתח בסיביות. לשם המחשה, כוח גס כנגד צופן DES מצריך סריקה של לפחות 2^{55} מפתחות במקרה הממוצע. עד 1998 שבירת צופן DES הייתה אפשרית רק על ידי חומרה ייעודית שעלותה יקרה ונמשכה בדרך כלל מספר ימים. ב-2008 פרסמה חברת SciEngines שרת ייעודי יחיד עם חומרה מותאמת, בעל תפוקה של 26 מיליארד מפתחות בשנייה, המסוגל לפרוץ את DES בפחות מיום אחד. ניתן ליישם כח גס גם באמצעות חישוב מבוזר, גיוס זמן בטלה של מעבדים על בסיס התנדבותי, הזמין כיום באמצעות רשת האינטרנט. ב-1999 נפרץ DES ב-23 שעות בלבד באמצעות 100,000 מחשבים ביתיים.
  • קריפטאנליזה לינארית: שיטת שבירת צופן המיוחסת לקריפטוגרף היפני מיצורו מצואי. בשיטה זו ניתן לפצח את DES ב- ניסיונות הצפנה בהינתן 2^{43} טקסטים מוצפנים שמקורם ידוע. קריפטאנליזה לינארית היא התקפת גלוי ידוע, המתמקדת בחיפוש אחר קירובים לינאריים היעילים ביותר המתאימים למספר ספציפי של סבבים בצופן המותקף, עם שיעור הצלחה גבוה מחצי, תוך ניצול חולשות בתיבות ההחלפה (S-box) של האלגוריתם. כל ביטוי כזה מאפשר לחלץ סיבית מפתח אחת באמצעות תהליך הסתברותי של חיפוש התאמות בכמות גדולה של טקסט מוצפן ומקור ידועים ובסופו של תהליך ניחוש המפתח כולו. למרות שזהו שיפור משמעותי לעומת כח גס, השיטה אינה יעילה עבור מחשב ממוצע בהתחשב בכמות הטקסט הדרושה.
  • קריפטאנליזה דיפרנציאלית: הומצאה על ידי אלי ביהם ועדי שמיר (מכון ויצמן למדע 1980)‏‏. שיטה רבת עוצמה לניתוח אלגוריתמים סימטריים מכל סוג כמעט, בה נבחנת מידת ההשפעה של הבדלים בקלט על פלט הצופן. בשיטה זו ניתן לפצח את DES ב-2^{43} ניסיונות, אף בלא ידיעת מקור הצופן. בשיטה זו נפרצו ב-1989 וב-1991 כל וריאציות צופן FEAL. הוכח גם שגרסאות מתקדמות יותר של האלגוריתם FEAL-N וכן FEAL-NX שפותחו עקב כך ניתנות לשבירה (עד 31 סבבים) בפחות מהזמן הדרוש לכוח גס. ובכך הקיץ הקץ על האלגוריתם.

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

עקרון קרקהופס[עריכת קוד מקור | עריכה]

בעבר נטו מפתחי אלגוריתמים קריפטוגרפיים לשמור בסוד את פרטי האלגוריתם. אולם כיום מקובל לאמץ את עקרון קרקהופס הקובע ששמירת אלגוריתם הצפנה בסוד אינה מהווה חלופה לבטיחותו ושמירתו בסוד לאורך זמן כמעט בלתי אפשרית. באנלוגיה למנעול צירופים, הסתמכות אך ורק על מנגנון נעילה סודי, אינה חכמה כיוון שאם נחשף המנגנון המנעול כולו הופך לחסר תועלת. מאידך אם התגלה צירוף סודי, יש צורך רק להחליף צירוף על מנת להבטיח סודיות, אין צורך בקניית מנעול חדש. גם בעת המודרנית הוכרזו מספר אלגוריתמי הצפנה כסודיים. אלגוריתם Skipjack שפותח על ידי NSA נשמר בסוד עד 1998. צופן זרם RC4 היה סוד מסחרי כשהומצא ב-1987 על ידי רונלד ריבסט במעבדות RSA. אולם בדרך כלשהי הצליח מישהו להנדס לאחור את האלגוריתם ופרטיו דלפו באופן אנונימי לרשת האינטרנט והפכו במהרה לנחלת הכלל.

ביקורת ציבורית[עריכת קוד מקור | עריכה]

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

נוהלי אבטחה[עריכת קוד מקור | עריכה]

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

בעיית הפצת מפתחות[עריכת קוד מקור | עריכה]

בכל צופן סימטרי, נגישות למפתח ההצפנה מצד גורם זר תאפשר לו לפענח את כל המסרים שהוצפנו עם מפתח זה. מסיבה זו בטיחות מערכת סימטרית תלויה בסודיות המפתח. הצורך בהעברת ובשמירת מפתחות ההצפנה בסוד לאורך זמן נקראת בעיית הפצת מפתחות (key distribution problem). הבעיה מחריפה ברשת מרובת משתמשים. אם כל משתמש מעוניין שתהיה לו יכולת להתקשר עם משתמש אחר באופן דיסקרטי מבלי שאף אחד יוכל להאזין, מספר המפתחות הסודיים שיהיה עליו לשתף יהיה גדול מאוד. לדוגמה ברשת של 15 משתתפים, כל אחד יזדקק לשמור בסוד לפחות 14 מפתחות ומספר המפתחות הכולל מגיע ל-210. ברשת של אלפי משתמשים הדבר הופך כמעט לבלתי אפשרי. בנוסף, כל משתמש יזדקק להפעיל אמצעים כלשהם להגנה על סודיות המפתחות שברשותו, אם באמצעים קריפטוגרפיים או אחרים כמו כספת.

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

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

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

קישורים חיצוניים[עריכת קוד מקור | עריכה]