חתימה דיגיטלית היא פלט קריפטוגרפי שמשמש לאימות האותנטיות של נתונים. אלגוריתם של חתימה דיגיטלית מאפשר שתי פעולות נפרדות:
פעולת חתימה, שבה נעשה שימוש במפתח חתימה כדי ליצור חתימה על נתונים גולמיים
פעולת אימות, שבה צד שיש לו גישה למפתח הציבורי יכול לאמת את החתימה, בלי לדעת מהו מפתח החתימה
המטרות העיקריות של חתימה דיגיטלית הן:
- אימות התקינות של הנתונים החתומים
- אי-כפירה אם החותם טוען שהחתימה לא אותנטית
חתימות דיגיטליות מבוססות על קריפטוגרפיה אסימטרית, שנקראת גם קריפטוגרפיה של מפתח ציבורי. מפתח אסימטרי מורכב מזוג מפתחות ציבורי/פרטי. המפתח הפרטי משמש ליצירת חתימה, והמפתח הציבורי התואם משמש לאימות החתימה.
חתימה דיגיטלית של קריפטוגרפיה פוסט-קוונטית (PQC)
למחשבים קוונטיים יש פוטנציאל לפענח חומר שהוצפן על ידי אלגוריתמים קלאסיים להצפנה, כמו RSA ו-ECDSA שנמצאים בשימוש נרחב, מה שיכול להפוך חומר מוצפן כזה לפגיע. אלגוריתמים קריפטוגרפיים פוסט-קוונטיים מיועדים לשימוש בחומרה ובתוכנה קלאסיות כדי לעמוד בפני מתקפות קוונטיות, וכך לעזור להבטיח את התוקף המתמשך של חתימות דיגיטליות. חתימות PQC מבוססות על בעיות מתמטיות שונות שקשה למחשבים קלאסיים וגם למחשבים קוונטיים לפתור.
NIST פרסם שני תקנים של חתימות PQC: ML-DSA (FIPS-204) ו-SLH-DSA (FIPS-205). אפשר להשתמש בווריאציות המקריות הטהורות עם Cloud KMS: ML-DSA-65 ו-SLH-DSA-SHA2-128s, או בווריאציה המקרית HASH-SLH-DSA-SHA2-128s-SHA256 עם גיבוב מראש.
תקני NIST מגדירים את ערכי הגודל הבאים למפתחות ולחתימות (בבייטים):
| אלגוריתם | מפתח פרטי | מפתח ציבורי | חתימה |
|---|---|---|---|
| ML_DSA_65 | 4032 | 1952 | 3309 |
| SLH_DSA_SHA2_128s | 64 | 32 | 7856 |
| HASH_SLH_DSA_SHA2_128s_SHA256 | 64 | 32 | 7856 |
תרחישים לדוגמה לשימוש בחתימה דיגיטלית
אפשר לאמת את הגרסאות באמצעות חתימות דיגיטליות. לדוגמה, אם יש קובץ בינארי שחתום דיגיטלית באמצעות מפתח פרטי, אפשר לבדוק את התוקף שלו באמצעות המפתח הציבורי שמתאים למפתח הפרטי. אם החתימה של הקובץ הבינארי לא תקינה, סימן שהקובץ הבינארי עבר שינוי או שהוא פגום.
דוגמה נוספת היא אימות הנושא של אישור שהונפק על ידי רשות אישורים (CA). רשות אישורים מנפיקה אישור לנושא על סמך הבעלות של הנושא על החלק של המפתח הפרטי במפתח ציבורי/פרטי. האישור מכיל חתימה דיגיטלית שנוצרה באמצעות המפתח הפרטי של הנושא. האישור מכיל גם את החלק של המפתח הציבורי של הנושא מתוך זוג המפתחות הציבורי/הפרטי. גורם שמתקשר עם הנושא משתמש במפתח הציבורי של הנושא ובכללי אימות נוספים של האישור כדי לאמת את החתימה. אם החתימה לא תואמת לנתונים הרלוונטיים, או אם יש הפרה של כללי האימות שנקבעו על ידי האישור, החתימה תיחשב כלא תקפה.
תהליך העבודה של חתימה דיגיטלית
בקטע הבא מוסבר איך ליצור חתימה ולאמת אותה. שני המשתתפים בתהליך העבודה הזה הם חותם הנתונים ומקבל הנתונים.
החותם יוצר מפתח אסימטרי שתומך בחתימה דיגיטלית.
החותם יכול להשתמש במפתח הזה כדי ליצור כמה חתימות.
החותם מבצע פעולה של מפתח פרטי על הנתונים כדי ליצור חתימה דיגיטלית.
החותם מספק את הנתונים ואת החתימה הדיגיטלית לנמען הנתונים.
הנמען משתמש בחלק של המפתח הציבורי מתוך זוג המפתחות הציבורי/פרטי של החותם כדי לאמת את החתימה הדיגיטלית. אם האימות לא מצליח, סימן שהנתונים שונו.
אלגוריתמים של חתימה
שירות Cloud Key Management Service תומך באלגוריתמים של עקומות אליפטיות (EC) ו-RSA לחתימה דיגיטלית. שני האלגוריתמים האלה הם אלגוריתמים מקובלים בתחום, ומאפשרים לבחור את גודל המפתח ואת אלגוריתם הגיבוב.
הצפנה המבוססת על עקומים אליפטיים מסתמכת על פונקציות גיבוב חד-כיווניות ועל כפל נקודות כדי לחשב נקודות בעקום אליפטי, בשילוב עם הקושי הרב בקביעת הכופל של נקודה מסוימת בהינתן המקור שלה. הקושי הזה בקביעת המוכפל הוא היתרון הקריפטוגרפי של הצפנת EC. ככל שהגודל של העקומה גדול יותר, כך קשה יותר לחשב את המוכפל. יתרון של קריפטוגרפיה מסוג EC הוא שמפתח EC הוא בעל גודל מפתח קטן יותר בהשוואה למפתח RSA שמציע את אותה עוצמה קריפטוגרפית.
הצפנת RSA מבוססת על הקושי בפירוק מספר שלם גדול לשני גורמים או יותר. ככל שגודל המפתח גדול יותר, כך קשה יותר לפרק את המספרים השלמים לגורמים.
פונקציונליות של חתימה דיגיטלית ב-Cloud KMS
Cloud KMS מספק את הפונקציונליות הבאה שקשורה ליצירה ולאימות של חתימות דיגיטליות.
אפשרות ליצור מפתח אסימטרי עם מטרת המפתח של
ASYMMETRIC_SIGN. מפתחות Cloud KMS לחתימה אסימטרית תומכים גם באלגוריתמים לחתימה של עקומות אליפטיות וגם באלגוריתמים לחתימת RSA.אפשרות ליצור חתימה דיגיטלית.
אפשרות לאחזר את המפתח הציבורי של מפתח אסימטרי.
Cloud KMS לא מספק ישירות את האפשרות לאמת חתימה דיגיטלית. במקום זאת, אפשר לאמת חתימה דיגיטלית באמצעות ערכות SDK וכלים שזמינים לכולם, כמו OpenSSL. כדי להשתמש ב-SDK ובכלים האלה, צריך את המפתח הציבורי שמאוחזר מ-Cloud KMS. מידע על שימוש בערכות SDK ובכלים פתוחים זמין במאמרים אימות חתימה של עקומה אליפטית ואימות חתימת RSA.