פרוטוקול אתגר-מענה
יישומי פרוטוקול אתגר-מענה > פרוטוקול אתגר-מענה מבוסס הצפנה סימטרית

במנגנון אתגר-מענה המבוסס על הצפנה סימטרית המוכיח והמאמת צריכים לשתף ביניהם מפתח הצפנה (או סיסמה ממנה נגזר מפתח ההצפנה) מראש. במקרה של רשת מרובת משתתפים נדרשת מעורבות צד שלישי נאמן הנקרא שרת הפצת מפתחות. תפקודו העיקרי של שרת זה הוא לייצר ולספק מפתחות הצפנה זמניים לכל אחד ממשתמשי הרשת כל אימת שמשתמש אחד נדרש לאמת זהותו מול משתמש אחר, זאת בעזרת שיתוף מפתחות הצפנה סודיים ארוכי טווח, מראש בין כל המשתמשים לבין שרת זה. דוגמה טובה לשרת כזה היא שרת KDC של פרוטוקול קרברוס.
טכניקות אימות המבוססות על תקן איזו ISO/IEC 9798 מניחות מראש כי המשתתפים משתפים ביניהם מפתחות הצפנה סודיים. כאשר המוכיח מאמת את זהותו כלפי המאמת על ידי הוכחת ידיעת מפתח ההצפנה המשותף במשלוח מסר אקראי תלוי-זמן, המוצפן תחת מפתח זה. בתנאי שפונקציית ההצפנה מספקת באופן עקיף גם שלמות המסר ומבטיחה כי כל שינוי בצופן ייחשף. להלן דוגמאות לפרוטוקול אימות מבוסס אתגר-מענה לפי מפרטי תקן איזו:
פרוטוקול אימות חד-צדדי עם חותם זמן:
| 0 | 1 | 2 |
| --- | --- | --- |
| 1. |  \ A\rightarrow B |  \ E_{K}(t_{A},B)\quad : |
הפרוטוקול מבוצע במהלך אחד, בו המוכיח A שולח למאמת B את  \ t_{A} הקרוי חותם זמן, זהו ערך המכיל את הזמן שמקורו בשעון המקומי של המוכיח בעת משלוח הוכחת האימות. אותו הוא מצפין בעזרת  \ E_{K} - פונקציית הצפנה סימטרית כלשהי המכילה מנגנון הבטחת שלמות, כאשר  \ K הוא המפתח המשותף. במסר זה המוכיח כולל גם את זהותו של המאמת B, זאת כדי לייחד הודעה זו כדי למנוע שימוש חוזר בה מול A. כאן B מסוגל לאמת את זהותו של A על ידי פענוח המסר המוצפן באמצעות המפתח המשותף ובדיקת פרמטר הטריות  \ t_{A} (מה שמחייב סנכרון הזמן בין המשתתפים), הוכחת הזהות מתקבלת אם וכאשר הזמן שמתקבל הוא בטווח המותר.
פרוטוקול אימות חד-צדדי עם מספר אקראי:
| 0 | 1 | 2 |
| --- | --- | --- |
| 1. |  \ A\leftarrow B |  \ r_{B}\quad : |
| 2. |  \ A\rightarrow B |  \ E_{K}(r_{B},B)\quad : |
בפרוטוקול זה המאמת שולח תחילה מספר אקראי  \ r_{A} כלשהו למוכיח, כאשר המוכיח משיב במסר המכיל את המספר שקיבל כשהוא מוצפן באמצעות פונקציית הצפנה E עם המפתח המשותף K. אולם כדי למנוע התקפה על הפרוטוקול (כאשר התוקף עלול לחזור ולשדר מסר זה מאוחר יותר כדי להתחזות ל-A), יש צורך להגביל את הפרוטוקול באופן שלא יאפשר שידור חוזר של אותם ערכים בטווח זמן כלשהו.
פרוטוקול אימות דו-צדדי עם מספר אקראי:
| 0 | 1 | 2 |
| --- | --- | --- |
| 1. |  \ A\leftarrow B |  \ r_{B}\quad : |
| 2. |  \ A\rightarrow B |  \ E_{K}(r_{A},r_{B},B)\quad : |
| 3. |  \ A\leftarrow B |  \ E_{K}(r_{B},r_{A})\quad : |
פרוטוקול זה דומה לקודמו אך מכיל מסר שלישי שנועד לאמת את זהותו של B כלפי A. כאשר A מאמת את זהותו על ידי בדיקת התאמת הערכים המוצפנים  \ r_{A},\,r_{B} שקיבל לאלו שמצויים ברשותו קודם לכן. אפשר לבסס פרוטוקול אימות דומה על פונקציית גיבוב במקום על פונקציית הצפנה, כאשר את  \ E_{K} מחליפים ב- \ H_{K} הנקראת MAC (קוד אימות מסרים) שהיא בעצם פונקציית גיבוב עם מפתח. ובשינוי קל של הפרוטוקול כדלהלן:
פרוטוקול אימות מבוסס MAC (פרוטוקול זה קרוי SKID):
| 0 | 1 | 2 |
| --- | --- | --- |
| 1. |  \ A\leftarrow B |  \ r_{B}\quad : |
| 2. |  \ A\rightarrow B |  \ r_{A},\,H_{K}(r_{A},r_{B},B)\quad : |
| 3. |  \ A\leftarrow B |  \ H_{K}(r_{B},r_{A},A)\quad : |
במקום לפענח את המסר, המשתתפים מאמתים את זהות חבריהם על ידי הפעלת פונקציית הגיבוב על המסר הגלוי  \ r_{A} ו- \ r_{B} בהתאמה (תוך שימוש במפתח המשותף) ואז השוואת התוצאה עם הערך המתקבל.