פרוטוקול נידהאם-שרודר

בקריפטוגרפיה, פרוטוקול נידהאם-שרודר הוא פרוטוקול להעברת מפתחות על גבי רשת לא מאובטחת אשר פותח ב-1978 על ידי מדעני המחשב רוג'ר נידהאם ומייקל שרודר. לפרוטוקול זה ישנן שתי גרסאות, אשר האחת מתבססת על צופן סימטרי והשנייה מתבססת על צופן אסימטרי. מטרת הפרוטוקול הוא ייצור של מפתח שיחה (Session Key) בין שני משתתפים בערוץ התקשורת על מנת להקטין את חלון ההתקפה על הערוץ. הפרוטוקול מתבסס על הצפנה סימטרית (פרוטוקול שיתוף מפתח) והיווה למעשה את הבסיס לפרוטוקול "קרברוס" החדיש יותר. בפרוטוקול זה יש שני משתתפים אותם נכנה כ "אליס" ( A ) {\displaystyle (A)} ו"בארט" ( B ) {\displaystyle (B)} , ושרת שלצורך ההדגמה נקרא לו "טום" ( T ) {\displaystyle (T)} שמשמש כגוף "צד שלישי" עליו אליס ובארט סומכים. שרת זה נקרא גם Key Distribution Center או בקיצור KDC - מרכז להעברת מפתחות. המפתח K A T {\displaystyle {K_{AT}}} הוא מפתח הידוע רק לאליס ולטום. המפתח K B T {\displaystyle {K_{BT}}} ידוע רק לבארט ולטום. N A {\displaystyle N_{A}} ו- N B {\displaystyle N_{B}} הם מספרים שנוצרו לשימוש חד-פעמי (נונסים) על ידי אליס ובארט בהתאמה. K A B {\displaystyle {K_{AB}}} (או K S {\displaystyle {K_{S}}} כאשר S מסמלת Session) הוא מפתח השיחה - מפתח ההצפנה הסימטרי שייווצר עבור השיחה. שלבי הפרוטוקול: A → T : A , B , N A {\displaystyle A\rightarrow T:\left.A,B,N_{A}\right.} : בשלב זה אליס שולחת הודעה בה היא מאשרת בפני טום (השרת) שברצונה ליצור קשר עם בארט. T → A : { N A , K A B , B , { K A B , A } K B T } K A T {\displaystyle T\rightarrow A:\{N_{A},K_{AB},B,\{K_{AB},A\}_{K_{BT}}\}_{K_{AT}}} : טום מייצר עבורה מפתח שיחה K A B {\displaystyle {K_{AB}}} , יוצר עותק שלו עבור בארט (שמוצפן עם המפתח שידוע רק לטום ולבארט) וגם עבור אליס עצמה. כיוון שאליס יכולה לבקש מפתחות עבור מספר גורמים נוספים בו-זמנית, הנונס המצורף הוא דרך של טום לוודא שזהו המענה לאותה בקשה שנשלחה מאליס בזמן כלשהו בשלב הקודם עבור בארט. A → B : { K A B , A } K B T {\displaystyle A\rightarrow B:\{K_{AB},A\}_{K_{BT}}} : אליס מעבירה את המפתח לבארט, שמפענח אותו עם המפתח שידוע רק לו ולטום על מנת לאמת את ההודעה. B → A : { N B } K A B {\displaystyle B\rightarrow A:\{N_{B}\}_{K_{AB}}} : בארט שולח לאליס נונס מוצפן עם מפתח השיחה כדי להראות לאליס שאכן המפתח הגיע ליעדו. A → B : { N B − 1 } K A B {\displaystyle A\rightarrow B:\{N_{B}-1\}_{K_{AB}}} : אליס מבצעת פעולת חשבון כלשהי על הנונס, מצפינה אותו עם מפתח השיחה ומעבירה חזרה לבארט על מנת להוכיח שהקשר עדיין תקין. השלב הרביעי פגיע להתקפת שליחה מחדש; האקר שברשותו מפתח שיחה ישן, יכול להשתמש בו לרעה ולהתחזות לבארט על ידי שליחת הודעה לאליס עם אותו המפתח. פרוטוקול קרברוס מתקן את הפרצה על ידי הוספת חתימת זמן. מטרת הפרוטוקול הוא להבטיח אימות של שני משתתפים בערוץ התקשורת, והנחת היסוד היא שמשתמשים באלגוריתם הצפנה על ידי מפתח ציבורי (לדוגמה RSA). גם בפרוטוקול זה יש שלושה צדדים אותם נכנה שוב כאליס ( A ) {\displaystyle (A)} , בארט B {\displaystyle B} וטום ( T ) {\displaystyle (T)} . זוג המפתחות K P u b A {\displaystyle K_{PubA}} ו- K P r i v A {\displaystyle K_{PrivA}} מורכב מהמפתח הציבורי והמפתח הפרטי של אליס בהתאמה. זוג המפתחות K P u b B {\displaystyle K_{PubB}} ו- K P r i v B {\displaystyle K_{PrivB}} מורכב מהמפתח הציבורי והמפתח הפרטי של בארט בהתאמה. זוג המפתחות K P u b T {\displaystyle K_{PubT}} ו- K P r i v T {\displaystyle K_{PrivT}} מורכב מהמפתח הציבורי והפרטי של טום (השרת). הזוג הזה משמש למעשה כחתימה דיגיטלית כאשר K P r i v T {\displaystyle K_{PrivT}} יכול לשמש עבור חתימה על הודעות ו- K P u b T {\displaystyle K_{PubT}} משמש לאישור החתימה. המפתח הציבורי של השרת, K P u b T {\displaystyle K_{PubT}} , חייב להיות ידוע לשני הצדדים לפני תחילת הפרוטוקול. שלבי הפרוטוקול: A → T : A , B {\displaystyle A\rightarrow T:\left.A,B\right.}  : אליס מבקשת מטום את המפתחות הציבוריים שידועים לבארט. T → A : { K P u b B , B } K P r i v T {\displaystyle T\rightarrow A:\{K_{PubB},B\}_{K_{PrivT}}}  : טום שולח לאליס את המפתח הציבורי של בארט, לא לפני שהוא חותם עליה עם המפתח הפרטי שלו. A → B : { N A , A } K P u b B {\displaystyle A\rightarrow B:\{N_{A},A\}_{K_{PubB}}}  : אליס שולחת לבארט נונס רנדומלי, מצפינה עם המפתח הציבורי של בארט ושולחת אליו. B → T : B , A {\displaystyle B\rightarrow T:\left.B,A\right.}  : בארט יודע עכשיו שאליס רוצה ליצור איתו קשר, אז הוא מבקש מטום את המפתחות של אליס. T → B : { K P u b A , A } K P r i v T {\displaystyle T\rightarrow B:\{K_{PubA},A\}_{K_{PrivT}}}  : טום שולח לבארט את המפתח הציבורי של אליס, חתום עם המפתח הפרטי שלו. B → A : { N A , N B } K P u b A {\displaystyle B\rightarrow A:\{N_{A},N_{B}\}_{K_{PubA}}}  : בארט בוחר נונס, שולח אותו לאליס ביחד עם הנונס שלה כדי להוכיח שהוא פענח את המסר עם המפתח הפרטי שלו K P r i v B {\displaystyle K_{PrivB}} . A → B : { N B } K P u b A {\displaystyle A\rightarrow B:\{N_{B}\}_{K_{PubA}}}  : אליס מאשרת את קבלת הנונס מבארט על מנת להוכיח שהיא פענחה את המסר עם המפתח הפרטי שלה K P r i v A {\displaystyle K_{PrivA}} . גרסתו הבסיסית של הפרוטוקול פגיעה להתקפת אדם באמצע. בהתקפה זו האקר יכול לשכנע את אליס ליצור קשר עימו על מנת שיעביר את ההודעות לבארט ובכך לשבש את הקשר ולשכנע את בארט שהוא אכן דובר עם אליס. במסגרת המתקפה, אליס שולחת למתחזה את הנונס שלה, אשר מפענח את המסר עם המפתח הפרטי שלו. המתחזה מעביר את ההודעה לבארט ומעמיד פנים שהיא הגיעה מאליס. בארט מצרף להודעה את הנונס שלו ושולח אותו למתחזה, אשר מעביר את המסר לאליס, כביכול הוכחה לכך שהמסר אכן נקלט. אליס מפענחת את הנונס של בארט עם המפתח הפרטי שלה, ומעבירה אותו למתחזה. המתחזה משתמש בנונס הבלתי-מפוענח של בארט על מנת להצפין אותו מחדש ולשלוח לבארט על מנת להוכיח שאליס כביכול אכן פענחה את המסר. התקפה זו זוהתה על ידי מדען המחשב הבריטי גאווין לואו בשנת 1995, אשר הציע שיטה בה מתוקן צעד 6 כך שיכלול גם הודעת אימות כלשהי מבארט נוסף על שני הנונסים כך שבשלב 6 אליס מקבלת מבארט: B → A : { N A , N B , B } K P u b A {\displaystyle B\rightarrow A:\{N_{A},N_{B},B\}_{K_{PubA}}} . המתחזה אינו יכול להשיב להודעה כיוון שאליס מצפה לקבל מסר עם הזהות של המתחזה בעוד שהיא בפועל מקבלת מסר עם הזהות של בארט. קרברוס (פרוטוקול) מדיה וקבצים בנושא פרוטוקול נידהאם-שרודר בוויקישיתוף פירוט התיקון של לואו, באתר www.lsv.fr