В чем заключается принцип работы банковских (и не только) токенов?

Вот, например, у меня есть банковский токен, который генерирует, казалось бы, совершенно случайные числа для авторизации в Интернет-банк. Однако банк их как-то распознает и со случайными числами «от балды», естественно, не пускает внутрь.


Расскажите (или скажите, где почитать можно), в чем заключается принцип работы этих токенов?


P.S.: Я знаю, в общем, как устроена, например, авторизация с одноразовыми паролями с синхронизацией по времени (напр. Google Authenticator). Но в моем токене можно спокойно вытащить батарейку, поставить ее обратно — и все будет дальше работать, т.е. никаких часов в нем точно нет. Как тогда узнают друг друга токен и банк?
  • Вопрос задан
  • 12240 просмотров
Пригласить эксперта
Ответы на вопрос 8
Singerofthefall
@Singerofthefall
Они работают на математических функциях, а для вычисления каждого ключа (под ключем я имею в виду то число, которое генерируется, и которое вы вводите для авторизации) используется либо счетчик, либо последовательное хеширование.

Грубо говоря, в токене зашита некоторая односторонняя функция f(x), и некоторое стартовое число k. Сервер также знает, какая функция и какое число используется в токене, привязанном к вашему аккаунту.

Если это модель со счетчиком, то с помощью вашей функции вычисляется f(k), а затем k увеличивается на единицу (или изменяется как угодно еще, главное чтобы по известному алгоритму). Если это последовательные вычисления ключа, то каждый следующий ключ это результат работы функции на предыдущем ключе, то есть вычисляется f(k), потом f(f(k)), f(f(f(k))), и так далее.

Соответственно каждый раз, когда вы нажимаете на кнопку, токен вычисляет следующий ключ. Когда вы вводите его для авторизации, сервер также вычисляет тот же самый ключ и сравнивает их.
Ответ написан
> можно спокойно вытащить батарейку, поставить ее обратно
А если вытащить, подождать пару недель и только потом вставить обратно?
Ответ написан
Комментировать
FilimoniC
@FilimoniC
ru.wikipedia.org/wiki/%D0%9E%D0%B4%D0%BD%D0%BE%D1%80%D0%B0%D0%B7%D0%BE%D0%B2%D1%8B%D0%B9_%D0%BF%D0%B0%D1%80%D0%BE%D0%BB%D1%8C
habrahabr.ru/post/154229/

Принципа два —
f(T,IV) — Код на основе времени и кода инициализации, сложность в наличии часов
f(n,IV) — Код на основе номера попытки и кода инициализации, сложность в возможности серверу не узнать о произведенной попытке.

И кто вам сказал, что никаких часов там нет? Часы внутри микрухи могут годами ходить от заряда в конденсаторе
Ответ написан
@lubezniy
Как вариант, банку вообще не нужно знать этот одноразовый пароль. Ему достаточно получить некий документ, подписанный ЭЦП, зарегистрированной в банке (удостоверяющем центре) за конкретным клиентом. В токен встроены криптосредства, которым на вход подаёшь документ, авторизуешься по одноразовому паролю для подписания закрытым ключом (он хранится в токене, возможности получить его средствами токена нет), а на выходе получаешь ЭЦП документа, которая вместе с документом передаётся в банк и там проверяется (разумеется, в банке должен быть открытый ключ, соответствующий закрытому).
Ответ написан
Комментировать
@vilgeforce
Раздолбай и программист
Смотрел я тут один из банковских токенов в линухе. iBank, кажется. lsusb честно сказал — SIM-карта в USB-считывателе.
Ответ написан
Комментировать
Ответ написан
Комментировать
@OKComputer
Часы точно есть, даже если вы в это не верите. Попробуйте ввести устаревший хотя бы на секунду код…
Ответ написан
kimssster
@kimssster
Еще один из вариантов.
Принцип их работы необходимо разделить на несколько этапов:
1. Подготовительный: разворачивается в сетевой инфраструктуре банка центр генерации, его параметры записываются в ПО, которое производит инициализацию токенов (зашивается конфиг и генерятся пароли), считывается номер прошивки и серийник, обновляется группа.
2. Инициализация: токены проходят прцедуру инициализации (теперь они знают куда ломиться), могут вписыватся сертификаты УЦ, на оборудовании разрешается группа или увеличивается количество токенов, которым разрешен доступ, генерируется пароль для пользователя (обычно в пин-конфертах)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы