משפחת KATAN פותחה לאור מציאות זו במטרה להציעה כחלופה יעילה המותאמת במיוחד לעבודה עם מינימום שערים לוגיים. KATAN32, KATAN48 ו-KATAN64 נבדלים ביניהם רק בגודל הבלוק, הם מקבלים מפתח הצפנה באורך 80 סיביות (8 בתים) ובלוק גלוי להצפנה בגודל 32, 48 או 64 סיביות בהתאמה ומחזירים בלוק מוצפן בגודל זהה. KTANTAN32, KTANTAN48 ו-KTANTAN64 מתאפיינים בגודל בלוק דומה ובביצועים דומים, למעט העובדה שמימושם קטן יותר בשל העדר הצורך בהכנת מפתח הצפנה (מפתח ההצפנה קבוע ומוטמע במערכת באופן שאינו ניתן לשינוי). למרות הדגש על מימוש קטן שבא על חשבון תפוקה, בשינויים קלים אפשר להתאים את הצופן כך שהתפוקה תגדל בתוספת שטח חומרה לא משמעותי.
מוטיבציה ושיקולי פיתוח.
כאשר מדובר בצפנים קטנים, ככל שהצופן קומפקטי יותר, כך יותר שטח חומרה יחסי מוקדש לניהול הזיכרון הפנימי וערכי ביניים של חומר המפתח. הדבר בולט במיוחד בצופן זרם. הסיבה היא בין היתר בגלל הדרישה שהזיכרון הפנימי יהיה כפול מרמת הביטחון שהצופן מציע בסיביות. בעיה זו לא קיימת בצופן בלוקים, אך מצד שני בעוד שבצופן זרם, פונקציית השילוב האי-ליניארית יכולה להיות קטנה, תיבות ההחלפה של צופן בלוקים מציבות גבול תחתון לכמות הזיכרון שהצופן דורש. נושא אחר הוא כמות השערים הדרושה לאחסון סיבית אחת בזיכרון. בדרך כלל נדרשים בין 5 ל-12 שערים כדי לממש פליפ פלופ אחד בהתאם לסוג הפליפ פלופ. מסיבה זו יש חשיבות לצמצום מספר השערים הנדרשים לאחסון המפתח ובגלל שבהרבה מקרים המפתח נטען פעם אחת ואינו משתנה לאורך חיי ההתקן, אפשר לנצל עובדה זו כדי לצמצם יותר את צריכת הזיכרון של האלגוריתם. דרך אחרת לצמצום דרישות הזיכרון היא הפחתה בגודל בלוק הצופן, אך הפחתה גדולה מדי (למשל בלוק באורך 32 סיביות) משפיעה על ביטחון הצופן באופן משמעותי. בגלל עיקרון יום ההולדת לא ניתן יהיה להצפין יותר מ-formula_2 בלוקים עם מפתח אחד (כשני מגה בית). במקרה של תיוג אלקטרוני ייתכן שגבול זה סביר, אבל קיימים התקנים שצריכים להצפין כמות גדולה יותר של מידע ולכן מגבלה זו בעייתית.
בפיתוח KATAN/KTANTAN הושם דגש על מספר היבטים חשובים הקשורים בביטחון הצופן:
כל זה תוך שמירה על מספר מאפיינים חשובים: גודל מינימלי, תפוקה מקסימלית והפחתה בצריכת אנרגיה של יישום הצופן.
תיאור הצופן.
KATAN הוא צופן בלוקים דומה ל-KeeLoq (צופן בלוקים קנייני המשמש בתעשיית הרכב לאבטחת מנעול אלקטרוני בשליטה מרחוק ואימובילייזר), המכיל מוטיבים מצופן זרם. במיוחד, מבנהו מזכיר את Trivium, רק שבניגוד לצופן הזרם Trivium שבו הזיכרון הפנימי הוגדל עקב העובדה שבכל סבב סיבית אחת של המצב הפנימי נחשפת, ב-KATAN בגלל שבעיה זו לא קיימת הבלוק והמצב הפנימי זהים בגודלם. מבנה הצופן פשוט. בלוק הקלט נטען לתוך שני אוגרים (שאורכם נקבע לפי גודל הבלוק). בכל סבב, שתי סיביות מהאוגרים נלקחות לצורך פונקציה בולינאית אי-ליניארית. פלט הפונקציה הבוליאנית נטען לסיבית הכי פחות משמעותית של האוגרים לאחר שהם מוזזים (כמו ב-LFSR). הפעולה מבוצעת באופן שתהיה הפיכה וכן כדי להבטיח ערבוב ראוי חוזרים על פעולה זו 254 פעמים. החזרות של הצופן נשלטות על ידי LFSR המכיל שמונה סיביות עם פולינום משוב המכיל מעט מקדמים שונים מאפס. ה-LFSR מאותחל במצב מסוים והצופן אמור לעצור כאשר ה-LFSR מבצע מחזור שלם ומגיע שוב למצב זה. הסיבה לשימוש ב-LFSR היא חסכון בשערים ומהירות. בשיטה זו נדרשים 60 שערים לעומת מונה רגיל באורך 8 סיביות הדורש לפחות 80 שערים. יתרון נוסף של ה-LFSR הוא שאפשר לנצלו להגברת ביטחון הצופן כפי שיבואר בהמשך. אחת הבעיות שעלולות לצוץ בתכנון צופן כזה פשוט קשורה למושג שנקרא "דמיון עצמי", כלומר כאשר נעשה שימוש במפתח בצורה פשוטה, שוב ושוב כמו ב-KeeLoq, הדבר גורם לנקודת תורפה שאפשר לנצלה על ידי התקפת גלישה (קריפטואנליזה שמאתגרת את ההנחה שמספר גבוה של חזרות מספק ביטחון רב אפילו אם הפונקציה הפנימית חלשה). הפתרון שננקט ב-KATAN הוא טעינת המפתח לתוך LFSR עם פולינום משוב פרימיטיבי. הדברים אמורים לגבי KATAN, אבל לגבי KTANTAN שבו המפתח קבוע, הדבר יחידי שאפשר לעשות כדי למנוע התקפת גלישה הוא לייצר מהמפתח רצף סיביות שאינו חוזר על עצמו, לשם כך אפשר לנצל את ה-LFSR האחראי על מונה החזרות. כדי להגביר את רמת הפיזור של הצופן עוד יותר, הוא מכיל שתי פונקציות סבב קצת שונות אחת מהשנייה. בכל סבב, הבחירה בין שתיהן נקבעת לפי הסיבית המשמעותית ביותר של LFSR מונה החזרות.
KATAN32, הקטן ביותר במשפחה ותאומו KTANTAN32 (שנבדל ממנו רק בעובדה שהמפתח קבוע), מכיל שני אוגרים formula_7 באורך 13 סיביות ו-formula_8 באורך 19 סיביות, לתוכם טוענים את בלוק הקלט. כאשר הסיבית הפחות משמעותית של הקלט (LSB) נטענת לסיבית הראשונה של formula_8 והסיבית המשמעותית ביותר (MSB) נטענת לסיבית ה-12 של formula_7 (הספירה מתחילה מאפס). בכל סבב formula_7 ו-formula_8 מוזזים שמאלה (הסיבית ה-formula_13 מועתקת למיקום ה-formula_14 והסיבית העליונה או החשובה ביותר נפלטת החוצה). הסיביות "החדשות" שחושבו על ידי הפונקציות המתוארות בהמשך מועתקות למקומות הראשונים של formula_7 ו-formula_8 שהתפנו בהתאמה. תהליך זה חוזר על עצמו 254 פעמים ולאחר מכן תכולת האוגרים מועתקת לטקסט המוצפן והיא פלט הצופן, כאשר סיבית האפס של formula_8 מכילה את הסיבית הפחות משמעותית (LSB) של בלוק הטקסט המוצפן.
פונקציות אי-ליניאריות.
הסיביות החדשות מחושבות על ידי שתי פונקציות אי-ליניאריות formula_18 ו-formula_19 המוגדרות כך:
כאשר הסימן formula_20 הוא XOR ו-formula_21 הוא כלל עדכון אי-רגולרי (שמתבצע באופן לא סדיר), formula_22 ו-formula_23 הן סיביות מתאימות מהמפתח, עבור סבב formula_13 הסיבית formula_22 היא הסיבית ה-formula_26 של המפתח formula_27 ואילו הסיבית formula_23 היא הסיבית ה-formula_29. הסיביות formula_30 ו-formula_31 נקבעות עבור כל צופן בנפרד לפי טבלה המובאת בהמשך. לאחר חישוב הפונקציות האי-ליניאריות האוגרים formula_7 ו-formula_8 מוזזים (כך שהסיבית המשמעותית ביותר נפלטת החוצה לתוך הפונקציה האי-ליניארית המתאימה) בעוד שהסיבית הראשונה היא פלט הפונקציה האי-ליניארית השנייה. במילים אחרות לאחר הסבב הסיבית הראשונה של formula_7 היא פלט formula_35 והסיבית הראשונה של formula_8 היא הפלט של formula_37.
תהליך הכנת המפתח להצפנה.
להכנת המפתח של KATAN להצפנה תחילה טוענים את 80 הסיביות של המפתח formula_38 המסופק על ידי המשתמש לתוך אוגר LFSR (הסיבית ה-LSB של המפתח מוצבת בפוזיציה אפס של האוגר). בכל סבב שתי הסיביות הראשונות של האוגר משמשות כמפתחות הסבב formula_26 ו-formula_29. פולינום ההיזון הוא פולינום פרימיטיבי ממעלה 80 בעל משקל המינג מינימלי של 5 (לא קיימים פולינומים פרימיטיביים ממעלה 80 במשקל נמוך יותר):
פירוש הדבר במילים: עבור הסבב formula_13 לוקחים את formula_43 עבור הפונקציות האי-ליניאריות לעיל, כאשר עד formula_44 הסיביות הללו הן בעצם הסיביות המקוריות של המפתח formula_38 ולאחר מכן הסיביות מחושבות על ידי:
יתר הצפנים במשפחה.
ההבדלים בין כל הצפנים במשפחה הם:
ב-KATAN48 הפונקציות האי-ליניאריות מופעלות פעמיים בכל סבב פעם אחת לפני עדכון ה-LFSR ופעם אחת לאחריו (אפשר כמובן להפעילן במקביל). ואילו ב-KATAN64 הפונקציות האי-ליניאריות מופעלות שלוש פעמים. אוגר מונה החזרות מאותחל כולו באחדים ומופעל באמצעות פולינום פידבק formula_49. תהליך ההצפנה מתרחש במשך 254 הפעימות של האוגר עד שהוא חוזר למצב המקורי. וכן כאמור, הסיבית המשמעותית ביותר (MSB) של מונה החזרות משמשת לשליטה בעדכון האי-רגולרי formula_21 המובא בטבלה בהמשך.
מימוש KATAN32 אפשרי עם 802 GE. צריכת אנרגיה במהירות 100KHz עם תפוקה של 12.5 Kbps היא 381 ננו-ואט בקיצור nW. עבור KATAN48 המימוש שלו צורך 927 GE וצריכת האנרגיה היא בערך 439 nW. עבור KATAN64 מספר השערים הוא 1054 וצריכת האנרגיה היא 555 nW.
היות שההבדל בין KATAN32 ו-KATAN48 או KATAN64 הוא במספר הפעמים שהפונקציות האי-ליניאריות מפועלות, אפשר לתכנן את שני הצפנים האחרונים במשפחה כך שאוגר המפתח והמונה יופעלו אחת לשניים או שלושה מחזורי שעון ובכך חוסכים במקום נוסף. אבל במקרה זה התפוקה יורדת בהתאם. על אותו עיקרון אפשר להכפיל או לשלש את תפוקת הצופן על ידי הוספת שערים.
טבלת הפרמטרים של הצפנים ממשפחת KATAN ו-KTANTAN:
טבלת העדכון האי-רגולרי של הפונקציות האי-ליניאריות (1 פירושו שהעדכון מתבצע ו-0 פירושו שלא):
KTANTAN.
משפחת KTANTAN דומה מאוד למשפחת KATAN למעט תהליך הכנת המפתח. במשפחת KTANTAN המפתח נצרב בחומרה ואינו ניתן לשינוי. הגמישות היחידה הקיימת היא בחירת הפוזיציות המתאימות לצורך הפונקציות האי-ליניאריות בכל סבב. כאן נוקטים בגישה אחרת, מתייחסים למפתח כאל 5 מילים באורך 16 סיביות כל אחת: formula_51 (הסימן formula_52 מייצג שרשור). בכל מילה בוחרים את אותה סיבית על פי ארבע הסיביות המשמעותיות ביותר של אוגר מונה החזרות ואז, מתוך חמש הסיביות שנבחרו בוחרים אחת על פי ארבע הסיביות הכי פחות משמעותיות של אוגר מונה החזרות. בניסוח פורמלי, formula_53 הוא LFSR מונה החזרות באורך 8 סיביות כאשר formula_54 היא הסיבית ה-MSB ויהי formula_55 מרבב שבכניסה שלו 16 סיביות של formula_56 וביציאה הסיבית ה-formula_57 של formula_56, וכן יהי formula_59 הסיבית ה-formula_60 של formula_61 (באורך 4 סיביות) אז סיביות המפתח מחושבות לפי: