חתימה דיגיטלית – הבדלי גרסאות

תוכן שנמחק תוכן שנוסף
שורה 62:
כי לפי אויילר <math>m^{\phi(n)}\equiv 1\text{ (mod }n)</math> עבור כל <math>m</math> ולכן גם <math>m^{1+\phi(n)}\equiv m\text{ (mod }n)</math>. היות שאף אחד חוץ מהחותם אינו יודע מהם <math>d</math> או <math>\phi(n)</math> כיוון שהם מעולם לא פורסמו ולא ניתן לחשב אותם מתוך <math>e</math> ו-<math>n</math> מבלי לדעת מהם הגורמים הראשוניים, המקבל יכול להשתכנע שההחתימה אותנטית.
 
הבעיה היא שבשיטה זו שאפשר לזייף בקלות חתימה בדרך הפוכה. תחילה מייצרים את החתימה וממנה מפיקים מסר וחתימה תקפה עבורו כאשר למתקיף אין שליטה על תוכן המסר. המתקיף בוחר ערך אקראי כלשהו <math>\sigma</math> ומחשב את <math>m=\sigma^e\text{ mod }n</math> כעת החתימה <math>\sigma</math> היא חתימה לגיטימית של <math>m</math> למרות ש-<math>m</math> אינו בהכרח מסר בעל משמעות כלשהי. בכל זאת להתקפה מסוג זה השלכות הרסניות, במיוחד שהמתקיף יכול לנסות ערכים אקראיים רבים עד שהוא יצליחשיצליח למצוא ערך בכלבעל משמעות כלשהי. יתרה מזו אם המתקיף מצליח להשיג שני מסרים חתומים מהחותם הוא יכול לשלב את שניהם ולקבל חתימה אותנטית על התוצאה. זאת בגלל האופי הכפלי של הצפנת RSA לכן הצפנה זו אינה מתאימה ישירות להכנת חתימה דיגיטלית. אחת הדרכים לבצע זאת היא בשילוב פונקציית גיבוב חסינת [[התקפת התנגשויות|התנגשויות]]. כך שהחתימה היא על <math>H(m)</math> במקום על <math>m</math>.
 
==מניעת הכחשה וחותם-זמן==