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

מתוך ויקיפדיה, האנציקלופדיה החופשית
קפיצה לניווט קפיצה לחיפוש

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

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

מונחים כלליים[עריכת קוד מקור | עריכה]

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

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

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

הגדרה כללית[עריכת קוד מקור | עריכה]

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

הקשר להצפנה אסימטרית[עריכת קוד מקור | עריכה]

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

השוואה לקוד אימות מסרים[עריכת קוד מקור | עריכה]

Postscript-viewer-shaded.png ערך מורחב – קוד אימות מסרים

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

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

פונקציית גיבוב[עריכת קוד מקור | עריכה]

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

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

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

הגדרה מתמטית[עריכת קוד מקור | עריכה]

חתימה דיגיטלית מורכבת משלושה אלגוריתמים: אלגוריתם הכנה "Gen", אלגוריתם חתימה "Sign" ואלגוריתם אימות "Verify" המוגדרים ביתר פירוט כך:

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

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

.

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

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

ביטחון[עריכת קוד מקור | עריכה]

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

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

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

.

במילים הכוונה היא שסיכוייו של הזייפן להצליח בזיוף החתימה נמוכים מערך זניח שניתן להתעלם ממנו.

אלגוריתם חתימה דיגיטלית מבוסס RSA[עריכת קוד מקור | עריכה]

Postscript-viewer-shaded.png ערך מורחב – RSA

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

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

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

מניעת הכחשה וחותם-זמן[עריכת קוד מקור | עריכה]

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

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

סוגי חתימה דיגיטלית[עריכת קוד מקור | עריכה]

מנגנוני חתימה דיגיטלית מתחלקים לשני סוגים עיקריים (ראו תרשים):

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

סוגים נוספים של חתימה דיגיטלית[עריכת קוד מקור | עריכה]

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

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

רשות מאשרת[עריכת קוד מקור | עריכה]

כדי לדעת שהחתימה הדיגיטלית היא אותנטית, יש לשייכה לבעליה בדרך בטוחה כלשהי, כגון באמצעות תעודה דיגיטלית המונפקת על ידי צד שלישי - רשות מאשרת (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.

שימושי חתימה דיגיטלית[עריכת קוד מקור | עריכה]

דואר אלקטרוני[עריכת קוד מקור | עריכה]

החלפת מפתחות ציבוריים בכנס אוגוסט פינגווין.
  • וידוא זהות שולח דואר אלקטרוני. הודעה חתומה דיגיטלית מאשרת את זהות השולח, ומוודאת שלא מדובר בהודעה מזויפת.
  • וידוא הקריאה של ההודעה. באמצעות החתימה האלקטרונית ומנגנון אישור S/MIME אפשר לוודא ששום אדם זולת הנמען לא קרא באמצע את הודעת הדואר ואם היא נקראה מי היו אנשים והמועדים. כל אלו מגיעים בדואר חוזר לשולח.
  • הצפנה. ניתן להצפין הודעת הדואר, באופן שרק הנמען יוכל לקרוא את תוכנה. תהליך ההצפנה נעשה באופן הבא: השולח משיג את המפתח הציבורי של המקבל (בחלונות קובץ בסיומת cer) שתואם למפתח הפרטי של החתימה הדיגיטלית (בחלונות קובץ בסיומת PFX) ולהצפין באמצעותו את ההודעה. רק בעל החתימה הדיגיטלית שמחזיק במפתח הפרטי יוכל לפענח את ההודעה (בעל החתימה יכול להפיץ בדרכים שונות את המפתח הציבורי שלו. בתוכנת האאוטלוק הליך זה נעשה באופן אוטומטי. ברגע שאדם מקבל הודעה שחתומה בחתימה דיגיטלית, הוספה של אדם זה לספר הטלפונים, תוסיף גם את המפתח הציבורי שלו, כך שבעת שליחת הודעה אליו, לחיצה על כפתור הצפן, תצפין את ההודעה)

הבטחת שלמות[עריכת קוד מקור | עריכה]

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

תקשורת[עריכת קוד מקור | עריכה]

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

אחסון וגיבוי מפתח החתימה של חתימה דיגיטלית[עריכת קוד מקור | עריכה]

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

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

מגבלות חוקיות[עריכת קוד מקור | עריכה]

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

חוק חתימה אלקטרונית בישראל[עריכת קוד מקור | עריכה]

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

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

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

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

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

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

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

סעיף 2(א) לחוק קובע את תוקפה של החתימה האלקטרונית:

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

סעיף 3 לחוק עוסק בקבילותה של החתימה האלקטרונית, וקובע:

מסר אלקטרוני החתום בחתימה אלקטרונית מאובטחת, יהיה קביל בכל הליך משפטי ויהווה ראיה לכאורה לכך -

(1) שהחתימה היא של בעל אמצעי החתימה;
(2) שהמסר האלקטרוני הוא זה שנחתם על ידי בעל אמצעי החתימה.

הערה לשונית[עריכת קוד מקור | עריכה]

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

ראו גם[עריכת קוד מקור | עריכה]

קישורים חיצוניים[עריכת קוד מקור | עריכה]