הפונקציות formula_77 ו-formula_78 מוגדרות כדלהלן:
כאשר formula_79 ו-formula_80 הם בתים והפונקציה ROT2 היא הזזה מעגלית לשמאל שתי סיביות, לדוגמה בהינתן formula_81 ו-formula_82 אז formula_83 וכן formula_84 בבסיס בינארי.
קוד לדוגמה.
void FEAL_keygen(byte *k, byte *e, uint r)
byte a[4], b[4], d[4], kr1[4], kr2[4], t, s[4];
for (uint i = 0; i &lt; 4; i++) {
a[i] = k[i], b[i] = k[i + 4];
kr1[i] = k[i + 8], kr2[i] = k[i + 12];
d[i] = 0;
for (uint i = 0; i &lt; r + 8; i += 2) {
for (uint j = 0; j &lt; 4; j++) {
s[j] = b[j];
if ((i / 2) % 3 == 0) {
s[j] ^= (kr1[j] ^ kr2[j]);
else if ((i / 2) % 3 == 1) {
s[j] ^= kr1[j];
else {
s[j] ^= kr2[j];
s[j] ^= d[j];
d[j] = a[j]; /* for next steps */
FEAL_Fk(a, s);
for (uint j = 0; j &lt; 4; j++) {
e[2 * i + j] = a[j];
for (uint j = 0; j &lt; 4; j++) {
t = a[j];
a[j] = b[j], b[j] = t;
void FEAL_encrypt(byte *p, uint r, byte *e, byte *c)
byte a[4], b[4], t, s[4];
for (uint j = 0; j &lt; 4; j++) {
a[j] = p[j] ^ e[2 * r + j];
b[j] = p[j + 4] ^ e[2 * r + j + 4] ^ a[j];
for (uint i = 0; i &lt; r; i++) {
FEAL_F(s, b, e + 2 * i);
for (uint j = 0; j &lt; 4; j++) {
a[j] ^= s[j];
for (uint j = 0; j &lt; 4; j++) {
t = a[j];
a[j] = b[j], b[j] = t;
for (uint j = 0; j &lt; 4; j++) {
a[j] ^= b[j];
for (uint j = 0; j &lt; 4; j++) {
c[j] = (b[j] ^ e[2 * r + j + 8]);
c[j + 4] = (a[j] ^ e[2 * r + j + 12]);
void FEAL_decrypt(byte *c, uint r, byte *e, byte *p)
byte a[4], b[4], t, s[4];
for (uint j = 0; j &lt; 4; j++) {
a[j] = c[j] ^ e[2 * r + j + 8];
b[j] = c[j + 4] ^ e[2 * r + j + 12] ^ a[j];
for (uint i = 0; i &lt; r; i++) {
FEAL_F(s, b, e + 2 * (r - 1 - i));
for (uint j = 0; j &lt; 4; j++) {
a[j] ^= s[j];
for (uint j = 0; j &lt; 4; j++) {
t = a[j];
a[j] = b[j], b[j] = t;
for (uint j = 0; j &lt; 4; j++) {
a[j] ^= b[j];
for (uint j = 0; j &lt; 4; j++) {
p[j] = (b[j] ^ e[2 * r + j]);
p[j + 4] = (a[j] ^ e[2 * r + j + 4]);
קריפטואנליזה דיפרנציאלית של FEAL-4.
קריפטואנליזה דיפרנציאלית פועלת לפי מודל התקפת גלוי-נבחר, כלומר המתקיף רשאי לבחור זוגות של טקסטים גלויים וטקסטים מוצפנים המתאימים להם שהוצפנו עם מפתח שאינו ידוע לו ותפקידו הוא לגלות את המפתח הסודי ששימש להצפנתם. המתקיף בוחר את הטקסטים באופן כזה שהדיפרנציאל (ההפרש) שלהם עונה על "מאפיין" מסוים המתאים לצורך ההתקפה. כאן הדיפרנציאל הוא מעל פעולת XOR ולכן הדברים נעשים פשוטים יותר כי בגלל התכונה הידועה שאם מבצעים XOR בין שני טקסטים מוצפנים שהוצפנו עם אותו קטע מהמפתח למעשה מבטלים את השפעת המפתח כאילו לא היה קיים (ראו פנקס חד-פעמי). במקרה של FEAL-4 התגלתה עובדה מעניינת: נתונה הפונקציה הפנימית של הצופן formula_85, עבור כל זוג טקסטים formula_86 ו-formula_87 אם formula_88 (בבסיס הקסדצימלי) אז מתקיים formula_89. למרבה ההפתעה זהו דיפרנציאל בעל הסתברות של 1 שלא קשה לחשב והוא משמש לשבירת הצופן.
FEAL-4 זהה לתיאור FEAL-XN למעט העובדה שהפונקציה הפנימית מבוצעת רק 4 פעמים ותהליך הכנת מפתח שונה. אפשר להציג את הצופן בכמה דרכים, אולם לצורך הקריפטואנליזה הדיפרנציאלית שלו הוא מוצג כאן בדרך קצת שונה מהקודמת (קל להוכיח ששתיהן למעשה שקולות). המפתח מחולק לשישה תת-מפתחות באורך 32 סיביות כל אחד (במקום 12 תת-מפתחות באורך 16 סיביות בתיאור המקורי). אפשר להתעלם מתהליך הכנת המפתח כולו כי ההתקפה מתמקדת בשחזור תת-המפתחות ואם מצליחים לנחש אותם אז אפשר לשחזר את המפתח הסודי בקלות. פונקציית הסבב הפנימית formula_85 מקבלת ארבעה בתים formula_91 ומחזירה ארבעה בתים formula_92, היא עושה שימוש בפונקציות formula_77 ו-formula_78 המתוארות לעיל והיא נראית כך:
לצורך ההתקפה המתקיף בוחר טקסט גלוי אקראי formula_95 ומחשב את הטקסט הגלוי formula_96 המקיים formula_97 וכן מניחים (לפי הגדרת מודל ההתקפה) שהמתקיף השיג את הטקסטים המוצפנים המתאימים להם formula_98 ו-formula_99 בהתאמה ואז הוא מחשב את הדיפרנציאלים שלהם formula_100 וכן formula_101 וכן מחשב את הדיפרנציאלים של כל ערכי הביניים של הצופן המתקבלים משני הטקסטים שהוצפנו formula_95 ו-formula_96 ומה שמתקבל מופיע בתרשים משמאל. העובדה שהמפתח לא מופיע בתרשים אינה טעות, כיוון שמדובר על דיפרנציאל של שני טקסטים שהוצפנו עם אותו מפתח לכן אפשר להתעלם ממנו כרגע. הדיפרנציאל האמור יחד עם הטקסטים הידועים עוזר לגלות את המפתח בשלב הבא של ההתקפה. אם מנסים לנוע בכיוון ההפוך בשיטת היפגשות באמצע, כלומר מנסים לחשב את ערכי הביניים מהטקסט המוצפן כלפי מעלה, רואים שיש אפשרות להשיג את הקלט והפלט לפונקציה הפנימית formula_85 במהלך האחרון של הצופן. כי formula_98 ו-formula_99 ידועים וכן אפשר לחשב את הדפירנציאלים formula_107 כך שמתקיים formula_108 וכן formula_109 מה שמאפשר לחשב את formula_110. היות שהטקסט המוצפן ידוע מתקבל formula_111.
עם כל המידע הזה אפשר לפצח את הצופן תחילה על ידי ניחוש תת-המפתח השלישי formula_112. מחשבים את formula_113 ואז מחשבים את formula_114 ו-formula_115 (המתאימים ל-formula_98 ו-formula_99) אותם אפשר להשיג על ידי חישוב מהסוף להתחלה. היות ש-formula_112 הוא באורך 32 סיביות ישנם למעשה formula_119 ערכים אפשריים. אם נסמן ניחוש אחד ב-formula_120, אז בידיעת formula_114 אפשר לחשב את formula_122 ובידיעת formula_115 אפשר לחשב את formula_124 כך שיתקבל formula_125. אם המשוואה הזו מתקיימת אז הניחוש הצליח ו-formula_120 הוא "מועמד" מתאים ושומרים אותו. היות שיכולים להיות מועמדים רבים שמקיימים את התנאי האמור, יש צורך לבדוק נכונות מול זוגות טקסטים נוספים. אם בודקים לפחות עם ארבעה זוגות כאלה הסיכויים הם מאוד גבוהים שאפשר להגיע לניחוש מוצלח והוא יהיה יחיד. אם התנאי האמור לא מתקיים נפטרים מערך זה ומחפשים ערכים אחרים. פקטור העבודה לגילוי תת-מפתח אחד הוא ברמה של formula_119 שזה לא מהיר במיוחד, אבל כאן נעזרים במבנה הפנימי של הפונקציה formula_85 כדי להאיץ את החיפוש לכדי פקטור של formula_129. לצורך כך מגדירים תחילה פונקציה המקבלת ארבעה בתים ומחשבת formula_130. ההתקפה המשופרת לניחוש formula_112 פועלת בשני שלבים. תחילה עבור כל ערך אפשרי של formula_132 מחשבים את:
אם מתבוננים בהגדרה של formula_85 רואים שאם formula_135 אז מתקיים formula_136 כאשר המספרים מייצגים את 16 הסיביות האמצעיות החל מהסיבית השמינית (כאשר הספירה מתחילה מאפס) ועד הסיבית ה-23. אפשר להשתמש בעובדה זו כדי למצוא מועמדים עבור formula_137 ובכך למעשה מגלים 16 סיביות של formula_112. בשלב השני כל מועמד ששרד את שלב אחד נבדק שוב כך שבהינתן מועמד formula_132, מגרילים תחילה שני בתים formula_140 ומחשבים את formula_141 ואז מחשבים את formula_122 ו-formula_124 כמו בשלב אחד ובודקים אם מתקיים formula_144. בדרך זו לאחר בדיקה מקיפה עם מספר זוגות טקסטים ידועים אפשר לשחזר את תת-המפתח formula_112 או לפחות לנחש מספר קטן של מועמדים אפשריים ואז אפשר לעבור לשלב הבא של שחזור תת-המפתח formula_146 וכן formula_147 עד שמנחשים את כל המפתח. בכל שלב נעזרים בניחוש תת-המפתח מהשלב הקודם כדי לנחש את הקלט והפלט של הפונקציה הפנימית.
ההתקפה המתוארת מצליחה בפקטור של formula_129 בקירוב עם ארבעה טקסטים גלויים ידועים בלבד ואינה אורכת יותר ממספר שניות על מחשב פשוט כך שגרסת FEAL-4 אינה ראויה לשימוש כלל. ההתקפה הדיפרנציאלית הורחבה ויושמה נגד כל גרסאות FEAL ונמצא שבכולן היא מצליחה בפקטור עבודה שהוא נמוך מכוח גס, למעט גרסת FEAL-NX כאשר formula_149, אולם בשל העובדה שפגיעות הצופן להתקפה זו מעידה על פגם מהותי בתכנונו, השימוש בכל הגרסאות שלו נזנח עקב כך.
חואן מרטין מלדסנה
חואן מרטין מלדסנה (בספרדית: Juan Martín Maldacena; נולד ב-10 בספטמבר 1968) הוא פיזיקאי ארגנטינאי המתמחה בפיזיקה תאורטית, אשר ידוע בעיקר על פיתוח "העקרון ההולוגרפי של מלדסנה" אשר מהווה תאוריה שלמה לתיאור הכוח החזק. תאוריה זו משלבת בין הסברי הכרומודינמיקה הקוונטית לבין תאוריית המיתרים באמצעות תורת מיתרים של עשרה ממדים כאשר ממדי המרחב הם חמשת ממדי מרחב אנטי דה-סיטר . לפי התאוריה המרחב-זמן הארבע-ממדי הוא רק שפתו של המרחב דה סיטר, ואילו התהליכים הפיזיקליים מתרחשים בתוך המרחב, כך שניתן באמצעות ניתוח השפה להסיק על התהליכים התוך ממדיים.
ביוגרפיה.
מלדסנה נולד בבואנוס איירס שבארגנטינה, למד שנתיים באוניברסיטת בואנוס איירס עד 1988, המשיך את לימודיו בארגנטינה לעוד שלוש שנים ולאחר מכן עבר לאוניברסיטת פרינסטון שם עשה את עבודת הדוקטורט שלו בהנחיית הפיזיקאי קרטיס קאלאן אותה סיים בשנת 1996.
בשנת 1998 בעודו רק בן 29 כתב מאמר קצר ובו הציע, כי הכוח החזק ניתן לתיאור באמצעות תורת מיתר בת 10 ממדים ובכך לפתור בעיות רבות שהופיעו כאשר ניסו לתאר את הכח החזק באמצעות תורת כבידה. הרעיון עבר בחינות תאורטיות רבות, נעשו חישובים מורכבים מאוד באמצעות תורת הכבידה, ואלו הושוו לחישובים המתקבלים מתורת השדות, ועל אף שהתאוריה לא הוכחה, גם לא נמצאה כל סתירה בינה לבין התאוריות המקובלות. לכן הצעתו של מלדסנה נעשתה פופולרית בקרב הקהילה המדעית.
אורט ביאליק
רוזנות נובלארה ובאניולו