פרוטוקול RSA (ריבסט-שמיר-אדלמן) העמיד את התקשורת המאובטחת בין מחשבים על פסים מתמטיים יציבים. ויש גם קשר ישראלי. סודות ההצפנה: כתבה שביעית בסדרה

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

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

הפתרון הראשון שנמצא היה פרוטוקול דיפי-הלמן-מרקל משנת 1976, שהשתמש במפתח ציבורי גלוי כדי להעביר מידע שהוצפן באמצעות המפתחות הפרטיים הידועים רק למקבל ולשולח. שלושה מומחי הצפנה ומדעי המחשב – רון ריבסט (Rivest) מהמכון הטכנולוגי של מסצ'וסטס (MIT), עדי שמיר ממכון ויצמן למדע ולאונרד אדלמן (Adleman) מאוניברסיטת דרום קליפורניה –שכללו את עקרונות השיטה בשנה שלאחר מכן, והעמידו אותה על פסים מתמטיים יציבים יותר.

הפרוטוקול שפיתחו, שנקרא RSA על בסיס ראשי התיבות של שמות המשפחה שלהם, נמצא בשימוש עד היום, אם כי יש כיום פרוטוקולים מהירים יותר שמתאימים טוב יותר להעברת כמויות גדולות של נתונים. בשנת 2002 זכו השלושה בפרס טיורינג, שנחשב לפרס החשוב ביותר בתחום מדעי המחשב, על פיתוח הפרוטוקול. בדיעבד יש מי שטוענים שקדם להם בפיתוח שיטת ההצפנה הזאת המהנדס והקריפטוגרף הבריטי ג'ורג' אליס (Ellis), בעת שעבד בשירות הממשלתי של הממלכה המאוחדת.

מימין: לאונרד אדלמן, עדי שמיר ורון ריבסט | ויקיפדיה, Ronald L. Rivest, Duncan.Hull, len adlmen
שלושה מומחי הצפנה ומדעי המחשב שכללו את עקרונות השיטה. מימין: לאונרד אדלמן, עדי שמיר ורון ריבסט | ויקיפדיה, Ronald L. Rivest, Duncan.Hull, len adlmen

קצת מתמטיקה

כוחו של פרוטוקול RSA נשען על כמה עובדות מתמטיות מתורת המספרים, שהראשונות מביניהן נוגעות למספרים ראשוניים. המשפט היסודי של האריתמטיקה קובע שכל מספר טבעי הגדול מ-1 אפשר להציג בדרך אחת ויחידה כמכפלה של מספרים ראשוניים, כלומר אין עוד מכפלה של ראשוניים שתניב את אותו מספר. לדוגמה, המספר 52 הוא מכפלה של המספרים הראשוניים 2, 2 ו-13 – ושלהם בלבד. ההצגה של מספר כמכפלה של מספרים ראשוניים נקראת פירוק לגורמים ראשוניים. עובדה חשובה נוספת היא שקשה מאוד, ובעיקר לוקח זמן רב, לפרק מספרים גדולים מאוד לגורמים הראשוניים שלהם. לפיכך, הזמן שיידרש לאלגוריתמי המחשב הידועים כיום לפרק מספר כזה, למשל מסדר גודל של 1024 ביטים, לגורמים הראשוניים שלו הופך את המשימה הזאת לאתגר בלתי אפשרי מכל בחינה מעשית.

מושג מתמטי נוסף שעלינו להכיר הוא "זרות": שני מספרים ייחשבו זרים אם אין להם מחלק משותף. כלומר אין שום מספר פרט ל-1 שמחלק את שניהם ללא שארית. למשל המספרים הזרים ל-5 וקטנים ממנו הם 1, 2, 3, ו-4. על בסיס המושג הזה, פונקציית אוילר, המסומנת כ-ϕ(n), היא הפונקציה שמספקת את גודל קבוצת המספרים שקטנים מ-n וזרים לו. למשל ערכה של פונקציית אוילר עבור המספר 5 הוא 4, כי יש ארבעה מספרים טבעיים שזרים לו וקטנים ממנו.

לפונקציית אוילר יש שתי תכונות שימושיות שרלוונטיות עבורנו. הראשונה היא שהערך של פונקציית אוילר עבור מספר ראשוני הוא המספר עצמו פחות 1. למשל ערכה של הפונקציה עבור 19 הוא 18. זה נובע מכך שמספר ראשוני הוא מספר שהמחלקים היחידים שלו הם 1 והוא עצמו. התכונה השנייה היא שהערך של פונקציית אוילר עבור מכפלה של שני מספרים זרים ושונים הוא המכפלה של ערכי הפונקציה עבור שני המספרים בנפרד ובניסוח מתמטי, ϕ(n⋅m)=ϕ(n)⋅ϕ(m). למשל במקום לחשב את ערכה של הפונקציה עבור המספר 15 (3 כפול 5), ניתן לחשב את ערכה עבור 3 ולהכפיל בערכה של הפונקציה עבור 5. מאחר ששניהם מספרים ראשוניים, נשאר להפחית 1 משניהם ולקבל שהערך של פונקציית אוילר עבור 15 הוא 2X4, כלומר 8. 

לאונרד אויילר, מתמטיקאי שוויצרי בין המאה ה-18 | New York Public Library, Science Photo Library
פונקציית אויילר מספקת את גודל קבוצת המספרים שקטנים מ-n וזרים לו. לאונרד אויילר, מתמטיקאי שוויצרי בין המאה ה-18 | New York Public Library, Science Photo Library

שני המושגים האחרונים רלוונטיים גם לפרוטוקול דיפי-הלמן מרקל, שדנו בו בכתבה הקודמת. הראשון הוא "פונקציה חד-כיוונית", שהיא פונקציה שקשה לשחזר מה היה המספר שהכנסנו לה במקור (קלט) על סמך התוצאה שלה (פלט); השני הוא הפונקציה החד-כיוונית הנקראת מודולו, שנותנת את שארית החלוקה של שני מספרים. לדוגמה, במשוואה 5mod2=1, 1 הוא שארית החלוקה של 5 ב-2.

הפרוטוקול

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

הפרוטוקול בנוי כך:

לאונרד אויילר, מתמטיקאי שוויצרי בין המאה ה-18 | New York Public Library, Science Photo Library

דוגמה

לאונרד אויילר, מתמטיקאי שוויצרי בין המאה ה-18 | New York Public Library, Science Photo Library

חתימה דיגיטלית

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

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

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

חולשות

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

 

3 תגובות

  • חגי

    זמני חישוב

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

  • דניאל

    הכתבה ממש לא מסבירה באופן

    הכתבה ממש לא מסבירה באופן מסבר את הדעת מדוע הצופן של בוב הוא פרטי או יחודי. בהינתן הידע הציבורי n,e משתמע שכל אחד יכול לפתור את המשוואה ההופכית ולפענח את הצופן. כל מה שבוב היה צריך לעשות הוא לפתור את המשוואה עבור d אבל לא היה כאן שום דבר סודי. לדוגמא עבור הדוגמא הניתנת בכתבה "מרגל" יכול להשתמש במידע הציבורי ולבחור k=8 ולקבל d=(1+8*288)/5 = 461. גם המספר הזה יתן mod(288) 193^461 = 10. אני חושב שצריך להבהיר יותר לעומק מה המידע הציבורי, מה המידע הפרטי, וכיצד נעשה בו שימוש.

  • קובי

    רכילות

    סתם רכילות: שמיר עצמו לא משתמש באבטחה שכולנו שמחים שהוא יצר עבורנו לגישה לבנקים.