OpenSSH מוסיף תמיכה באימות דו-גורמי אוניברסלי

В кодовую базу OpenSSH הוסיף экспериментальная поддержка двухфакторной аутентификации с использованием устройств, поддерживающих протокол U2F, שפותח על ידי הברית FIDO. U2F מאפשר יצירת אסימוני חומרה בעלות נמוכה כדי לאמת את הנוכחות הפיזית של המשתמש, תוך אינטראקציה איתם באמצעות USB, Bluetooth או NFC. מכשירים כאלה מקודמים כאמצעי לאימות דו-גורמי באתרי אינטרנט, כבר נתמכים על ידי הדפדפנים הגדולים ומיוצרים על ידי יצרנים שונים, כולל Yubico, Feitian, Thetis וקנסינגטון.

כדי ליצור אינטראקציה עם מכשירים שמאשרים את נוכחות המשתמש, סוג חדש של מפתחות נוסף ל-OpenSSH "[מוגן בדוא"ל]» («ecdsa-sk»), в котором используется алгоритм цифровой подписи ECDSA (Elliptic Curve Digital Signature Algorithm) с эллиптической кривой NIST P-256 и хэшем SHA-256. Процедуры взаимодействия с токенами вынесены в промежуточную библиотеку, которая загружается по аналогии с библиотекой для поддержки PKCS#11 и является обвязкой над библиотекой libfido2, המספק כלים לתקשורת עם אסימונים דרך USB (נתמכים פרוטוקולי FIDO U2F/CTAP 1 ו-FIDO 2.0/CTAP 2). ספריית ביניים libsk-libfido2 שהוכנה על ידי מפתחי OpenSSH כלול לתוך הליבה libfido2, כמו גם מנהל התקן HID עבור OpenBSD.

Для включения U2F можно использовать свежий срез кодовой базы из מאגר OpenSSH וסניף HEAD של הספרייה libfido2, в которую уже входит необходимая для OpenSSH прослойка.
Libfido2 תומך ב-OpenBSD, Linux, macOS ו-Windows.

כדי לאמת וליצור מפתח, עליך להגדיר את משתנה הסביבה SSH_SK_PROVIDER, המציין בו את הנתיב ל-libsk-libfido2.so (ייצוא SSH_SK_PROVIDER=/path/to/libsk-libfido2.so), או להגדיר את הספרייה דרך ה-SecurityKeyProvider הגדרה, ולאחר מכן הפעל את "ssh-keygen -t ecdsa-sk" או, אם המפתחות כבר נוצרו והוגדרו, התחבר לשרת באמצעות "ssh". כאשר אתה מפעיל את ssh-keygen, צמד המפתחות שנוצר יישמר ב-"~/.ssh/id_ecdsa_sk" וניתן להשתמש בו בדומה למפתחות אחרים.

Открытый ключ (id_ecdsa_sk.pub) следует скопировать на сервер в файл authorized_keys. На стороне сервера только проверяется цифровая подпись, а взаимодействие с токенами производится на стороне клиента (на сервере не нужно устанавливать libsk-libfido2, но сервер должен поддерживать тип ключей «ecdsa-sk»). Сгенерированный закрытый ключ (id_ecdsa_sk) по сути является дескриптором ключа, образующим реальный ключ только в сочетании с секретной последовательностью, хранимой на стороне токена U2F.

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

Ключ U2F может быть добавлен в ssh-agent через «ssh-add ~/.ssh/id_ecdsa_sk», но ssh-agent должен быть собран с поддержкой ключей «ecdsa-sk», должна присутствовать прослойка libsk-libfido2 и агент должен выполняться на системе, к которой подключается токен.
סוג מפתח חדש "ecdsa-sk" נוסף מכיוון שהפורמט של מפתחות ecdsa של OpenSSH שונה מפורמט U2F עבור חתימות דיגיטליות של ECDSA בנוכחות שדות נוספים.

מקור: OpenNet.ru

הוספת תגובה