Как работает TOTP, если мне нужно сохранить OTP в БД? - PullRequest
0 голосов
/ 26 декабря 2018

У меня есть требование

  1. Сторонний поставщик (TPP) хочет получить доступ к конечной точке отдыха с помощью OTP.
  2. Таким образом, TPP запрашивает service1, которая, в свою очередь,вызывает сервис2, который генерирует OTP, сохраняет специфичные для пользователя данные, относящиеся к этому запросу, в БД против этого OTP и возвращает OTP в TPP.Эти OTP действительны в течение некоторого n раз, например, для.6 минутПока все хорошо, теперь мои вопросы ниже

  3. Я могу генерировать только 6-значные OTP.Я использую Java.Crypto.mac.Я получаю много дубликатов OTP.Какой алгоритм лучше, чтобы вероятность получения дубликатов была меньше?Я взял подсказку от https://github.com/jchambers/java-otp/blob/master/src/main/java/com/eatthepath/otp/HmacOneTimePasswordGenerator.java

, используя ту же логику.Я тестировал с использованием jmeter для одного потока, 5000 раз я получаю почти 500 дубликатов OTP

Я прочитал, что TOTP работает в подходе клиент-сервер.Я не понимаю, в моем сценарии нет клиента как такового.Есть ли способ, которым я не храню OTP в БД?

Также в какой-то момент все OTP будут исчерпаны, если я сохраню их в БД.

Я прочитал почти все статьи о XOR128, TOTP, HOTP, но кое-что мне не хватает, чтобы понять.Пожалуйста, помогите мне решить эту проблему.

1 Ответ

0 голосов
/ 02 февраля 2019

Я вижу несколько возможных подходов.

Первый - это TOTP, вам вообще не нужно хранить OTP, все, что вам нужно, это сохранить секретный ключ, который будет использоваться для генерации OTP.

Второй (обычно используемый) вариант - предоставить вашим клиентам ключ API, и каждый раз, когда они отправляют запрос, им необходимо сгенерировать ключ доступа с использованием некоторого алгоритма хеширования.Источником хеш-функции должна быть строка, содержащая ключ API и текущий временной шаг.Вот инструкция API от одного из ведущих поставщиков OTP, пример описанного подхода вы можете найти на странице 5 «Авторизация»: https://www.protectimus.com/images/pdf/Protectimus_API_Manual_en.pdf

...