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

תוכן עניינים:

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

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

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

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

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

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

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

Image
Image

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

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

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

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

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

דוגמה לטבלת קשת
טקסט פשוט SHA-1 Checksum
12345 8cb2237d0679ca88db6464eac60da96345513964
סיסמה1 e38ad214943daad1d64c102faec29de4afe9da3d
ilovemydog a25fb3505406c9ac761c8428692fbf5d5ddf1316
Jenny400 7d5eb0173008fe55275d12e9629eef8bdb408c1f
dallas1984 c1ebe6d80f4c7c087ad29d2c0dc3e059fc919da2

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

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

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

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

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

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

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

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

MD5 עבור 12345: 827ccb0eea8a706c4c34a16891f84e7b

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

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

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

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

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

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

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

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

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

התנגשויות יכולות להתרחש בגלל שכל CHF מייצר ערך באורך קבוע ללא קשר לנתוני הקלט. לדוגמה, פונקציית ה-hash ההצפנה של MD5 מייצרת 827ccb0eea8a706c4c34a16891f84e7b, 1f633b2909b9c1addf32302c7a497983, ו-e10adc39496a59a{2009_37e37e20537e39e208a37$e

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

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

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

מוּמלָץ: