בקריפטוגרפיה, **אריזת מפתח הצפנה** (באנגלית: **Key wrapping**) היא מחלקה של אלגוריתמים קריפטוגרפיים המשתמשים בצופן סימטרי ל"עטיפה" (הצפנה) של מפתחות. אלגוריתם אריזת מפתח נועד להגנה על מפתחות הצפנה בעת העברתם ברשת פתוחה או אחסונם במדיית אחסון לא בטוחה. בדרך כלל בונים אלגוריתם כזה על בסיס פרימיטיבים קריפטוגרפיים ידועים כמו פונקציית גיבוב וצופן בלוקים. הוא שונה במעט מאלגוריתם KEM (קיצור של Key Encapsuation Mechanism) המבוסס על מפתח ציבורי. למרות שהמטרות זהות, העברה בטוחה של מפתח הצפנה. אלגוריתם אריזת מפתח יוצא מהנחה בסיסית ששני הצדדים משתפים ביניהם מפתח הצפנה סודי סימטרי ואילו KEM מסתמך על פרוטוקול דוגמת דיפי-הלמן כדי להצפין את מפתח השיחה באמצעות מפתח הצפנה ציבורי ארוך טווח או עושה שימוש בחתימה דיגיטלית.

רקע
---

ב-1997 פרסם NIST בעיה הנקראת **בעיית אריזת מפתח** כהגדרתם חיפוש דרכים סימטריות יעילות להסתרת ערך סודי קצר כמו מפתח הצפנה ומידע נלווה כלשהו במהלך העברה ברשת פתוחה. ההנחה הבסיסית היא שהצדדים משתפים ביניהם מפתח סודי. שימוש ישיר בצופן בלוקים מהווה בעיה מכמה סיבות. א) יכול להיות שהמפתח יהיה גדול מהבלוק לכן יהיה צורך בסכימת ריפוד בטוחה באופן שכל סיביות המפתח יהיו תלויות בכל סיביות הטקסט המוצפן. למשל מצב הפעלה בטוח כמו מצב מונה (CTR). ב) צופן הבלוקים אינו מספק הבטחת שלמות. ג) מסיבות של יעילות ומניעת התנפחות נדרש אלגוריתם דטרמיניסטי, כלומר היעדר תוספת של מספר אקראי כלשהו. מסיבה זו צפנים העושים שימוש בווקטור אתחול וכן צופן זרם שבדרך כלל מלווה בווקטור אתחול אינם מתאימים. וכן הועלתה בקשה להצעת אלגוריתמים דטרמיניסטיים מבוססי-צופן (cipher-based) לצורך הערכתם ושילובם במודולי הצפנה מאומתת מאושרים. NIST לא הגדיר במדויק את דרישות הביטחון המינימליות או התכונות הספציפיות הנדרשות ממודול כזה, אך הדרישות הבסיסיות שהועלו הן: א) סודיות ב) הגנה על שלמות ג) יעילות ד) שימוש באלגוריתמים תקניים כמו AES כבסיס וה) תכונות נוספות כמו עמידות נגד שימוש בלתי ראוי (במכוון על ידי צד זדוני או שלא במכוון כמו טעויות מפעיל) ואפשרות לשימוש במחולל אקראי בעל איכות נמוכה. יש לציין שאפשר להשיג את המטרות המנויות על ידי שימוש בהצפנה מאומתת במיוחד לאור העובדה שבהצפנת מפתחות שבדרך כלל הם ערכים אקראיים אלגוריתם דטרמיניסטי מספק ואין צורך באקראיות נוספת. חרף זאת קיימת תועלת מעשית בשיטות ממוקדות לאריזת מפתח ויש לכך קשר הדוק לנושא חשוב בקריפטוגרפיה שנקרא "הצפנה מאומתת דטרמיניסטית" בקיצור DAE שמתאימה במיוחד למקרים בהם קיים קושי להשתמש בווקטור אתחול אקראי או ייחודי. סכימה כזו אטרקטיבית במיוחד במקרים בהם נדרשת עמידות נגד שימוש לא ראוי (misuse-resistant), על ידי הפיכת וקטור האתחול לערך קבוע ושימוש בו על ידי שילוב עם הקלט.

מאז ההצעה של NIST פורסמו מספר הצעות כמו RFC 3394 ופיתוחים מעשיים הכוללים בין היתר:

* הצעה של NIST מ-2001 שנקראת SP800-38F המבוססת על AES.
* טיוטה X9.102 של קבוצת X9F1 השייכת למכון התקנים האמריקני, הכוללת 4 הצעות:
	+ AESKW
	+ TDKW (וריאנט של AESKW)
	+ AKW1
	+ AKW2

ביטחון
------

באופן כללי אלגוריתמים להצפנה מאומתת או שילוב של צופן בלוקים עם קוד אימות מתאימים לצורך אריזת מפתח, אם כי הם חסרים תכונות מיוחדות נוספות כמו דרישות ג) או ה) לעיל. אלגוריתמים להצפנה מאומתת שמתאימים במיוחד לאריזת מפתח הצפנה הם כאלו שעושים שימוש בצופן סימטרי ללא וקטור אתחול או וקטור אתחול מבוסס מסר, ביניהם אפשר למנות את SIV או CIP. רוגווי ושרימפטון העריכו את ביטחון האלגוריתמים המנויים בתקן X9.102 ביחס לדרישות שהוצהרו. הם הצביעו על ליקויים אחדים, ביניהם העובדה שלא קיימות הגדרות ביטחון ברורות בתקן וכן העדר הוכחות.

אלגוריתם אריזת מפתח של NIST
---------------------------

אלגוריתם אריזת מפתח שנקרא גם KEK נועד למקרה הנפוץ של הצפנת מפתח הצפנה של AES ולפי התקן מבוצע למען הנוחות בחלוקה ל-n בלוקים באורך 64 סיביות. כדי לארוז מפתח AES נדרשים לכל היותר ארבעה בלוקים. על כל פנים ייתכנו מפתחות או ערכים קריפטוגרפיים אחרים כמו מספר אקראי עבור DSA ארוכים יותר לכן לא נקבע גבול עליון. KEK מבוסס בעצמו על AES לכן ביטחונו מושפע בין היתר מאורך מפתח AES המשמש להצפנת המפתח. בתיאור האלגוריתם להלן הפונקציה {\displaystyle {\text{MSB}}\_{j}(W)} מחזירה את j הסיביות הכי משמעויות של W לפי סדר בתים קטן. וכן {\displaystyle {\text{LSB}}\_{j}(W)} מחזירה את j הסיביות הפחות משמעותיות של W. הסמל \| מייצג שרשור והסימן \oplus הוא XOR. הקלט הוא מערך טקסט קריא: {\displaystyle P\_{1},P\_{2},...P\_{n}} באורך n בלוקים של 64 סיביות כל אחד, המכיל את המפתח המיועד להסתרה וכן מפתח KEK המיוצג על ידי K (יכול להיות כל מפתח המתאים ל-AES לפי הצורך). הפלט הוא n+1 בלוקים של טקסט מוצפן המייצגים את המפתח המוסתר באופן כזה שאם חל בהם שינוי אפילו קל ביותר במהלך ההעברה ניתן לאתרו.

#### אלגוריתם KEK אריזת מפתח

1. **אתחול**
מציבים {\displaystyle A=IV} (ערך התחלתי קבוע להלן).
עבור {\displaystyle i=1} עד n בצע:
{\displaystyle R\_{i}=P\_{i}}.
2. **ערכי ביניים**
עבור {\displaystyle j=0} עד {\displaystyle 5} בצע:
עבור {\displaystyle i=1} עד n בצע (בסך הכול {\displaystyle 6n} סבבים):
{\displaystyle B={\text{AES}}\_{K}(A\ \|\ R\_{i})}
{\displaystyle A={\text{MSB}}\_{64}(B)\oplus t} כאשר {\displaystyle t=(n\cdot j)+i}
{\displaystyle R\_{i}={\text{LSB}}\_{64}(B)}
3. **פלט** - המערך C כאשר:
{\displaystyle C\_{0}=A}
עבור {\displaystyle i=1} עד n בצע: {\displaystyle C\_{i}=R\_{i}}.

#### אלגוריתם KEK הסרת אריזה

1. **אתחול**
{\displaystyle A=C\_{0}}
עבור {\displaystyle i=1} עד n בצע: {\displaystyle R\_{i}=C\_{i}}.
2. **ערכי ביניים**
עבור {\displaystyle j=5} עד {\displaystyle 0} בסדר יורד בצע:
עבור {\displaystyle i=n} עד 1 בסדר יורד בבצע:
{\displaystyle B={\text{AES}}\_{K}^{-1}((A\oplus t)\ \|\ R\_{i})} כאשר {\displaystyle t=(n\cdot j)+i}
{\displaystyle A={\text{MSB}}\_{64}(B)}
{\displaystyle R\_{i}={\text{LSB}}\_{64}(B)}
3. **פלט**
עם ערכו של A תואם את הקבוע הצפוי מוחזר המערך P כאשר:
עבור {\displaystyle i=1} עד n
{\displaystyle P\_{i}=R\_{i}}
אחרת מוחזרת הודעת שגיאה.

הערך ההתחלתי הקבוע או וקטור האתחול המסומן IV משמש כאן באופן עקיף להבטחת שלמות המפתח המוסתר. המפתח המוצפן מתקבל כאותנטי אך ורק אם לאחר הפענוח מתקבל ב-A הקבוע הצפוי. ערכו הספציפי נתון לשינויים ותלוי במספר גורמים. כמו למשל אם נדרשת הבטחת שלמות רק במהלך האריזה או ברמה גבוהה יותר. התקן מגדיר מספר קבועים אפשריים כמו: {\displaystyle {\text{IV}}={\text{0xA6A6A6A6A6A6A6A6}}}.

ראו גם
------

* הצפנה מאומתת
* SIV

הערות שוליים
------------



| * צ
* ש
* ע
קריפטוגרפיה |
| --- |
| 

| מושגי יסוד |
| --- |
| 
* פנקס חד-פעמי
* צופן בלוקים
* צופן בלוקים בר התאמה
* צופן זרם
* סודיות מושלמת
* ביטחון סמנטי
* הצפנה סימטרית
* הצפנה אסימטרית
* חתימה דיגיטלית
* הצפנה הומומורפית
* הצפנה מרובה
* הצפנה מאומתת
* הצפנה הסתברותית
* סכמת ריפוד אסימטרית אופטימלית
* אריזת מפתח הצפנה
* סודיות מושלמת קדימה

 |

 |
| 

| הצפנה קלאסית |
| --- |
| 
* מכונת הצפנה
* צופן החלפה
* צופן אתב"ש
* צופן קיסר
* צופן ויז'נר
* צופן ורנם
* צופן פלייפייר
* צופן היל
* אולטרה
* אניגמה
* ציקלומטר
* קולוסוס
* PURPLE
* ג'ייד
* מג'יק
* צופן שחלוף

 |

 |
| 

| צופן בלוקים |
| --- |
| 
* לוציפר
* AES
* 3DES
* DES
* Threefish
* Twofish
* Blowfish
* FEAL
* SEED
* CAST
* IDEA
* RC2
* RC6
* MARS
* RC5
* GOST
* Serpent
* MISTY
* KASUMI
* קמליה
* ARIA
* SAFER
* TEA
* LEA
* CLEFIA
* SEA
* Hummingbird
* PRESENT
* KATAN
* KeeLoq
* Simon & Speck
* אנוביס

 |

 |
| 

| אופני הפעלה |
| --- |
| 
* אופן הפעלה של צופן בלוקים
* EAX
* OCB
* IAPM
* CWC mode
* GCM
* CCM

 |

 |
| 

| צופן זרם |
| --- |
| 
* RC4
* Salsa20
* SOSEMANUK
* Grain
* E0
* A5/1
* A5/2
* A5/3
* A5/4
* MICKEY
* HC-128
* SNOW
* Trivium
* Rabbit
* ZUC
* ChaCha

 |

 |
| 

| הצפנה אסימטרית |
| --- |
| 
* פרוטוקול דיפי-הלמן
* חידות מרקל
* חתימת למפורט
* הצפנת תרמיל
* RSA
* הצפנת רבין
* חתימה דיגיטלית רבין
* צופן אל-גמאל
* חתימה דיגיטלית אל-גמאל
* DSA
* הצפנת בלום-גולדווסר
* ECC
* הצפנת קריימר-שופ
* הצפנת פאיי
* הצפנת מקאליס
* GGH
* NTRU
* עקום 25519
* חתימה דיגיטלית של שנור
* הצפנת אוקמוטו-אושיאמה

 |

 |
| 

| פרוטוקולים |
| --- |
| 
* עץ מרקל
* פרוטוקול אתגר-מענה
* פרוטוקול נידהאם-שרודר
* פרוטוקול קרברוס
* הוכחה באפס ידע
* פרוטוקול פייגה-פיאט-שמיר
* העברה עלומה
* חלוקת סוד
* TLS (SSL)
* Secure Shell
* MQV
* X.509
* פרוטוקול שיתוף מפתח
* מיסור שלא לפרסום
* פרוטוקול סיגנל

 |

 |
| 

| פרימיטיבים תאורטיים |
| --- |
| 
* מחולל פסבדו-אקראי קריפטוגרפי
* פונקציה חד-כיוונית
* תמורה חד-כיוונית
* סיבית קשה
* פונקציה פסבדו-אקראית קריפטוגרפית
* תמורה פסאודו-אקראית
* פונקציית גיבוב קריפטוגרפית
* וקטור אתחול
* פונקציית ספוג
* הצפנה מבוססת סריג

 |

 |
| 

| קריפטואנליזה |
| --- |
| 
* ניתוח תדירויות
* כוח גס
* התקפת איזון זמן/זיכרון
* תקיפת היפגשות באמצע
* קריפטואנליזה ליניארית
* קריפטואנליזה דיפרנציאלית
* התקפת גלוי-ידוע
* התקפת גלוי-נבחר
* התקפת מוצפן-נבחר
* פירוק לגורמים של מספר שלם
* התקפת ערוץ צדדי
* התקפת קורלציה
* התקפת שיבוש
* מודל אורקל אקראי
* התקפת התנגשויות

 |

 |
| 

| בעיות מתמטיות ואלגוריתמים |
| --- |
| 
* בעיית לוגריתם דיסקרטי
* תחשיב אינדקסים
* נפה ריבועית
* אלגוריתם rho של פולרד
* נפת שדה מספרים
* אלגוריתם רו של פולרד ללוגריתמים
* אלגוריתם פוליג-הלמן

 |

 |
| 

| פונקציות גיבוב קריפטוגרפיות |
| --- |
| 
* SHA
* MD5
* MD4
* SHA-1
* SHA-2
* SHA-3
* RIPEMD
* Skein
* BLAKE
* Grøstl
* SipHash

 |

 |
| 

| אימות וזיהוי |
| --- |
| 
* אימות זהות
* סיסמה
* קוד אימות מסרים
* Poly1305
* סיסמה חד-פעמית

 |

 |
| 

| נושאים נלווים |
| --- |
| 
* מספר אקראי
* מספר ראשוני
* יתירות
* מפתח שיחה
* סטגנוגרפיה
* הצפנה קוונטית
* הצפנה פוסט-קוונטית
* עקרון קרקהופס
* אבטחת מידע
* קריפטוגרפיה ויזואלית
* אליס ובוב
* מסיבת חתימה על מפתחות ציבוריים
* שידור מוצפן
* הצפנת דיסקים
* הצפנת סף
* חתימה דיגיטלית מבוססת פונקציית גיבוב
* פונקציה זניחה
* רשת פייסטל
* רשת החלפה-תמורה
* הלבנה
* אימות מסרים
* חתימה עיוורת
* חישוב רב משתתפים בטוח

 |

 |