פרוטוקול אתגר-מענה

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

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

הרעיון הבסיסי של פרוטוקול אתגר-מענה לאימות זהויות מאוד פשוט, במקום לשלוח את הסיסמה עצמה באופן גלוי, הסיסמה משמשת כמפתח הצפנה לאחר המרה למפתח הצפנה באמצעות פונקציה מוסכמת (בדרך כלל פונקציית גיבוב קריפטוגרפית), כך שהנתונים שעוברים בערוץ התקשורת אינם במצב קריא. השימוש במפתחות הצפנה שנגזרים מסיסמת הלקוח כדי לאמת את זהותו נקרא אימות חזק, במובן שהמאמת אינו נדרש לחשוף את סיסמתו או המפתח הפרטי שלו באופן שמאפשר למצותת ליירטו, אלא תחת זאת שולח ערכים זמניים המוצפנים באמצעות המפתח הסודי שברשותו. חילופי המסרים בין המוכיח למאמת אינם מספקים כל תועלת למצותת, גם ניתוחם לא ישא פרי, מאחר שהם בכמות מועטה מדי שאינה מספקת לצורך ניתוח הצופן או ניחוש המפתח. 
ניתן ליישם פרוטוקול אתגר-מענה במספר דרכים: באמצעות טכניקות סימטריות בלבד, בשילוב הצפנה א-סימטרית או בשיטת הוכחה באפס ידע. 
מנגנון האימות של GSM משתמש בפרוטוקול אתגר מענה בשלושה מהלכים, באמצעים סימטריים בלבד, לצורך אימות הלקוח בעת חיוג בטלפון הנייד. טיוטה RFC 5802 הנקראת Salted Challenge Response Authentication Mechanism בקיצור SCRAM מפרטת את מנגנוני האימות מבוססי אתגר-מענה של שלד התוכנה SASL ו-GSS-API.

פרוטוקול CHAP

Challange-Handshake Authentication Protocol הוא פרוטוקול אימות המבוצע מעל פרוטוקול נקודה לנקודה (PPP) - תקן תקשורת להעברת חבילות מידע להתקשרות דו כיוונית. אלגוריתם CHAP משתמש בשיטת אתגר מענה המתוארת באמצעות תהליך הקרוי Handshake המתבצע בשלושה מהלכים לביצוע אימות זהויות המשתתפים בפרוטוקול. הפרוטוקול מבוצע בשכבת הקו של מודל ה-OSI בתחילת ההתקשרות וכן עשוי להתבצע פעמים נוספות במהלך ההתקשרות, על מנת לצמצם את הזמן בו הקשר חשוף לניסיונות התחזות מצד תוקף פוטנציאלי. 
אלגוריתם CHAP מתבצע בסיום שלב ההתקשרות בין הנקודות, לאחר שההתקשרות בוצעה בהצלחה, צד אחד הקרוי 'מזהה' שולח מסר הקרוי 'אתגר' לחברו. החבר מגיב במתן 'מענה' - ערך המופק בדרך כלל באמצעות פונקציית גיבוב והמזהה בודק אם המענה מתאים לערך שהוא מחשב בעצמו. אם הערך נמצא מתאים למצופה המזהה מגיב בחיוב, אחרת הקשר מסתיים בכישלון.
יתרונות הפרוטוקול הם במתן הגנה מפני התקפת שידור חוזר מצד אחד מהצדדים המשתתפים בפרוטוקול לאחר סיום ההתקשרות או מצד גורם שלישי המצותת למהלכי פרוטוקול ומנסה להתחזות לאחד הצדדים. זאת באמצעות שימוש בערכים משתנים גם של המזהה וגם של האתגר. תהליך האימות מסתמך על סוד הידוע אך ורק לצדדים המשתתפים בפרוטוקול, המזהה והצד המתקשר עמו. הסוד המשותף עצמו לא מועבר במהלך האימות בערוץ התקשורת ועל כן אינו נתון לסכנת ציתות וחשיפה. כמו כן הפרוטוקול מאפשר אימות זהויות דו כיווני. החסרונות הם שהפרוטוקול מחייב שהסוד המשותף יהיה במצב גלוי ועל כן לא ניתן להצפינו באופן שלא ניתן לשחזור (כגון באמצעות פונקציה חד כיוונית). הפרוטוקול אינו יעיל במערכות גדולות מאחר הוא מחייב סוד משותף נפרד לכל זוג מתקשרים אפשרי. מלבד זאת הפרוטוקול אינו מסתמך על צד שלישי נאמן ועל כן לא ניתן להעביר את הסוד המשותף לנקודות אחרות ברשת מבלי להסתכן, גם אם הסוד יוצפן בדרך המאפשרת שחזורו.

חומרה

פרוטוקול אתגר-מענה ניתן ליישום בעזרת כרטיס חכם המכיל שבב או מעגל אלקטרוני מתאים, אם המעגל המשולב או שבב הזיכרון שבו הם חסיני מגע (tamper resistant).