מהי פונקציית Hash קריפטוגרפית?

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

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

כמה פונקציות גיבוב קריפטוגרפיות נפוצות כוללות MD5 ו SHA-1, אם כי קיימים גם רבים אחרים.

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

פונקציות Hash קריפטוגרפיות: מקרה שימוש

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

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

תמונה של נוסחאות ותמונות על לוח
סטודיו יאגי / Digital Vision / Getty Images

האם ניתן להפוך פונקציות Hash קריפטוגרפיות?

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

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

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

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

דוגמה לשולחן קשת
טקסט פשוט SHA-1 Checksum
12345 8cb2237d0679ca88db6464eac60da96345513964
סיסמה1 e38ad214943daad1d64c102faec29de4afe9da3d
אני אוהב את הכלב שלי a25fb3505406c9ac761c8428692fbf5d5ddf1316
ג'ני 400 7d5eb0173008fe55275d12e9629eef8bdb408c1f
דאלאס 1984 c1ebe6d80f4c7c087ad29d2c0dc3e059fc919da2

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

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

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

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

סיסמאות ופונקציות Hash קריפטוגרפיות

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

בהתחשב בעובדה שפונקציית hash קריפטוגרפית מייצרת סכום ביקורת בלתי הפיך, האם זה בטוח עבורך להפוך את הסיסמה שלך לפשוטה כמו 12345, במקום 12@34$5, פשוט כי לא ניתן להבין את הסכומים עצמם? לא, והנה הסיבה.

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

MD5 עבור 12345:827ccb0eea8a706c4c34a16891f84e7b

MD5 עבור 12@34$5:a4d3cc004f487b18b2ccd4853053818b

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

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

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

מידע נוסף על פונקציות Hash קריפטוגרפיות

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

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

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

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

התנגשויות יכולות להתרחש מכיוון שכל פונקציית גיבוב קריפטוגרפית מייצרת ערך באורך קבוע ללא קשר לנתוני הקלט. לדוגמה, פונקציית הגיבוב ההצפנה של MD5 מייצרת 827ccb0eea8a706c4c34a16891f84e7b, 1f633b2909b9c1addf32302c7a497983, ו-e10adc3949ba59abbe56e057f20f883e עבור שלושה שונים לחלוטין בלוקים של נתונים.

סכום הבדיקה הראשון הוא מ 12345. השני נוצר מלמעלה מ-700 אותיות ומספרים, והשלישי הוא מ 123456. כל שלושת הכניסות הן באורכים שונים, אבל התוצאות הן תמיד רק באורך של 32 תווים מאז סכום ביקורת MD5 שומש.

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

זו הסיבה שפונקציות גיבוב קריפטוגרפיות אחרות נוצרו. בעוד ש-MD5 יוצר ערך של 32 תווים, SHA-1 יוצר 40 תווים ו-SHA-2 (512) יוצר 128. ככל שמספר התווים גדול יותר בסכום הבדיקה, כך קטן הסיכוי שתתרחש התנגשות.