צופן DES היה לצופן הראשון בקנה מידה גדול שהתבסס על רשת החלפה-תמורה לפי הפרדיגמה של קלוד שאנון, שהיא שילוב של הפעולות החלפה, תמורה וחיבור עם מפתח סודי במבנה הנקרא רשת פייסטל. זהו מבנה קריפטוגרפי הקרוי על שמו של הורסט פייסטל, יושם לראשונה בצופן לוציפר וידוע כמבנה בטוח. יתרונו הוא שהוא הופך כל פונקציה לא בהכרח הפיכה, לפרמוטציה. הפונקציה הפנימית של הצופן נחשבת לאינוולוציה, במובן שאם מפעילים את אותה הפונקציה פעמיים בזה אחר זה על אותו קלט מתקבל הקלט המקורי. לכן אפשר להשתמש בפונקציה אחת הן להצפנה והן לפענוח, מה שחוסך בשערים לוגיים ומקטין את נפח החומרה.
באופן כללי, מחלקים את בלוק הקלט לשני חצאים - ימין ושמאל בהתאמה, ובכל סבב מצפינים את החצי השמאלי עם תוצאת הפונקציה שמופעלת על החצי הימני יחד עם מפתח סודי נפרד. לאחר מכן שני החצאים מחליפים מקומות וחוזרים שוב על אותה פעולה. בכל סבב רק החצי השמאלי משתנה ואילו החצי הימני נותר ללא שינוי, כשהוא הופך לחצי השמאלי בסבב הבא וחוזר חלילה. בפענוח מפעילים את אותה הפונקציה אך משתמשים במפתח בסדר הפוך.
תיאור הצופן.
הקלט הוא בלוק טקסט קריא בגודל 64 סיביות ומפתח הצפנה סודי formula_1 בגודל 64 (בפועל 56) סיביות. באמצעות תהליך הכנת המפתח המתואר להלן, מרחיבים את המפתח ומחלקים אותו ל-16 מקטעים בני 48 סיביות כל אחד, כאשר כל מקטע משמש עבור סבב בודד. מכינים 8 תיבות החלפה formula_2 הנקראות בקיצור S-box. הן מייצגות אוסף של פונקציות לא-ליניאריות שמקבלות קלט באורך 6 סיביות ומחזירות פלט באורך 4 סיביות בהתאם לטבלת הערכים הקבועה המוצגת להלן.
מכינים "תיבת הרחבה" (formula_3 בתרשים) ו"תיבת תמורה" (formula_4 בתרשים), המייצגות פונקציות מיפוי לפי ערכים קבועים. התיבה E (קיצור של Expansion) היא תיבת תמורה/הרחבה, שתפקידה להכין את הקלט להחלפה בתיבות ההחלפה. היא מרחיבה את הקלט מ-32 סיביות ל-48 סיביות. 16 מתוך 32 סיביות הקלט מועתקות פעמיים למקומות שונים כמתואר בתרשים. למשל הסיבית במיקום הרביעי בקלט מועתקת למיקומים החמישי והשביעי בפלט. מכינים תיבת תמורה קבועה הנקראת P-box (קיצור של Permutation) שמשנה את סדר הסיביות של הפלט בסוף כל סבב תוך שמירה על גודלו. כזכור, היות שהצופן מיועד למימוש בחומרה, העתקת סיביות היא מלאכה קלה, זה רק עניין של חיווט.
בתחילת הצופן, לפני הפעלת הפונקציה הפנימית formula_5, מבצעים תמורה חד פעמית על כל סיביות הקלט באמצעות תיבת תמורה סטטית הנקראת formula_6 (Initial Permutation), ובסיום כל 16 הסבבים מעבירים את הפלט בתיבת התמורה ההופכית לה formula_7 (שתיהן מוצגות בתרשימים משמאל). לפעולה זו אין השפעה על ביטחון הצופן ומקובל להתעלם ממנה כשמנתחים אותו. הסיבה לתוספת זו כמו שיקולים אחרים שהנחו את מפתחי הצופן לא היו נהירים בעיקר בשל העובדה שהם נחשבו לסוד לאומי. לדברי דון קופרשמידט הסיבה לתוספת זו טכנית בלבד, בשל העובדה ש-DES פותח בחומרה והחיווט היה נוח בצורה זו. סדר הפעולות בכל הסבבים זהה. תחילה מחלקים את קלט האלגוריתם לשני חצאים formula_8 בהתאמה ובכל סבב מבצעים כדלהלן:
במבנה זה פעולת הפונקציה הפנימית formula_5 מתבצעת רק על מחצית הקלט (היינו 32 סיביות). כאשר המחצית הימנית משמשת כקלט לפונקציה והפלט שלה משמש להצפנת המחצית השמאלית בחיבור XOR. שימו לב שהמחצית הימנית formula_13 אינה מוצפנת אלא מועתקת כמו שהיא למחצית השמאלית של הסבב הבא. תפקידה הוא לשמש כמו מפתח הצפנה להצפנת המחצית השמאלית בכל סבב ולכן היא צריכה להישאר ללא שינוי כדי לאפשר פענוח לאחר מכן. formula_5 מורכבת מרשת החלפה-תמורה שהיא שילוב של שלוש פונקציות: הפונקציה formula_15 שממפה "ומגדילה" את הקלט לפלט של 48 סיביות יחד עם תיבות ההחלפה ותפקידן הוא לבצע פעולה אי-ליניארית על הקלט, התמורה formula_16 שתפקידה לפזר את הפלט והפונקציה השלישית שמחברת את הפלט עם חלק מהמפתח הסודי.
פירוט מהלכי הצופן.
וקטור בדיקה.
המסר הוא הטקסט " Now is the time for all" באורך 24 אותיות (בקידוד ASCII) ומפתח ההצפנה הוא המחרוזת בייצוג הקסדצימלי:
התוצאה היא הטקסטים הבאים בבסיס הקסדצימלי:
פענוח.
הפענוח מתבצע עם אותה פונקציה ועם אותו מפתח אך בסדר הפוך. כלומר בתהליך הרחבת המפתח לעיל מתחילים מהמפתח formula_84 ויורדים עד formula_85. הפעולות formula_48 מתחילת ההצפנה ו-formula_81 מסופה למעשה מבטלות אחת את השנייה כי הן פעולות הופכיות, לכן אפשר להתעלם מהן. מה שמותיר אותנו עם שני החצאים האחרונים formula_80 מהסבב האחרון של ההצפנה. כעת, מייד עם תחילת הלולאה הראשית בפענוח formula_89 (כזכור במעבר מסבב לסבב החצי הימני אינו משתנה אלא רק מחליף מקום עם החצי השמאלי) לכן הפעולה הבאה:
היא למעשה אינוולוציה והיא שקולה ל:
החלק השמאלי ביותר המצוי בסוגריים הוא בדיוק הפעולה מהסבב האחרון של ההצפנה ואילו הפעולה הבאה אחריה היא מהסבב הראשון של הפענוח. אפשר לראות ששתי הפעולות מבטלות אחת את השנייה. על כן לאחר הסבב הראשון למעשה חוזרים צעד אחד לאחור ומתקבלים החצאים formula_92 (מהסבב הקודם של ההצפנה). בסבב הבא מבצעים את אותה פעולה עם formula_93 וכן הלאה ובדרך זו משחזרים את יתר הסבבים.
תהליך הכנת המפתח.
לצופן DES דרושים 16 תת-מפתחות, כל אחד מהם באורך 48 סיביות ומתאים לסבב בודד (סך הכול 768 סיביות). להכנת המפתחות DES משתמש בשתי טבלאות סטטיות formula_94 ו-formula_95 (המוצגות בטבלאות הבאות). איתם מרחיבים את המפתח הסודי שמסופק על ידי המשתמש ל-16 תת-מפתחות. מתעלמים מהסיביות formula_96 (כל סיבית שמינית) הנחשבות לסיביות זוגיות. באמצעות הטבלה formula_94 מחלקים את 56 הסיביות האפקטיביות לשני משתנים formula_39 ו-formula_42 בני 28 סיביות כל אחד. מבצעים הזזה מעגלית לשמאל של סיביות המשתנים formula_39 ו-formula_42 בסיבית אחת או שתיים (בהתאם לערך התלוי במיקום הסיביות, עבור סבבים 1, 2, 9, 16 מזיזים ב-1 עבור היתר מזיזים ב-2) משתמשים בטבלה formula_95 כדי לאחד את סיביות המשתנים לבלוק מפתח בגודל 48 סיביות. וחוזרים על פעולה זו 16 פעמים עבור כל 16 הסבבים של הצופן.
מפתחות חלשים וחלשים למחצה.
על מנת שהצופן יצליח להסתיר היטב את הטקסט המקורי, תהליך הכנת המפתח מנסה לשוות למפתח המורחב מראה אקראי ככל האפשר. כבר ב-1973 התגלה שמפתחות הצפנה מסוימים עלולים לייצר מפתח מורחב בעל תבנית לא אקראית ניכרת שהתוצאה שלה בלתי צפויה. למשל אם המשתנה הפנימי C מכיל 28 אפסים והמשתנה D מכיל 28 אחדים ייווצר מצב שהצפנת DES תהיה זהה לפענוח DES עם אותו מפתח. כלומר:
לכן אם מצפינים טקסט כלשהו עם אחד מהמפתחות החלשים פעמיים מתקבל הטקסט המקורי. ישנם ארבעה מפתחות החלשים ב-DES:
כזכור, כל סיבית מפתח שמינית נקראת סיבית זוגיות ולמעשה הן אינן משתתפות כלל בהצפנה. אם סיבית הזוגיות אינה נבדקת גם מפתח שכולו אפסים או אחדים יתנהג באותו אופן.
מפתחות הצפנה "חלשים למחצה" הם מפתחות שגורמים למצב שבו המפתח המורחב המתקבל מוגבל לשני תת-מפתחות בלבד כשהם חוזרים על עצמם בזוגות, ולהם התכונה הבאה:
כלומר הצפנה עם מפתח אחד ואז הצפנה של התוצאה עם המפתח השני מחזירה את המקור. קיימים שישה זוגות של מפתחות DES חלשים למחצה והם:
תיבות ההחלפה (S-box).
תיבת ההחלפה הנקראת S-box (קיצור של Substitution box; ראה תרשים) מייצגת פונקציות החלפה אי-ליניאריות קבועות המחזירות ערכים מהטבלה על פי אינדקס שתלוי בקלט.
תיבות ההחלפה של DES הן מקור חוסנו; הפונקציות שהן מייצגות הן הפעולות האי-ליניאריות היחידות המופעלות על הקלט ואלמלא הן הצופן היה ניתן לפריצה בקלות.
בדיעבד מסתבר כי התיבות עוצבו באופן כזה שהצופן יהיה עמיד יחסית כנגד קריפטואנליזה דיפרנציאלית. עוד ידוע כי גם ה-NSA היה מעורב בתכנון תיבת ההחלפה של DES ואף שינה אחדים מן הערכים מנימוק לא ידוע. ההערכה המקובלת כיום היא שהשינויים נועדו לחזק את הצופן כנגד ההתקפה הדיפרנציאלית שהייתה ידועה להם ולמפתחי הצופן ב-IBM כבר אז.
מצבי הפעלה.
DES הוא דטרמיניסטי, ולכן הצפנה חוזרת של בלוקים זהים עם מפתח זהה תניב בלוק מוצפן זהה. עובדה זו עלולה להוות פתח להתקפה כנגד הצופן כי ניתן להיעזר בבלוקים זהים כדי לבצע ניתוח סטטיסטי של הצופן ולחלץ בדרך זו מידע מסוים אודות טקסט המקור.
הפתרון לכך הוא יישום האלגוריתם באחד ממצבי ההפעלה המבטלים את יתירות הצופן. במצב ההפעלה משרשרים בלוקי צופן באופן שכל בלוק של טקסט המקור עובר תחילה XOR עם תוצאת ההצפנה של הבלוק הקודם, כך ששני בלוקים של טקסט מקור זהים יובילו לפלט צופן שונה. לצורך הבלוק הראשון משתמשים במפתח נוסף המכונה וקטור אתחול (Initialization Vector) או IV שגודלו כגודל הבלוק, אותו מחברים ב-XOR עם בלוק המידע הראשון.
ביטחון.
הקריפטואנליזה הבולטת ביותר והראשונה נגד DES שסיבוכיותה טובה מעט יותר מכח גס, התגלתה על ידי אלי ביהם, כיום פרופסור בטכניון והמנחה שלו לדוקטורט עדי שמיר, כיום פרופסור במכון ויצמן למדע. הם פרסמו ב-1990 את עבודת הדוקטורט שלו שעסקה בקריפטואנליזה דיפרנציאלית – טכניקה רבת עוצמה שהתגלתה ככלי יעיל נגד אלגוריתמים סימטריים מודרניים רבים. אך קריפטואנליזה דיפרנציאלית מסוגלת לגלות מפתח הצפנה של DES עם formula_105 דגימות קלט-פלט נבחרות של האלגוריתם לפי מודל התקפת גלוי-נבחר שזה אינו מעשי.