MQV

מתוך המכלול, האנציקלופדיה היהודית
קפיצה לניווט קפיצה לחיפוש

MQV (קיצור של Menezes-Qu-Vanstone) הוא פרוטוקול קריפטוגרפי לשיתוף מפתח הצפנה עם אימות, שפותח ב-1998 על ידי אלפרד מנזס וסקוט ונסטון מאוניברסיטת ווטרלו, מינגהו קו מחברת Certicom[1][2], בשיתוף עם לורי לאו וג'רי סולינס מה-NSA. פרוטוקול MQV מבוסס על פרוטוקול דיפי-הלמן, הוא היעיל ביותר מסוגו וניתן להפעילו בכל חבורה ציקלית סופית, במיוחד בחבורת עקום אליפטי (במקרה זה מסומן בקיצור ECMQV). כמו כן קיימות שתי וריאציות נוספות של הפרוטוקול; העברת מפתח מאומת במהלך יחיד, המתאים לסביבה בה רק צד אחד מקוון וכן העברת מפתח בשלושה מהלכים המספק אימות דו צדדי.

הפרוטוקול מפורט בתקן SEC 1[3] של איגוד SECG (שנוסד על ידי סרטיקום) ושולב בתקן IEEE P1363, בתקנים ANSI X9.63, X9.42 וכן RFC-5656 של IETF. כמו כן נכלל על ידי NSA בחבילה הקריפטוגרפית Suit B לפי המלצות NIST SP 800-56A. ייתכן שכמה מגרסאות הפרוטוקול מוגנות בפטנט. גרסאות מתקדמות של הפרוטוקול אטרקטיביות במיוחד להצפנת תקשורת אלחוטית ברשתות מקומיות כמו IEEE 802.11 או לטווחים בינוניים כמו WiMAX, כאשר משתמשי הקצה הם בדרך כלל מכשירים המוגבלים במשאבים וברוחב פס.

רקע

Postscript-viewer-blue.svg ערך מורחב – בעיית הפצת מפתחות

מאז המצאת המפתח הציבורי על ידי דיפי והלמן ופתרון בעיית הפצת המפתחות פותחו מספר פרוטוקולים קריפטוגרפיים להעברת מפתח סודי. כללית קיימים שני סוגים של שיתוף או הקמה (Key establishment) של מפתחות הצפנה; תהליך "שיתוף מפתח" (Key agreement) שבו שני משתתפים או יותר מסכמים ביניהם על מפתח סודי כך שכל אחד מהם תורם את חלקו להקמתו במידה שווה, לעומת "העברת מפתח" (Key transport) שבו צד אחד מייצר ומעביר מפתח סודי למשתתפים האחרים, בעוד שהם אינם בהכרח תורמים להקמתו ואין להם שליטה עליו.

החסרון בפרוטוקול דיפי הלמן במתכונתו המקורית שהוא אינו מספק אימות זהויות ולכן חשוף להתקפת אדם באמצע. אפשר להוסיף מרכיב אימות על ידי חתימה דיגיטלית או תעודת מפתח ציבורי החתומה על ידי רשות מאשרת. משיקולי יעילות נעשו מאמצים לפתח פרוטוקולים המספקים אימות עקיף כחלק אינטרגלי ללא צורך בתהליכים נפרדים ובהתערבות צד שלישי. אפשר לחלק את מרכיב האימות לשני סוגים, שיתוף מפתח מאומת שבו צד אחד משתף ומאמת מפתח עם צד אחר, כך שהוא מקבל אישור לזהותו של המשתתף האחר (כיוון אחד) ונקרא בקיצור AK וכן "שיתוף מפתח מאומת עם אישור", שבנוסף מאשר את זהות השרת כלפי הלקוח (דו כיווני) שנקרא בקיצור AKC (קיצור של Authenticated Key agreement with Confirmation).

בסיום הפרוטוקול יכולים המשתתפים הלגיטימיים להיות סמוכים ובטוחים שמלבדם אין איש יודע מהו המפתח הסודי המשותף. בעיקרון אפשר להשתמש בו כמפתח הצפנה להצפנת ההתקשרות ביניהם. מטעמי בטחון מומלץ לא להשתמש בו ישירות אלא לגזור ממנו מפתח אחר באמצעות פונקציית גזירת מפתח (Key derivation function) בקיצור KDF. המפתח הסודי המשותף שנגזר בסופו של דבר נקרא מפתח שיחה, כשמו הוא נועד להתקשרות אחת או מספר התקשרויות מוגבל כשלאחריהן מושמד.

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

מאפיינים

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

  • מפתח ידוע (known-key); הפרוטוקול ייוותר בטוח נוכח מצב שבו נחשפו לעיני התוקף מפתחות שיחה אחרים (שנוצרו בעבר על ידי הפרוטוקול).
  • שמירת סודיות קדימה (forward secrecy); גם אם מפתח ארוך-טווח של אחד המשתתפים נחשף, הדבר לא ישפיע על סודיות מפתחות שיחה שנוצרו לפני החשיפה.
  • מניעת התחזות (impersonation); במצב שבו המפתח הפרטי של אחד המשתתפים ידוע לתוקף לא יתאפשר לו לעשות בו שימוש כדי להתחזות לאחרים כלפי משתמש זה (ברור שבמקרה כזה התוקף מסוגל להתחזות למשתמש הלגיטימי הזה כלפי אחרים כיוון שהמפתח הפרטי מייצג בעצם את זהותו, אך ההיפך אינו מחויב המציאות ואף רצוי למנוע).
  • שיתוף לא ידוע (unkown key-share); התוקף לא יצליח לגרום למשתתף אחד לשתף איתו מפתח סודי בעוד שהלה סבור בטעות ששיתף מפתח עם מישהו אחר (כלומר צד אחד מאמין נכון שהוא משתף מפתח עם מישהו שהוא מכיר בעוד שהצד השני למעשה משתף בלא ידיעתו מפתח עם התוקף וסבור שהוא מישהו אחר).
  • שליטה; אף אחד מהצדדים לא יוכל לאלץ את מפתח השיחה שיהיה ערך כלשהו לפי בחירתו.
  • יעילות; מספר המהלכים צריך להיות המינימלי האפשרי וכן תעבורת רשת נמוכה (סך כל הסיביות ששודרו).

אפשר לממש את פרוטוקול MQV בתת-חבורה של החבורה הציקלית מסדר ראשוני, למשל המפתח הפרטי הוא השלם והציבורי הוא הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle X=g^x\text{ mod }p} כאשר הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle g} יוצר של השדה. במקרה זה המפתחות צריכים להיות בגודל של מעל 2000 ספרות בינאריות לעומת זאת יש יתרון ביישום הפרוטוקול בעקום אליפטי מכיוון שהוא מציע בטחון זהה עם מפתח קצר משמעותית (בין 160 ל-512 סיביות נכון לשנת 2015). מסיבה זו תיאור הפרוטוקול מתמקד בעקום אליפטי. מניחים שהפרמטרים הציבוריים של העקום ידועים לכל המשתתפים. וכן כל מפתח ציבורי הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle Q} (שהוא נקודה בעקום) מאומת ונבדק שהוא עומד בהגדרות המערכת. בבדיקה מוודים ש:

אינו שווה הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \mathcal{O}} (הנקודה באין סוף).
הקואורדינטות הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle x_Q,y_Q} הם אלמנטים של השדה הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \mathbb{F}_q} .
הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle Q} מקיים את משוואת העקום.
הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle nQ=\mathcal{O}}

הבדיקה האחרונה יקרה במונחי מיחשוב ולכן נוטים בדרך כלל להימנע ממנה. אפשר במקום זאת לוודא שהמפתח המשותף הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle K} שהופק בסיום הפרוטוקול הוא נקודה בתת-חבורה הנוצרת על ידי הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle P} כלומר הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \{\mathcal{O},P,2P,...,(n-1)\cdot P\}} .

פרוטוקול דיפי-הלמן הבסיסי בעקום אליפטי (ללא אימות)

פרוטוקול דיפי-הלמן בעקום אליפטי ללא אימות (נקרא בקיצור ECDH) אנלוגי לפרוטוקול דיפי הלמן בחבורה רגילה. נתונים פרמטרי התחום של העקום לפי הגדרות התקן: , העקום האליפטי הוא הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle E(\mathbb{F}_q)} כאשר הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle q} הסדר של השדה הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \mathbb{F}_q} וכן הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle a,b} מקדמים של משוואת העקום, היא נקודת הבסיס, הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle n} הסדר הראשוני של נקודת הבסיס, הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle h} פקטור משלים כך שמתקיים הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \textstyle n=\frac{|E|}{h}} ו-הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle |E|} מייצג את מספר הנקודות בעקום .

המשתתפת הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle A} עם מפתח סודי שהוא שלם אקראי הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle d_A} והמפתח הציבורי הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle Q_A=d_AP} (תוצאת כפל סקלארי של נקודת הבסיס הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle P} ב-) מסומנת בקיצור הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle A^{(d_A,Q_A)}} והמשתתף הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle B} עם מפתחות הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle d_B,Q_B} בהתאמה, רוצים לשתף ביניהם סוד הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle K} , תחילה הם מחליפים ביניהם מפתחות ציבוריים ואז מחלצים את הסוד המשותף כדלהלן:

הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle B^{(d_B,Q_B)}}
הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \xrightarrow{\qquad\qquad Q_A\qquad\qquad}}
הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \xleftarrow{\qquad\qquad Q_B\qquad\qquad}}
הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle K=d_AQ_B} הפענוח נכשל (שגיאת המרה. השרת ("https://wikimedia.org/api/rest_") השיב: "Cannot get mml. Server problem."): {\displaystyle K=d_{B}Q_{A}}

היות שמתקיים הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle K=d_AQ_B=d_Ad_BP=d_Bd_AP=d_BQ_A} , הסוד המשותף הוא הנקודה הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle K} .

פרוטוקול MQV

במקור הוצעו שלוש וריאציות של הפרוטוקול; שיתוף במהלך יחיד כך שרק צד אחד מקוון, בשני מהלכים עם אימות חד כיווני ובשלושה מהלכים עם אימות דו כיווני. יהי הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle f} פרמטר בטחון של הפרוטוקול (אורך הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle n} בסיביות), כלומר . אם הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle R} נקודה כלשהי בעקום הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \overline{R}} הוא פונקציה שממפה נקודה בעקום למספר שלם כדלהלן; הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \overline{R}=(\overline{x}\text{ mod }2^{\left\lceil f/2\right\rceil})+2^{\left\lceil f/2\right\rceil}} כאשר הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \overline{x}} הוא השלם המייצג את הקואורדינטה הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle x} של הנקודה הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle R} . כדי לטשטש אינטראקציה אפשרית בין הפונקציה לבין העקום האליפטי (שעלולה לפתוח פתח להתקפת התנגשות) יש כאלו שממליצים להשתמש בפונקציית גיבוב.

פרוטוקול 1 - שיתוף מפתח עם אימות בשני מהלכים

הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle A^{(d_A,Q_A)}\qquad } הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle B^{(d_B,Q_B)}\qquad }
הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \xrightarrow{\qquad \qquad R_A\qquad\qquad }}
הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \xleftarrow{\qquad \qquad R_B\qquad\qquad }}
הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle s_A=(r_A+\overline{R}_Ad_A)\text{ mod }n} הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle s_B=(r_B+\overline{R}_Bd_B)\text{ mod }n}
הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle K=h\cdot s_A\cdot (R_B+\overline{R}_BQ_B)} הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle K=h\cdot s_B\cdot (R_A+\overline{R}_AQ_A)}

תיאור המהלכים

  1. הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle A} מייצרת מספר אקראי הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle r_A} בטווח הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle [1,n-1]} ומחשבת את הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle R_A=r_AP} את התוצאה משדרת ל-הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle B} .
  2. הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle B} מייצר מספר אקראי הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle r_B} בטווח הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle [1,n-1]} ומחשב את הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle R_B=r_BP} ושולח את התוצאה ל-הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle A} .
  3. הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle A} מוודה את תקפות הערכים ומחשבת את הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle s_A=(r_A+\overline{R}_Ad_A)\text{ mod }n} ואת הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle K=h\cdot s_A\cdot (R_B+\overline{R}_BQ_B)} .
  4. אם אחד הערכים אינו תקף או ש-הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle K=\mathcal{O}} אז הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle A} מסיימת את הפרוטוקול בכישלון.
  5. הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle B} בודק תקפות באופן דומה, מחשב את הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle s_B=(r_B+\overline{R}_Bd_B)\text{ mod }n} ואת הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle K=h\cdot s_B\cdot (R_A+\overline{R}_AQ_A)} .
  6. הסוד המשותף הוא הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle K} .

כאמור לפי הצעה של מספר מומחים כדי למנוע את התקפת שיתוף לא ידוע (להלן) כדאי להשתמש בפונקציית KDF מוסכמת על הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle K} עם מידע משותף כלשהו שמכיל את זהות המשתתפים בפרוטוקול ולהשתמש בתוצאה האחרונה כמפתח שיחה. וכן מומלץ לכלול בכל המסרים של הפרוטוקול את זהות המשתתפים.

הפרוטוקול לא הוכח באופן פורמלי כבטוח אך לטענת המפתחים קיימת סברה היוריסטית שהוא מספק אימות הדדי של המפתח באופן עקיף וכן שהוא עמיד כנגד ההתקפות המתוארות לעיל; מפתח שיחה ידוע, שמירת סודיות קדימה, מניעת התחזות ושליטה. חשיפת המפתחות הזמניים אינה מסכנת את חשיפת המפתחות הפרטיים ארוכי הטווח של המשתתפים ולא את מפתח השיחה הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle K} . הערכים הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle s_A} ו-הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle s_B} משמשים למעשה כחתימה עקיפה של המשתתפים על המפתחות הציבוריים הזמניים שלהם הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle R_A} ו-הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle R_B} בהתאמה. אפשר לראות שהפרוטוקול נכון כי:

הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle K=h\cdot s_A\cdot s_B\cdot P=h\cdot (r_Ar_B+r_Ad_B\overline{R}_B+r_Bd_A\overline{R}_A+d_Ad_B\overline{R}_A\overline{R}_B)P}

לעומת פרוטוקול דיפי הלמן הבסיסי שבו הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle K=r_Ar_BP} . כמו כן כדי לשפר יעילות הביטוי הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \overline{R}} מנצל רק מחצית מסיביות הקואורדינטה הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle x} של הנקודה, זאת כדי להקל על פעולות הכפל הסקלארי בסעיפים 3 ו-5 והכפל ב-הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle h} נועד להבטיח שהסוד המשותף הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle K} יהיה נקודה בתת-חבורה מסדר הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle n} בעקום האליפטי. כמו כן היות שאת הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle r_AP} אפשר לחשב מראש יוצא שכל צד מבצע רק 1.5 פעולות כפל סקלארי און ליין.

פרוטוקול 2 - שיתוף מפתח עם אימות במהלך אחד

המטרה היא ש-הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle A} ו-הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle B} ישתפו מפתח סודי על ידי מהלך יחיד מ-הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle A} ל-הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle B} . מצב זה רצוי במקרה שרק משתמש אחד מקוון כמו ביישומי דואר אלקטרוני. הפרוטוקול הוא כדלהלן:

הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle A^{(d_A,Q_A)}} הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle B^{(d_B,Q_B)}}
הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \xrightarrow{\qquad \qquad R_A\qquad\qquad }}
הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle s_A=(r_A+\overline{R}_Ad_A)\text{ mod }n} הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle s_B=(d_B+\overline{Q}_Bd_B)\text{ mod }n}
הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle K=h\cdot s_A\cdot (Q_B+\overline{Q}_BQ_B)} הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle K=h\cdot s_B\cdot (R_A+\overline{R}_AW_A)}

פירוט המהלכים

  1. הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle A} מייצרת מספר אקראי הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle r_A} בטווח הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle [1,n-1]} ומחשבת את הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle R_A=r_AP} ושולחת את התוצאה ל-הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle B} .
  2. הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle A} מחשבת את הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle s_A=(r_A+\overline{R}_Ad_A)\text{ mod }n} ואת הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle K=h\cdot s_A\cdot (Q_B+\overline{Q}_BQ_B)} .
  3. הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle B} מוודה תקפות ערכים ומחשב את הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle s_B=(d_B+\overline{Q}_Bd_B)\text{ mod }n} ואת הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle K=h\cdot s_B\cdot (R_A+\overline{R}_AQ_A)} .
  4. המפתח המשותף הוא הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle K} .

מטבע הדברים היות ש-הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle B} אינו תורם למהלכי הפרוטוקול בערך אקראי משלו, חסרים בפרוטוקול הגנה מפני התקפת מפתח ידוע ושמירת סודיות קדימה.

פרוטוקול 3 - שיתוף מפתח מאומת עם אישור דו צדדי

הגרסה הזו של פרוטוקול 1 מנצלת פרימיטיב קריפטוגרפי נוסף שמספק אימות כמו MAC כדי לבצע אימות ואישור דו צדדי. וכן בפרוטוקול הבא הערכים הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \mathcal{H}_1} ו-הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \mathcal{H}_2} הם פונקציית לגזירת מפתח. למשל אם הערך הוא הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle z} אפשר לממש פונקציית גיבוב בטוחה כמו SHA-2 של הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle z} כשהוא משורשר עם ערך נוסף, כך הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \mathcal{H}_1=\text{SHA2}(01 \ \| \ z)} וכן הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \mathcal{H}_2=\text{SHA2}(02 \ \| \ z)} .

הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle B^{(d_B,Q_B)}}
הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \xrightarrow{\qquad \qquad \qquad \qquad R_A\qquad\qquad \qquad \qquad }}
הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \xleftarrow{\qquad \qquad R_B,\text{MAC}_{k'}(2,B,A,R_B,R_A)\qquad \qquad \ }}
הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \xrightarrow{\quad \qquad \qquad \text{MAC}_{k'}(3,A,B,R_A,R_B)\qquad \qquad \quad }}
הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle s_B=(r_B+\overline{R}_Bd_B)\text{ mod }n}
הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle K=h\cdot s_A\cdot (R_B+\overline{R}_BQ_B)} הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle K=h\cdot s_B\cdot (R_A+\overline{R}_AQ_A)}
הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle k=\mathcal{H}_1(z)} הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle k=\mathcal{H}_1(z)}
הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle k'=\mathcal{H}_2(z)} הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle k'=\mathcal{H}_2(z)}

פירוט המהלכים

  1. הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle A} מייצרת מספר אקראי הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle r_A} בטווח הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle [1,n-1]} ומחשבת את הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle R_A=r_AP } ושולחת את התוצאה ל-הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle B} .
  2. הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle B} מייצר מספר אקראי הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle r_B} בטווח הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle [1,n-1]} , מחשב את הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle R_B=r_BP} ושולח את התוצאה ל-הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle A} .
  3. הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle B} מחשב את הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle s_B=(r_B+\overline{R}_Bd_B)\text{ mod }n} ואת הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle K=h\cdot s_B\cdot (R_A+\overline{R}_AQ_A)} .
  4. הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle B} מחלץ את הערך שהוא הקואורדינטה הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle x} של הנקודה הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle K} ומחשב את הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle k=\mathcal{H}_1(z)} ואת הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle k'=\mathcal{H}_2(z)} .
  5. הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle B} מחשב את הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \text{MAC}_{k'}(2,B,A,R_B,R_A)} ושולח את תג האימות יחד עם הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle R_B} ל-הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle A} .
  6. הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle A} מחשבת את הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle s_A=(r_A+\overline{R}_Ad_A)\text{ mod }n} ואת הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle K=h\cdot s_A\cdot (R_B+\overline{R}_BQ_B)} ובודקת שהנקודה הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle K} תקינה.
  7. הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle A} מחלצת את הערך הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle z} שהוא פונקציה של הקואורדינטה הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle x} של הנקודה הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle K} ומחשבת את הערכים הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle k=\mathcal{H}_1(z)} , הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle k'=\mathcal{H}_2(z)} .
  8. הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle A} מחשבת את הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \text{MAC}_{k'}(3,A,B,R_A,R_B)} ושולחת את התג ל-הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle B} .
  9. הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle B} מחשב את הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \text{MAC}_{k'}(3,A,B,R_A,R_B)} ומוודה שהתוצאה זהה לתג שקיבל מ-הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle A} .
  10. מפתח השיחה הוא הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle k} .

כאמור בטחון הפרוטוקול היוריסיטי בלבד, כולל את כל התכונות המצוינות לעיל ויעיל במיוחד.

פרוטוקול HMQV

ב-2005 פרסם הוגו קרווציק מאמר[4] שבו הוא מבקר את בטחון MQV תחת מודלים של בטחון ידועים ומציין שהתגלו על ידו כמה חולשות בפרוטוקול. למרות שהפרוטוקול זכה לפופולריות רבה וה-NSA הכליל אותו ברשימה הנבחרת של אלגוריתמים שעברו בדיקה של קריפטאנליסטים מקצועיים, הרי שלא ניתנה הוכחה פורמלית לביטחונו במונחים של בטחון סמנטי לפי מודל סיבוכיות סטנדרטי או במסגרת מודל אורקל אקראי. הוגו הציע לתקן את הליקויים שמצא על ידי אלגוריתם משופר משלו שנקרא HMQV שפועל עם פונקציית גיבוב ומציע יעילות דומה למקורי ועם בטחון מוכח. אלפרד מנזס ביקר את ממצאיו של הוגו וטען כי HMQV אינו בטוח יותר ומציג התקפה ריאליסטית במודל קנטי-קרווציק שבה אפשר לחשוף את המפתח הפרטי של המשתתפים. וכן מצא לדבריו שגיאות קריטיות בהוכחות המתמטיות שהובאו על ידי קרווציק. התיקון שהציע מנזס נקרא HMQV-1 והוא גרסה מתוקנת שעמידה בפני ההתקפה המצוינת (אולם בשל התיקון אינה מהירה יותר מהמקורית). קרווציק הגיב על טענות מנזס במאמר משלו וסתר חלק מהן.

חלק מהוויכוח מתמקד סביב הבדיקה שנקראת G-test, כלומר במהלך הפרוטוקול המקורי בוצע הכפל ב-הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle h} כדי להבטיח שהתוצאה שייכת לתת-חבורה הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle G} מסדר הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle n} וכי לא נבחר בכוונה תחילה ערך מתת חבורה קטנה יותר שעלולה להפוך את הפרוטוקול ללא בטוח כי התוקף יכול להפעיל כוח גס אם ידוע לו שהמפתח נמצא בטווח אחר קטן משמעותית מהמצופה. ב-HMQV הבדיקה הזו הוסרה לטובת יעילות בטענה שאינה מוסיפה לבטחון האלגוריתם לפי מודל אורקל אקראי. על כל פנים, הוספת פונקציית גיבוב לפרוטוקול MQV כפי שהציע קרווציק מקובלת כיום כיוון שהיא יעילה למדי ואינה מסכנת את בטחון הפרוטוקול.

השוואת פרוטוקול HMQV לעומת MQV (בחבורה ציקלית רגילה)

נתון פרוטוקול דיפי הלמן הבסיסי (שאינו מאומת), בו המשתתפת הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \hat A} עם מפתח פרטי הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle a} והמפתח הציבורי הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle A=g^a} והמשתתף הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \hat B} עם מפתחות הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle b,B=g^b} בהתאמה, רוצים לשתף ביניהם מפתח סודי הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle K} הם פועלים כך; הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \hat A} שולחת ל-הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \hat B} את הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle (\hat A, \hat B, A=g^a)} וכן הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle B} שולח ל-הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle A} את הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle (\hat B,\hat A,B=g^b)} . המפתחות הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle x} ו-הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle y} הם המפחות הפרטיים הזמניים של הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle A} ו-הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle B} בהתאמה ואילו הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle X} ו-הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle Y} הם המפתחות הציבוריים המתאימים. בשני הפרוטוקולים הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \hat A} ו-הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \hat B} מריצים את פרוטוקול דיפי-הלמן הבסיסי ואז:

הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \hat A} מחשבת את הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \sigma_{\hat A}=(YB^e)^{x+da}} ,
הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \hat B} מחשב את הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \sigma_{\hat B}=(XA^d)^{y+eb}} .

כעת שני המשתתפים מחלצים את הסוד המשותף הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle K=H(\sigma_{\hat A})=H(\sigma_{\hat B})}

פרוטוקול MQV פרוטוקול HMQV
הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle d=\overline{X} \ \overset{\underset{\mathrm{def}}{}}{=} \ 2^{\ell}+(X\text{ mod }2^{\ell})} ,

הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle e=\overline{Y} \ \overset{\underset{\mathrm{def}}{}}{=} \ 2^{\ell}+(Y\text{ mod }2^{\ell})}

הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle d=\overline{H}(X,\hat B)} ,

הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle e=\overline{H}(Y,\hat A)}

בטחון

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

ב-2001 ביקרו רוגווי, בלייר ובונה[5] את הפרוטוקול כפי שהתקבל לתקן SEC-1 והעלו כמה נקודות שראוי להיזהר בהן, תיארו כמה התקפות אפשריות כנגד הפרוטוקול וציינו שהאיומים אינם פטאליים והפרוטוקול טוב לדעתם אם כי יש צורך להגדיר במדויק את יעדי הפרוטוקול באופן שיאפשר להעריך את ביטחונו, מה שלא נעשה בתקן למעט כמה הערות כלליות. כמו כן מציינים שהפרוטוקול יכול להיות בטוח רק במסגרת שבה כל משתמש מחזיק במפתחות הצפנה ארוכי טווח ובמפתחות ארעיים חד פעמיים, מסיבה זו פרוטוקול 2 לא בטוח.

ב-2003 פרסמו פטר לידביטר ונייג'ל סמארט התקפה[6] כנגד גרסת העקום האליפטי של הפרוטוקול: ECMQV (וכן כל פרוטוקול שיתוף מפתח מאומת מבוסס דיפי-הלמן שאינו עושה שימוש בחתימה דיגיטלית) באמצעות התקפת סריג שבה ניתן לחשוף את המפתח הפרטי ארוך הטווח של אחד המשתמשים כאשר חלק מהפרמטרים ידוע (כגון אם משתתף אחד הצליח לגלות חלק מסיביות ערך כלשהו המשמש את המשתתף השני בהכנת המפתח הארעי. גרעין התחלתי, Nonce, וקטור האתחול וכדומה. ערכים כאלו יכולים להתגלות לתוקף בדרכים אחרות כמו דליפה עקב יישום גרוע של האלגוריתם בתוכנה או בהתקפת ערוץ צדדי כמו קרינה אלקטרומגנטית וכדומה). בכל אופן לאחר מספר ריצות של הפרוטוקול, המשתתף יכול לחשוף את המפתח הפרטי של הצד השני ולהתחזות אליו. הממצאים מראים שבטחון הפרוטוקול מצטמצם ל-הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle O(q^{1/4})} ולא הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle O(q^{1/2})} כאשר הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle q} הוא סדר השדה.

התקפת שיתוף לא ידוע

פרוטוקול MQV (פרוטוקול 1) אינו פתור את בעיית "שיתוף לא ידוע" לעיל, כלומר אפשר לבצע התקפה של קליסקי[7] כדלהלן: המצותת הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle E} מיירטת את מפתח הציבורי הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle R_A} המיועד ל-הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle B} ומחליפה אותו ב-הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle R_E=R_A+\overline{R}_AQ_A-P} מחשבת את הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle d_E=(\overline{R}_E)^{-1}\text{ mod }n} וכן את הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle Q_E=d_EP} ואז רושמת את המפתחות הללו אצל הרשות המאשרת כדי שיהיו תקפים ושולחת את הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle R_E} ל-הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle B} . המשתמש הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle B} מגיב במשלוח הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle R_B} ל-הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle E} והיא מעבירה אותו הלאה ל-הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle A} ללא שינוי. כעת הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle A} ו-הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle B} שיתפו את הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle K} בזמן ש-הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle B} משוכנע כל העת שהוא משתף מפתח עם הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle E} בעוד שלמעשה הוא שיתף מפתח עם הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle A} . ישנן שתי דרכים לפתור בעיה זו, האחת להוסיף את זהות המשתתפים לכל מהלכי הפרוטוקול והשנייה להוסיף מהלך שלישי כמו בפרוטוקול 3.

הערות שוליים

  1. ^ An Efficient Protocol for Authenticated Key Agreement
  2. ^ Law, L.; Menezes, A.; Qu, M.; Solinas, J.; Vanstone, S. (2003). "An Efficient Protocol for Authenticated Key Agreement". Des. Codes Cryptography 28 (2): 119–134
  3. ^ SEC 1: Elliptic Curve Cryptography
  4. ^ HMQV: A High-Performance Secure Diffie-Hellman Protocol
  5. ^ Evaluation of Security Level of Cryptography ECMQVS (from SEC 1)
  6. ^ Leadbitter, P. J.; Smart, N. P. (2003). "Analysis of the Insecurity of ECMQV with Partially Known Nonces". Information Security. 6th International Conference, ISC 2003, Bristol, UK, October 1–3, 2003. Proceedings. Lecture Notes in Computer Science 2851. pp. 240–251
  7. ^ B. Kaliski. An unknown key-share attack on the MQV key agreement protocol. Manuscript. Proceedings version appeared in RSA 17 Conference 2000 Europe, Munich, April 2000. Work based on earlier communication to IEEE P1363a and ANSI X9F1 working groups, June 1998.