TOTP аутентификация обычно используется как второй фактор при двухфакторной аутентификации. В этой статье я вам расскажу про TOTP и где это можно применять.
Лично я познакомился с этим алгоритмом настраивая NextCloud. Настраивая в этой системе двухфакторную аутентификацию в качестве второго фактора можно было выбрать TOTP аутентификацию. Можете почитать про TOTP на википедии, я же расскажу простыми словами.
Для того, чтобы настроить TOTP (Time-based One-time Password Algorithm) на NextCloud я проделал следующее:
- при включении TOTP аутентификации, NextCloud выдал мне QR-код;
- я с помощью специального приложения на смартфоне отсканировал этот QR-код;
- затем это приложение начало постоянно, раз в 30 секунд, генерировать одноразовые пароли для входа на NextCloud.
Что интересно, пароль генерирует приложение на смартфоне и смартфону не обязательно иметь выход в интернет. Но время на смартфоне должно быть синхронизировано со временем на сервере, куда вы подключаетесь. Это нужно из-за того что этот алгоритм генерирует одноразовые пароли на основываясь на текущем времени клиента и сервера.
Работает алгоритм TOTP таким образом:
- Сервер (в моём случае NextCloud) создает секретный ключ для пользователя.
- Секретный ключ отправляется приложению (я считал с помощью приложения QR-код выданный сервером).
- Приложение на смартфоне использует текущее время и секретный ключ для генерирования одноразового пароля.
- Раз в определённый промежуток времени (например каждые 30 секунд) одноразовый пароль пересоздается.
- При входе на сервер вы вводите одноразовый пароль.
- Так как сервер владеет секретным ключом, то по своему текущему времени он может сгенерировать такой-же одноразовый пароль и сравнить с тем, что прислал пользователь. Если они совпадут, то вход разрешается.
В этой статье на Хабре алгоритм описан намного подробнее.
Помимо NextCloud его можно применять в Linux аутентификации, для этого есть pam модули. Про это можно почитать тут. Также его можно реализовать для любого web приложения.
На андроиде вы можете использовать следующие приложения:
- TOTP Authenticator (я использовал именно это приложение);
- andOTP;
- Google Authenticator.