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

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

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