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