SAFER (צופן)
שיקולי פיתוח ומאפיינים כלליים

שם הצופן ניתן על ידי ג'יימס מסי שהיה ממפתחי IDEA והרעיונות ששולבו לראשונה ב-IDEA היוו מקור השראה ל-SAFER. התוספת SK בגרסאות המתקדמות היא ראשי התיבות Strengthened Key (מפתח מחוזק) והיא ניתנה בעקבות קריפטואנליזה שבוצעה על ידי לארס קנודסן שגילה שאם הצופן משמש בתצורת פונקציית גיבוב, בגלל "קיבעון" כלשהו של בתי המפתח אפשר למצוא התנגשויות בפחות מהזמן הדרוש בכוח גס. הוא הציע לשנות את התהליך כדי למנוע חולשה זו ובעקבות כך פותחה הגרסה SK. יש המפרשים בהלצה את ראשי התיבות SK כ-Stop Knudesen שהיא "עצה טובה לפיתוח כל צופן בלוקים".
העקרונות המובילים בפיתוח אלגוריתם SAFER במיוחד SAFER++‎ הם:
סגנון רשת החלפה-תמורה. למרות היתרון של רשת פייסטל בכך שאין צורך ליישם פונקציית פענוח, היתרון ברשת החלפה-תמורה שהיא מאפשרת פיזור או "אפקט מפולת" מהיר הרבה יותר. בנוסף בשיטה זו הפונקציה הפנימית לא צריכה להסתמך על תיבות החלפה ש"ניראות אקראיות" מה שמהווה מקור לחשש שמא הוחדרה בהן דלת אחורית כמו במקרה של DES. צופן SAFER משתמש ברשת של פונקציות החלפה/טרנספורמציה ליניארית הפיכות בעלות מבנה אלגברי בולט. הסגנון של SAFER נותן חופש רב יותר ביצירת אפקט מפולת מהיר במיוחד.
הצפנה ברמה של בתים. בכל גרסאות SAFER כל פעולות הצופן למעט כמה פעולות חד-פעמיות בתהליך ההכנה, מתבצעות בית לבית. עובדה זו מאפשרת שיפור ביצועים במיוחד בחומרה מוגבלת משאבים.
פעולות אלגבריות בשתי חבורות שונות. בשלב החיבור עם המפתח הקלט מחולק לשתי חבורות שונות, כאשר באחת מתבצע חיבור מודולו 256 ובשנייה חיבור XOR. בגלל אי-הליניאריות של שילוב הפעולות הללו (כי אסוציאטיביות נהרסת), מתקבל אפקט ערבוב גבוה שמחזק את הצופן נגד קריפטואנליזה דיפרנציאלית. בנוסף, חיבור המפתח לפני הסבב הראשון, שהוא בעצם המפתח המסופק על ידי המשתמש עם הטקסט הקריא, בהנחה שהמפתח נבחר באקראי, מניב מעין סודיות מושלמת כמו בפנקס חד-פעמי. זהו מאפיין רצוי שקיים בצפנים מודרניים רבים, לעיתים נקרא הלבנה.
שימוש בטבלאות החלפה הפיכות. השכבה האי-ליניארית של SAFER מורכבת מסדרה של פונקציות העלאה בחזקה ולוגריתמים מעל  \mathbb {F} _{256} שהן פעולות משלימות. מבנה זה ידוע בתכונות המתמטיות שלו, הוא מציע שקיפות מלאה כיוון שתיבות ההחלפה אינן אקראיות אלא הן פונקציה של הקלט וכן הוכח שבתנאים אילו השכבה זו מפיקה אי-ליניאריות מקסימלית.
פיזור הפיך באמצעות כפל מטריצות. בכל גרסאות SAFER שכבת הטרנספורמציה הליניארית הציגה נתונים מרשימים, פיזור מלא כמעט בתוך שלושה סבבים בטכניקה לא מסורתית שנקראת "פיזור אדמר" או התמרת פסבדו-אדמר (בקיצור PHT) על שם המתמטיקאי היהודי-צרפתי ז'אק אדמר. הרעיון הוא להכפיל את הבלוק במטריצה עם תכונות פיזור גבוהות כשכל הפעולות האריתמטיות הן בגבולות בתים (מודולו 256). בגרסת SAFER++‎ הפיזור אף שופר משמעותית כך שלא רק שהושג פיזור טוב יותר אלא גם ביעילות רבה יותר. הרעיון הוא שימוש ב-PHT בארבע נקודות ויישומו דורש רק שש פעולות חיבור או חיסור במקרה של הפענוח (כמתואר בתרשים להלן) בנוסף לתמורות קבועות נוספות שקיבלו את הכינוי "הפיזור הארמני" על שם ממציאיו, על פי עיקרון שהבית ה- i בקלט הופך לבית ה- j בפלט כאשר  i ו- j שקולים מודולו 4. הם הראו שבחירה זו משיגה פיזור אופטימלי והיא הפיכה.
סקלביליות. כל גרסאות SAFER הן בעלות סקלביליות גבוהה, כלומר אפשר ליישם גרסת מיני של הצופן למשל בגרסת שתי סיביות שבה הבית הוא כביכול באורך 2 סיביות, הבלוק באורך 32 סיביות וכל הפעולות האריתמטיות הן מודולו 4 או 5 בהתאמה. בגרסת 4 סיביות הבלוק באורך 64 סיביות והפעולות הן מודולו 16 ו-17 בהתאמה. אפשר ליישם את הצופן בגרסת "מקסי" עם בתים באורך של 16 סיביות אך יעילות הצופן יורדת בעקבות כך. גרסאות מיני שימושיות במיוחד לצורך קריפטואנליזה והתגלו יעילות במציאת חולשות ותיקונן.
תהליך הרחבת מפתח עם הטיה. תהליך הרחבת המפתח מביא בחשבון מפתחות חלשים (מפתחות בעלי תכונה מיוחדת כגון מפתח שמכיל הרבה אפסים, שגורמים לפלט הצופן להתנהג בצורה לא אקראית). ההטיה בתהליך הכנת המפתח מבטלת השפעות חיצוניות וגורמת למפתח המורחב להראות אקראי ללא תלות במפתח המסופק על ידי המשתמש. אף על פי שתוספת זו אינה קריטית היא חשובה במקרים מסוימים, בין היתר כאשר משתמשים בצופן כפונקציית גיבוב חסינת התנגשויות. לארס קנודסן הציע שני שיפורים שהוכנסו בגרסאות החדשות, האחד נקרא "תיבות בחירה" שמתנהגות כתמורות של בתי המפתח שנועדו לפתור את בעיית ה"קיבעון" שלהם לפני הוספת ההטיה והשני הוא הוספת בית זוגיות שהוא חיבור מודולו 2 של כל בתי המפתח.
מספר סבבים. ההתקפה הכי אפקטיבית נגד גרסאות SAFER לדעת המפתחים היא קריפטואנליזה דיפרנציאלית. התקפה זו מנצלת חולשות שנובעות מערבוב חלש של השכבה האי-ליניארית ולמספר הסבבים השפעה מכרעת על הצלחת ההתקפה. בגרסאות הראשונות מספר הסבבים היה נמוך (6 או 7 סבבים) בגרסת SAFER++‎ עם מפתח באורך 256 סיביות נקבעו עשרה סבבים מה שמספק שולי ביטחון גבוהים מאוד.
יעילות. הצופן פשוט, גמיש וקל ליישום. חסרונו הוא שפונקציית הפענוח שונה מפונקציית ההצפנה לא רק בסדר המפתחות. ביישום פורטבילי על פלטפורמת פנטיום 3 עם מפתח באורך 128 סיביות SAFER++‎ מצפינה בקצב של 40 מחזורי שעון לבית והכנת המפתח 145 מחזורי שעון לבית. עם מפתח 256 סיביות קצב ההצפנה 57 מחזורי שעון והכנת מפתח 202. צופן SAFER איטי מעט בהשוואה לצפנים ברמה של AES.
ביטחון. לדעת מפתחי הצופן לא קיימת קריפטואנליזה מוצלחת של SAFER++‎ במלוא הסבבים. בגרסאות הקודמות התגלו בעיות מינוריות שתוקנו כולן בגרסה האחרונה. כיוון שהגרסה האחרונה חדשה קריפטואנליזה שלה דלה יחסית. המפתחים הצהירו שלא קיימת הוכחה מתמטית לביטחון האלגוריתם במונחים של סיבוכיות חישובית, אך יש לציין שהדברים נכונים כמעט לגבי כל צופן בלוקים מודרני ידוע.