ב-20 במרץ 1995, במהלך שעת העומס ברכבת התחתית (סביבות שבע וחצי בבוקר), חמישה חברים מהכת אום שינריקיו נכנסו לרכבת התחתית שבידיהם שקיות עטופות בעיתון ובתוכם סארין נוזלי. כל תוקף אחז בשתי שקיות שביחד הכילו כליטר של סארין נוזלי.
עם שקיות הסארין ומטריות מחודדות בידיהם נכנסו המפגעים לרכבות התחתיות, כל אחד לרכבת אחרת. כל תוקף יצא מהרכבת שלו בתחנה אחרת, הפיל את השקית שלו, דקר אותה עם המטריה עד שנקרעה ויצא החוצה למפגע אחר אשר המתין לו במכונית מחוץ לתחנה. בינתיים הסארין דלף מהשקיות והתפשט ברחבי תחנות הרכבת ופגע בכל עובר אורח שבא במגע איתו. בטמפרטורת החדר סארין נוזלי מתאדה במהירות, לכן הסארין הנוזלי התאדה ופגע גם באנשים שרק נשמו אותו.
לאחר המתקפה.
ביום התקיפה האמבולנסים פינו 688 מטופלים לבתי חולים ועוד כמעט חמשת אלפים איש הגיעו לבתי החולים בדרכים אחרות. סך הכל טיפלו בתי החולים ב-5,510 אנשים - 17 מהם הוגדרו במצב אנוש, 37 במצב קשה ו-984 במצב בינוני עם בעיות ראייה שונות. השאר חוו רק התקף חרדה.
ב-2008 הממשלה היפנית העבירה חוק שקבע כי הנפגעים מהתקפת הגז זכאים לפיצויים מהמדינה משום שההתקפה הייתה מכוונת על הממשלה היפנית.
ב-27 בפברואר 2004, נשפט שוקו אסהארה למוות בתלייה, אך, עורכי דינו ערערו על פסק הדין לבית המשפט העליון. בית המשפט העליון דחה את החלטתו בנושא עד שהתקבל אישור פסיכיאטרי ששוקו כשיר לעמוד לדין. ב-27 במרץ 2007 דחה בית המשפט העליון את ערעורו של שוקו. פעמיים נוספת ניסו עורכי דינו של שוקו להגיש ערעור לבית המשפט העליון אך פעמיים הוא נדחה.
ב-27 בנובמבר 2004, תמו כל המשפטים של חברי כת (חוץ משל שוקו). מתוך 185 אנשים שנשפטו, 13 נשפטו למוות, 5 נשפטו למאסר עולם, 80 נשפטו לתקופות מאסר שונות, 87 נשפטו למאסר על תנאי, שני אנשים נקנסו ועוד חבר כת נמצא חף מפשע.
ב-6 ביולי 2018, הודיע משרד המשפטים היפני ששוקו ועוד שישה חברי כת אחרים שהיו מעורבים במתקפה נתלו מוקדם יותר באותו היום.
אזרח רוסי בשם דמיטרי סיגצ'יוב ניסה להביא לשחרור מבצעי המתקפה, אך הניסיון שלו בסופו של דבר לא יצא לפועל והוא חזר לרוסיה, בה נעצר.
בקריפטוגרפיה, FEAL (ראשי תיבות של Fast data Encipherment ALgorithm, בעברית: אלגוריתם הצפנת נתונים מהיר) כולל משפחה של צפני בלוקים במבנה פייסטל שהראשון שבהם הוצע כאלטרנטיבה לצופן DES והוא מהיר ממנו בתוכנה. הגרסה הראשונה פותחה ב-1987 על ידי אקירו שימיזו ושוי מיאגוטשי מתאגיד הטלגרף והטלפון של יפן (NTT). ב-1994 התקבל הצופן לתקן בין-לאומי ISO/IEC9979 וב-1999 נבחר לתקן ATM וכן נכלל בתקן יפני לכרטיסים חכמים ב-1998. בשל קריפטואנליזה שמעידה על חולשות הצופן אינו בשימוש כיום. NTT ממליצים להשתמש בצופן מדור חדש כמו קמליה.
קיימות מספר גרסאות של FEAL כולן במבנה פייסטל עם אותה פונקציית סבב פנימית אך עם מספר סבבים שונה או עם מפתח גדול יותר. הצופן מקבל בלוק קלט באורך 64 סיביות ומחזיר בלוק מוצפן באורך 64 סיביות. הגרסה הראשונה שכיום נקראת FEAL-4 משתמשת במפתח הצפנה באורך 64 סיביות וכוללת ארבעה סבבים של הפונקציה הפנימית. FEAL-8 מכיל שמונה סבבים עם אותו מפתח ואילו FEAL-NX מכילה מספר דינאמי של סבבים בהתאם לצורך כך ש-formula_1. (המספר המומלץ הוא formula_2) ואילו "X" מתייחס לאופציה של מפתח באורך 128 סיביות שנוספה בגרסה המאוחרת יותר.
ביטחון.
מאז שפורסם הפך FEAL ליעד מועדף מצד קריפטונאליסטים מרחבי העולם ופורסמו מחקרים רבים אודות החולשות שלו. כיום ידוע שהצופן אינו בטוח לשימוש כי הוא פגיע במיוחד למספר התקפות קריפטוגרפיות מעשיות ביניהן קריפטואנליזה דיפרנציאלית וקריפטואנליזה ליניארית. למעשה הצופן שימש כ"קטליזטור" במהלך פיתוח התקפות קריפטוגרפיות אילו. הקריפטואנליזה הדיפרנציאלית הומצאה בשביל לפצח את FEAL ובתוך כך התגלתה ככלי יעיל לניתוח צפנים אחרים. כל גרסאות צופן FEAL אינן מומלצות כיום לשימוש כלל והעניין בהן הוא אקדמי בלבד.
בתחילה התגלו בעיות בגרסה הראשונה של הצופן על ידי דן בואר ושון מרפי שגילו התקפות קריפוטאנליטיות הדורשות כמות מועטה של טקסטים גלויים נבחרים כדי לפצח את הצופן בקלות. ההתקפות שלהם מכילות אלמנטים דומים להתקפה הדיפרנציאלית שהתגלתה מאוחר יותר. ב-1998 ניסו מפתחי הצופן לפתור את הבעיה על ידי העלאת מספר הסבבים וכך נוצר FEAL-8 הכולל שמונה סבבים במקום ארבעה.
ב-1991 פרסמו אלי ביהם ועדי שמיר את ההתקפה הדיפרנציאלית שלהם על FEAL-8. אחריהם פורסמו עוד כמה התקפות מסוג זה שמצליחות לפצח את הצופן עם כמות יחסית קטנה של טקסטים גלויים נבחרים. בתגובה פותח FEAL-NX אך הסתבר שההתקפה הדיפרנציאלית של שמיר וביהם הייתה ישימה גם נגד הגרסה הזו שהיא החזקה ביותר שפותחה, ההתקפה שלהם יעילה מכוח גס כל עוד formula_3.
ב-1991 גילו טארדי וגילברט התקפה חדשה נגד גרסאות צופן FEAL שמסוגלת לפצח אותו בסיבוכיות טובה מכוח גס. למשל FEAL-8 ניתן בשיטה זו לשבירה עם formula_4 טקסטים גלויים נבחרים. מאוחר יותר פרסם מיצורו מצואי את ההתקפה הליניארית שמבוססת על רעיון זה המסוגלת לשבור את צופן FEAL-4 בתוך כחמש דקות עם שישה טקסטים גלויים ידועים. ב-1994 פורסמה התקפה ליניארית נגד FEAL-8 עם formula_5 טקסטים גלויים נבחרים. למעשה בעקבות התקפות אילו נסתם הגולל על FEAL והוא אינו בשימוש כיום כלל. NTT ממליצים להשתמש בקמליה במקומו.
חשיבות הצופן וההתקפות המתוארות היא בעיקר בלקח שאפשר להפיק מהם. זהו הצופן הראשון שפותח על ידי NTT ושימש יסוד ובסיס להתפתחות צפני בלוקים מודרניים חזקים יותר ועמידים יותר נגד קריפטואנליזה דיפרנציאלית וליניארית כמו E2 שהיה מהמועמדים לתקן AES ולא הגיע לגמר וקמליה שנחשב לצופן מודרני חזק.
פירוט מהלכי הצופן.
להלן תיאור צופן FEAL-NX כאשר formula_6. הוא מקבל מפתח באורך 64 או 128 סיביות לפי בחירת המשתמש ופועל על בלוק גלוי באורך 8 בתים. באופן כללי האלגוריתם מבצע שלושה מהלכים:
בשלב ההכנה הנקרא קדם-עיבוד, בלוק הטקסט הגלוי formula_7 מחולק לשני חצאים formula_8 באורך 32 סיביות כל אחד. תחילה מבצעים:
כלומר מחברים ב-XOR עם ארבעה תת-מפתחות מתאימים. כל תת-מפתח באורך 16 סיביות לכן כל מחצית מהבלוק מחוברת עם שני תת-מפתחות ואז
כאשר הסימן formula_11 מייצג בלוק המכיל 32 אפסים, הסימן formula_12 הוא XOR ו-formula_13 מייצג את תת-המפתחות מתהליך ההכנה המתואר להלן. המשמעות של המהלך הוא שהמחצית הימנית היא תוצאה של XOR עם המחצית השמאלית. לפעולת XOR עם אפסים אין השפעה לכן המחצית השמאלית נותרת ללא שינוי.
בשלב האיטרציה, הקלט formula_14 משלב ההכנה עובר עיבוד עם הפונקציה formula_15 בסך הכול formula_16 פעמים:
כאשר formula_19. הפונקציה formula_15 מתוארת להלן והפלט הוא התוצאה מהסבב האחרון formula_21.
בשלב הסיום, מחליפים בין החצאים של הפלט האחרון formula_22 ואז מחשבים את:
ולסיום מחברים עם חלקים מתאימים מהמפתח:
הטקסט המוצפן הוא formula_25.
אלגוריתם הפענוח.
תהליך הפענוח דומה, הקלט formula_26 מעובד תחילה על ידי:
ואז
לאחר מכן מבצעים formula_16 פעמים:
כדי לקבל את הטקסט המקורי תחילה מבצעים:
לסיום מחשבים את:
שימו לב שמחברים ארבעה תת-מפתחות כי תת-מפתח הוא באורך 16 סיביות ולכן נדרשים ארבעה כדי לחבר עם formula_14 שהוא באורך 64 סיביות (8 בתים).
תהליך הכנת המפתח.
void FEAL_Fk(byte *a, byte *b)
a[1] ^= a[0], a[2] ^= a[3];
byte t;
t = a[2] ^ b[0], a[1] = S1(a[1], t);
t = a[1] ^ b[1], a[2] = S0(a[2], t);
t = a[1] ^ b[2], a[0] = S0(a[0], t);
t = a[2] ^ b[3], a[3] = S1(a[3], t);
void FEAL_F(byte *a, byte *b, byte *e)
a[1] = (b[0] ^ b[1] ^ e[0]);
a[2] = (b[2] ^ b[3] ^ e[1]);
a[1] = S1(a[1], a[2]);
a[2] = S0(a[1], a[2]);
a[0] = S0(b[0], a[1]);
a[3] = S1(b[3], a[2]);
קוד C++ של הפונקציות הפנימיות formula_15 ו-formula_36
מהמפתח הסודי המסופק על ידי המשתמש מכינים formula_37 תת-מפתחות מסומנים formula_38 כל אחד באורך 16 סיביות (שני בתים), כאשר formula_16 מהם משמשים לצורך הפונקציה הפנימית, מפתח אחד לכל סבב ואילו 8 הנוספים משמשים לפעולת ההלבנה (חיבור ב-XOR), ארבעה מהם לפני האיטרציה של הפונקציה הפנימית וארבעה לאחריה. תחילה המפתח מחולק לשני חצאים formula_40 באורך 64 סיביות כל אחד.
את החצי הימני formula_41 מחלקים לשני חצאים formula_42 ומכינים סדרה של משתנים מקומיים בהתאם למספר הסבבים formula_43 בהם מציבים עבור formula_44:
formula_51 נמוך מ-formula_52 ו-formula_6 כאשר formula_16 זוגי.
את החצי השמאלי formula_55 מחלקים לשני חצאים formula_56 ומכינים משתנה מקומי ריק formula_57. את formula_13 כאשר formula_59 עד formula_60 מכינים עם formula_61 עד formula_62 כדלהלן:
formula_63 הוא משתנה מקומי המחולק לארבעה בתים formula_64.
פונקציות עזר.
הפונקציה formula_15 מגיעה בשתי גרסאות אחת עבור פונקציית הסבב הפנימית והשנייה עבור הכנת המפתח. הפונקציה formula_66 המשמשת לצורך פונקציית הסבב מקבלת שני פרמטרים הראשון באורך 32 סיביות והשני באורך 16 סיביות, כאשר formula_67 מחולק לארבעה בתים: formula_68 ו-formula_69 מחולק לשני בתים formula_70. פלט הפונקציה כמתואר בתרשים משמאל, הוא formula_71 כדלהלן:
הפונקציה formula_72 מקבלת שני פרמטרים באורך 32 סיביות כל אחד וכן תת-מפתח באורך 16 סיביות. הפרמטרים formula_73 מחולקים לבתים כך: formula_68 וכן formula_75 ואז הפונקציה מחשבת ומחזירה את ארבעת הערכים formula_76, כדלהלן: