MultiOTP

MultiOTP — библиотека PHP, командная утилита и веб-консоль для обеспечения независимой от операционной системы системы двухфакторной аутентификации на базе одноразовых паролей. MultiOTP сертифицирован по стандарту OATH с версии 4.1.0 и распространяется под лицензией LGPL. Разработка ведётся швейцарской компанией SysCo systèmes de communication sa. Помимо открытой версии, предлагаются коммерческие варианты под названиями MultiOTP Pro и MultiOTP Enterprise.

При печати страницы настроек пользователя автоматически генерируется QR-код.

Общие сведения
MultiOTP
Тип Двухфакторная аутентификация / Одноразовый пароль
Разработчик SysCo systèmes de communication sa
Написана на PHP
Операционная система Мультиплатформенное
Языки интерфейса многоязычный
Первый выпуск 7 июня 2010
Последняя версия 5.8.1.1 (14 марта 2021)
Состояние активное
Лицензия LGPL
Сайт multiotp.net

История

  • Версия 1.0.0 от 7 июня 2010 года представляла собой простой инструмент командной строки с именем otpauth, реализованный на PHP. Через несколько дней, чтобы избежать путаницы с одноимённым проектом, в версии 1.1.4 утилита была переименована в multiotp.
  • Версия 2.0.0 от 19 июля 2010 была полностью переписана в виде PHP-класса, а командная утилита стала реализацией этого класса. Для Windows предлагался исполняемый файл, содержащий и исходный код, и PHP-интерпретатор.
  • Версия 3.0.0 от 2 сентября 2010 обеспечила импорт файлов конфигурации токенов в формате нешифрованного PSKC и изменила внутреннюю структуру хранения.
  • Версия 3.1.1 от 19 декабря 2010 позволила хранить данные в базе MySQL.
  • Версия 3.2.0 от 6 июля 2011 внедрила возможность аутентификации по универсальной учётной записи с передачей имени конкретного пользователя и пароля как пароля (актуально для интеграции с Windows, требующих уникального пользователя).
  • Версия 3.9.2 от 25 октября 2011 предназначалась для мастер-класса по интеграции двухфакторной аутентификации в интернет-приложения на Application Security Forum – Western Switzerland 2011 в Ивердон-ле-Бен (Швейцария). Также использовалась для валидации и распространения seed-значений токенов, выданных спонсором Feitian: участник предоставлял e-mail, номер телефона, серийный номер токена и одноразовый код, после чего получал зашифрованное письмо, а ключ от письма — по SMS.
  • Версия 4.0.7 от 30 августа 2013 внесла множество улучшений, в частности клиент-серверную архитектуру с кэшем определения токенов, переработку поддержки MySQL (создание и обновление необходимых таблиц), поддержку CHAP (вдобавок к PAP), генерацию QR-кодов для быстрой настройки с Google Authenticator, создание пользователя в одну команду и пр.
  • Версия 4.0.9 от 22 сентября 2013 использовалась для демонстрации двухфакторной аутентификации на различных форумах: например, на Rump Session конференции «Application Security Forum – Western Switzerland 2013» и 45-минутной презентации на Studerus Technology Forum 2013 в Цюрихе.
  • Версия 4.1.0 от 23 декабря 2013 получила сертификацию OATH для HOTP и TOTP, что обеспечило совместимость со всеми сертифицированными аппаратными токенами, включая зашифрованные файлы PSKC. Бета-версия показана на PasswordsCon 2013 в Бергене (Норвегия), добавлены инструкции для самостоятельной сборки двухфакторного устройства на Raspberry Pi. Появилась автоматическая регистрация нераспределённых токенов, процедуры повторной синхронизации и разблокировки токена. Добавлен базовый веб-интерфейс.
  • Версия 4.1.1 от 20 января 2014 исправила ряд ошибок и улучшила совместимость с Microsoft Authenticator. Для ресинхронизации токена больше не требуется PIN-код.
  • Версия 4.2.0 от 7 февраля 2014 добавила поддержку протоколов MS-CHAP и MS-CHAPv2.
  • Версия 4.2.1 от 14 февраля 2014 реализовала интеграцию с Active Directory / LDAP для создания учётных записей пользователей группы.
  • Версия 4.2.2 от 3 марта 2014 представила улучшенный веб-интерфейс с импортом аппаратных токенов, созданием пользователей, синхронизацией токенов, разблокировкой пользователей, печатью листа и QR-кода для TOTP/HOTP-токенов; расширена интеграция с сервером RADIUS TekRADIUS и появилась возможность возвращать дополнительные данные (актуально для MS-CHAP/MS-CHAPv2).
  • Версия 4.2.3 от 13 марта 2014 устранила ошибку возврата данных для TekRADIUS при согласовании ключа шифрования.
  • Версия 4.2.4 от 30 марта 2014 улучшила поддержку MySQL и добавила поддержку mysqli, реализовала выбор зашифровываемых полей БД без изменения исходников, обновила генерацию QR-кодов, расширила тестирование и обновила документацию.
  • Версия 4.2.4.1 от 6 апреля 2014 добавила генерацию и вывод ключа NT_KEY в стандартный поток для поддержки FreeRADIUS, импорт токенов из CSV-файлов, удалённых пользователей теперь также удаляет из соответствующих токенов, а командная опция -user-info выводит подробную информацию о пользователе.
  • Версия 4.2.4.2 от 13 апреля 2014 унифицировала работу с XML в проекте, устранила ошибку при импорте токенов из CSV.
  • Версия 4.2.4.3 от 12 июня 2014 исправила ошибку с SMS-провайдером aspsms.
  • Версия 4.3.0.0 от 4 ноября 2014 позволила использовать пароли AD/LDAP вместо статичного PIN, добавила поддержку Yubico OTP и импорт ключей из утилиты Yubico, переработала синхронизацию пользователей AD/LDAP; представлена на мастер-классе Application Security Forum – Western Switzerland 2014.
  • Версия 4.3.1.0 от 9 декабря 2014 добавила отдельный прокси для CLI, что увеличило производительность на Raspberry Pi; внедрена универсальная поддержка LDAP (включая NAS Synology и другие Linux-реализации). Улучшена работа с одноразовыми паролями, передающими серийный номер, и введён обязательный PIN-префикс в паролях на стирание. Переменная среды MULTIOTP_PATH позволяет явно задавать рабочий каталог.
  • Версия 4.3.1.1 от 15 декабря 2014 расширила синхронизацию AD/LDAP, появилась поддержка новых полей, проект доступен на GitHub.
  • Версия 4.3.2.2 от 9 июня 2015 исправила работу некоторых устаревших компонентов, добавила и адаптировала параметры по умолчанию, разрешила дефис в пароле, по умолчанию включила опции autoresync и кэш, реализовала внутреннюю ресинхронизацию и очистку логов.
  • Версия 4.3.2.3 от 10 июня 2015 была представлена на Dev(Talks):2015 в Бухаресте, содержала доработки веб-интерфейса.
  • Версия 4.3.2.4 от 24 июня 2015 исправила ошибку генерации паролей на стирание при использовании спецсимволов, теперь синхронизация AD/LDAP позволяет автоматически определять тип multi_account.
  • Версия 4.3.2.5 от 15 июля 2015 изменила код возврата командной утилиты при запуске без параметров (теперь 30 вместо 19), появились файлы для интеграции как виртуального приложения (OVA, open-vm-tools, Hyper-V).
  • Версия 4.3.2.6 от 18 июля 2015 реализовала генерацию QR-кодов для mOTP (Mobile-OTP) и новую функцию загрузки информации о конкретном пользователе.
  • Версия 5.0.2.5 от 16 октября 2016 улучшила поддержку SSL, позволила выбирать AD/LDAP-атрибут синхронизации, доработала MS-CHAPv2, разрешила повтор пароля при использовании multiOTP для VPN, контроль приватного ID YubicoOTP, совместимость SSL-синхронизации AD/LDAP с Windows 2012R2, лучшая поддержка спецсимволов AD/LDAP и новые методы асинхронного изменения данных.
  • Версия 5.0.2.6 от 4 ноября 2016 обновила логи, сторонние утилиты и формат резервной копии для совместимости с коммерческой версией.
  • Версия 5.0.3.0 от 14 ноября 2016 добавила работу с IP Dial-In (и синхронизацию с атрибутом msRADIUSFramedIPAddress AD), импорт токенов с поддержкой бинарных ключей.
  • Версия 5.0.3.4 от 26 января 2017 улучшила процесс синхронизации AD/LDAP для больших каталогов — кэширование по умолчанию в temp, поддержка CLI-команд в одну строку, добавлена поддержка нескольких групп пользователей, по умолчанию методы TOTP/HOTP теперь FreeOTP (для Android/iOS), поддержка формата множественных токенов PSKCV10.
  • Версия 5.0.3.5 от 3 февраля 2017 исправила ошибки и добавила метод GetUserInfo.
  • Версия 5.0.3.6 от 21 февраля 2017 реализовала поддержку бинарных и base32-ключей для SetUserTokenSeed и SetTokenSeed. Обновлён процесс восстановления конфигурации.
  • Версия 5.0.3.7 от 23 февраля 2017 добавила мелкие улучшения — очистку имён групп, поддержку прав на каталоги Linux.
  • Версия 5.0.4.4 от 16 мая 2017 доработала политику блокировки — повторный ввод одного токена не увеличивает счётчик ошибок.
  • Версия 5.0.4.5 от 29 мая 2017 внедрила поддержку PostgreSQL (по коду Frank van der Aa).
  • Версия 5.0.4.6 от 2 июня 2017 определила под Linux местоположение всех конфигурационных папок в /etc/multiotp/.
  • Версия 5.0.4.8 от 6 июня 2017 исправила соединение с LDAP SSL/TLS для PHP 7.x.
  • Версия 5.0.4.9 от 7 июля 2017 устранила ряд ошибок и добавила настройки TLS.
  • Версия 5.0.5.0 от 8 сентября 2017 отказалась от инструмента nircmd.exe из-за ложных срабатываний антивирусов.
  • Версия 5.0.5.2 от 29 сентября 2017 установила mOTP-генератор по умолчанию для Android/iOS — OTP Authenticator.
  • Версия 5.0.5.6 от 4 ноября 2017 обновила документацию по работе с FreeRADIUS 3.x и исправила мелкие ошибки.
  • Версия 5.1.0.3 от 19 февраля 2018 добавила работу с истёкшими паролями AD/LDAP и улучшила поддержку Unicode. Улучшения коснулись Credential Provider для Windows.
  • Версия 5.1.0.8 от 5 марта 2018 доработала Credential Provider: теперь поддерживаются параметры реестра и исправлены SMS-ссылки для Windows 10.
  • Версия 5.1.1.2 от 20 марта 2018 — первый выпуск Docker-образа для развёртывания полного open-source сервера multiOTP.
  • Версия 5.2.0.2 от 16 июля 2018 улучшила поддержку AD/LDAP в Active Directory, добавлен параметр «Users DN» (опционально).
  • Версия 5.3.0.0 от 21 августа 2018 реализовала поддержку нескольких DN через точку с запятой для синхронизации AD/LDAP и алгоритм «without2FA» (без токена для отдельных пользователей).
  • Версия 5.3.0.1 от 22 августа 2018 расширила отладочную информацию по синхронизации.
  • Версия 5.3.0.3 от 26 августа 2018 исправила процесс восстановления через CLI и доработала клиент-серверное взаимодействие.
  • Версия 5.4.0.1 от 14 сентября 2018 исправила совместимость компонента Windows Radius Server при установке.
  • Версия 5.4.0.2 от 13 ноября 2018 улучшила импорт PSKC с бинарным ключом, добавлена поддержка новых SMS-провайдеров (Swisscom LA REST, Afilnet, Clickatell2, eCall, Nexmo, NowSMS, SMSEagle и др.).
  • Версия 5.4.1.1 от 7 января 2019 добавила поддержку Raspberry Pi 3B+.
  • Версия 5.4.1.4 от 18 января 2019 реализовала поддержку Debian 9.x (stretch).
  • Версия 5.4.1.6 от 25 января 2019 исправила ошибку опции DHCP NTP.
  • Версия 5.4.1.7 от 30 января 2019 заменила библиотеку генерации QR-кодов, опубликован новый бинарный образ для Raspberry Pi 1B/1B+/2B/3B/3B+.
  • Версия 5.4.1.8 от 29 марта 2019 добавила поддержку Access-Challenge.
  • Версия 5.8.0.2 от 20 сентября 2020 реализовала определение универсальных SMS-провайдеров, автоматическое удаление несуществующих AD/LDAP-аккаунтов, поддержку Debian Buster 10.5, PHP 7.3 и Raspberry Pi 4B.
  • Версия 5.8.1.0 от 12 февраля 2021 улучшила отображение статусов аккаунтов в веб-интерфейсе.

Возможности

Ядро MultiOTP представлено в виде PHP-класса, который может быть интегрирован в любое PHP-приложение (начиная с версии PHP 5.3.0; до 4.2.4.2 поддерживалась и PHP 4.4.4, но без гарантий).

Библиотека распространяется как единый файл для подключения, не требующий относительных или абсолютных путей к другим модулям; при этом исходники отдельно также доступны в архиве проекта и на GitHub.

Для сетевых устройств и не web-приложений аутентификация реализуется через сервер RADIUS, который вызывает командную утилиту MultiOTP.

Общее описание

Для Windows MultiOTP комплектуется преднастроенным RADIUS-сервером (FreeRADIUS) и веб-сервером (mongoose), которые могут устанавливаться как службы. Веб-сервис обеспечивает серверную часть при клиент-серверной архитектуре.

Для Linux инструкции по настройке RADIUS и веб-сервера приведены в readme.txt.

Аутентификация клиента (пользователя или устройства), требующего двухфакторной проверки, может выполняться:

  • с помощью программного токена (например, Google Authenticator)
  • с аппаратным токеном (например, Feitian C200 для одноразовых TOTP-кодов)
  • путём отправки кода по SMS (поддержка с версии 4.0.4)
  • с помощью списка одноразовых паролей на бумаге (c 4.0.4)

Стандартизация и совместимость

MultiOTP сертифицирован OATH для схем HOTP и TOTP и реализует следующие стандарты:

  • HOTP (HMAC-Based One-Time Password Algorithm, RFC 4226)
  • TOTP (Time-Based One-Time Password Algorithm, RFC 6238)
  • Yubico OTP
  • mOTP (Mobile-OTP — двухфакторная аутентификация через мобильный)
  • Google Authenticator (OATH/HOTP, OATH/TOTP, base32-ключ, QR-код)
  • SMS-токены (aspsms, clickatell, intellisms и пользовательский скрипт)
  • PSKC ([RFC 6030])
  • CHAP ([RFC 1994])
  • MS-CHAP ([RFC 2433])
  • MS-CHAPv2 ([RFC 2759])
  • Syslog (клиент, [RFC 5424])
  • SMTP ([RFC 2821])
  • SMTP по TLS ([RFC 2487])
  • LDAP ([RFC 4511])
  • LDAP Search Filters ([RFC 4515])

Практические применения

MultiOTP позволяет:

  • добавить двухфакторную аутентификацию к учётной записи пользователя (защищая от взлома по украденному/угаданному паролю),
  • подтверждать физическое присутствие (аппаратный токен в нужном месте и в нужное время; по коду определяется момент входа),
  • отправлять одноразовый код по SMS — верификация пользователя по номеру,
  • создавать автоматически двухфакторные аккаунты для групп Active Directory или LDAP.

Особенности и ограничения

Формат библиотеки PHP позволяет развернуть систему на любом хостинге, включая виртуальные/shared-сервера.

Реализация достаточно компактна, чтобы работать даже на Raspberry Pi. В файле readme присутствует подробная инструкция по внедрению MultiOTP на этом устройстве.

Социально-экономические аспекты

Традиционные пароли по-прежнему широко распространены в современных IT-средах, но являются узким местом в системе безопасности, как показали недавние уязвимости (например, Heartbleed). Даже при защищённом канале передачи простой пароль уже недостаточен.

MultiOTP, как лёгкое и бесплатное решение для сильной аутентификации, способствует внедрению двухфакторных систем. С версии 4.1.0 реализуемо сооружение автономного устройства для двухфакторной проверки менее чем за $100 или даже на старой машине с Linux.

Примеры использования библиотеки

  • С ноября 2016 года команда MultiOTP предоставляет Credential Provider для Windows 7/8/8.1/10/2012(R2)/2016, с возможностью ограничения аутентификации только для RDP или через UPN-имя. Этот компонент — multiOTP Credential Provider[1] — основан на MultiOneTimePassword Credential Provider[2] от Last Squirrel IT.
  • ownCloud OTP[3] — приложение на базе MultiOTP, добавляющее двухфакторную аутентификацию к ownCloud (open-source альтернатива DropBox).
  • 2FA Credential Provider for Windows[4] — Credential Provider для Windows на базе MultiOTP.
  • Класс MultiOTP использовался как обучающий инструмент на демонстрациях по информационной безопасности[5], а также для подготовки бакалаврской работы по одноразовым паролям[6].

Примечания

  1. multiOTP Credential Provider (англ.). GitHub. multiOTP team. Дата обращения: 24 июня 2024. Архивировано 2 сентября 2025 года.
  2. MultiOneTimePassword Credential Provider (англ.). GitHub. Last Squirrel IT. Дата обращения: 24 июня 2024. Архивировано 11 июня 2018 года.
  3. One Time Password Backend for ownCloud (англ.). apps.ownCloud.com. apps.ownCloud.com Team. Дата обращения: 24 июня 2024. Архивировано 23 апреля 2014 года.
  4. 2FA Credential Provider for Windows (англ.). fluidgroup.net. Fluid Technology Solutions Ltd. Дата обращения: 24 июня 2024. Архивировано 2 октября 2013 года.
  5. Strong Authentication in Web Application - State of the Art 2011 (англ.). hacking-lab.com. Compass Security AG. Дата обращения: 24 июня 2024. Архивировано 27 августа 2013 года.
  6. One-time passwords Bachelor thesis (in Czech) (англ.). vse.cz. University of Economics, Prague. Дата обращения: 24 июня 2024.

Ссылки