בלוג אבטחת מידע
הזדהות חזקה

הזדהות אקטיבית (או: מדוע הזדהות בטוחה עדיין כל כך מסובכת)

| 6 תגובות

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

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

הנסיון לוויתור על הסיסמה (או: אבולוציית ההזדהות)

רובכם מכירים בוודאי את שיטות ההזדהות מבוססות הסיסמה ואת הבעיות המלוות אותן. הסיסמה הינה סוד אשר אנחנו חושפים באופן מלא או חלקי כדי להוכיח את הזהות שאנחנו טוענים ששייכת לנו. שליחת הסוד באופן גלוי ע"י שליחת הסיסמה כ-plaintext היא כמובן בעייתית מסיבות ברורות. חשיפה "חלקית" של הסוד, באמצעות שימוש בשיטת Digest למשל, מוריד מעט את הסיכון, אבל לא מונע לחלוטין התקפות כגון ממסור (Relay Attack) או מילון (Dictionary Attack). סוד ניתן גם להצפין, אבל אז עדיין נשארות מספר בעיות עקרוניות. בעיה אחת היא שהצד השני צריך לדעת לפתוח את ההצפנה כדי לוודא את הסוד, כלומר לפחות גורם נוסף מלבדינו חייב לדעת ולזכור את הסוד. בעיה נוספת היא שאם כל מה שאנחנו עושים הוא לשדר את הסוד מוצפן, אז מעשית, אם גורם זדוני מאזין, אולי לא משנה לו כלל אם אנחנו משדרים את הסוד מוצפן או גלוי והוא עשוי להאזין ולשדר את הסוד שוב או להשתמש בהתקפת ממסור בהצלחה.

בהתאם, שידור מלא או חלקי של הסוד איננו מוגן גם אם הוא מתבצע על גבי תווך מאובטח כגון TLS או IPSec, אשר הוא לכאורה השלב הטבעי הבא בחיזוק ההגנה על ההזדהות. תווך מוצפן איננו פותר בעיה עקרונית בפרוטוקול ההזדהות. קודם כל, מאחר וההנחה הבסיסית היא שתווך מוצפן ניתן לעקוף. למשל, כי ניתן לקלוט את השידור בקצוות (אולי קשה, אבל אפשרי), לתקוע טריז באמצע (Man In The Middle) או תיאורטית (ומעשית?) לפרוץ אותו. אך יש בעיות המטרידות אותנו יותר בפרוטוקול כגון TLS. בשימוש בפרוטוקול כזה, אנחנו מניחים שלאחר שיצרנו קשר מוצלח עם השרת מהצד השני, ניתן לסמוך עליו, אבל לא בטוח שוידאנו את הזהות שלו כמו שצריך ויתכן שהוא מתחזה. למשל, במידה ואנחנו סומכים על תעודה אשר נחתמה ע"י גורם אשר לא התכוונו לסמוך עליו תמיד. זה יכול לקרות אם גורם זדוני הצליח "להזריק" תעודה זדונית למאגר התעודות שלנו (Trusted Certificate Store), או אם גורם זדוני פרץ את שרשרת התעודות ומסוגל לחתום על תעודות חדשות אשר לכאורה כשרות לכל דבר ועניין – ראו בעיית זיוף חתימה דיגיטלית (אינספור קישורים באיטרנט, למשל כאן, כאן וכאן) והמלצת NIST עוד מ- 2010 להפסיק להשתמש ב- SHA1 מספר שנים אחרי שהפסקנו להשתמש ב- MD5 מסיבה דומה. יש כאן שורה של הנחות נסתרות אשר ניתן עקרונית לפרוץ ולעקוף, גם אם במאמץ מורכב. נכון, לא כיסיתי כאן את כל האפשרי והפריצות שנתתי כדוגמה אינן טריוויאליות. אבל למי שמבין את קשת האפשרויות, הרעיון צריך להיות ברור.

וכיצד יכול הצד השני לבדוק אם סיפקנו את הסיסמה הנכונה? אם נבחן את השימושים המקובלים בסיסמה לצורך הזדהות, נראה שלגורם מולו אנחנו מזדהים יש למעשה שלוש אפשרויות בלבד לבצע זאת: ע"י שמירת הסיסמה הגלויה, שמירת הסיסמה המקודדת (לרוב באמצעות גיבוב ממולח) או שמירת הסיסמה כמוצפנת (לרוב באמצעות מפתח סימטרי המוגן בצד השרת). קשה לומר שאחד מפתרונות אלו מספק ב-100%, בהתחשב ביכולת של פורץ בעל משאבים לאחזר את הסיסמה במידה והשיג גישה למסד הנתונים של הסיסמאות (ולמפתח הסימטרי המוזכר לעיל אם נעשה בו שימוש). לכל הפחות נרצה שיהיה ביכולתנו לזכור סיסמאות קשות לפיצוח אשר סיבוכיות הפריצה שלהן גבוהה, ולהוריד במעט את הסיכון. אך איננו מכונות בעלות יכולת כזו, ובכך חזרנו במובן מסוים לנקודת ההתחלה.

קרדיט: xkcd.com

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

ארגון DARPA ממליץ עקרונית על הפסקת שימוש בסיסמאות לטובת הזדהות ביומטרית ולמעשה איננו "מחזיק" משימוש בסיסמאות, גם כפקטור נוסף. אבל באופן דומה למתואר לעיל, גם שיטת הזיהוי הביומטרי איננה נטולת בעיות. חישבו על כך שמדובר, עקרונית, בהזדהות באמצעות "סוד" אשר אדם נושא עימו. למשל, טביעת אצבע. אם האדם משדר את הסוד במלואו לגורם מולו הוא מזדהה, הרי שהוא חושף את הסוד כך שניתן עקרונית להקליט אותו ולשדר שוב (Replay Attack) לצורך התחזות. אם הגורם המזדהה איננו משדר את הסוד במלואו, הרי שצריך לפתור את הבעיה בדרך אחרת, כגון כך שסומכים על החומרה בנקודת הקצה שתהיה אמינה, אך גם את פתרון זה ניתן לעקוף. מאמינים שטכנולוגיית הזדהות ביומטרית מתוחכמת מספיק? פוסט משעשע זה מסביר בעקיפין שממש לא. פתרון עדיף ברמה התפישתית לבעיות הנ"ל עשוי להיות בדמות שימוש בפרוטוקול מבוסס הוכחת אפס מידע. הרעיון הוא שניתן מתמטית להוכיח ידיעת סוד מבלי להציג אותו, ובדרך טובה יותר מאשר הסתרה חלקית של הסוד כגון Digest. שילוב פוטנציאלי בין הזדהות ביומטרית לבין פרוטוקול מבוסס הוכחת אפס מידע נראה כמו רעיון מבטיח, אבל ייקח כנראה עוד זמן מה עד שנראה פרוטוקולים כאלו בפעולה בשימוש רחב.

דילמות ההזדהות כיום

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

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

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

הזדהות אקטיבית

לפני כחצי שנה בלבד יצאה גוגל בהצהרה שהכתה גלים בחדשות וברשתות החברתיות על הכוונה לבטל לאורך זמן את השימוש בהזדהות מבוססת סיסמה לטובת הזדהות באמצעות מכשיר נייד. נדמה שהן מומחים והן הדיוטות הגיבו בתמיהה על הידיעה: הזדהות כפי זו שגוגל רוצה לקדם, כך נראה, תהיה ממש הזזת הבעיה למקום אחר של הגנה על מכשיר נייד (something you have) במקום על סיסמה. חברות נוספות, כגון SlickLogin, מתעתדות להציע פתרון דומה. ארגון DARPA, לעומת זאת, יצא לפני שנה וחצי עם מכרז לבניית הזדהות אקטיבית: זיהוי משתמש בהסתמך על דפוסי התנהגותו בשימוש במחשב. אחד מאנשי הארגון פישט את הרעיון כך: גם אם נכנסתם לבית בעזרת מפתח גנוב, זה לא ישכנע את כלב הבית, חיית המחמד של הדיירים, שאתם הבעלים של המקום. נראה כי חברה אחת עמדה בדרישות המכרז של DARPA ופתחה בתהליך נסיון הפיתוח של טכנולוגיה כזו, אך נחכה עוד זמן מה כדי להיווכח האם הנסיון מוצלח. לבינתיים, אפשר להשתעשע במחשבות כיצד יראה המימוש של כלב ששומר לנו על הבית לצורך הזדהות. אולי ככה?

מידע נוסף אודות הזדהות אקטיבית

נציג DARPA מדבר על הזדהות אקטיבית:

מצגת מכנס RSA שבו הציגו את התכנית:

https://www.rsaconference.com/writable/presentations/file_upload/sec-t05_final.pdf

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

מחבר: יוני בן-נון

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

6 תגובות

  1. קצת מציק המונחים הטכניים בעברית, אבל זה אני, קשה לי להמליח את הגיבוב אני מעדיף salted hash….

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

    בכלל לפי הפרסומים האחרונים בנושאי ה NSA ומאמר ש Bruce Shnaier כתב בעקבותם מעמיד באור בעייתי את רמת האמון במימושים של הצפנות במוצרים שהם לא open source וספציפית אם מדברים על פרוטוקולי hashing על eliptic curve – ECC שלמרות בלפי ה NIST הם סווגו לשימוש ברמת סודי ביותר, לפי תכתובות מה NSA בהם ובמוצרי הצפנה של חברות פרטיות הם דאגו להחליש את פרוטוקול ההצפנה בצורה גלויה או סמוייה
    כלומר : עם כח עיבוד שיש להם וחולשות שידועות להם לפי הפרסומים בפרוטוקולים השונים ככל הנראה מה שנראה לאיש מקצוע מהשורה בטוח, כנראה פחות בטוח בעשרות אחוזים ואף אחד לא יודע בדיוק כמה, במינוח פשוט – אם לפרוץ הצפנה דורש X כח עיבוד במשך חודש ועכשיו עם חולשה ידועה זה יקח יומיים זה כבר הרבה יותר כלכלי ואפשרי.

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

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

    לביא.

    • לביא, תודה על התגובה המפורטת!

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

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

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

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

    • לביא,

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

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

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

      -יוני

  2. am i the only one to think darpa's video looks alarmingly like 1984 nightmare?

    yoni – why is no-information-protocol not yet relevant? how hard is it to implement such a protocol in apache?

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

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

    אם תגגל תמצא שלל קישורים שמדברים על סכמות שונות שמבוססות הוכחות אפס-מידע וכן מימושים שלהן. למשל:
    http://en.wikipedia.org/wiki/Zero-knowledge_password_proof
    https://blogs.oracle.com/rohanpinto/entry/zero_knowledge_password_protocol
    http://www.cs.nyu.edu/~zaremba/docs/zkp.pdf
    http://csrc.nist.gov/archive/kba/Presentations/Day%202/Jablon-Methods%20for%20KBA.pdf
    http://www.ietf.org/mail-archive/web/http-auth/current/msg00825.html

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

    -יוני

  4. אגב, הפתרון שיכול להיות הכי שמיש ונפוץ הוא שימוש ב pki אם חברות הסלולר היו מאפשרות את הפונקציונאליות בכרטיס סים שלהם.

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

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

    לביא.

להגיב על אלעד לבטל

שדות חובה *.