Hummingbird (צופן)

בקריפטוגרפיה, Hummingbird הוא שם כולל למשפחה של צפני בלוקים קלי משקל המיועדים להצפנת תקשורת בחומרה מוגבלת משאבים כתיוג אלקטרוני,מיקרו-בקר, כרטיס חכם וסנסור אלחוטי. Hummingbird הוא פיתוח ייעודי בהשראת מכונת האניגמה במבנה היברדי המשלב צופן בלוקים עם צופן זרם, הוא המקבל בלוק טקסט קריא באורך 16 סיביות (שני בתים), מפתח הצפנה באורך 256 סיביות (32 בתים), הוא כולל מצב פנימי (זיכרון) באורך 80 סיביות (עשרה בתים) ומפיק בלוק מוצפן באורך 16 סיביות. השילוב של סיביות המפתח והזיכרון הפנימי מספק לדעת המפתחים ביטחון רב-נגד קריפטואנליזה מודרנית (דיפרנציאלית וליניארית). הוא מתאים להטמעה במערכות משובצות מחשב זעירות, יעיל בתוכנה וגם בחומרת 8-ביט/16-ביט. נחשב צופן בלוקים קל משקל 'סטייט אוף דה ארט' ומציג ביצועים טובים מצופן PRESENT.
הצופן הראשון Hummingbird (בעברית "יונק דבש") פותח ב-2009 על ידי דניאל אנגלס מחברת Revere Security ועמיתיו מ-CACR (מרכז מחקר לקריפטוגרפיה יישומית) אוניברסיטת ווטרלו קנדה. הוצג ב-2010 WLC (ועידה שנתית בינלאומית לקריפטוגרפיה קלת משקל עבור חומרה מוגבלת משאבים) וב-RISC ’09. עד כמה שידוע אינו מוגן בפטנט וחופשי לשימוש. הצופן Hummingbird-2 פותח ב-2011 בעקבות קריפטואנליזה של קודמו והוצג ב-RFIDSec'11. הוא מספק הצפנה מאומתת, אורך המפתח הופחת ל-128 סיביות והזיכרון הפנימי הורחב ל-128 סיביות. הוא מכיל שיפורים אחדים לעומת קודמו כדי לחזקו נגד קרפיטואנליזה. המפרט שלו, התפוקה והביטחון שלו מותאמים לתקן איזו ISO/IEC 18000-6:2010.

מבוא ותיאור כללי

השפעת טכנולוגית מחשוב מפושט (Pervasive Computing) כמו RFID, כרטיסים חכמים וסנסורים אלחוטיים על חיי היום יום הולכת ומתרחבת. השימוש בהם פורץ לכל תחומי החיים, מבקרה ושליטה מרחוק, בית חכם, ניהול שירותי אספקה כמו מדי חשמל ומים ועד ניטור רפואי. כל אילו מערבים עיבוד ושידור מידע רגיש, כמו מידע ביו-רפואי או מידע על צריכה או אספקה של מוצרים ולכן יש צורך להטמיע במערכות אילו מנגנון קריפטוגרפי שיאפשר לשמור על דיסקרטיות ולהבטיח את שלמות המידע. ברוב המקרים מכשירי מחשוב מפושט מכילים מעבד זעיר שפועל על אנרגיה חיצונית כמו כרטיס חכם או על סוללה זעירה שאמורה להחזיק מעמד זמן רב ללא טעינה. מסיבה זו הוא פועל על משאבים כמו זיכרון וכוח מחשוב אולטרה נמוכים בהשוואה למחשב שולחני. צפנים סימטריים רגילים אינם מתאימים במיוחד לעבודה בסביבה כזו. רובם, במיוחד AES פותחו עוד בטרם הטכנולוגיה הזו פרצה לתודעה.
קריפטוגרפיה קלת משקל פותחה כדי לתת מענה לצורך זה. בין היתר פותחו צפני בלוקים בקטגוריה צפני בלוקים קלי משקל שהיעד העיקרי בהם הוא לפעול בסביבה בה יש צורך לשקלל או להתפשר על מספר גורמים: ביטחון מול עלות מול ביצועים ולהשיג את המיטב בתנאים מוגבלים. קיימות כיום מספר הצעות טובות המתחלקות לשלוש קטגוריות עיקריות: מיטוב צפנים קיימים כמו AES ו-IDEA, שינוי צפנים קיימים כמו DES-XL והשלישי פיתוח צפנים ייעודיים כמו HIGHT, SEA, KATAN ו-PRESENT. בנוסף קיימים צפני זרם קלי משקל ביניהם גריין ו-Trivium.
ל-Hummingbird מבנה היברידי ייחודי בהשראת מכונת האניגמה, המשלב צופן בלוקים עם צופן זרם (מכיל זיכרון פנימי מה שמאפשר בלוק קטן) ופותח מתוך כוונה שיהיה יעיל, פשוט וקל ככל האפשר להטמעה והרצה.

Hummingbird-2

Hummingbird-2 הוא צופן בלוקים היברדי המיועד לחומרה מוגבלת משאבים, פותח בהשראת האניגמה ומשלב תכונות של צופן בלוקים עם צופן זרם. הוא מקבל מפתח סודי באורך 128 סיביות ווקטור אתחול באורך 64 סיביות ומצפין בלוק מידע באורך 16 סיביות ואם נדרש מייצר בנוסף תג אימות עבור כל בלוק קלט שהוצפן. כקודמו Hummingbird-1 זהו צופן קל משקל שפותח בעיקר עבור מיקרו-בקרים ומערכות משובצות מחשב בהתקנים קטנים כמו RFID וסנסור אלחוטי. בהשוואה לגרסה הקודמת ובהתחשב בקריפטואנליזה חדשה של הצופן בעיקר בגרסה הקודמת נעשו מספר שינויים. המצב הפנימי הורחב ל-128 סיביות, פונקציית העדכון של המצב הפנימי שופצה בהתאם. כמו כן נעשו שינויים בתיבות ההחלפה ופונקציית הסבב הפנימית.

מצב הפעלה המדמה צופן זרם

לעיתים נדרש להצפין ולאמת יחידות מידע הקטנות ממילה באורך 16 סיביות, במקרה כזה אפשר פשוט להצפין את המידע על ידי תוצאה חתוכה של פונקציית ההצפנה. למשל אם המידע  באורך  סיביות, כאשר  מצפינים פעם אחת בלוק של 16 אפסים ומחברים ב-XOR את  הסיביות הראשונות של התוצאה המוצפנת עם בלוק המידע  כך: . לצורך תג האימות ממשיכים להריץ את הצופן, מעדכנים את המצב הפנימי ומפיקים תג אימות כמתואר לעיל.
היות ש-Hummingbird-2 הוא אלגוריתם הצפנה מאומתת כמו GCM, הוא כולל שימוש בוקטור אתחול חד-פעמי. אף על פי שצופן זה אינו רגיש לשימוש חוזר כמו GCM, מומלץ להימנע משימוש חוזר בוקטור אתחול כל עוד המפתח לא הוחלף (אחד משניהם חייב להיות שונה לפני שמצפינים ומאמתים מסרים נוספים). במילים אחרות ההסתברות ששני מסרים יוצפנו עם אותו מפתח ואותו וקטור אתחול צריכה להיות נמוכה מ-. במקרה שהמשתמש לא עמד בקריטריון זה התוצאה תהיה שהמתקיף יוכל לזהות הצפנה של בלוקים זהים. דבר שרצוי להימנע ממנו במקרים מסוימים.

ביטחון ועילות

בגרסה הראשונה התגלו חולשות בצופן הבלוקים הפנימי. Markku-Juhani O. Saarinen פרסם התקפה דיפרנציאלית שמסוגלת לשחזר את המפתח תוך מספר מיליוני מסרים נבחרים במה שקרוי התקפת גלוי-נבחר בסיבוכיות של  פעולות אוף ליין. גרסה 2 יחסית חדשה ועדיין אין הרבה קריפטואנליזה שלה. קיים מחקר שמבוסס על התנגשויות דיפרנציאליות נגד פונקציית הסבב הפנימית, שמראה שקיימת בה בעיה דומה. המחברים מראים אפשר לשבור את הצופן בזמן של  בסיבוכיות מקום של  עם מספר זוגות של מפתחות קשורים.