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

באבטחת מידע ובקריפטוגרפיה, חתימה דיגיטלית או חֲתִימָה סִפְרָתִית (באנגלית: Digital Signature, בלשון החוק חתימה אלקטרונית מאובטחת - ראו הערה לשונית) היא שיטה מתמטית המאפשרת להוכיח אותנטיות של מסמך או מסר דיגיטלי. חתימה דיגיטלית תקפה אמורה לשכנע את המקבל שהמסר או המסמך שקיבל נוצרו במקור מהשולח המוכר לו (אימות), השולח אינו יכול להכחיש שהוא זה שהכין את המסמך או המסר (אי-הכחשה) וכן שהמסמך או המסר לא שונו במהלך המשלוח אם בגלל תקלה בתקשורת, באמצעי האחסון או בזדון על ידי צד שלישי (שלמות).
חתימה דיגיטלית היא מרכיב חשוב במערכות הצפנה ואבטחת מידע ונכללת בפרוטוקולים קריפטוגרפיים רבים, בין היתר ברשתות תקשורת, עדכוני תוכנה, מסרים מידיים, מסחר אלקטרוני, מחשוב ענן, ניהול חוזים ומכרזים מקוונים ובכל מקרה שבו יש חשיבות לאתר זיוף או חבלה. לחתימה הדיגיטלית שימושים נוספים כמו אמצעי מניעת התכחשות וחותם-זמן נוטריוני. דוגמה לחתימה דיגיטלית נפוצה היא DSA שהוכרה לראשונה מבחינה חוקית על ידי ממשלת ארצות הברית ומשמשת כיום כחתימה דיגיטלית תקנית במדינות רבות, בהן ישראל.

הגדרה כללית

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

הקשר להצפנה אסימטרית

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

פונקציית גיבוב

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

רשות מאשרת

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

רשת אמון

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

תקנים בינלאומיים

תקן חתימה דיגיטלית DSA הקרוי גם DSS הוא תקן חתימה דיגיטלית שהוצע על ידי המכון הלאומי לתקנים וטכנולוגיה (NIST) של ארצות הברית ב-1991 ונבחר כתקן חתימה דיגיטלית רשמי של ממשלת ארצות הברית המהווה חלק מתקן פדרלי FIPS 186. התקן מפרט שיטה בטוחה לחתימה על מסמכים דיגיטליים בהתבסס על בעיית לוגריתם דיסקרטי. וכן שיטות בטוחות להכנת מפתחות חתימה ואימות ופונקציות גיבוב בטוחות.
ISO/IEC 9796-3:2006 הוא תקן בינלאומי לחתימה דיגיטלית עם שחזור מבוסס על לוגריתם דיסקרטי. תקן זה מפרט מודל גנרי למנגנון חתימה דיגיטלית המאפשר שחזור מלא או חלקי של המסר במטרה להפחית בצריכת זיכרון וצמצום היקף התעבורה. התקן מבוסס על בעיית לוגריתם דיסקרטי בשדות סופיים או בעקום אליפטי מעל שדות סופיים וכן מפרט סוגי פונקציות יתירות בטוחות, כמו יתירות טבעית או יתירות מוספת.
תקן PKCS #1 (מערכות הצפנת מפתח פומבי - תקן RSA) של מעבדות RSA (הופץ לראשונה ב-1991), מפרט דרכים ליישום חתימה דיגיטלית עם נספח, בהתבסס על RSA בתוספת שיטות בטוחות להבניית מסרים באופן שלא יסכנו את בטיחות תהליך החתימה. תקן זה נפוץ ביותר ומהווה כיום חלק מתקנים אחרים ביניהם תקן ANSI X9, תקן IEEE P1363, מערכות S/MIME ,SSL ו-WAP.

הבטחת שלמות

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

תקשורת

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

אחסון וגיבוי מפתח החתימה של חתימה דיגיטלית

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

מגבלות חוקיות

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

הערה לשונית

השם "חתימה אלקטרונית" נמצא בישראל בשימוש נרחב, גם בלשון החוק, אף שהמונח המקביל לו באנגלית הוא "Digital Signature" - חתימה דיגיטלית, ולמונח "Electronic signature" מיוחסת משמעות אחרת. שפות רבות הלכו בעקבות האנגלית, אך בגרמנית, בניגוד לאנגלית, נהוג המונח "Elektronische Signatur", בדומה לעברית.