SEA (צופן)

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

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

מוטיבציה

בצפנים סימטריים שהתפרסמו מאז תקן AES בדרך כלל נלקח בחשבון שקלול עלויות יישום מול ביצועים עם דגש על יעילות על מגוון רחב של פלטפורמות מחשוב כיעד משני. לעומת זאת קיימים צפנים מודרניים המתמקדים דווקא בסביבה בה עוצמת המחשוב מוגבלת והתפוקה נמוכה. המטרה היא בעיקר טכנולוגיות בית חכם כמו שליטה ובקרה מרחוק בתאורה, מיזוג אויר וטמפרטורה מטעמים של חסכון באנרגיה וידידותיות לסביבה. לשם כך קיימת רשת אינטרנט 0 שהיא רשת עמית לעמית איטית אך זולה ופשוטה, הפועלת בסביבה מוגבלת משאבים ומאפשרת לכל מכשיר להתקשר עם מכשיר אחר ישירות. כמו בכל רשת חובה להגן על התקשורת מפני גורמים עוינים או מתחרים. והדבר דורש סט כלים ייעודיים. הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \text{SEA}_{n,b}} הוצע כפתרון אפשרי להצפנה ואימות תעבורת הרשת במערכת כזו. כמו כן בשל זעירות הקוד מתאים גם לתיוג RFID ולסנסרורים אלחוטיים.

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

תיאור האלגוריתם

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

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

  • מתייחס לגודל מילה במערכת בה מיושם הצופן.
  • מתייחס לגודל הקלט בסיביות (צריך להיות כפולה של הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle 6b} ).
  • הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \textstyle n_b = \frac{n}{2b}} מתייחס למספר המילים בהסתעפות רשת פייסטל.
  • הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle n_r} הוא מספר החזרות של פונקציית ההצפנה הפנימית.

הפעולות בצופן הן ברמה הבסיסית ביותר הנתמכת בכל מעבד כיום. XOR, הזזה מעגלית לשמאל או לימין ברמת מילים או סיביות, חיבור מודולו הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle 2^b} ופונקציית החלפה לפי טבלה.

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

.

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

הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \boldsymbol{S:\mathbb{Z}_{2^b}^{n_b}\longrightarrow\mathbb{Z}_{2^b}^{n_b}:x\rightarrow x=S(x)\ \ \ \ \Leftrightarrow}}
הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \ \ \ \ x_{3i}=(x_{3i+2}\land x_{3i+1})\oplus x_{3i}} ,
הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \ \ \ \ x_{3i+1}=(x_{3i+2}\land x_{3i})\oplus x_{3i+1}} ,
הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \ \ \ \ x_{3i+2}=(x_{3i}\lor x_{3i+1})\oplus x_{3i+2}} , כאשר הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle 0\le i\le n_b/3-1} .

הסימנים ו-הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \land} מייצגים את וגם ואו.

הצפנה ופענוח

פונקציית ההצפנה הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle F_E} , פונקציית הפענוח הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle F_D} ופונקציית המפתח הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle F_K} מוגדרות כך:

הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \Leftrightarrow}
הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle L_{i+1}=R_i}
הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle [L_{i+1},R_{i+1}]=F_D(L_i,R_i,K_i)} הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \Leftrightarrow} הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle R_{i+1}=R^{-1}(L_i)\oplus r(S(R_i\boxminus K_i))}
הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle [KL_{i+1},KR_{i+1}]=F_K(KL_i,KR_i,C_i)} הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \Leftrightarrow} הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle KR_{i+1}=KL_i\oplus R(r(S(KR_i\boxplus C_i)))}
הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle KL_{i+1}=KR_i}

בפסאודו קוד הבא מומחש תהליך ההצפנה כולו. הפונקציה מקבלת את בלוק הטקסט הגלוי ומפתח סודי הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle K} ומייצרת את הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle C} , כאשר שלושתם באורך הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle n} סיביות וכל הפעולות בפונקציה מבוצעות ברמת מילים באורך הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle b} סיביות.

הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \boldsymbol{C=\mathbf{SEA}_{n,b}(P,K)}}
הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \ \ \ \ L_0\ \| \ R_0=P}
הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \ \ \ \ KL_0\ \| \ KR_0=K}
הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \ \ \ \ \text{For }i=1\text{ to }\textstyle\lfloor\frac{n_r}{2}\rfloor\text{ do: }}
הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \ \ \ \ \ \ \ \ \ \ [KL_i,KR_i]=F_K(KL_{i-1},KR_{i-1}, C(i))}
הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \ \ \ \ \text{Swap}\left(KL_{\textstyle\lfloor\frac{n_r}{2}\rfloor},KR_{\textstyle\lfloor\frac{n_r}{2}\rfloor}\right)}
הפענוח נכשל (שגיאת המרה. השרת ("https://wikimedia.org/api/rest_") השיב: "Cannot get mml. Server problem."): {\displaystyle \ \ \ \ {\text{For }}i=\textstyle \lfloor {\frac {n_{r}}{2}}\rfloor {\text{ to }}n_{r}-1{\text{ do:}}}
הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \ \ \ \ \ \ \ \ \ \ [KL_i,KR_i]=F_K(KL_{i-1},KR_{i-1},C(r-i))}
הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \ \ \ \ \text{For }i=1\text{ to }\textstyle\lfloor\frac{n_r}{2}\rfloor\text{ do: }}
הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \ \ \ \ \ \ \ \ \ \ [L_i,R_i]=F_E(L_{i-1},R_{i-1},KR_{i-1})}
הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \ \ \ \ \text{For }i=\textstyle\lfloor\frac{n_r}{2}\rfloor+1\text{ to }n_r\text{ do:}}
הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \ \ \ \ \ \ \ \ \ \ [L_i,R_i]=F_E(L_{i-1},R_{i-1},KL_{i-1})}
הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \ \ \ \ \text{Swap}(KL_{n_r-1},KR_{n_r-1})}
הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \}}

הסימן הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \|} מייצג שרשור. הפונקציה הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle r} היא הזזה מעגלית ברמת סיביות והפונקציה הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle R} היא הזזה מעגלית ברמת מילים. הפונקציה הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \text{Swap}(L,R)} פשוט מחליפה ערכים בין ו-הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle R} . פענוח מתבצע באופן זהה למעט הקריאה לפונקציה הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle F_D} . לבטחון מינימלי מספר הסבבים הרצוי הוא הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \textstyle\frac{3n}{4}+2\cdot(n_b+\lfloor b/2\rfloor)} וכן הוא צריך להיות אי זוגי. כאן ההנחה היא שגודל מילה הוא לפחות 8 סיביות. הקבועים הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle C(i)} המשמשים כמפתחות הצפנה לרשת פייסטל בשלב הכנת המפתח הוא וקטור של הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle n_b} מילים המאופסות כולן למעט המילה הכי פחות משמעותית (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.
Logo hamichlol 3.png
הערך באדיבות ויקיפדיה העברית, קרדיט,
רשימת התורמים
רישיון cc-by-sa 3.0