2FA (двофакторна автентифікація)

Двофакторна автентифікація (2FA) — це процес безпеки, який вимагає від користувачів надання двох різних форм ідентифікації для підтвердження їхньої особи перед доступом до облікового запису чи системи.

Двофакторна автентифікація (2FA) — це метод багатофакторної автентифікації (MFA), який підвищує безпеку, вимагаючи два окремі фактори автентифікації для підтвердження особи користувача. Ці фактори зазвичай класифікуються на три типи: те, що користувач знає (наприклад, пароль, PIN-код), те, що користувач має (наприклад, фізичний токен, смартфон, смарт-карта), і те, чим користувач є (наприклад, відбиток пальця, сканування обличчя). Поширений варіант реалізації включає пароль (фактор знання) у поєднанні з одноразовим паролем (OTP), згенерованим додатком-автентифікатором або надісланим через SMS (фактор володіння). Процес починається з введення користувачем свого основного облікового запису, зазвичай пароля. Після успішної перевірки першого фактора система запитує другий фактор. Потім перевіряється дійсність другого фактора порівняно з попередньо зареєстрованим значенням або алгоритмом на основі часу. Якщо обидва фактори успішно автентифіковані, надається доступ. Основна перевага 2FA полягає в її стійкості до поширених векторів атак, таких як фішинг, підстановка облікових даних та атаки грубої сили, оскільки компрометація одного фактора недостатня для отримання несанкціонованого доступу. Однак компроміси включають збільшення тертя користувача, потенційну втрату або крадіжку другого фактора та залежність від безпеки механізму доставки другого фактора (наприклад, перехоплення SMS). Розширені реалізації можуть включати автентифікацію на основі ризиків, де система динамічно регулює кількість або тип необхідних факторів залежно від контексту, такого як місцезнаходження, пристрій або час доби.

        graph LR
  Center["2FA (двофакторна автентифікація)"]:::main
  Rel_authorization["authorization"]:::related -.-> Center
  click Rel_authorization "/terms/authorization"
  Rel_mfa_multi_factor_authentication["mfa-multi-factor-authentication"]:::related -.-> Center
  click Rel_mfa_multi_factor_authentication "/terms/mfa-multi-factor-authentication"
  Rel_single_sign_on_sso["single-sign-on-sso"]:::related -.-> Center
  click Rel_single_sign_on_sso "/terms/single-sign-on-sso"
  classDef main fill:#7c3aed,stroke:#8b5cf6,stroke-width:2px,color:white,font-weight:bold,rx:5,ry:5;
  classDef pre fill:#0f172a,stroke:#3b82f6,color:#94a3b8,rx:5,ry:5;
  classDef child fill:#0f172a,stroke:#10b981,color:#94a3b8,rx:5,ry:5;
  classDef related fill:#0f172a,stroke:#8b5cf6,stroke-dasharray: 5 5,color:#94a3b8,rx:5,ry:5;
  linkStyle default stroke:#4b5563,stroke-width:2px;

      

🧒 Простими словами

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

🤓 Expert Deep Dive

Двофакторна автентифікація (2FA) фундаментально підвищує безпеку, додаючи додатковий механізм перевірки до основного облікового запису (зазвичай пароля або парольної фрази). Цей процес відповідає принципу багатофакторної автентифікації (MFA), зокрема вимагаючи два окремі фактори з таких категорій:

  1. Те, що ви знаєте: Паролі, PIN-коди, відповіді на секретні запитання.
  2. Те, що ви маєте: Фізичні токени (наприклад, YubiKey, RSA SecurID), смартфони з додатками-автентифікаторами (наприклад, Google Authenticator, Authy) або SIM-карти для OTP на основі SMS.
  3. Те, чим ви є: Біометричні дані, такі як відбитки пальців, сканування обличчя або візерунки райдужної оболонки ока.

Поширений варіант реалізації включає одноразові паролі на основі часу (TOTP), стандартизовані RFC 6238. Алгоритми TOTP генерують новий код кожні 30-60 секунд на основі спільного секретного ключа (наданого під час початкового налаштування) та поточного часу, часто синхронізованого через NTP. Серверна валідація включає перерахунок очікуваних OTP для заданого часового вікна та порівняння його з кодом, наданим користувачем.

Інший поширений метод — одноразові паролі на основі HMAC (HOTP), визначені в RFC 4226, які генерують коди на основі лічильника, що збільшується з кожним використанням. Сервер і клієнт повинні підтримувати синхронізовані лічильники.

Більш розширені реалізації використовують Universal 2nd Factor (U2F) та його наступника FIDO2, які використовують криптографію з відкритим ключем. Під час реєстрації на ключі безпеки генерується унікальна пара приватного/публічного ключа, а публічний ключ реєструється в службі. Автентифікація передбачає, що сервер надсилає виклик, який пристрій FIDO підписує своїм приватним ключем, що сервер потім перевіряє за допомогою зареєстрованого публічного ключа, забезпечуючи сильну стійкість до фішингових атак, оскільки ключ ніколи не залишає пристрій і прив'язаний до конкретного походження (домену) веб-сайту.

📚 Джерела