Web-автентифікація за допомогою USB-токенів

Розвиваючи тему, розпочату тут і тут, розповім ще про один механізм автентифікації на web-ресурсах. Механізм простий, в його основі лежить використання ЕЦП, для зберігання ключів при цьому використовується USB-токен.

Основним завданням алгоритмів, описаних у попередніх статтях, був захист пароля від перехоплення і безпечне зберігання секрету (наприклад, хеша пароля) в БД сервера. Однак існує ще одна серйозна загроза. Це небезпечне середовище в якому ми використовуємо паролі. Програмні та апаратні кейлогери, шпигунське ПЗ контролююче форми введення браузерів, атака MitM, що контролює не тільки протокол автентифікації, але і саму структуру html-сторінки, на якій вводиться пароль, та й просто сусід підглянув за вами представляють загрозу, якою ніяка схема парольної автентифікації нічого не зможе протиставити. Цю проблему вирішили свого часу придумавши багатофакторну автентифікацію. Суть її полягає в тому, що для успішної автентифікації треба знати секрет і володіти якимось предметом (у нашому випадку usb-токен і його пін-код).

Ось що пропонують розробники засобів захисту інформації.

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

Кросбраузерний плагін - вміє працювати з usb-токеном, має програмний інтерфейс доступу до криптографічних функцій. Не потребує адміністративних прав для встановлення.

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

Наприклад, схема автентифікації може виглядати так.

Реєстрація:

  1. Клієнт генерує в токені ключову пару e, d;
  2. Публічний ключ e клієнт відсилає на сервер;

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

  1. Клієнт відсилає серверу логін;
  2. Сервер генерує RND і відсилає клієнту;
  3. Клієнт створює RND і надсилає серверу підписане повідомлення (RND- server||RND - client||Server -name);
  4. Сервер перевіряє справжність ЕЦП використовую публічний ключ клієнта;

Для тих хто з недовірою ставиться до «велосипедів» - погуглити «ISO public-Key Two-pass Unilateral Authentication Protocol».

Як зазвичай - демонстрація. Для роботи необхідно мати USB-токен і встановити плагін. Токени для тестування можна взяти у мене, є 10 штук - пишіть в личку. Купити можна тут.

COM_SPPAGEBUILDER_NO_ITEMS_FOUND