KASUMI

KASUMI הוא צופן בלוקים שפותח ב-1999 על ידי 3GPP כתקן לאבטחת שיחה סלולרית מהדור השלישי בטכנולוגיות UMTS, GSM ו-GPRS. ב-UMTS, הצופן משמש בשני רבדים: באלגוריתם f8 להגנה על פרטיות שיחה סלולרית ובאלגוריתם f9 לאימות והבטחת שלמות השיחה. ב-GSM/GPRS הצופן מהווה חלק אינטגרלי מאלגוריתם A5/3 בתור מחולל זרם מפתח שנקרא KGCORE שהוא מצב הפעלה OFB. צופן KASUMI פותח על ידי SAGE שהוא חלק מגוף התקינה האירופאי ETSI. בשל לוח זמנים לחוץ הוחלט בעצה אחת עם TGS (הצוות הטכני של 3GPP) להסתמך על אלגוריתם קיים במקום לפתח אלגוריתם חדש והצופן MISTY1 של מיצובישי נבחר כבסיס. כדי להתאימו לחומרה בוצעו מספר שינויים וניתן לו השם KASUMI שהוא תרגום mist (ערפל) ליפנית. היתרון של KASUMI הוא שהוא מבוסס על צופן MISTY1 שפותח על בסיס תאורטי שלטענת המפתחים מספק ביטחון מוכח נגד קריפטואנליזה דיפרנציאלית וליניארית וכן שהוא ממוטב במיוחד לחומרה. ב-2001 פורסמה התקפה תאורטית טובה מכוח גס שנקראת התקפת דיפרנציאלים בלתי אפשריים נגד גרסה מצומצמת של MISTY הישימה גם נגד KASUMI, בשישה סבבים בסיבוכיות זמן של 2 100 {\displaystyle 2^{100}} ומקום בסדר גודל של 2 55 {\displaystyle 2^{55}} . התקפה יותר מעשית פורסמה על ידי Teruo Saito גם כן בשישה סבבים בזמן של 2 65.4 {\displaystyle 2^{65.4}} ועם 2 60 {\displaystyle 2^{60}} טקסטים. יש לזכור שב-KASUMI שמונה סבבים. ב-2005 פרסמו אור דונקלמן, אלי ביהם ונתן קלר מהטכניון התקפת מפתחות קשורים (related key) בשילוב עם התקפת בומרנג (סוג של התקפה דיפרנציאלית) נגד KASUMI שמסוגלת לשבור את הצופן בגרסה המלאה עם 2 76.1 {\displaystyle 2^{76.1}} הצפנות ועם כמות של 2 54.6 {\displaystyle 2^{54.6}} טקסטים נבחרים שהוצפנו עם 4 מפתחות קשורים. למרות שההתקפה תאורטית, היא סותרת את טענת המפתחים לגבי הוכחת ביטחון האלגוריתם. ב-2010 הציגו אותם חוקרים התקפה משופרת בהרבה שהייתה מספיק פרקטית עד שהצליחו להמחישה על מחשב ביתי בזמן של מספר שעות, אפילו עם גרסה לא ממוטבת של הצופן. למרות זאת החוקרים ציינו שההתקפה אינה מעשית נגד אלגוריתם A5/3 שבשימוש GSM בשל אופן מימושו. על כל פנים ההתקפה אינה אפשרית נגד MISTY, מה שמוכיח כי השינויים שביצעו מפתחי KASUMI השפיעו לרעה על ביטחון הצופן וזאת בניגוד לטענתם. KASUMI הוא צופן בלוקים בסגנון רשת פייסטל בשמונה סבבים. הקלט הוא בלוק דטה באורך 64 סיביות ומפתח הצפנה סודי באורך 128 סיביות והפלט הוא בלוק מוצפן באורך 64 סיביות. הצופן בנוי בצורה רקורסיבית. הפונקציה O = K A S U M I ( I ) K {\displaystyle {\boldsymbol {O=\mathbf {KASUMI} (I)_{K}}}} מבצעת כדלהלן: 1. תחילה בלוק הקלט I {\displaystyle {\boldsymbol {I}}} מחולק לשני חצאים L 0 , R 0 {\displaystyle {\boldsymbol {L_{0},R_{0}}}} באורך 32 סיביות כל אחד. 2. מפעילים את פונקציית הסבב f i {\displaystyle {\boldsymbol {f_{i}}}} על חצי השמאלי ומחליפים מקומות עם החצי הימני שמונה פעמים. דהיינו עבור 1 ≤ i ≤ 8 {\displaystyle {\boldsymbol {1\leq i\leq 8}}} מבצעים: R i = L i − 1 {\displaystyle {\boldsymbol {R_{i}=L_{i-1}}}} L i = R i − 1 ⊕ f i ( L i − 1 , R K i ) {\displaystyle {\boldsymbol {L_{i}=R_{i-1}\oplus f_{i}(L_{i-1},RK_{i})}}} 3. הפלט הוא O = ( L 8   ‖   R 8 ) {\displaystyle {\boldsymbol {O=(L_{8}\ \|\ R_{8})}}} . R K i {\displaystyle RK_{i}} הוא החלק המפתח המתאים לסבב i {\displaystyle i} (לפי הטבלה המופיעה להלן). הסמל ‖ {\displaystyle \|} מייצג שרשור והסמל ⊕ {\displaystyle \oplus } מייצג XOR. הפונקציה הראשית f i {\displaystyle f_{i}} מקבלת קלט I {\displaystyle I} באורך 32 סיביות וקטע מתאים מהמפתח המורחב (להלן) שנקרא "מפתח הסבב" ומחזירה את הפלט O {\displaystyle O} . מפתח הסבב R K i {\displaystyle RK_{i}} מורכב משלושה תת-מפתחות K L i , K O i , K I i {\displaystyle KL_{i},KO_{i},KI_{i}} הראשון באורך 32 סיביות ושני האחרים באורך 48 סיביות כל אחד. והיא משתמשת בשתי תת-שגרות F L {\displaystyle FL} ו- F O {\displaystyle FO} . כשהמפתח K L {\displaystyle KL} מועבר לפונקציה F L {\displaystyle FL} והמפתחות K O , K I {\displaystyle KO,KI} מועברים לפונקציה F O {\displaystyle FO} . פונקציית הסבב הראשית מופיעה בשתי צורות בהתאם לסבב זוגי או אי זוגי. עבור סבב זוגי היא בנויה כך: f i ( I , R K i ) = F L ( F O ( I , K L i ) , K O i , K I i ) {\displaystyle {\boldsymbol {f_{i}(I,RK_{i})}}=FL(FO(I,KL_{i}),KO_{i},KI_{i})} בסבב אי זוגי כך: f i ( I , R K i ) = F O ( F L ( I , K L i ) , K O i , K I i ) {\displaystyle {\boldsymbol {f_{i}(I,RK_{i})}}=FO(FL(I,KL_{i}),KO_{i},KI_{i})} כלומר בסבב זוגי הפונקציה F L {\displaystyle FL} מופעלת לאחר הפונקציה F O {\displaystyle FO} (כלומר הפלט של F O {\displaystyle FO} הופך לקלט של F L {\displaystyle FL} ) ובסבב אי זוגי ההפך. בהינתן הקלט I {\displaystyle I} באורך 32 סיביות ותת-מפתח K L i {\displaystyle KL_{i}} גם הוא באורך 32 סיביות, הפונקציה מחלקת תחילה את תת-המפתח לשני חצאים באורך 16 סיביות כל אחד, כך שמתקיים K L i = K L i , 1   ‖   K L i , 2 {\displaystyle KL_{i}=KL_{i,1}\ \|\ KL_{i,2}} ואת הקלט I {\displaystyle I} לשני חצאים כך שמתקיים I = L   ‖   R {\displaystyle I=L\ \|\ R} ומבצעת: R ′ = R ⊕ ROL ( L ∧ K L i , 1 ) {\displaystyle R'=R\oplus {\text{ROL}}(L\land KL_{i,1})} L ′ = L ⊕ ROL ( R ′ ∨ K L i , 2 ) {\displaystyle L'=L\oplus {\text{ROL}}(R'\lor KL_{i,2})} והפלט הוא ( L ′   ‖   R ′ ) {\displaystyle (L'\ \|\ R')} . הפונקציה ROL {\displaystyle {\text{ROL}}} היא הזזה מעגלית לשמאל סיבית אחת. הסמל ∧ {\displaystyle \land } מייצג AND והסמל ∨ {\displaystyle \lor } מייצג OR. בהינתן קלט I {\displaystyle I} באורך 32 סיביות ושני תת-מפתחות K O i , K I i {\displaystyle KO_{i},KI_{i}} באורך 48 סיביות כל אחד, הפונקציה מחלקת תחילה את הקלט לשני חצאים L 0 , R 0 {\displaystyle L_{0},R_{0}} ואת שני תת-המפתחות לשישה חלקים באורך 16 סיביות כל אחד K O i , 1 , K O i , 2 , K O i , 3 , K I i , 1 , K I i , 2 , K I i , 3 {\displaystyle KO_{i,1},KO_{i,2},KO_{i,3},KI_{i,1},KI_{i,2},KI_{i,3}} בהתאמה ומבצעת שלוש פעמים, עבור 1 ≤ j ≤ 3 {\displaystyle 1\leq j\leq 3} : R j = F I ( L j − 1 ⊕ K O i , j , K I i , j ) ⊕ R j − 1 {\displaystyle R_{j}=FI(L_{j-1}\oplus KO_{i,j},KI_{i,j})\oplus R_{j-1}} L j = R j − 1 {\displaystyle L_{j}=R_{j-1}} והפלט הוא ( L 3   ‖   R 3 ) {\displaystyle (L_{3}\ \|\ R_{3})} . בהינתן הקלט I {\displaystyle I} באורך 16 סיביות ותת-מפתח K I i , j {\displaystyle KI_{i,j}} הפונקציה מחלקת תחילה את הקלט לשני חלקים לא שווים באורכם, L 0 {\displaystyle L_{0}} באורך 9 סיביות ו- R 0 {\displaystyle R_{0}} באורך 7 סיביות, באותו אופן מחלקת את תת-המפתח לשני חלקים K I i , j , 1 {\displaystyle KI_{i,j,1}} באורך 9 סיביות והחלק K I i , j , 2 {\displaystyle KI_{i,j,2}} באורך 7 סיביות ומבצעת: והפלט הוא ( L 4   ‖   R 4 ) {\displaystyle (L_{4}\ \|\ R_{4})} . כאשר הפונקציות Z E {\displaystyle ZE} ו- T R {\displaystyle TR} קיצור של ZeroExtend ו-Truncate בהתאמה הן פונקציות שנועדו להמיר את הערך x {\displaystyle x} מ-7 סיביות ל-9 סיביות וההפך. ההרחבה מתבצעת על ידי הוספת אפסים משמאל (בצד המשמעותי של המספר) והחיתוך מתבצע על ידי הסרת שתי הסיביות המשמעותיות של המספר. לצופן נילוות שתי תיבות החלפה בסיביות שנקראות S7 ו-S9 והן עוצבו כך שניתן יהיה לממשן בשני אופנים. קומבינציה לוגית וטבלת אחזור (lookup table) בהתאם לסיטואציה. למשל בחומרה מוגבלת בזיכרון הגישה הראשונה עדיפה. טבלאות חיפוש מהירות יותר והן עדיפות כאשר הזיכרון זמין. בגישה הלוגית ההחלפה מתבצעת על ידי קומבינציה של השערים הלוגיים AND ו-XOR. להלן שתי תיבות ההחלפה בשני האופנים האמורים. הערך x {\displaystyle x} בייצוג בינארי הוא מחרוזת של 7 סיביות (או 9 בטבלה הבאה) המיוצגות על ידי x 0 ‖ x 1 ‖ x 2 ‖ x 3 ‖ x 4 ‖ x 5 ‖ x 6 {\displaystyle x_{0}\|x_{1}\|x_{2}\|x_{3}\|x_{4}\|x_{5}\|x_{6}} (הביטוי x 0 x 1 {\displaystyle x_{0}x_{1}} פירושו x 0 ∧ x 1 {\displaystyle x_{0}\land x_{1}} ): טבלת החלפה S7 עם ערכים עשרוניים: השערים הלוגיים של S9: טבלת ההחלפה S9 עם ערכים עשרוניים: המפתח הסודי K {\displaystyle K} המסופק על ידי המשתמש מורחב ומחולק לשני מערכים בני שמונה כניסות באורך 16 סיביות כל אחת (בסך הכול 256 סיביות). תחילה מציבים בשמונה הכניסות של המערך הראשון את המפתח K {\displaystyle K} ומציבים במערך הנוסף K ′ {\displaystyle K'} עבור 1 ≤ j ≤ 8 {\displaystyle 1\leq j\leq 8} את: K j ′ = K j ⊕ C j {\displaystyle K_{j}'=K_{j}\oplus C_{j}} , כאשר C j {\displaystyle C_{j}} הם קבועים המוגדרים בטבלה להלן. מתוך שני המערכים הללו גוזרים את מפתחות כל הסבבים לפי הטבלה הבאה: הסימן ⋘ {\displaystyle \lll } הוא הזזה מעגלית של K i {\displaystyle K_{i}} לשמאל (rotate left), במספר סיביות לפי הערך המצוין מימין. למשל בסבב השני המפתח K O 2 , 2 {\displaystyle KO_{2,2}} הוא הערך בכניסה K 7 {\displaystyle K_{7}} לאחר הזזה מעגלית שמונה סיביות. טבלת הקבועים בערכים הקסדצימליים. הערכים נקבעו שרירותית באופן שקל להיווכח שלא הייתה כוונה סודית בבחירתם: צופן בלוקים GSM MISTY קמליה 3G Security; Specification of the 3GPP confidentiality and integrity algorithms; Document 2: Kasumi specification [www.iacr.org/archive/eurocrypt2001/20450323.pdf Cryptanalysis of Reduced-Round MISTY] A Single-Key Attack on 6-Round KASUMI A Practical-Time Attack on the A5/3 Cryptosystem Used in Third Generation GSM Telephony