CWC mode

בקריפטוגרפיה, Carter-Wegman Counter הוא מצב הפעלה של צופן בלוקים, המספק הצפנה מאומתת, פועל לפי פרדיגמה "הצפנה ולאחריה אימות" ושייך לקטגוריה AEAD (הצפנה מאומתת עם מידע נלווה). בניגוד לצופן בלוקים כשלעצמו המספק רק סודיות של בלוק בגודל קבוע, CWC מספק סודיות והגנה על שלמות ואימות המסרים המוצפנים בכל אורך רצוי, על ידי הצפנה עם צופן בלוקים סימטרי בעדיפות לאלגוריתם חופשי כמו AES במצב מונה ולאחר מכן ייצור תג אימות באמצעות בפונקציית גיבוב 'אוניברסלית' מקבילית בסגנון קרטר-ווגמן לאימות המידע המוצפן ולאימות טקסט נוסף המשויך אליו אם קיים, שצריך להבטיח את שלמותו אך עליו להשאר גלוי כמו קובץ כותר המכיל הגדרות או כתובות.
CWC פותח ב-2004 על ידי טאדיושי קונו מאוניברסיטת קליפורניה, ג'ון ויאגה מ-Virginia Tech ודאג ווייטינג מ-Hifn כיום חלק מ-exar. אלגוריתם CWC נכלל ברשימת האלגוריתמים המובילים שמנהל NIST לצורך תקן הצפנה מאומתת ולו חמש תכונות חשובות שמציבות אותו כמועמד מועדף לתקן; ביטחון מוכח, מקביליות, ביצועים גבוהים בחומרה ובתוכנה והעדר זכויות יוצרים. במימוש אופטימלי בחומרה אמור להגיע לתפוקה של 10Gbps. הוא מהיר יותר ממצבי ההפעלה CCM ו-EAX אך פחות מהיר בהשוואה לOCB שמוגן בפטנט. מועמדותו של OCB לתקן IEEE 802.11 נדחתה בגלל נושא זכויות יוצרים.

תיאור כללי

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

סימנים מוסכמים

בתיאור האלגוריתם יופיעו הסימנים הבאים: אם  ו- שלמים חיוביים כך שמתקיים  אזי הפונקציה  פירושה הקידוד של  כמחרוזת של  סיביות לפי סדר בתים גדול (big-endian). בסדר בתים גדול הסיבית המשמעותית ביותר לא נחשבת כסיבית הסימן. לדוגמה המספר 30 בבסיס בינארי הוא המחרוזת "11110". אם  ו- הן מחרוזות סיביות אזי  הוא אורך המחרוזת והביטוי  הוא XOR של  עם . הפונקציה  מייצגת את השלם המקביל למחרוזת  לפי סדר בתים גדול. לדוגמה . אם נתונה הסיבית  הביטוי  מתייחס לסיבית  כשהיא משוכפלת  פעמים למשל . הביטוי  פירושו הפלט  של הפונקציה  עם הקלט  ומחרוזת פסאודו-אקראית כלשהי שנבחרה באופן אחיד מתוך מרחב המחרוזות האפשריות, כך ש- היא PRF.
אלגוריתם ההצפנה הסימטרי המסומן בקיצור  שבשימוש CWC, מיוצג על ידי אוסף של שלושה אלגוריתמים  מעל מרחב מפתח כלשהו , מרחב Nonce (וקטור אתחול) המסומן , מרחב המידע  ומרחב המידע הנלווה  באורך שרירותי כלשהו. הסימון CWC-BC-tl מתייחס למצב ההפעלה CWC עם צופן בלוקים ספציפי המכונה כאן בקיצור BC ועם אורך תג רצוי  למשל במקרה של AES עם תג באורך 96 סיביות אפשר להחליפו בסימון CWC-AES-96. המפתח  מופק על ידי  יהיה באורך שנקבע לפי האלגוריתם ולפי העדפה (לפחות 128 סיביות). ה-Nonce צריך להיות באורך  סיביות. המסר  והמידע הנלווה , מחרוזות בינאריות באורך שאינו עולה על  בלוקים של 128 סיביות. הביטוי  מתייחס להפעלה של צופן הבלוקים עם המפתח  על המסר  והפלט הוא .

תיאור האלגוריתם

CWC מורכב משישה מודולים המתוארים בפסאודו קוד הבא: