Page tree

Общая информация

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

Рутокен ОТР — это аппаратная клиентская реализация алгоритма TOTP для аутентификации на сервисах. Данное решение обладает рядом ключевых преимуществ:

  • низкая стоимость внедрения и обслуживания;
  • интуитивно понятный процесс аутентификации;
  • возможность аутентификации во внутрикорпоративные сервисы в условиях отсутствия постоянного доступа к сети интернет;
  • возможность аутентификации без использования USB-портов.

В Рутокен ОТР реализован алгоритм создания одноразовых паролей на основе времени (TOTP), соответствующий стандарту RFC6238.

Компоненты системы аутентификации

Для организации системы аутентификации потребуется:

  • устройство Рутокен ОТР;
  • клиент;
  • сервер аутентификации. 

В качестве сервера аутентификации можно использовать:

Процесс аутентификации

Устройство Рутокен ОТР и сервер аутентификации независимо друг от друга вычисляют одноразовые пароли.

Для корректной работы системы аутентификации на стороне сервера также должна быть внедрена поддержка TOTP.

При попытке аутентификации сервер сравнивает одноразовый пароль, вычисленный на сервере, с одноразовым паролем, предоставленным клиентом. Проверка проходит успешно только в том случае, если и сервер, и Рутокен ОТР используют идентичные секретный ключ и настройки для вычисления одноразовых паролей:

  • время;
  • алгоритм;
  • шаг времени.

Настройки протокола TOTP по умолчанию:

  • время — текущее по UTC;
  • алгоритм — sha1;
  • шаг времени — 30 секунд.

Устройство Рутокен ОТР позволяет импортировать настройки протокола TOTP по технологии NFC с помощью мобильного устройства на базе Android или компьютера с NFC-считывателем

Приложения для ОС Android или Windows опубликованы на странице.

Инструкции к приложениям можно найти по ссылке.

Возможные сценарии подготовки к аутентификации

Для успешной проверки одноразовых паролей и корректной аутентификации пользователя необходимо, чтобы секретный ключ и настройки на сервере аутентификации и устройстве Рутокен ОТР были идентичными. Ниже представлены возможные сценарии синхронизации секретного ключа и настроек в зависимости от того, где были сгенерированы секретные ключи.

Секретные ключи сгенерированы вне контура организации

  1. Администратор получает устройства Рутокен ОТР от Компании «Актив» с предзагруженными уникальными секретными ключами и настройками протокола TOTP по умолчанию. Дополнительно прилагается csv-файл с серийными номерами устройств вместе со значениями соответствующих ключей.
  2. Администратор переносит серийные номера устройств и соответствующие значения секретных ключей на сервер. На сервере для расчета одноразовых паролей указаны настройки протокола TOTP по умолчанию.
  3. Администратор назначает серийный номер токена учетной записи пользователя при выдаче Рутокен ОТР пользователю.

Пример содержимого файла, поставляемого вместе с партией устройств Рутокен ОТР:

Секретные ключи сгенерированы внутри контура организации

  1. Администратор генерирует секретные ключи на сервере.
  2. Происходит инициализация Рутокен ОТР одним из следующих способов:
    1. Пользователь добавляет секретный ключ в приложение на Android и самостоятельно импортирует секретный ключ на токен по NFC. Наиболее удобным и предпочтительным способом добавления секретного ключа в приложение является сканирование QR-кода, который отображается на клиенте. Кроме того, существует возможность вручную ввести секретный ключ в приложении.

      Пример содержимого QR-кода для инициализации:
      otpauth://totp/Rutoken:?secret=PTCSFHAAXGA44KIEPYY5GVBCH7SZXCDA&issuer=Rutoken&algorithm=SHA1&digits=6&period=30)

       

    2. Администратор поточно импортирует секретные ключи по NFC на Рутокен ОТР с помощью txt-файла и приложения на Windows.

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

Почему одноразовые пароли на сервере и Рутокен ОТР могут не совпадать и как это предотвратить

Рутокен OTP, как и любое другое автономное устройство с часами, подвержен временному дрейфу (накоплению ошибки показаний часов), из-за которого одноразовые пароли на устройстве и сервере могут не совпасть при попытке аутентификации. Данную проблему можно устранить через регулярную переинициализацию устройств Рутокен ОТР, что повышает нагрузку на администратора и ухудшает пользовательский опыт. Другой вариант — на этапе подготовки к аутентификации учесть возможное расхождение во времени на стороне сервера следующими способами:

  • Решение с ограничениями — расширение окна допустимых одноразовых паролей в соответствии с RFC6238 (раздел 6 «Resynchronization»).
    Сервер при получении одноразового пароля рассчитывает с своей стороны одноразовый пароль как для текущего момента времени, так и для смежных (+/- 2) интервалов времени. Если хотя бы один из сгенерированных сервером одноразовых паролей совпадет с присланным пользователем, то аутентификация будет считаться успешной.
  • Полноценное решение — реализация механизма адаптации времени.
    Проверка совпадения одноразового пароля пользователя с одноразовым паролем не от текущего момента времени, а от одного из соседних интервалов. Если такое происходит, серверу следует сохранить вычисленное смещение в единицах интервалов, чтобы для последующих аутентификаций проверять смещенный набор одноразовых паролей, рассчитываемых сервером.

Блок-схема предложенного алгоритма адаптации времени:

Примеры реализации

Пример свободных реализаций на github:

Дополнительно реализацию сценариев подготовки и аутентификации с использованием Рутокен ОТР можно посмотреть на демонстрационном ресурсе demoauth.rutoken.ru. Секретные ключи генерируются на стороне сервера. Пользователь самостоятельно добавляет секретный ключ в приложение на Android через сканирование QR-кода и импортирует секретный ключ на токен по NFC.

  • No labels