14 June 2011

Web-аутентификация с помощью USB-токенов

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

image


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

Вот что предлагают разработчики средств защиты информации.

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

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

Предлагаемые компоненты являются своего рода конструктором для встраивания различных криптографических функций в web-приложения. С их помощью можно реализовывать функции шифрования, аутентификации и ЭЦП с высоким уровнем безопасности.

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

Регистрация:
  1. Клиент генерирует в токене ключевую пару e,d;
  2. Публичный ключ e клиент отсылает на сервер;

image
Аутентификация:
  1. Клиент отсылает серверу логин;
  2. Сервер генерирует RND и отсылает клиенту;
  3. Клиент генерирует RND и отсылает серверу подписанное сообщение (RND-server||RND-client||Server-name);
  4. Сервер проверяет подлинность ЭЦП использую публичный ключ клиента;

image

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

Как обычно — демонстрация. Для работы необходимо иметь USB-токен и установить плагин. Токены для тестирования можно взять у меня, есть 10 штук — пишите в личку. Купить можно тут.
Tags:web-аутентификацияинформационная безопасностькриптографияГОСТ
Hubs: Information Security
+29
22.5k 88
Comments 48
Top of the last 24 hours