SEA (צופן)

SEA (ראשי תיבות של Scalable Encryption Algorithm), הוא צופן בלוקים סקלבילי פרמטרי בסגנון רשת פייסטל המותאם למערכות משובצות מחשב זעירות. SEA הוצג בספרד בוועידת 2006 CARDIS (ועידה שנתית בינלאומית לכרטיסים חכמים). בצפנים סימטריים שהתפרסמו מאז תקן AES בדרך כלל נלקח בחשבון שקלול עלויות יישום מול ביצועים עם דגש על יעילות על מגוון רחב של פלטפורמות מחשוב כיעד משני. לעומת זאת קיימים צפנים מודרניים המתמקדים דווקא בסביבה בה עוצמת המחשוב מוגבלת והתפוקה נמוכה. המטרה היא בעיקר טכנולוגיות בית חכם כמו שליטה ובקרה מרחוק בתאורה, מיזוג אוויר וטמפרטורה מטעמים של חסכון באנרגיה וידידותיות לסביבה. לשם כך קיימת רשת אינטרנט 0 שהיא רשת עמית לעמית איטית אך זולה ופשוטה, הפועלת בסביבה מוגבלת משאבים ומאפשרת לכל מכשיר להתקשר עם מכשיר אחר ישירות. כמו בכל רשת חובה להגן על התקשורת מפני גורמים עוינים או מתחרים. והדבר דורש סט כלים ייעודיים. SEA n , b {\displaystyle {\text{SEA}}_{n,b}} הוצע כפתרון אפשרי להצפנה ואימות תעבורת הרשת במערכת כזו. כמו כן בשל זעירות הקוד מתאים גם לתיוג RFID ולסנסרורים אלחוטיים. צופן SEA פותח על ידי François-Xavier StandaertGilles PiretNeil GershenfeldJean-Jacques Quisquater כצופן פרמטרי גמיש שניתן להתאמה למצבים רבים כמו אופי הקלט, סוג מעבד או אורך המפתח. הוא מותאם להשגת ביצועים אופטימליים עם קוד מינימלי על כל מעבד והביטחון שלו הוא פונקציה של אורך המפתח שנבחר. הצופן ניחן בפשטות הן בהצפנה ופענוח והן בהכנת מפתח ההצפנה. הפרמטרים מתייחסים לאופן הפעלת הצופן במצבים שונים. גודל בלוק הקלט בסיביות, גודל מפתח הצפנה בסיביות ומספר סבבים משתנה. באופן כללי: b {\displaystyle b} מתייחס לגודל מילה במערכת בה מיושם הצופן. n {\displaystyle n} מתייחס לגודל הקלט בסיביות (צריך להיות כפולה של 6 b {\displaystyle 6b} ). n b = n 2 b {\displaystyle \textstyle n_{b}={\frac {n}{2b}}} מתייחס למספר המילים בהסתעפות רשת פייסטל. n r {\displaystyle n_{r}} הוא מספר החזרות של פונקציית ההצפנה הפנימית. הפעולות בצופן הן ברמה הבסיסית ביותר הנתמכת בכל מעבד כיום. XOR, הזזה מעגלית לשמאל או לימין ברמת מילים או סיביות, חיבור מודולו 2 b {\displaystyle 2^{b}} ופונקציית החלפה לפי טבלה. לצורך החלפה הצופן משתמש בטבלת החלפה 3x8 סיביות: S T = { 0 , 5 , 6 , 7 , 4 , 3 , 1 , 2 } {\displaystyle {\boldsymbol {S_{T}=\{0,5,6,7,4,3,1,2\}}}} . למען היעילות ההחלפה מתבצעת באופן רקורסיבי על כל שלוש מילות קלט כדלקמן: הסימנים ∨ {\displaystyle \lor } ו- ∧ {\displaystyle \land } מייצגים את וגם ואו. פונקציית ההצפנה F E {\displaystyle F_{E}} , פונקציית הפענוח F D {\displaystyle F_{D}} ופונקציית המפתח F K {\displaystyle F_{K}} מוגדרות כך: בפסאודו קוד הבא מומחש תהליך ההצפנה כולו. הפונקציה מקבלת את בלוק הטקסט הגלוי P {\displaystyle P} ומפתח סודי K {\displaystyle K} ומייצרת את C {\displaystyle C} , כאשר שלושתם באורך n {\displaystyle n} סיביות וכל הפעולות בפונקציה מבוצעות ברמת מילים באורך b {\displaystyle b} סיביות. הסימן ‖ {\displaystyle \|} מייצג שרשור. הפונקציה r {\displaystyle r} היא הזזה מעגלית ברמת סיביות והפונקציה R {\displaystyle R} היא הזזה מעגלית ברמת מילים. הפונקציה Swap ( L , R ) {\displaystyle {\text{Swap}}(L,R)} פשוט מחליפה ערכים בין L {\displaystyle L} ו- R {\displaystyle R} . פענוח מתבצע באופן זהה למעט הקריאה לפונקציה F D {\displaystyle F_{D}} . לביטחון מינימלי מספר הסבבים הרצוי הוא 3 n 4 + 2 ⋅ ( n b + ⌊ b / 2 ⌋ ) {\displaystyle \textstyle {\frac {3n}{4}}+2\cdot (n_{b}+\lfloor b/2\rfloor )} וכן הוא צריך להיות אי זוגי. כאן ההנחה היא שגודל מילה הוא לפחות 8 סיביות. הקבועים C ( i ) {\displaystyle C(i)} המשמשים כמפתחות הצפנה לרשת פייסטל בשלב הכנת המפתח הוא וקטור של n b {\displaystyle n_{b}} מילים המאופסות כולן למעט המילה הכי פחות משמעותית (LSW) המכילה את הערך i (מונה הסבב). צופן SEA מבוסס על רשת פייסטל שנחקרה על ידי רבים ונחשבת לבטוחה. והוא נחשב מבין הצפנים היעילם ביותר בחומרה עם פחות מ-2280 GE (שערים). זהו צופן חדש יחסית ולכן נכון לשנת 2017 אין עדיין קריפטואנליזה נרחבת שלו. צופן בלוקים AES Standaert FX., Piret G., Gershenfeld N., Quisquater JJ. (2006) SEA: A Scalable Encryption Algorithm for Small Embedded Applications. In: Domingo-Ferrer J., Posegga J., Schreckling D. (eds) Smart Card Research and Advanced Applications. CARDIS 2006. Lecture Notes in Computer Science, vol 3928. Springer, Berlin, Heidelberg F.-X. Standaert, G. Piret, N. Gershenfeld, and J.-J. Quisquater, "SEA: A Scalable Encryption Algorithm for Small Embedded Applications," in the Proceedings of CARDIS 2006, ser. LNCS, vol. 3928, Taragona, Spain, 2006, pp. 222–236.