Как можно сделать сайт доступным только тогда, когда у кого-то есть ключ?

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

Другими словами, чтобы получить доступ к веб-сайту, вам понадобится имя пользователя, пароль и USB-ключ, который был подключен к клиентскому компьютеру. Предположительно, ключ будет делать какой-то вызов/ответ.

Было бы идеально, если бы этот ключ-ключ работал с Firefox автоматически или с простым добавлением плагина.

Мысли и предложения приветствуются.

Ответ 1

Вам может быть интересен Yubikey.

Это небольшой USB-ключ, который действует как клавиатура usb (то есть не требует специальных драйверов или клиентского программного обеспечения) и предназначен именно для такого рода аутентификации.

Ответ 2

Вы можете использовать токены RSA SecurID, которые представляют собой небольшие брелки, которые меняют число, отображаемое каждую минуту. В дополнение к требованию имени пользователя и пароля вы также можете потребовать от них ввести номер, который они видят на своем токене, чтобы убедиться, что у них есть аппаратное устройство. Существуют различные аппаратные ключи, некоторые из которых даже требуют ввода PIN-кода, чтобы увидеть изменяющийся номер. Дополнительная сложность на стороне сервера, но у клиента нет особых проблем.

Ответ 3

Я также использовал Юбики с хорошими результатами. Другим подобным решением является Swekey - вы также можете проверить это.

Ответ 4

У меня были хорошие результаты, реализующие аутентификацию и вход в систему с помощью Dinkey Dongles и система DinkeyWeb.

Пользователь подключает защитный ключ usb к своей машине, посещает вашу "защищенную" веб-страницу и проверяет ключ перед загрузкой страницы. Работает без специальных разрешений или привилегий.

Надеюсь, что это поможет.

Ответ 5

Требуется что-то, что имеет права доступа к ключу. Существует также проблема взлома - сообщения не будут скрыты, поэтому вы должны убедиться, что это не имеет значения. Это означает, что ключ должен будет реализовать его собственный crpyto. Вам также понадобится поддержка любых систем, которые вы собираетесь поддерживать.

Я вижу, что это очень сложно очень быстро.