הבדלים בין גרסאות בדף "פרוטוקול אתגר-מענה"

אין תקציר עריכה
מ (פרוטוקול אתגר מענה הועבר לפרוטוקול אתגר-מענה: הילכו שניים יחדיו בלתי אם נועדו)
[[פרוטוקול קריפטוגרפי|פרוטוקול]] '''אתגר-מענה''' (Challenge response), הוא פרוטוקול [[אימות זהויות]], שבו ישות אחת הנקראת "טוען" או "מוכיח", מוכיחה את זהותה לישות אחרת הנקראת "מאמת" בהפגנת ידיעת סוד המשוייךהמשויך לאותה ישות, מבלי לחשוף את הסוד עצמו בפני המאמת במהלך הפרוטוקול. ההוכחה נעשית באמצעות מתן מענה לאתגר תלוי-זמן, בדרך כלל מספר שנבחר באופן אקראי על ידי המאמת בתחילת הפרוטוקול, כאשר המענה על האתגר נגזר מסודו של המוכיח ומהאתגר. היות שבכל ריצת פרוטוקול האתגר שונה, המענה אינו מספק כל מידע שימושי לצורך אימות חוזר, עבור [[ציתות|מצותת]] המאזין למהלכי הפרוטוקול.
 
פרוטוקול אתגר-מענה מספק מה שקרוי "אימות חזק" המושג באמצעים [[קריפטוגרפיה|קריפטוגרפיים]] באופן כזה שהמוכיח אינו חושף את סיסמתו כלל. בניגוד לשיטת ה[[סיסמה]] הרגילה. בה המוכיח מאמת את זהותו באמצעות משלוח סיסמה או ערך מוצפן שלה. תהליך אימות באמצעות סיסמה נקרא "אימות חלש" כיוון שהמוכיח נדרש לשלוח את סיסמתו בערוץ תקשורת לא מוגן שבו מצותת עלול ליירט את הסיסמה.
 
הוכחה אינטראקטיבית נקראת "הוכחת ידע" אם היא מכילה שני מאפיינים בסיסיים אלו:
* '''שלמות''', הפרוטוקול ייקרא "שלם" אם בהנתןבהינתן משתתפים הגונים, הפרוטוקול יצליח בהסתברות מכרעת לשכנע את המאמת בנכונות הטענה. כאשר ההסתברות לכשלוןלכישלון הפרוטוקול זניחה.
* '''נאותות''', הפרוטוקול נקרא "נאות" אם מוכיח שאינו הגון המנסה להתחזות למוכיח האמיתי, אינו מסוגל להשלים את הפרוטוקול בהצלחה מול המאמת ללא ידיעת סוד השקול לסודו של המוכיח האמיתי. נאותות מבטיחה כי הפרוטוקול אכן מספק הוכחת ידיעת הסוד שבידי המוכיח. וכי מתחזה לא יוכל לרמות בטענה כי הוא יודע את הסוד.
 
==ישומיישומיי פרוטוקול אתגר-מענה==
הרעיון הבסיסי של פרוטוקול אתגר-מענה לאימות זהויות מאוד פשוט, במקום לשלוח את הסיסמה עצמה באופן גלוי, הסיסמה משמשת כמפתח הצפנה, כך שהנתונים שעוברים בערוץ התקשורת אינם במצב קריא. השימוש בסיסמה כמפתחות הצפנה (אם סימטריים ואם א-סימטריים) כדי לאמת זהויות נקרא "אימות חזק", כיוון שהמאמת אינו נדרש לחשוף את סיסמתו או המפתח הפרטי שלו באופן שמאפשר למצותת ליירטו, אלא תחת זאת שולח ערכים זמניים המוצפנים באמצעות המפתח הסודי שברשותו. חילופי המסרים בין המוכיח למאמת אינם מספקים כל תועלת למצותת, גם ניתוחם לא ישא פרי, מאחר והם בכמות מועטה מדי שאינה מספקת לצורך ניתוח הצופן.
 
במנגנון אתגר-מענה המבוסס על הצפנה סימטרית המוכיח והמאמת צריכים לשתף ביניהם מפתח הצפנה מראש. במקרה של [[תקשורת מחשבים|רשת]] מרובת משתתפים נדרשת מעורבות [[צד שלישי]] נאמן הנקרא [[שרת הפצת מפתחות]]. תפקודו העיקרי של שרת זה הוא לייצר ולספק מפתחות הצפנה זמניים לכל אחד ממשתמשי הרשת כל אימת שמשתמש אחד נדרש לאמת זהותו מול משתמש אחר, זאת בעזרת שיתוף מפתחות הצפנה סודיים ארוכי טווח, מראש בין כל המשתמשים לבין שרת זה.
 
טכניקות אימות המבוססות על תקן איזו ISO/IEC 9798 מניחות מראש כי המשתתפים משתפים ביניהם מפתחות הצפנה סודיים. כאשר המוכיח מאמת את זהותו כלפי המאמת על ידי הוכחת ידיעת מפתח ההצפנה המשותף במשלוח מסר אקראי תלוי-זמן, המוצפן תחת מפתח זה. בתנאי שפונקצייתשפונקצית ההצפנה מספקת באופן עקיף גם שלמות המסר ומבטיחה כי כל שינוי בצופן ייחשף. להלן דוגמאות לפרוטוקול אימות מבוסס אתגר-מענה לפי מפרטי תקן איזו:
 
'''פרוטוקול אימות חד-צדדי עם חותם זמן''':
|}
 
הפרוטוקול מבוצע במהלך אחד, בו המוכיח A שולח למאמת B את <math>\ t_A</math> הקרוי [[חותם-זמן]], זהו ערך המכיל את הזמן שמקורו בשעון המקומי של המוכיח בעת משלוח הוכחת האימות. אותו הוא מצפין בעזרת <math>\ E_K</math> - פונקצייתפונקצית הצפנה סימטרית כלשהי המכילה מנגנון הבטחת שלמות, כאשר <math>\ K</math> הוא המפתח המשותף. במסר זה המוכיח כולל גם את זהותו של המאמת B, זאת כדי לייחד הודעה זו כדי למנוע שימוש חוזר בה מול A. כאן B מסוגל לאמת את זהותו של A על ידי פענוח המסר המוצפן באמצעות המפתח המשותף ובדיקת פרמטר הטריות <math>\ t_A</math> (מה שמחייב סנכרון הזמן בין המשתתפים), הוכחת הזהות מתקבלת אם וכאשר הזמן שמתקבל הוא בטווח המותר.
 
'''פרוטוקול אימות חד-צדדי עם מספר אקראי''':
|}
 
בפרוטוקול זה המאמת שולח תחילה [[מספר אקראי]] <math>\ r_A</math> כלשהו למוכיח, כאשר המוכיח משיב במסר המכיל את המספר שקיבל כשהוא מוצפן באמצעות פונקצייתפונקצית הצפנה ''E'' עם המפתח המשותף ''K''. אולם כדי למנוע התקפה על הפרוטוקול (כאשר התוקף עלול לחזור ולשדר מסר זה מאוחר יותר כדי להתחזות ל-A), יש צורך להגביל את הפרוטוקול באופן שלא יאפשר שידור חוזר של אותם ערכים בטווח זמן כלשהו.
 
'''פרוטוקול אימות דו-צדדי עם מספר אקראי''':
|}
 
פרוטוקול זה דומה לקודמו אך מכיל מסר שלישי שנועד לאמת את זהותו של B כלפי A. כאשר A מאמת את זהותו על ידי בדיקת התאמת הערכים המוצפנים <math>\ r_A,\,r_B</math> שקיבל לאלו שמצויים ברשותו קודם לכן. אפשר לבסס פרוטוקול אימות דומה על פונקצייתפונקצית גיבוב במקום על פונקצייתפונקצית הצפנה, כאשר את <math>\ E_K</math> מחליפים ב-<math>\ H_K</math> הנקראת [[MAC (קריפטוגרפיה)|MAC]] (קוד אימות מסרים) שהיא בעצם פונקצייתפונקצית גיבוב עם מפתח. ובשינוי קל של הפרוטוקול כדלהלן:
 
 
|}
 
במקום לפענח את המסר, המשתתפים מאמתים את זהות חבריהם על ידי הפעלת פונקצייתפונקצית הגיבוב על המסר הגלוי <math>\ r_A</math> ו-<math>\ r_B</math> בהתאמה (תוך שימוש במפתח המשותף) ואז השוואת התוצאה עם הערך המתקבל.
 
===פרוטוקול אתגר-מענה מבוסס מפתח-פומבי===
|}
 
הפרוטוקול מצריך שימוש בפונקצייתבפונקצית גיבוב כדי להסתיר את המספר האקראי r במסר הראשון, בנוסף ערך אקראי זה מוצפן תחת המפתח הפומבי של A יחד עם פרטים נלווים. כאן הטוען A מוכיח את זהותו על ידי פענוח האתגר שהוצפן באמצעות המפתח הפומבי שלו ושליחתו אל המאמת במצב קריא. בהצגת יכולת הפענוח במפתח הפרטי המתאים, הוא מוכיח זהותו.
 
[[פרוטוקול נידהם-שרודר]] לשיתוף מפתח מזוהה, מבוסס על רעיון דומה כאשר בנוסף לערך האקראי המשתתפים בפרוטוקול שולחים זה לזה מפתחות הצפנה חד-פעמיים לצורך הצפנה סימטרית.