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

תוכן שנמחק תוכן שנוסף
←‏שימושי חתימה דיגיטלית: קיצור, בקשת מקור ועריכה כללית
Yoavd (שיחה | תרומות)
מ הסרת קישורים עודפים, תיקון כיווניות הערת שוליים
שורה 1:
{{עריכה|הערך כולל פרקים לא אינציקלופדיים. מידע נוסף זמין בדף השיחה}}
 
'''חתימה דיגיטלית''' היא שיטה [[קריפטוגרפיה|קריפטוגרפית]] שמטרתה [[אימות זהות|לאמת]] את זהות השולח של [[קובץ מחשב]] שנשלח ממחשב אחד לאחר (הבטחת [[אותנטיות]]){{הערה|המונח העברי "חתימה אלקטרונית" לעתים מבולבל עם "חתימה דיגיטלית" אם כי בספרות אנגלית בלבול זה פחות נפוץ}}.
שורה 8:
 
==הגדרה כללית==
מקובל לראות בחתימה דיגיטלית כתת-קבוצה של [[חתימה אלקטרונית]] כלומר שחתימה דיגיטלית מאפשרת ביצוע חתימה אלקטרונית באופן [[קריפטוגרפיה|קריפטוגרפי]]{{הבהרה|איך בכלל אפשר לגזור את המסקנה מן ההנחה במקרה שלפננו?}}.
 
חתימה דיגיטלית מאפשרת ל'''חותם''' שהנפיק מפתח אימות ציבורי מתאים '''לחתום''' על מסמך בצורה כזו שכל מי שיש לו גישה למפתח האימות (ויודע שהוא שייך לחותם){{הבהרה|מהו ההבדל בין "מפתח ציבורי מתאים" ל"מפתח האימות" לפי כותב המידע שלפננו?}} יכול לוודא שלא חל שינוי במסמך שהגיע ממנו כלל.
 
חתימה אלקטרונית מקבילה במובנים מסוימים ל[[חתימה]] פיזית כגון חתימה [[כתב יד (כתב)|ידנית]] בכלי כתיבה או באמצעים פיזיים אחרים. באנלוגיה ל[[חתימה]]לחתימה קונבנציונלית, החתימה היא סימן היכר ייחודי לחותם ונפרדת מהמידע החתום{{הבהרה|מהי האנלוגיה, מי הגה אותה ולמה? אם הכוונה שהחתימה היא קובץ נפרד מן הקובץ שאותה היא אמורה לאשש כאותנטי, האין זה מובן מאליו?}}. למשל אדם חותם בחתימת ידו על גבי [[חוזה]] מכירה או השכרה. חתימת ידו משמשת גם לזיהויו וגם להתחייבותו לתוכן המסמך, כאשר ביטחונה נשען על הקושי הטכני שבזיוף החתימה. לעומת זאת, חתימה דיגיטלית, אין די בכך שתהיה ייחודית לחותם ונפרדת מהמידע מאחר שהעתקה והדבקה של מידע דיגיטלי קלה למדי ואין דרך להבחין בין החתימה המקורית לבין עותקים דיגיטליים שלה. חתימה דיגיטלית חייבת אם כן, להיות ייחודית ושונה עבור כל מסמך, באופן שלא יהיה ניתן להעתיקה שנעשתה על מסמך אחד ולהדביקה למסמך אחר.
 
==הגדרה מתמטית==
חתימה דיגיטלית מורכבת משלושה אלגוריתמים: אלגוריתם הכנה "Gen", אלגוריתם חתימה "Sign" ואלגוריתם אימות "Verify" המוגדרים ביתר פירוט כך:
 
*אלגוריתם הכנת המפתחות מקבל פרמטר ביטחון <math>n</math> ומפיק זוג מפתחות (<math>pk,sk</math>) הנקראים מפתח ציבורי ומפתח פרטי בהתאמה{{הבהרה|איזו התאמה? מהי בכלל האינטרפטציה?}}. שניהם באורך <math>n</math> סיביות.
*אלגוריתם החתימה (שיכול להיות [[אלגוריתם הסתברותי|הסתברותי]]) מקבל כקלט את מפתח החתימה <math>sk</math> ואת המסר <math>m\in\{0,1\}^*</math> ומפיק את החתימה <math>\sigma</math> בניסוח רשמי <math>\sigma\leftarrow\text{Sign}_{sk}(m)</math>.
שורה 26 ⟵ 25:
 
שימוש בסכימת חתימה נעשה כך שהחותם <math>S</math> מפעיל את אלגוריתם ההכנה <math>\text{Gen}(1^n)</math> כדי לקבל את (<math>pk,sk</math>).{{ש}}
החותם שומר את <math>sk</math> בסוד ומפרסם את <math>pk</math> באופן שיהיה אפשרי לוודא את שייכותו אליו. למשל, אפשר לפרסמו באתר אינטרנט או ברשומות ציבוריות כלשהן. כאשר <math>S</math> רוצה לחתום על המסמך <math>m</math> הוא מבצע <math>\sigma\leftarrow\text{Sign}_{sk}(m)</math> ושולח את <math>(m,\sigma)</math> ליעדם; המקבל יכול לבצע בדיקת תקפות על ידי חישוב <math>\text{Verify}_{pk}(m,\sigma)\overset{\underset{\mathrm{?}}{}}{=}1</math>. מבדיקה זו מוכיחים שני דברים. ש-<math>S</math> הוא המקור וכן ש-<math>m</math> אותנטי ולא חל בו שינוי בידי צד שלישי בזדון או שינוי בגלל תקלה בתקשורת.
 
במובן של [[תשתיות מפתח ציבורי]], <math>S</math> יכול לבצע לפחות פעם אחת משלוח בטוח ואמין של המפתח <math>pk</math> (למשל במפגש אישי); ברגע שהחותם הצליח להנפיק בצורה מאומתת מפתח אימות ציבורי אחד לפחות, אפשר להשתמש בו כדי לאמת מפתחות ציבוריים נוספים ובכך ליצור מעין רשת אמון.
שורה 34 ⟵ 33:
:ניסוי <math>\boldsymbol{\mathbb{Forge}_{\mathcal{A},\Pi}(n)}</math>
#פונקציית ההכנה <math>\text{Gen}(1^n)</math> מייצרת מפתחות (<math>sk,pk</math>) באורך <math>n</math>.
#המפתח <math>pk</math> ניתן למתקיף <math>\mathcal{A}</math> וכן ניתנת לו גישה לאורקל חתימה שנקרא <math>\text{Sign}_{sk}(\cdot)</math>. האורקל הוא מעין קופסה שחורה שהמתקיף מסוגל להפעיל כרצונו ולקבל עבור כל <math>m'</math> שיבחר את <math>\sigma=\text{Sign}_{sk}(m')</math> אך הוא אינו רשאי לראות את <math>sk</math>.
#נניח ש-<math>Q</math> מייצגת את השאילתות שהמתקיף שלח לאורקל. תוצאת הניסוי תוגדר מוצלחת אם א. <math>\text{Verify}_{pk}(m,\sigma)=1</math> ב. <math>m\not\in Q</math>.
לאור הניסוי האמור אפשר להגדיר ביטחון של סכמת חתימה דיגיטלית נגד זיופים לפי [[מודל מסר נבחר]] אדפטיבי אם עבור כל אלגוריתם יריב <math>\mathcal{A}</math> קיימת [[פונקציה זניחה]] <math>\text{negl}</math> כך שמתקיים:
שורה 42 ⟵ 41:
==שימושי חתימה דיגיטלית==
===דואר אלקטרוני===
* '''וידוא זהות שולח [[דואר אלקטרוני]]'''. הודעה חתומה דיגיטלית מאשרת את זהות השולח, ומוודאת שלא מדובר בהודעה מזויפת.
* '''וידוא הקריאה של ההודעה'''. באמצעות החתימה האלקטרונית ומנגנון אישור [[S/MIME]] אפשר לוודא ששום אדם זולת הנמען לא קרא באמצע את הודעת הדואר ואם היא נקראה מי היו אנשים והמועדים. כל אלו מגיעים בדואר חוזר לשולח.
* '''הצפנה'''. ניתן להצפין הודעת הדואר, באופן שרק הנמען יוכל לקרוא את תוכנה. תהליך ההצפנה נעשה באופן הבא: השולח משיג את המפתח הציבורי של המקבל (בחלונות קובץ בסיומת cer) שתואם למפתח הפרטי של החתימה הדיגיטלית (ב[[חלונות]] קובץ בסיומת PFX) ולהצפין באמצעותו את ההודעה. רק בעל החתימה הדיגיטלית שמחזיק במפתח הפרטי יוכל לפענח את ההודעה (בעל החתימה יכול להפיץ בדרכים שונות את המפתח הציבורי שלו. בתוכנת אאוטלוק הליך זה נעשה באופן אוטומטי. ברגע שאדם מקבל הודעה שחתומה בחתימה דיגיטלית, הוספה של אדם זה לספר הטלפונים, תוסיף גם את המפתח הציבורי שלו, כך שבעת שליחת הודעה אליו, לחיצה על כפתור הצפן, תצפין את ההודעה).
 
שורה 54 ⟵ 53:
==סוגי חתימה דיגיטלית==
מנגנוני חתימה דיגיטלית מתחלקים לסוגים אלה
 
* '''מנגנון חתימה דיגיטלית נפרדת'''. הוא אלגוריתם חתימה דיגיטלית שבו החתימה מוצמדת למסמך כערך נפרד{{הבהרה|למה הכוונה ב"ערך" כאן? אם הכוונה למסמך נפרד יש להבהיר זאת}} כאשר המסמך עצמו יכול להיות קריא. מנגנון זה מחייב ידיעת המסמך המקורי כקלט לצורך אימות החתימה. לסוג זה של חתימה דרושה גם [[פונקציית גיבוב קריפטוגרפית|פונקציית גיבוב]]. יתרונה הוא בכך שניתן לחתום על כל מסמך בכל גודל שהוא. כיוון שהחתימה מתבצעת על הערך המגובב של המסמך במקום על המסמך עצמו.
* '''מנגנון חתימה דיגיטלית עם מסר מובנה'''. הוא אלגוריתם חתימה שבו המסמך מוצפן בעזרת החתימה ופונקציית האימות מאפשרת חילוץ המסמך המקורי בשלמותו מתוך החתימה ועל כן אינו מחייב קיום המסמך המקורי לצורך האימות. דוגמה לאלגוריתם כזה היא וריאציה של חתימה דיגיטלית של [[RSA]]. סוג זה של חתימה דיגיטלית מחייב שימוש בפונקציית [[יתירות]] מתאימה. פונקציית היתירות נועדה להגדיל את מרחב (קבוצת כל הערכים האפשריים של) החתימה, יותר ממרחב המסמך עצמו. צורך זה נובע מהעובדה שאם הערך המופק מן החתימה הוא פונקציה חד-חד ערכית של המסמך ומספר האלמנטים בתמונה יהיה זהה, אזי תהיה דרך קלה למציאת מסמך אחר שהחתימה תהיה תקפה עבורו, בשל התכונה ה[[קומוטטיביות|חלופית]] של פונקציית החתימה. חסרונה של שיטה זו היא בכך שהחתימה מתאימה רק למסמכים קטנים. כי יש להמיר את המסמך לערך הנמוך ממפתח החתימה.
שורה 60 ⟵ 58:
* [[חתימה דיגיטלית מבוססת פונקציית גיבוב|מנגנון חתימה דיגיטלית חד פעמית]]. הוא אלגוריתם חתימה דיגיטלית המבוסס על פונקציית גיבוב שמתאים לחתימה על מסמך אחד בלבד. כלומר עבור כל מסמך דרושים מפתחות חתימה ואימות שונים. חתימה זו במהותה מאפשרת לתוקף לזייפה בקלות אם נעשה בה שימוש לחתימה על יותר ממסמך אחד. דוגמאות לחתימה כזו היא [[חתימת למפורט]] ואלגוריתם חתימה חד פעמית של רבין.
* '''מנגנון חתימה דיגיטלית עם בוררות'''. מנגנון זה מחייב מעורבות של צד שלישי נאמן הן בתהליך החתימה והן בתהליך האימות. מנגנון זה ייחודי בכך שהוא המאפשר גם שימוש ב[[צופן סימטרי|הצפנה סימטרית]] בלבד, אך מחייב שימוש ב[[פרוטוקול שיתוף מפתח|אלגוריתם שיתוף מפתח]].
* מנגנון [[חתימה עיוורת]]. הוא למעשה פרוטוקול אימות המתבצע בין המאמת לחותם. הרעיון הוא שבמהלך הפרוטוקול אליס שולחת מסר מוסתר כלשהו לבוב בבקשה שיחתום עליו. בוב מחזיר את המסר עם חתימתו עליו לאליס. כעת אליס יכולה לחשוף את המסר החתום ולהעבירו לצד שלישי כלשהו. הצד השלישי יכול לאמת את החתימה של בוב באמצעות פונקציית האימות הציבורית שלו, שניתנה על המסר כשהיה מוסתר, למרות שבוב עצמו לא ראה על מה חתם, בדיוק כמו בחתימה דיגיטלית רגילה. בגמר הפרוטוקול לא ניתן לשייך את החתימה שניתנה בעבר למסר כלשהו. סיטואציה כזו נחוצה למשל כאשר המאמת הוא לקוח המעוניין למשוך מזומנים באמצעות המחאה אלקטרונית החתומה בידי הבנק ולבצע בהם רכישה כלשהי. הבנק מאשר את המשיכה באמצעות חתימתו עליה ומנכה מחשבונו של הלקוח את הסכום המתאים. כאשר הלקוח יבצע את העסקה עם המטבע הוא ירצה להישאר אנונימי ולמנוע מהבנק את האפשרות לשייך את מטבע האלקטרוני שעליו חתם לעסקה שבוצעה וכן למנוע מהצד השלישי שהשתתף בעסקה מלזהות את הלקוח.
* '''חתימה בלתי ניתנת להכחשה'''. היא מנגנון חתימה דיגיטלית שבו תהליך אימות החתימה מחייב את שיתוף הפעולה של החותם עצמו. בניגוד לחתימה דיגיטלית רגילה שבה תהליך האימות אפשרי על ידי כל גורם בכל נקודת זמן שהיא, כל עוד יש לו גישה למפתח האימות של החותם, במנגנון זה תהליך האימות מתבצע אך ורק על ידי אינטראקציה עם החותם. למשל, [[בית תוכנה]] מעוניין למכור תוכנה כלשהי. בית התוכנה יכול לחתום על התוכנה באמצעות חתימה דיגיטלית בלתי ניתנת להכחשה ובאופן זה מבטיח כי הקונה הפוטנציאלי לא יוכל למכור או למסור עותק של המוצר ללקוח אחר בשמו. מאחר שאימות החתימה על כל עותק של המוצר מחייב את מעורבות בית התוכנה עצמו. אמנם החתימה אינה מונעת את השימוש כשלעצמו בתוכנה, אולם הלקוח האחרון לא ייהנה מחתימת בית התוכנה על המוצר כיון שבית התוכנה ידע האם המאמת הוא לקוח לגיטימי או לא. בדרך זו ניתן לאתר גם שימוש לא חוקי במוצר.
*'''חתימת סף'''. היא מנגנון חתימה דיגיטלית המאפשר להחתים שתי ישויות או יותר על מסמך באופן כזה שניתן לאמת את החתימה של כל הישויות על המסמך, אך אף אחד מהם בנפרד לא יוכל לבצע חתימה דיגיטלית תקפה של המסמך לבדו. יש קשר בין רעיון זה לבין [[הצפנת סף]] וכן ל[[חישוב רב משתתפים משמר סודיות]]. בהקשר של חתימה דיגיטלית ההגדרה הכללית היא שנתונים <math>n</math> משתתפים שמתוכם רשאית קבוצה של <math>t</math> משתתפים לחתום על מסמך, באופן כזה שלא יהיה באפשרות תת-קבוצה של <math>t-1</math> משתתפים לעשות זאת.
שורה 74 ⟵ 72:
כדי לדעת שהחתימה הדיגיטלית היא אותנטית, יש לשייכה לבעליה בדרך בטוחה כלשהי, כגון באמצעות תעודה דיגיטלית המונפקת על ידי צד שלישי ([[רשות מאשרת (אבטחת מידע)|רשות מאשרת]]) המוכרת כאמינה.
 
ביישומים מעשיים תהליך הפנייה אל הגורם המאשר הוא בדרך כלל שקוף למשתמש ומבוצע כחלק מתהליך ממוחשב. השיטה המקובלת היא התקנת "תעודת שורש"{{הערה|Root Certificate|שמאל=כן}} של הגורם המאשר ב[[דפדפן]] המשתמש, שבאמצעותה ניתן לוודא שהחתימה של ישות כלשהי (כגון אדם או מחשב) אכן נחתמה על ידי מי שמתיימר להחזיק במפתח החתימה{{הערה|שרשרת פעולות זו היא אנלוגית לאימות כרטיס חיוב (בכדי לוודא שכרטיס חיוב נתון הוא הוא כרטיס החיוב המחויב ולא זיוף שלו)}}.
 
דפדפני ווב פועלים על פי חתימה דיגיטלית המונפקת על ידי [[רשות מאשרת]] כדי לזהות אתרים מפוקפקים ולהתריע בפני המשתמש על סכנות אפשריות בזמן גלישה{{הבהרה|האם הכוונה להצפנת TLS עם תעודת SSL? אם כן, נא להבהיר זאת}}.
שורה 82 ⟵ 80:
 
==מניעת הכחשה וחותם-זמן==
מניעת הכחשה (Non-repudiation) מסייעת במניעת ישות כלשהי מלהכחיש או לכפור בהתחייבות שנתנה או פעולה שביצעה.
 
אדם עלול לאשר רכישת מוצר ולאחר מכן להכחיש כי עשה זאת. בדרך כלל כאשר מתעוררים חילוקי דעות מסוג זה, נדרשת מעורבות צד-שלישי המשמש כבורר בין הצדדים. חתימה דיגיטלית רגילה אינה מספקת להפרכת טענת בעל החתימה, מאחר שבעל החתימה עלול לטעון כי חתימתו נגנבה. למשל, הוא עלול לחשוף במכוון את מפתח החתימה מיד לאחר ביצוע העסקה ולטעון כי נעשה בה שימוש בלתי הולם מצד גורם זדוני כלשהו בלא ידיעתו. יש צורך להוכיח כי בנקודת הזמן שבה בוצעה העסקה או נחתם המסמך הדבר נעשה מידיעתו ומרצונו של בעל החתימה האותנטי. מניעת התכחשות פותרת בעיה זו.
 
מניעת התכחשות בחתימה דיגיטלית אפשרית בכמה דרכים:
 
* אי מתן גישה ישירה למפתח החתימה מצד גורם כלשהו, כולל החותם עצמו ומניעת חשיפה מכוונת של מפתח החתימה: זאת ניתן לבצע באמצעות אחסון מפתח החתימה בחומרה חסינת מגע כמו הטמעה של המפתח ב[[כרטיס חכם]] או התקן אלקטרוני מוגן{{הבהרה|איך אחסון קונקרטי בחומרה חסינת מגע או כרטיס חכם רלוונטיים לתיאור המסחרי\עסקי שנכתב בהקדמה לעיל (כאן באותו פרק)?}}.
* שימוש בשרות [[חותם זמן|חותם-זמן]]: כשבעל החתימה מעוניין לאשר את חתימתו הוא שולח את חתימתו לגורם מאשר ידוע המשרשר לחתימה ערך המייצג את נקודת הזמן בה בוצעה החתימה ומוסיף את חתימתו על שניהם. חתימת הגורם המאשר על חתימת הלקוח וחותם-הזמן יחדיו מאפשרים לדעת מתי בדיוק בוצעה החתימה ובכך להיווכח אם החתימה בוצעה בידיעתו ובהסכמתו של בעל החתימה. אם יטען לאחר מכן שמפתח החתימה הפרטי שלו נגנב ולכן החתימה מזויפת, אפשר לאמת זאת על ידי בדיקה אם חתימה בוצעה לפני הזמן בו התרחשה הגניבה לטענת החותם (צריך לזכור שהגורם המאשר המנהל את החתימות מפרסם מידע על חתימות שפג תוקפן מכל סיבה שהיא כמו הצהרת החותם על גניבה או חשיפה). לצורך העניין ניתן להחליף את הגורם המאשר ברשת אמון, אולם במקרה זה יהיה צורך לתעד את פרטי רשת האימון באופן שיאפשר בנייה מחדש של רשת האימון מנקודת הזמן לגביה קיים ספק.
שורה 98 ⟵ 95:
 
==חקיקה==
ב[[מדינה|מדינות]] אחדות קיימות הגבלות [[ייצוא]] של כלי [[הצפנה]] ואילו באחרות קיימות הגבלות חוקיות על העיסוק ב[[הצפנה]]בהצפנה בכלל. יש להבחין בין סוגי חתימה דיגיטלית המערבות שימוש בהצפנה כיוון שלהן השפעה ישירה על המסמך החתום (סוגים אלו בדרך כלל מחייבים אישור חוקי למימושן) לבין כאלו שאין להם השפעה ישירה על המסמך (כלומר המסמך נותר קריא) כך שאינן מוגדרות בחוק כהצפנה ועל כן לא חלות עליהן מגבלות כלשהן.
 
===בחוק הישראלי===
שורה 104 ⟵ 101:
 
בחוק הישראלי הובאה הבחנה בין שלושה מונחים:
*'''חתימה אלקטרונית''' שהיא מידע או סימן [[אלקטרוניקה|אלקטרוני]] כלשהו המוצמד או נקשר למסר אלקטרוני. סימן כזה יכול להיות [[תוכנה]], סריקה של חתימה ידנית, סימן כלשהו המופק באמצעות מכשיר כמו עט דיגיטלי או [[משטח רישום דיגיטלי]].
 
*'''חתימה אלקטרונית''' שהיא מידע או סימן [[אלקטרוניקה|אלקטרוני]] כלשהו המוצמד או נקשר למסר אלקטרוני. סימן כזה יכול להיות [[תוכנה]], סריקה של חתימה ידנית, סימן כלשהו המופק באמצעות מכשיר כמו עט דיגיטלי או [[משטח רישום דיגיטלי]].
*'''חתימה אלקטרונית מאובטחת''' היא אמצעי חתימה הנתון לשליטתו הבלעדית של החותם, המאפשר את זיהויו לכאורה וכן מאפשר לאתר כל שינוי אם אירע בתוכן המסר או המסמך החתום.
*'''חתימה אלקטרונית מאושרת''' היא חתימה אלקטרונית מאובטחת שמתלווה אליה תעודה אלקטרונית שהונפקה על ידי גורם מאשר ותפקידה לאמת את תקפות החתימה באופן כזה שהחותם אינו יכול להתכחש אליה.