אסימון חומרה (Security Token) כאמצעי זיהוי [נוסף]

הקדמה

אמצעי זיהוי נחלקים ל-4 [1],

  1. ידע, משהו שרק אתה יודע (ססמאות או מחרוזות שנשמרות בזכרון [בראש]).
  2. בעלות, משהו שיש ברשותך (התקן חומרה או תוכנה [מנהל ססמאות] שבבעלותך אך ניתן להעברה למישהו אחר).
  3. תורשה, מזהה ביומטרי שנגזר מהתורשה שלך, ויחודי [?] רק לך (טביעת אצבע, עין, קול).
  4. מיקום, זיהוי על בסיס המיקום היחודי שלך (לדוגמה NFC Stickers).

רובנו משתמשים ב-1 ו\או 3 מתוך נוחות, חלקנו אף משתמשים ביותר מאחד בו זמנית (הזדהות רב-שלבית), בכדי להקשות על תוקף להשיג גישה לחשבונות שלנו (ניחוש ססמאות, גניבת הטביעת אצבע שלנו). בפוסט הזה אני אתמקד ברכיב הזדהות מבוסס חומרה (משהו שיש ברשותך) בפרוטוקול FIDO2 [2], כמזהה משני והדגמה על חשבון גוגל.

יתרונות וחסרונות

יתרונות

  • קשה להעתקה\שכפול ללא ידיעת הבעלים.
  • נדרשת גישה פיזית (אלא כן מדובר ב-software token).
  • לרוב מכיל מורכבות גבוהה יותר מססמאות\אמצעיים ביומטרים\מיקום וקל יותר לשימוש.

חסרונות

  • יכול להגנב.
  • יכול ללכת לאיבוד\להתקלקל.
  • עדיין פגיע למתקפת דיוג\MiTM.

היכן אני משיג התקן FIDO2 ואיפה ניתן להשתמש בו?

ישנם מספר יצרנים, Yubico היא כנראה הכי גדולה, מוכרת ומומלצת (לי באופן אישי יש מפתחות של Yubico, Thetis, SoloKeys ו-Ledger, ו-Yubico היא העדיפה לדעתי), אך בנוסף יש את:

ואם אתם ממש אמיצים, אז Pi-Zero-Security-Key (מוזמנים לכתוב פוסט עם הסבר ושלבי ההתקנה).

בכדי לעבוד עם ההתקן צריך מערכת הפעלה תומכת (לדוגמה חלונות [שלא תכוסה במדריך] גם מאפשרת לך להזדהות בעזרת ההתקן - בתנאי שיש לך חשבון online ולא local), אפליקציה תומכת (רוב הדפדפנים תומכים). יש ליצרניות רשימת תוכנות\אתרים תומכים, אבל צריך לקחת אותם בערבון מוגבל, כי יכול להיות שישום של אתר X לא יעבוד על מפתח של חברה מתחרה - או שאתר שבכלל לא מוזכר והוא עובד ללא כל בעיה.

רשימת אתרים תומכים:

לפני שמתחילים

מומלץ לוודא תחילה כי ההתקן עובד, תריצו dmesg -w וחברו את ההתקן, אתם תראו משהו בסגנון הזה לאחר שחיברתם את ההתקן (בדוגמה שלי אני משתמש ב-Thetis FIDO2 BLE Security Key):

[    2.461972] input: ExcelSecu FIDO2 Security Key as /devices/pci0000:00/0000:00:0c.0/usb1/1-1/1-1:1.0/0003:1EA8:FC25.0001/input/input6

למיטב זכרוני Chrome תומך בהתקני FIDO2/U2F ישר מהקופסה, ב-Firefox יש סיכוי שתצטרכו לשנות את הערך של המפתח security.webauth.u2f ל-true ב-about:config (בגרסאות עדכניות מגיע כ-true בברירת מחדל).

הטמעה בחשבון גוגל

בכדי להוסיף את ההתקן כרכיב זיהוי יש להתחבר לחשבון, וללכת לאופציה Security ולבחור תחת Signing in to Google את 2-Step Verification (להפעיל אם לא מופעל). ואז לגלול עד שתראו את האופציה Security Key, לחצו על Add Security Key ובחרו ב-USB or Bluetooth, אתם דרשו ללחוץ על הכפתור אישור בהתקן בשביל להשלים את התהליך.

בסיומו תראו מופיע תחת Available second steps

אם אתם מעוניינים להפוך אותו לפקטור הזדהות היחיד, קראו עוד [3].

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

ועם התחברות מוצלחת

קישורים

  1. Wikipedia - Multi-factor Authentication - Factors
  2. Wikipedia - FIDO2 Project
  3. Google - Advanced Protection Program
2 לייקים

קצת סדר, שימו לב שיש כמה פרוטוקולים שונים:

  • U2F, זה פרוטקול ש-Yubico ו-Google יצרו, ולאחר מכן תרמו אותו לפרוייקט FIDO.
  • FIDO2 זה הפרוטקול הבא של פרוייקט FIDO, הוא לא תואם\תומך לאחור עם U2F בכל האספקטים.
  • OATH ארגון שיש לו שני פרוטוקולים TOTP ו-HTOP לביצוע אימות משני.
  • OTP מנגנון שמייצר תגובה צפויה (HMAC-SHA1) על-בסיס הקלט.

רציתי גם לכתוב על הזדהות למערכת לינוקס (נוספת\בלעדית) בעזרת Security Key, אבל אז קלטתי שאני משתמש ב-Thetis שתומך רק ב-FIDO2… אז אל תתבלבלו.

אם למישהו בא להקדים אותי: https://wiki.archlinux.org/index.php/U2F#Authentication_for_Arch_Linux

קריאה נוספת:

  1. Yubico - Developers - U2F
  2. Yubico - Blog - What is FIDO2
  3. Yubico - Developers - OATH
  4. Yubico - Developers - OTP