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