SEA (צופן)

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

SEA (ראשי תיבות של Scalable Encryption Algorithm), הוא צופן בלוקים סקלבילי פרמטרי בסגנון רשת פייסטל המותאם למערכות משובצות מחשב זעירות. SEA הוצג בספרד בוועידת 2006 CARDIS (ועידה שנתית בינלאומית לכרטיסים חכמים)[1][2].

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

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

צופן SEA פותח על ידי François-Xavier StandaertGilles PiretNeil GershenfeldJean-Jacques Quisquater כצופן פרמטרי גמיש שניתן להתאמה למצבים רבים כמו אופי הקלט, סוג מעבד או אורך המפתח. הוא מותאם להשגת ביצועים אופטימליים עם קוד מינימלי על כל מעבד והביטחון שלו הוא פונקציה של אורך המפתח שנבחר. הצופן ניחן בפשטות הן בהצפנה ופענוח והן בהכנת מפתח ההצפנה.

תיאור האלגוריתם[עריכת קוד מקור | עריכה]

פונקציית הסבב הפנימית עם פונקציית המפתח של צופן SEA

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

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

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

לצורך החלפה הצופן משתמש בטבלת החלפה 3x8 סיביות:

.

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

,
,
, כאשר .

הסימנים ו- מייצגים את וגם ואו.

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

פונקציית ההצפנה , פונקציית הפענוח ופונקציית המפתח מוגדרות כך:

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

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

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

צופן SEA מבוסס על רשת פייסטל שנחקרה על ידי רבים ונחשבת לבטוחה. והוא נחשב מבין הצפנים היעילם ביותר בחומרה עם פחות מ-2280 GE (שערים). זהו צופן חדש יחסית ולכן נכון לשנת 2017 אין עדיין קריפטואנליזה נרחבת שלו.

ראו גם[עריכת קוד מקור | עריכה]


הערות שוליים[עריכת קוד מקור | עריכה]

  1. ^ 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
  2. ^ 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.