Rivest Shamir Adleman

אישורים

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

הנה דרך אחת לדעת את זה, בהנחה שלשניכם יש את המפתחות הציבוריים והפרטיים, Ea, Eb, Da, Db שדיברנו עליהם קודם. נניח שאנחנו רוצים לשלוח לחבר שלנו הודעה שרק הוא יכול לקרוא אותה, אבל בדרך כזו שהוא בטח שההודעה הזו היא מאיתנו. כך צריך לעשות זאת:

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

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

l כאשר הוא יקבל את ההודעה, הוא יפצח אותה ע"י Db, ותהיה לו הודעה עם מידע נוסף שנראה עבורו כמו ג'יבריש, סתם אותיות זבל. אותיות הזבל הם מה שקיבלנו כאשר פיצחנו את השם שלנו.

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

 

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

"מה המצב בן-אדם? הנה הפיצוח שלי עבור 'אבגדהוזח': 'שרגאמשקר'."

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

© כל הזכויות שמורות. מערכת המידע האקדמית איתן 2003