Что такое TOTP

TOTP - для двухфакторной авторизации. Вместо кода на мобильный телефон (считается небезопасным).

Схема работы:

  1. У клиента и сервера - есть общий секрет.
  2. У клиента и сервера - синхронизированы часы.
  3. Когда нужно авторизоваться, сервер вычисляет HASH(T+SECRET). T - это количество интервалов времени (например 30-секундных) с unix epoch.
  4. Клиент тоже считает HASH(T+SECRET).
  5. Клиент и сервер берут определённым общеизвестным способом первые цифры от хэша.
  6. Клиент передаёт серверу токен, сервер делает сравнение.

Возможные уязвимости/проблемы:

  1. Может утечь общий секрет, как со стороны клиента, так и со стороны сервера. С кодами на мобильный телефон именно этого не может произойти, к слову.
  2. Можно перехватить одноразовый ключ.
  3. Может произойти рассинхрон времени: тогда нельзя будет авторизоваться.

Опенсорсные приложения для Android для TOTP.

Из лучших, рекомендуют

  • Aegis (посмотрел, выглядит нормально, есть какая-то защита).
  • freeOTP+ (пока не смотрел, форк freeOTP).

ещё смотрел

  • secur - заброшенный, как плюс разве что простота интерфейса.

  • reddit что-то про Aegis и andOTP

Зачем

Гитхаб требует начать использовать двухфакторку от отдельных аккаунтов.

HOTP

to be written…