המון אתרים אתרים היום שומרים עליכם מידע, כולל דברים מגה רגישים כמו הסיסמה שלכם. יש כמות עצומה של אנשים שלא מבינים כמה זה חמור לצפצף על נוהלי אבטחת מידע ולשמור את הסיסמאות שלכם לא מוצפנות. בפוסט אני נוגע במה זה אומר בכלל סיסמאות מוצפנות, למה זה חובה, ועל מקרה אחד שעצבן אותי לאחרונה ובעקבותיו כתבתי את הפוסט.
המון אתרים היום שומרים המון מידע ששייך אליכם ואל הקרובים שלכם. הלגיטימיות של איסוף מידע בקנה מידה רחב (Facebook, Google) אמנם עומדת בספק כיום, אבל לפעמים אפילו אתרים פשוטים (נניח, האתר שאני קונה ממנו עטים) ישמרו עליכם פרטים טריוויאליים, כמו שם המשתמש והסיסמה שלכם באתר.
הפרטים האלו, לצד פרטים מזהים נוספים אחרים כמו המיקום והמחשב שממנו התחברתם, קיימים בכמות עצומה של אתרים (חשבו על כל האתרים שהתחברתם אליהם רק בחודש האחרון!) כדי לזהות אתכם בהתחברות עתידית לאתר.
אבל היי! יש בעיה: במקרה של פריצה, חלילה, למאגר הנתונים – משהו שקורה במשפחות הכי טובות ובאתרים בעלי סדר גודל עצום שמשקיעים מליוני דולרים רבים באבטחה, כמו LinkedIn ו־Yahoo, אנחנו לא רוצים שחלילה הסיסמאות של המשתמשים שלנו ייחשפו.
יש לכך שתי סיבות ברורות: הברורה מביניהן היא שאם מישהו יראה את הסיסמה שלי לאתר הוא יוכל לראות הרבה פרטים רגישים עליי, להתחבר לי לחשבון, להזדהות בשמי ולעשות בשמי פעולות. אחת נוספת היא שרוב האנשים נוטים לשתף סיסמאות בין האתרים, ואם פרצו לאתר אחד שהכיל את הסיסמה שלכם, יהיה אפשר לפרוץ לחשבונות שלכם גם באתרים אחרים.
נגדיר את המטרה: אני רוצה שגם אם יפרצו לי לאתר וישיגו את מסד הנתונים של המשתמשים שלי, לא תהיה לפורץ דרך לשים יד על הסיסמאות שלהם.
אז מה עושים? מצפינים!1
ישנם כלים נהדרים היום שלא עולים למפתח שקל, והם נורא נורא פשוטים לשימוש. רעיון נפוץ ומוכר הוא לקחת את הסיסמה שלכם שאנחנו רוצים לשמור, ולהשתמש בדבר שנקרא “פונקציית גיבוב חד כיוונית” (לאאא אל תברחו). זה שם מפחיד מאוד לאיזושהי מכונת קסמים שמכניסים לה טקסט כלשהו2, במקרה הזה את הסיסמה שלכם, והיא מוציאה לכם חרעפש כלשהו (ולכן “גיבוב”). החרעפש הזה שמכונת הקסמים הוציאה יתקבל אך ורק כתוצאה מהטקסט שהכנסתם וכל פעם שתכניסו את אותה מחרוזת, תקבלו את אותו חרעפש.3
אבל הקאץ’ המגניב באמת בו: אי אפשר להסיק מה היה הטקסט שהכנסתם מתוך החרעפש4 (ולכן “חד כיוונית”).
עזבו דיבורים באוויר – הנה דוגמה: הכנסתי לתוך מכונת הקסמים שלנו את המחרוזת buya. המכונה הוציאה את החרעפש הבא:
be9cb997fc16b0c9f3546fed0275d07e
החרעפש הזה ייחודי עבור המחרוזת buya, הוא לא יחזור מטקסטים אחרים שאני אכניס למכונת הקסמים, ואם מביאים לי אך ורק את החרעפש, אין לי שום דרך לשחזר את זה שהוא למעשה תוצר של “buya”.
לראייה, הנה מה שמכונת הקסמים נתנה לי עבור buya עם התו “נקודה” בסוף (זה לגמרי אחר!):
f26a47bee3aa443d053a0e17f219cf2e
עכשיו כל מה שהם צריכים לעשות זה לשמור את החרעפש בהליך ההרשמה, ולא את הסיסמה שלך.
אוקיי. אז עכשיו בואו נניח שאתרים ישמרו רק את החרעפש ולא את הסיסמה שלי. משמע, רק את הסיסמה אחרי שהם העבירו אותה דרך פונקציית הגיבוב החד כיוונית הזו אומהשזהלאיהיה ויצא להם החרעפש. כשאני ארצה להתחבר לאתר, איך הם יבדקו שהסיסמה שאני מזין בטופס ההתחברות נכונה? הם הרי לא שמרו את הסיסמה המקורית שלי!
זה די פשוט: מה שהאתר צריך לעשות זה לקחת את הסיסמה שהזנת בטופס ההתחברות, ולהעביר אותה במכונת הקסמים/בפונקציית הגיבוב החד כיוונית. אם החרעפש שיוצא ממכונת הקסמים זהה לחרעפש שהאתר שמר אצלו, זו אכן הסיסמה הנכונה והמשתמש יחובר למערכת! :)
אז כמו שקראתם, אין פה איזשהו תחכום היסטרי ולא צריך להיות פרופסור כדי לשמור את הסיסמאות שלכם בצורה מאובטחת. בעלי אתרים מורגלים לזה היטב, והכל מונגש בצורה נפלאה למפתחי אתרים כיום.
אם אני יכול ביום־יום להסביר לאנשים לא טכנולוגיים מה זה גיבוב סיסמאות, לא מובן בכלל(!) למה אתרים לא עושים את מיטב המאמצים להשיג את הסטנדרט הגבוה ביותר של שמירה על סיסמאות.
מדובר בעבירה אתית חמורה, ואחת שעלולה להיות, כפי שתוכלו לקרוא בבלוג המצוין של עו"ד יהונתן קלינגר, גם עבירה משפטית.
במצב כזה, שאתר כמו פלונטר מגיב בצורה שהגיב (ר’ תגובות), אני מתמלא בכעס. לא בכעס מקצועי על אנשים טכנולוגיים שלא יודעים לבצע את העבודה שלהם. בכעס אישי. בכעס של צרכן שפשוט מרגיש שלא מכבדים את הפרטיות שלו, בכעס של אדם שיודע איך עשרות אלפי אנשים יכולים להיפגע מדליפה של מאגר של בעלי אתר רשלנים שפשוט לא אכפת להם.
זה. זה מה שמכעיס אותי.
אם אתם מכירים עוד אתרים ישראליים ששומרים את הסיסמה שלכם בצורה לא מוצפנת, שלחו לי בבקשה את הכתובת שלהם.
מפלונטר נמסר: “המערכת שלנו מעניינת, עתיקה ומוגנת בצורות משונות במיוחד ועוברת נסיונות פריצה על ידי אנשים מטעמנו שבקיאים,בתחום. אבל נבחן בימים הקרובים תוספת קלה. השידרוג הבא של האתר החל השבוע ואחד הדברים הוא גם נושא איפוסי סיסמא וכו’. והלוואי שרוב בני האדם היו דואגים למשהו יותר מסובך מהסרט space balls ועם שוני בין אתר לאתר שנרשמים אליו :)”
הרחבה לסקרנים ואמיצים:
- קראו על salt (המלחה) באתר המעולה של רן בר־זיק.
- קראו על bcrypt ולמה אסור יותר להשתמש ב־MD5 או SHA-1.
האמת היא שהמונח “מצפינים” הוא אינטואיטיבי, אבל מאוד לא נכון כאן. חזרו לפה אחרי שקראתם את הפסקה. חזרתם? יופי. “הצפנה” היא דבר שניתן לחזור ממנו למצב המקורי (נניח, על ידי “מילת קוד” שהשתמשנו בה כדי להצפין את הטקסט), מה שבבירור לא קורה כאן, ובצדק – לא היינו רוצים לתת למישהו את האפשרות להשיג את מילת הקוד, ובאמצעותה לפענח את הסיסמה שלכם. (ת’ ל־Eyal Karni על הארת תשומת הלב). ↩︎
בדוגרי זה לא חייב להיות טקסט, אבל עזבו קטנות, נו ↩︎
נו, אני קצת משקר. הוא לא ייחודי, אבל הסיכוי שתמצאו עוד מחרוזת שתביא לכם בדיוק את אותו חרעפש הוא באמת באמת זניח. ↩︎
יש 2 דרכים להגיע בכ"ז למחרוזת המקורית: בעזרת “כוח גס” (המון ניסיונות שעלולים לקחת למחשב מאות שנים), או “שבירה” של פונקציית הגיבוב (מכונת הקסם). שניהם נחשבים ללא מאוד פרקטיים. הדרך הראשונה לרוב מתרחשת כשעוברים שנים וכוח החישוב מאוד גדל (קראו על bcrypt אם מעניין אתכם דרך להתגבר על זה), והדרך השנייה מתרחשת כשגוף מחקרי גדול מפרסם תגלית מתמטית שמראה איך אפשר לשבור את הפונקציה (לדוגמה, על ידי יצירת “collisions”, התנגשויות). כאמור, שתי הדרכים קשות מאוד. (שימו לב שלבחירת סיסמה חזקה יש השפעה מכריעה בחלק גדול מהפעמים על כמה זמן ייקח לשבור אותה! תודה ל־Tomer Mendels שביקש לחדד) ↩︎