🕵️ Автентифікація без пароля?

Зміст

У світі, де кібербезпека стає все більш важливою, традиційні методи автентифікації, такі як паролі, вже не відповідають сучасним вимогам безпеки. На допомогу приходить безпарольна автентифікація, зокрема стандарти FIDO2 та WebAuthn.

Що таке безпарольна автентифікація?

Безпарольна автентифікація - це метод перевірки ідентичності користувача без використання традиційних паролів. Замість цього використовуються інші фактори, такі як біометричні дані, апаратні ключі або мобільні пристрої.

FIDO2. Що це?

FIDO2 (Fast IDentity Online 2) - це набір специфікацій для безпарольної автентифікації. Він складається з двох основних компонентів:

  • WebAuthn (Web Authentication) - веб-стандарт, розроблений W3C та FIDO Alliance.

  • CTAP (Client to Authenticator Protocol) - протокол для комунікації між клієнтом та автентифікатором.

Складові протоколу FIDO2/WebAuthn

Протокол FIDO2/WebAuthn складається з кількох ключових компонентів:

  • Клієнт (Client). Це зазвичай веб-браузер користувача, який підтримує WebAuthn API.

  • Автентифікатор (Authenticator). Пристрій або програмне забезпечення, яке генерує та зберігає криптографічні ключі. Це може бути:

    • Платформний автентифікатор (наприклад, Touch ID, Windows Hello)

    • Зовнішній автентифікатор (наприклад, YubiKey)

  • Сервер (Relying Party). Веб-сервіс, який хоче автентифікувати користувача.

  • WebAuthn API. Інтерфейс, через який клієнт взаємодіє з автентифікатором.

Концепція Challenge

Challenge - це випадково згенерований набір байтів, який сервер відправляє клієнту під час процесу реєстрації або автентифікації.

Основні характеристики та призначення challenge:

  • Унікальність: Кожен challenge повинен бути унікальним для кожної операції.

  • Випадковість: Challenge генерується випадковим чином, щоб забезпечити непередбачуваність.

  • Обмежений час життя: Challenge дійсний лише протягом короткого періоду часу.

Призначення challenge:

  • Запобігання атакам повторення: Оскільки кожен challenge унікальний, зловмисник не може повторно використати перехоплену відповідь.

  • Забезпечення актуальності: Challenge гарантує, що відповідь клієнта є свіжою і була створена саме для цього конкретного запиту.

  • Зв'язування сесії: Challenge допомагає зв'язати конкретний запит автентифікації з конкретною сесією користувача.

WebAuthn. Основи стандарту

WebAuthn - це API, який дозволяє веб-додаткам та веб-сайтам використовувати криптографічні облікові дані замість паролів для автентифікації користувачів.

Ключові особливості WebAuthn:

  • Використання асиметричної криптографії

  • Підтримка різних типів автентифікаторів (вбудовані, зовнішні)

  • Захист від фішингу та MITM

YubiKey. Інструмент для безпарольної автентифікації

Одним із найпоширеніших фізичних автентифікаторів, що використовуються разом зі стандартами FIDO2 та WebAuthn, є YubiKey. Це апаратний пристрій, розроблений компанією Yubico, який дозволяє здійснювати як двофакторну автентифікацію, так і безпарольну автентифікацію.

YubiKey використовується для багатьох цілей, включаючи захист облікових записів, шифрування даних та підпис документів. Він підтримує кілька протоколів автентифікації, таких як OTP (One-Time Password), U2F (Universal 2nd Factor), PIV (Personal Identity Verification), та OpenPGP.

YubiKey працює шляхом генерування і зберігання криптографічних ключів. Під час автентифікації пристрій підключається до комп'ютера або мобільного пристрою через USB або NFC, і користувач натискає на нього для підтвердження своєї особи. Приватний ключ, збережений на пристрої, ніколи не покидає його, що забезпечує високий рівень безпеки та захисту від фішингу та атак посередника.

Як працює протокол FIDO2/WebAuthn?

Реєстрація:

  1. Ініціація процесу: Користувач вирішує зареєструватися на веб-сайті за допомогою FIDO2.

  2. Запит на реєстрацію: Сервер генерує challenge та створює об'єкт PublicKeyCredentialCreationOptions, який включає необхідні параметри для створення криптографічних ключів.

  3. Створення облікових даних: Клієнт отримує ці дані, браузер взаємодіє з автентифікатором, і генерується нова пара ключів.

  4. Відправка відповіді: Клієнт надсилає публічний ключ та підписаний challenge на сервер.

  5. Верифікація: Сервер перевіряє підпис та зберігає публічний ключ для майбутніх автентифікацій.

Автентифікація:

  1. Ініціація процесу входу: Користувач намагається увійти на веб-сайт.

  2. Запит на автентифікацію: Сервер генерує новий challenge та створює об'єкт PublicKeyCredentialRequestOptions.

  3. Підписання challenge: Клієнт отримує ці дані, браузер взаємодіє з автентифікатором для підписання challenge.

  4. Відправка відповіді: Клієнт відправляє ідентифікатор облікових даних та підписаний challenge на сервер.

  5. Верифікація: Сервер перевіряє підпис за допомогою збереженого публічного ключа. Якщо перевірка успішна, користувач вважається автентифікованим.

Цей процес забезпечує надійну автентифікацію без необхідності використання паролів, при цьому захищаючи від різних видів атак, таких як фішинг та атаки повторення.

Переваги безпарольної автентифікації

  • Підвищена безпека: Захист від фішингу, атак на паролі та атак повторного відтворення.

  • Зручність використання: Користувачам не потрібно запам'ятовувати складні паролі.

  • Зменшення витрат на підтримку: Менше запитів на скидання паролів.

  • Відповідність нормативним вимогам: Виконання вимог GDPR, PSD2 та інших регуляторних актів.

Виклики та обмеження

  • Необхідність підтримки з боку браузерів та пристроїв.

  • Початкові витрати на впровадження та навчання користувачів.

  • Потенційні проблеми з відновленням доступу у випадку втрати автентифікатора, такого як YubiKey. Важливо мати резервний автентифікатор або інші способи відновлення доступу.

Приклади використання

  • Google Advanced Protection Program

  • Microsoft Azure AD

  • GitHub (двофакторна автентифікація з використанням FIDO2)

Спробувати WebAuthn

Ви можете спробувати автентифікацію WebAuthn на демо-сайті WebAuthn.io. Цей сайт дозволяє вам випробувати реєстрацію та автентифікацію за допомогою платформного автентифікатора (наприклад, Windows Hello або Touch ID) або зовнішнього ключа безпеки, такого як YubiKey.

»

Безпарольна автентифікація на основі FIDO2 та WebAuthn є потужним кроком вперед у забезпеченні безпеки онлайн-взаємодій. Вона пропонує значні переваги в плані безпеки та зручності використання, хоча і вимагає певних змін у підході до управління ідентифікацією та доступом. З поступовим прийняттям цієї технології великими технологічними компаніями та зростаючою підтримкою з боку браузерів та операційних систем, можна очікувати, що безпарольна автентифікація стане новим стандартом у найближчі роки.


Цікаві ресурси
https://youtu.be/J53Ya7E5HGQ?si=ssrEJ4gAtXl8gQFc
https://www.cossacklabs.com/blog/security-tips-on-using-fido-u2f-and-yubikey/
https://fidoalliance.org/specifications/

Поділись своїми ідеями в новій публікації.
Ми чекаємо саме на твій довгочит!
Oleksandr Klymenko
Oleksandr Klymenko@overpathz

Java Software Engineer

4.8KПрочитань
1Автори
72Читачі
На Друкарні з 19 квітня

Більше від автора

  • Secure networking. Deep Dive

    Глибоке занурення в протоколи TLS/SSL та інфраструктуру відкритих ключів (PKI). Основні поняття, процес встановлення захищеного з'єднання, роль сертифікатів та ланцюжка довіри

    Теми цього довгочиту:

    Security
  • Поширені помилки у дизайні REST API

    У довгочиті розглядаються поширені помилки при проектуванні REST API та способи їх уникнення: версіонування, використання DTO, підхід CQRS, робота з мікросервісами, та інші практики для підвищення продуктивності, безпеки й зручності API

    Теми цього довгочиту:

    Java
  • Java. Короткий огляд еволюції багатопотоковості

    У перших версіях Java багатопоточність реалізовувалася за допомогою класу Thread, який дозволяв створювати нові потоки. Проте ця модель мала багато недоліків:

    Теми цього довгочиту:

    Java

Вам також сподобається

Коментарі (0)

Підтримайте автора першим.
Напишіть коментар!

Вам також сподобається