Развивая тему, начатую здесь и здесь, расскажу еще об одном механизме аутентификации на web-ресурсах. Механизм прост, в его основе лежит использование ЭЦП, для хранения ключей при этом используется USB-токен.
Основной задачей алгоритмов, описанных в предыдущих статьях, была защита пароля от перехвата и безопасное хранения секрета (например, хеша пароля) в БД сервера. Однако существует еще одна серьезная угроза. Это небезопасная среда в которой мы используем пароли. Программные и аппаратные кейлогеры, шпионское ПО контролирующее формы ввода браузеров, атака MitM, контролирующая не только протокол аутентификации, но и саму структуру html-страницы, на которой вводится пароль, да и просто сосед подсмотревший за вами представляют угрозу, которой никакая схема парольной аутентификации ничего не сможет противопоставить. Эту проблему решили в свое время придумав многофакторную аутентификацию. Суть ее заключается в том, что для успешной аутентификации надо знать секрет и владеть каким-либо предметом (в нашем случае usb-токен и его пин-код).
Вот что предлагают разработчики средств защиты информации.
USB-токен — аппаратное устройство, умеющее формировать ключевую пару и осуществляющее электронную цифровую подпись, для выполнения операций требует ввод пин-кода. При формировании ЭЦП используется криптография на эллиптических кривых. Не требует установки драйверов, определяется как HID-устройство.
Кроссбраузерный плагин — умеет работать с usb-токеном, имеет программный интерфейс доступа к криптографическим функциям. Не требует административных прав для установки.
Предлагаемые компоненты являются своего рода конструктором для встраивания различных криптографических функций в web-приложения. С их помощью можно реализовывать функции шифрования, аутентификации и ЭЦП с высоким уровнем безопасности.
Например, схема аутентификации может выглядеть так.
Регистрация:
Аутентификация:
Для тех кто с недоверием относится к «велосипедам» — погуглить «ISO public-Key Two-pass Unilateral Authentication Protocol».
Как обычно — демонстрация. Для работы необходимо иметь USB-токен и установить плагин. Токены для тестирования можно взять у меня, есть 10 штук — пишите в личку. Купить можно тут.
Основной задачей алгоритмов, описанных в предыдущих статьях, была защита пароля от перехвата и безопасное хранения секрета (например, хеша пароля) в БД сервера. Однако существует еще одна серьезная угроза. Это небезопасная среда в которой мы используем пароли. Программные и аппаратные кейлогеры, шпионское ПО контролирующее формы ввода браузеров, атака MitM, контролирующая не только протокол аутентификации, но и саму структуру html-страницы, на которой вводится пароль, да и просто сосед подсмотревший за вами представляют угрозу, которой никакая схема парольной аутентификации ничего не сможет противопоставить. Эту проблему решили в свое время придумав многофакторную аутентификацию. Суть ее заключается в том, что для успешной аутентификации надо знать секрет и владеть каким-либо предметом (в нашем случае usb-токен и его пин-код).
Вот что предлагают разработчики средств защиты информации.
USB-токен — аппаратное устройство, умеющее формировать ключевую пару и осуществляющее электронную цифровую подпись, для выполнения операций требует ввод пин-кода. При формировании ЭЦП используется криптография на эллиптических кривых. Не требует установки драйверов, определяется как HID-устройство.
Кроссбраузерный плагин — умеет работать с usb-токеном, имеет программный интерфейс доступа к криптографическим функциям. Не требует административных прав для установки.
Предлагаемые компоненты являются своего рода конструктором для встраивания различных криптографических функций в web-приложения. С их помощью можно реализовывать функции шифрования, аутентификации и ЭЦП с высоким уровнем безопасности.
Например, схема аутентификации может выглядеть так.
Регистрация:
- Клиент генерирует в токене ключевую пару e,d;
- Публичный ключ e клиент отсылает на сервер;
Аутентификация:
- Клиент отсылает серверу логин;
- Сервер генерирует RND и отсылает клиенту;
- Клиент генерирует RND и отсылает серверу подписанное сообщение (RND-server||RND-client||Server-name);
- Сервер проверяет подлинность ЭЦП использую публичный ключ клиента;
Для тех кто с недоверием относится к «велосипедам» — погуглить «ISO public-Key Two-pass Unilateral Authentication Protocol».
Как обычно — демонстрация. Для работы необходимо иметь USB-токен и установить плагин. Токены для тестирования можно взять у меня, есть 10 штук — пишите в личку. Купить можно тут.