multiOTP — это PHP-класс с открытым исходным кодом, инструмент командной строки и веб-интерфейс, который может использоваться для предоставления независимой от операционной системы, надежной системы аутентификации . multiOTP сертифицирован OATH с версии 4.1.0 и разработан по лицензии LGPL . Начиная с версии 4.3.2.5, multiOTP с открытым исходным кодом также доступен как виртуальное устройство — как стандартный файл OVA, настраиваемый файл OVA с open-vm-tools, а также как загружаемый файл виртуальной машины , который может работать на Microsoft Hyper-V , распространенном собственном гипервизоре в компьютерах Windows. [ жаргон ]
QR -код генерируется автоматически при печати страницы конфигурации пользователя.
multiOTP — это библиотека классов PHP. Класс может использоваться с любым приложением PHP, использующим версию PHP 5.3.0 или выше. Библиотека multiOTP предоставляется как самостоятельный файл «все в одном», не требующий других включений. Если строгую аутентификацию необходимо выполнить с аппаратного устройства, а не из интернет-приложения, запрос будет проходить через сервер RADIUS, который вызовет инструмент командной строки multiOTP. Реализация достаточно легкая для работы на ограниченных компьютерах, таких как Raspberry Pi .
История
2010
Версия 1.0.0 от 7 июня 2010 года представляла собой только базовый инструмент командной строки под названием otpauth, уже написанный на PHP. Инструмент был переименован в multiotp в версии 1.1.4 несколько дней спустя, чтобы избежать путаницы с другим проектом с таким же названием.
Версия 2.0.0 от 19 июля 2010 года была полностью переписана как класс PHP, а инструмент командной строки стал реализацией класса. В операционных системах Windows инструмент командной строки существует как исполняемый файл, включающий в себя исходный код и интерпретатор PHP в одном файле. Эта версия получила премию phpclasses.org Innovation Award в августе 2010 года. [2]
Версия 3.0.0 от 2 сентября 2010 года позволила импортировать незакодированные файлы подготовки PSKC, а внутренняя структура была улучшена.
Версия 3.1.1 от 19 декабря 2010 года допускает хранение данных в серверной базе данных MySQL.
2011
Версия 3.2.0 от 6 июля 2011 г. позволяла выполнять аутентификацию с помощью общей учетной записи, а также путем указания конкретного пользователя и пароля в поле пароля (полезно, если библиотека используется с аутентификацией Windows, для которой требуется конкретный пользователь).
Версия 3.9.2 от 25 октября 2011 года — это версия, выпущенная для семинара по интеграции строгой аутентификации в интернет-приложения. Этот семинар был представлен во время Форума по безопасности приложений — Западная Швейцария 2011 в Ивердон-ле-Бен (Швейцария). [3] Библиотека также использовалась для проверки и распространения [4] начального числа токенов, предоставленных Feitian, спонсором мероприятия. Каждый участник должен был указать адрес электронной почты, номер мобильного телефона, серийный номер токена и код OTP, отображаемый на токене, затем участнику отправлялось зашифрованное электронное письмо, а ключ шифрования отправлялся по SMS.
В версии 4.0.7 от 30 августа 2013 года было добавлено множество улучшений, таких как функция клиент/сервер с локальным кэшированием файлов определений используемых токенов, совершенно новая реализация поддержки MySQL (включая создание и обновление таблиц базы данных), аутентификация CHAP (в дополнение к аутентификации PAP), генерация QR-кода для прямой подготовки в Google Authenticator и быстрое создание пользователя с помощью одной команды.
2013
Версия 4.0.9 от 22 сентября 2013 года была промежуточным релизом, который использовался для демонстрации концепции строгой аутентификации на нескольких форумах, таких как Rump Session во время Форума по безопасности приложений - Западная Швейцария 2013 в Ивердон-ле-Бен (Швейцария) [5] и 45-минутный доклад во время Технологического форума Studerus (TEFO) 2013 в Цюрихе (Швейцария). [6]
Версия 4.1.0 от 23 декабря 2013 года сертифицирована OATH для HOTP и TOTP, что означает полную совместимость с сертифицированными аппаратными токенами, включая зашифрованные файлы обеспечения PSKC. Эта бета-версия использовалась для 30-минутного доклада во время PasswordsCon 2013 в Бергене (Норвегия). [7] [8] Включены инструкции и все необходимые файлы для создания устройства сервера сильной аутентификации на нанокомпьютере Raspberry Pi. Также добавлены саморегистрация неатрибутивных аппаратных токенов и автоматическая повторная синхронизация/разблокировка во время аутентификации, а также теперь доступен базовый веб-интерфейс.
2014
Версия 4.1.1 от 20 января 2014 года предоставила некоторые исправления ошибок и лучшую поддержку Microsoft Authenticator. Повторная синхронизация токена (с использованием двух последовательных OTP) больше не требовала PIN-кода.
Версия 4.2.0 от 7 февраля 2014 года поддерживала протоколы MS-CHAP и MS-CHAPv2.
В версии 4.2.1 от 14 февраля 2014 г. добавлена поддержка Active Directory/LDAP для создания учетных записей на основе пользователей, присутствующих в определенной группе.
Версия 4.2.2 от 3 марта 2014 года предоставила улучшенный веб-интерфейс для импорта аппаратных токенов, создания учетных записей, синхронизации токенов или разблокировки учетных записей. Была добавлена расширенная поддержка TekRADIUS для отправки обратно некоторой конкретной информации, что полезно для соединений MS-CHAP или MS-CHAPv2.
В версии 4.2.3 от 13 марта 2014 г. исправлена ошибка с отправкой обратно в TekRADIUS.
Версия 4.2.4 от 30 марта 2014 года улучшила поддержку бэкэнда MySQL и добавила поддержку mysqli. Начиная с этой версии, в файле конфигурации также можно определить, какие поля должны быть зашифрованы, а какие нет. Некоторые внешние классы были обновлены или заменены, и было добавлено много новых тестов QA, как для классов PHP, так и для версий командной строки.
В версии 4.2.4.1 от 6 апреля 2014 г. добавлена поддержка NT_KEY (для дальнейшей обработки FreeRADIUS, например, генерации ключей VPN). Теперь также можно импортировать токены на основе простого файла CSV ( serial_number;manufacturer;algorithm;seed;digits;interval_or_event). Также добавлена новая опция -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 Personalization Tool. Синхронизация пользователей AD/LDAP была полностью переработана. Эта версия использовалась 4 ноября 2014 года во время обучения Форума по безопасности приложений - Западная Швейцария 2014 в Ивердон-ле-Бен (Швейцария). [9]
В версии 4.3.1.0 от 9 декабря 2014 г. добавлен специальный прокси-сервер CLI для ускорения реализации Raspberry Pi. Добавлена поддержка универсального LDAP (как Synology и все реализации на базе Linux). Генерация OTP со встроенным серийным номером теперь также поддерживается лучше (в PAP). Начиная с этой версии и если активирован, префиксный PIN-код также необходим при использовании пароля со стиранием. Теперь поддерживается переменная среды MULTIOTP_PATH для определения, где находится корень multiotp (если конкретная реализация не может правильно определить корневой каталог multiotp).
Версия 4.3.1.1 от 15 декабря 2014 года обеспечила лучшую поддержку LDAP и AD, обрабатывая больше полей во время синхронизации. Проект multiOTP теперь также доступен на Github. [10]
2015
В версии 4.3.2.2 от 9 июня 2015 г. улучшены некоторые некрасивые части (!), добавлены/адаптированы некоторые значения по умолчанию, разрешено использование минуса (-) в пароле, эта -autoresyncопция включена по умолчанию, улучшена обработка повторной синхронизации во время аутентификации (непосредственно в классе), включен по умолчанию кэш сервера и очищена некоторая информация журнала.
Версия 4.3.2.3 от 10 июня 2015 года содержала некоторые улучшения веб-GUI. Это была версия, представленная на Dev(Talks): 2015 в Бухаресте (Румыния). [11]
В версии 4.3.2.4 от 24 июня 2015 г. исправлена ошибка использования спецсимволов для генерации скретч-пароля. Также автоматизирована поддержка multi_account при синхронизации с AD/LDAP.
Версия 4.3.2.5 от 15 июля 2015 года изменила поведение CLI при вызове без параметров, теперь возвращая код ошибки (30) вместо информации (19). Готовое к использованию виртуальное устройство теперь предоставляется в стандартном формате OVA с интегрированными open-vm-tools, а также в формате Hyper-V.
В версии 4.3.2.6 от 18 июля 2015 года добавлена генерация QR-кода для mOTP (Mobile-OTP), а также реализован новый метод для считывания данных одного пользователя в массиве.
2016
В версии 5.0.2.5 от 16 октября 2016 г. добавлена улучшенная поддержка SSL, возможность выбора определенного атрибута LDAP/AD для синхронизации учетных записей, улучшенная поддержка MS-CHAPv2, улучшенная обработка повторяющихся паролей, теперь проверяется частный идентификатор YUbicoOTP, совместимость SSL AD/LDAP с Windows 2012(R2), улучшенная поддержка специальных символов AD/LDAP (RFC4515), новые методы реализации асинхронных действий при изменении данных в бэкэнде.
В версии 5.0.2.6 от 4 ноября 2016 г. улучшены сообщения журнала, обновлены некоторые внешние пакеты и адаптирован формат файла конфигурации резервного копирования для обеспечения совместимости с коммерческой версией.
В версии 5.0.3.0 от 14 ноября 2016 г. добавлена поддержка IP-адресов Dial-In (включая синхронизацию с атрибутом Active Directory msRADIUSFramedIPAddress), улучшен процесс импорта токенов с поддержкой двоичного ключа шифрования.
2017
Версия 5.0.3.4 от 26 января 2017 г. улучшила процесс синхронизации AD/LDAP для больших каталогов AD/LDAP, используя по умолчанию кэширование диска во временной папке системы. Теперь можно выполнять несколько команд CLI одновременно. Теперь поддерживается несколько групп для одного пользователя (предупреждение: не все устройства поддерживают несколько групп). Предлагаемый по умолчанию генератор TOTP/HOTP теперь FreeOTP (для Android/iOS). Теперь поддерживается формат предоставления многоцелевых токенов PSKCV10.
В версии 5.0.3.5 от 3 февраля 2017 г. исправлены некоторые ошибки и добавлен метод GetUserInfo.
В версии 5.0.3.6 от 21 февраля 2017 г. добавлена поддержка base32 и raw binary для методов SetUserTokenSeed и SetTokenSeed. Метод restoreCOnconfiguration был обновлен.
В версию 5.0.3.7 от 23 февраля 2017 г. добавлены некоторые незначительные улучшения, такие как обрезка имен групп и обработка режима папок Linux.
В версии 5.0.4.4 от 16 мая 2017 г. политика отклонения была улучшена без увеличения счетчика ошибок для одного и того же повторно воспроизведенного токена.
В версии 5.0.4.5 от 29 мая 2017 г. добавлена поддержка PostgreSQL на основе исходного кода, предоставленного Франком ван дер Аа.
В версии 5.0.4.6 от 2 июня 2017 г. в Linux переопределено расположение папок конфигурации, устройств, групп, токенов и пользователей, которые теперь всегда находятся в/etc/multiotp/
Версия 5.0.4.8 от 6 июня 2017 г. Исправлен сбой соединения SSL/TLS LDAP для 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 и исправлены некоторые незначительные ошибки.
2018
Версия 5.1.0.3 от 19 февраля 2018 года добавила поддержку просроченных паролей AD/LDAP и улучшенную обработку Unicode. Также были сделаны некоторые улучшения для multiOTP Credential Provider (для Windows).
Версия 5.1.0.8 от 5 марта 2018 года улучшила multiOTP Credential Provider, и теперь можно использовать записи реестра. Она также исправила ссылку "получить OTP по SMS" для Windows 10.
Версия 5.1.1.2 от 20 марта 2018 года предоставила первый Dockerfile для создания полноценного docker-сервера multiOTP с открытым исходным кодом.
В версии 5.2.0.2 от 16 июля 2018 г. улучшена поддержка AD/LDAP для огромного Active Directory и добавлена опция DN пользователей (которая является необязательной, в противном случае для поиска пользователей по-прежнему используется базовое DN).
В версии 5.3.0.0 от 21 августа 2018 г. добавлены несколько «Users DN» (разделенных точкой с запятой) для синхронизации AD/LDAP (с дополнительными отладочными сообщениями синхронизации) и новый алгоритм «without2FA», если некоторым пользователям нужен только префиксный пароль без токенов.
В версии 5.3.0.1 от 22 августа 2018 г. добавлены некоторые поля мониторинга для получения дополнительной информации о процессе синхронизации.
В версии 5.3.0.3 от 26 августа 2018 г. исправлен процесс восстановления в командной строке и улучшен процесс клиент/сервер.
В версии 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 и пользовательских SMS).
2019
В версии 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 г. исправлена проблема с опцией NTP DHCP.
В версии 5.4.1.7 от 30 января 2019 года изменена библиотека генерации QR-кодов и предоставлен новый двоичный образ Raspberry Pi, готовый к использованию для Raspberry Pi 1B/1B+/2B/3B/3B+.
В версии 5.4.1.8 от 29 марта 2019 г. добавлена поддержка Access-Challenge.
2020
В версии 5.8.0.2 от 20 сентября 2020 г. добавлено общее веб-определение поставщика SMS, автоматическое удаление несуществующих пользователей AD/LDAP и поддержка Debian Buster 10.5, PHP 7.3 и Raspberry PI 4B.
2021
В версии 5.8.1.0 от 12 февраля 2021 г. веб-интерфейс улучшен за счет более подробной информации о состоянии счетов.
Функции
Для Windows библиотека multiOTP поставляется с предварительно настроенным сервером RADIUS (freeradius), который можно установить как службу. Предварительно настроенная веб-служба (на основе mongoose) также может быть установлена как служба и необходима, если мы хотим использовать библиотеку multiOTP в конфигурации клиент/сервер. В Linux файл readme.txt, предоставленный с библиотекой, указывает, что нужно сделать для настройки сервера RADIUS и веб-службы. Также предоставляются все необходимые файлы и инструкции для создания устройства строгой аутентификации с использованием нанокомпьютера Raspberry Pi. Начиная с версии 4.3.2.5, готовое к использованию виртуальное устройство предоставляется в стандартном формате OVA с интегрированными open-vm-tools, а также в формате Hyper-V. Клиент может строго аутентифицироваться в приложении или устройстве, используя различные методы:
программные токены (например, Google Authenticator)
аппаратные токены (любые сертифицированные токены OATH/HOTP и OATH/TOTP, такие как токены NagraID, а также некоторые другие несертифицированные, но совместимые токены, такие как токены Feitian C200, основанные на времени)
код отправляется по SMS (начиная с версии 4.0.4)
Список паролей для скретч-тестирования (начиная с версии 4.0.4)
YubiKey в фирменном режиме Yubico OTP (начиная с версии 4.3)
without2FA для учетных записей, которым не требуется строгая аутентификация (начиная с версии 5.3)
Google Authenticator (OATH/HOTP или OATH/TOTP, base32 seed, предоставление QR-кода)
SMS-токены (с использованием aspsms, clickatell, intellisms или локального провайдера)
PSKC, Дополнительные профили алгоритмов переносимого контейнера симметричных ключей (RFC6030)
CHAP, протокол аутентификации с квитированием вызова (RFC1994)
MS-CHAP, расширения Microsoft PPP CHAP (RFC2433)
MS-CHAPv2, расширения Microsoft PPP CHAP, версия 2 (RFC2759)
Протокол Syslog (клиент; RFC5424)
SMTP, простой протокол передачи почты (RFC2821)
Расширение службы SMTP для безопасного SMTP через TLS (RFC2487)
Область применения класса
Класс multiOTP обеспечивает функциональность строгой аутентификации и может использоваться в различных ситуациях строгой аутентификации:
Добавление строгой аутентификации для идентификации пользователя (чтобы избежать статического пароля)
Закрепите аппаратный токен в определенном месте и убедитесь, что кто-то был там в определенное время (код токена, отображаемый пользователю в определенное время, даст информацию о том, где он отображался)
Аутентификация пользователя путем отправки ему кода через SMS, который автоматически подтвердит номер мобильного телефона пользователя
Автоматическое создание учетных записей с надежной аутентификацией для пользователей, присутствующих в определенной группе Active Directory (или LDAP)
Библиотеку используют несколько бесплатных проектов:
С ноября 2016 года команда multiOTP предоставляет обновленный поставщик учетных данных для Windows 7/8/8.1/10/2012(R2)/2016 с такими опциями, как поддержка только RDP и имени UPN, называемый multiOTP Credential Provider [12] , основанный на поставщике учетных данных MultiOneTimePassword [13], созданном Last Squirrel IT.
ownCloud OTP [14] — это приложение одноразового пароля на основе класса multiOTP, которое добавляет надежную аутентификацию в проект OwnCloud , альтернативу Dropbox с открытым исходным кодом.
Поставщик учетных данных 2FA для Windows [15] — еще один надежный поставщик учетных данных для входа в Windows, использующий библиотеку multiOTP.
Класс multiOTP использовался в качестве учебного пособия при демонстрациях безопасности [16] и в бакалаврской диссертации [17].