מלח (קריפטוגרפיה)
בקריפטוגרפיה מלח (באנגלית: Salt) הוא מונח המתאר נתונים המשמשים כקלט נוסף לפונקציה חד-כיוונית כגון פונקציית גיבוב קריפטוגרפית אשר פועלת להצפנת סיסמה או מידע אחר. ישנו דמיון לקונספט של "nonce"[1].
המטרה העיקרית של שימוש ב"מלח" היא להגנה מפני התקפת מילון (dictionary attack) או המקבילה המגובבת שלה, טבלת קשת (rainbow table).[2].
נעשה שימוש נרחב במלח להגנה על סיסמאות מאוחסנות בבסיס נתונים. בעבר סיסמאות היו מאוחסנות כטקסט חופשי והגישה לבסיס הנתונים היוותה את ההגנה היחידה או המרכזית, אולם עם הזמן פותחו שיטות רבות להגנה על סיסמאות עקב ריבוי ההתקפות המוצלחות, שימוש במלח היא אחת מהשיטות שפותחו.
מלח חדש נוצר עבור כל סיסמה. בשיטה אופיינית, המלח והסיסמה (או וריאציה שלה, אחרי שעברה key-streching) משורשרים ומעובדים על ידי פונקציית גיבוב קריפטוגרפית, כאשר הפלט (ולא הסיסמה המקורית) מאוחסן ב-DB יחד עם המלח. הגיבוב מאפשר לבצע אימות מאוחר יותר, גם כשלא שומרים את הסיסמה המקורית ולכן היא איננה נחשפת גם אם הצליחו לפרוץ לבסיס הנתונים.
מכיוון שלא מתחייב שרכיב המלח יזכר על ידי אדם, הוא יכול לעשות את טבלת הקשת הנדרשת עבור התקפה מוצלחת גדול באופן בלתי ישים מבלי שהדבר ישים מעמסה מיוחדת על המשתמש. בנוסף, מכיוון שמלח משתנה בכל פעם, התוספת יעילה במיוחד להגנה על סיסמאות נפוצות או עבור אנשים אשר מייצרים סיסמה הבנויה טוב אך משתמשים בה במערכות רבות. בעזרת קורטוב מלח שמוסיפים לסיסמה, זו משתנה בכל פעם שעוברת גיבוב.
מלח נמצא בשימוש נרחב במערכות מחשוב מודרניות ממערכות UNIX ועד לאבטחה באינטרנט.
הערות שוליים
- ^ nonce מתאר שימוש במספר או מפתח (token) חד-פעמי כגון ליצירת קשר בין לקוח לשרת לצורך העברת נתונים
- ^ "Passwords Matter". נבדק ב-2016-12-09.