multiOTP (, « Mot de passe à usage unique ») est une classe PHP, un outil en ligne de commande et une console web pour fournir une solution d'authentification forte indépendante de tout système d'exploitation. multiOTP est certifié OATH depuis la version 4.1.0 et est développé sous licence LGPL par l'entreprise suisse SysCo systèmes de communication sa. Des déclinaisons commerciales appelées multiOTP Pro et multiOTP Enterprise sont également disponibles.

Un QR code est généré automatiquement lors de l'impression de la page de configuration d'un utilisateur.

Historique La version 1.0.0 du ne fournissait qu'un outil rudimentaire en ligne de commande appelé otpauth, déjà écrit en PHP. L'outil a été renommé en multiotp en version 1.1.4 quelques jours plus tard afin d'éviter une confusion avec un autre projet portant le même nom. La version 2.0.0 du a été complètement réécrite sous la forme d'une classe PHP, l'outil en ligne de commande devenant ainsi une implémentation de la classe. Sous Windows, l'outil en ligne de commande existe sous la forme d'un fichier exécutable incluant en un seul fichier le code et l'interpréteur PHP. La version 3.0.0 du permet l'importation de fichiers de provisionnement au format PSKC non encodé et la structure de stockage interne est améliorée. La version 3.1.1 du permet le stockage des informations dans une base de données MySQL. La version 3.2.0 du permet de s'authentifier avec un compte générique en passant ensuite comme mot de passe le compte et le mot de passe de l'utilisateur spécifique (ceci dans le cas d'une liaison de la bibliothèque avec une authentification sous Windows nécessitant un utilisateur unique). La version 3.9.2 du est la version préparée pour un atelier concernant l'intégration de l'authentification forte dans les applications Internet. Cet atelier se déroulait dans le cadre de l'Application Security Forum - Western Switzerland 2011 à Yverdon-les-Bains (Suisse). La bibliothèque a également été utilisée pour valider et distribuer le seed des tokens distribués par le sponsor de la manifestation Feitian. Il suffisait à chaque participant de fournir une adresse email, un numéro de téléphone mobile, le numéro de série du token et le code OTP affiché sur le token, puis un email chiffré était envoyé au participant alors que le code de déchiffrage du mail était envoyé par SMS. La version 4.0.7 du apporte beaucoup d'améliorations, et notamment un fonctionnement en client/serveur avec un stockage local en cache des fichiers de définition des tokens utilisés, la refonte complète du support MySQL (incluant la création et la mise à jour des tables nécessaires), le support de l'authentification CHAP (en plus de l'authentification PAP), la génération de QRcode pour le provisionnement direct dans Google Authenticator, la création rapide d'un utilisateur en une seule commande, etc. La version 4.0.9 du est une version intermédiaire utilisée pour démontrer le concept de l'authentification forte lors de divers forum comme la Rump Session de l'Application Security Forum - Western Switzerland 2013 à Yverdon-les-Bains (Suisse) et la présentation de 45 minutes durant le Studerus Technology Forum (TEFO) 2013 à Zurich (Suisse). La version 4.1.0 du est certifiée OATH pour HOTP et TOTP, ce qui signifie une compatibilité totale avec tous les tokens hardware certifiés, y compris les fichiers de provisioning PSKC encryptés. Sa version beta a été utilisée durant la présentation de 30 minutes donnée dans le cadre de la conférence PasswordsCon 2013 à Bergen (Norvège). Toutes les instructions et les fichiers nécessaires à la mise en place d'un appareil d'authentification forte à base d'un nano-ordinateur Raspberry Pi sont inclus. Il est maintenant possible d'enregistrer automatiquement des tokens hardware non attribués, et il est également possible d'effectuer une resynchronisation ou un déblocage de token lors de l'authentification. Une interface web basique fait son apparition. La version 4.1.1 du apporte un lot de correctifs à la suite des retours des utilisateurs, et notamment un meilleur support de Microsoft Authenticator. Lors de la resynchronisation d'un token (en saisissant deux tokens consécutifs), il n'est plus nécessaire de fournir le PIN code. La version 4.2.0 du fournie le support des protocoles MS-CHAP et MS-CHAPv2. La version 4.2.1 du supporte une liaison Active Directory / LDAP afin de créés des comptes sur la base des utilisateurs Active Directory présents dans un groupe particulier. La version 4.2.2 du propose une interface web améliorée permettant d'importer les fichiers de configuration de tokens hardware, de créer des utilisateurs, de resynchroniser des tokens, de débloquer des utilisateurs ou encore d'imprimer la feuille de provisionnement du token (avec impression d'un QRcode pour les tokens de types TOTP et HOTP). Un support étendu du serveur RADIUS TekRADIUS a été ajouté afin de pouvoir lui retourner des informations particulières, ce qui est notamment utile lors d'une connexion MS-CHAP ou MS-CHAPv2. La version 4.2.3 du corrige une erreur concernant un possible mauvais retour d'information au serveur TekRADIUS si multiOTP est utilisé afin de négocier une clé de chiffrement pour établir une liaison sécurisée. La version 4.2.4 du améliore la prise en charge de MySQL et supporte à présent également la classe mysqli. Il est également possible de choisir sans modification dans le code source les champs à encrypter dans la base de stockage. La génération du QRcode a été améliorée, de nombreux tests de qualités ont été ajoutés et la documentation a été mise à jour. La version 4.2.4.1 du ajoute la génération et la sortie sur le flux standard de la clé NT_KEY afin de pouvoir négocier des clés de chiffrage en utilisant FreeRADIUS. Il est maintenant possible d'importer des définitions de tokens stockées dans un fichier plat de type CSV. Un utilisateur effacé est à présent également retiré du token attribué à cet utilisateur. L'option en ligne de commande -user-info a été ajoutée afin d'avoir des informations détaillées concernant un utilisateur spécifique. La version 4.2.4.2 du améliore la gestion de XML dans la totalité du projet en utilisant plus qu'une seule bibliothèque identique. Une erreur pouvant se produire lors de l'importation de définitions de tokens dans un fichier CSV a été corrigée. La version 4.2.4.3 du corrige une erreur concernant le fournisseur de SMS aspsms. La version 4.3.0.0 du ajoute la possibilité d'utiliser un mot de passe AD/LDAP à la place d'un PIN statique. Cette version ajoute également le support du protocole Yubico OTP, y compris l'importation des clés en utilisant le fichier de log fourni par l'utilitaire de personnalisation de Yubico. La synchronisation des utilisateurs en AD/LDAP a été complètement revue. Cette version a été utilisée le pour le workshop d'une journée présentée à l'Application Security Forum - Western Switzerland 2014 d'Yverdon-les-Bains (Suisse). La version 4.3.1.0 du ajoute un proxy spécifique à la version CLI, permettant d'augmenter significativement la vitesse de traitement avec une implémentation réalisée sur un Raspberry Pi. Le support générique LDAP a été ajouté (pour les disques réseau Synology ainsi que tout autre implémentation basée sur Linux). Les OTP incluant un numéro de série sont également mieux supportés (en PAP). Dès cette version et si l'option est activée, le code PIN en préfixe est également nécessaire en utilisant les mots de passe à biffer. La variable d'environnement MULTIOTP_PATH est dorénavant supportée et elle permet de définir le dossier principal de multiotp (si une implémnentation spéciale fait que ce répertoire ne se retrouve pas automatiquement). La version 4.3.1.1 du fournit des améliorations dans la synchronisation AD et LDAP, en prenant en compte plus de champs. Le projet multiOTP est à présent également disponible sur GitHub. La version 4.3.2.2 du améliore certaines parties anciennes, ajoute/adapte certaines valeurs par défaut, autorise l'utilisation d'un moins (-) dans le mot de passe, active par défaut les options autoresync et le cache, implémente directement dans la classe la resynchronisation et nettoie les informations du fichier de log. La version 4.3.2.3 du est la version qui a été présentée durant le Dev(Talks): 2015 de Bucharest (Roumanie). Cette version contient des améliorations au niveau de l'interface web. La version 4.3.2.4 du corrige une erreur si l'usage de caractères spéciaux est faite lors de la génération des mots de passe à biffer. La synchronisation AD/LDAP permet à présent de définir automatiquement un compte comme étant de type multi_account. La version 4.3.2.5 du change le comportement de la version en ligne de commande quand celle-ci est appelée sans paramètre. Un code d'erreur (30) est retourné au lieu d'un code d'information (19). Des fichiers permettant une utilisation en tant qu'applicatif virtuel sont maintenant fournis, que ce soit au format standard OVA, avec les améliorations open-vm-tools, ou encore au format Hyper-V. La version 4.3.2.6 du ajoute la génération d'un QRcode pour les codes de type mOTP (Mobile-OTP), et une nouvelle méthode est à présent implémentée pour charger dans un tableau les données concernant un utilisateur spécifique. La version 5.0.2.5 du propose un meilleur support du SSL, la possibilité de choisir l'attribut AD/LDAP utilisé pour synchronisé les comptes, un meilleur support de MS-CHAPv2, une meilleure gestion de la répétition du même mot de passe (lors de l'utilisation de multiOTP pour du VPN par exemple), l'ID privé de YubicoOTP est maintenant contrôlé, la synchronisation AD/LDAP en SSL est désormais compatible avec Windows 2012R2, les caractères spéciaux AD/LDAP (RFC4515) sont mieux supportés, de nouvelles méthodes existent afin d'implémenter des activités asynchrones lors du changement de données stockées. La version 5.0.2.6 du améliore les messages de log, met à jour quelques utilitaires externes et adapte le format du fichier de sauvegarde afin qu'il soit compatible avec la version commerciale. La version 5.0.3.0 du ajoute le support de l'adresse IP de Dial-In (y compris sa synchronisation avec l'attribut Active Directory msRADIUSFramedIPAddress) et améliore l'importation de tokens en supportant des clés de cryptage binaire. La version 5.0.3.4 du a amélioré le processus de synchronisation AD/LDAP pour les grands annuaires AD/LDAP en activant par défaut le cache dans le dossier temporaire du système. Plusieurs commandes CLI peuvent maintenant être effectuées en une seule ligne. Plusieurs groupes d'utilisateurs sont désormais pris en charge (avertissement, tous les périphériques ne prennent pas en charge plusieurs groupes). Le générateur de TOTP/HOTP proposé par défaut est maintenant FreeOTP (pour Android/iOS). Le format de provisionnement de jetons à usages multiples PSKCV10 est maintenant pris en charge. La version 5.0.3.5 du a corrigé quelques bugs et ajouté la méthode GetUserInfo. La version 5.0.3.6 du ajoute le support de binaire brut et de base32 pour les méthodes SetUserTokenSeed et SetTokenSeed. La méthode de restauration de la configuration a été mis à jour. La version 5.0.3.7 du a ajouté quelques améliorations mineures telles que le nettoyage des noms de groupe (trim) et la gestion du mode de dossier Linux. La version 5.0.4.4 du a amélioré la politique de rejet en n'incrémentant pas le compteur d'erreurs pour le même jeton ré-exécuté. La version 5.0.4.5 du a ajouté le support PostgreSQL, basé sur le code source fourni par Frank van der Aa. La version 5.0.4.6 du a redéfini sous Linux l'emplacement de la configuration des dossiers de configuration, des périphériques, des groupes, des jetons et des utilisateurs dans /etc/multiotp / La version 5.0.4.8 du corrige la connexion échouée avec LDAP SSL/TLS pour PHP 7.x La version 5.0.4.9 du a corrigé quelques bugs mineurs et a ajouté des méthodes de configuration pour la connexion TLS.