MultiOTP

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher
multiOTP
Copie d'écran de l'interface web de la version 4.2.2 web interface

Développeur SysCo systèmes de communication sa
Première version 7 juin 2010
Dernière version 4.2.4.2 (13 avril 2014)
État du projet actif
Écrit en PHP
Environnement Multiplate-forme
Langue Multilingue
Type Authentification forte Mot de passe unique
Licence LGPL
Site web www.multiOTP.net

multiOTP 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. Une déclinaison commerciale appelée multiOTP Pro est également disponible.

Historique[modifier | modifier le code]

  • La version 1.0.0 du 7 juin 2010 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 19 juillet 2010 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 2 septembre 2010 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 19 décembre 2010 permet le stockage des informations dans une base de données MySQL.
  • La version 3.2.0 du 6 juillet 2011 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 librairie avec une authentification sous Windows nécessitant un utilisateur unique).
  • La version 3.9.2 du 25 octobre 2011 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 librairie 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 30 août 2013 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 22 septembre 2013 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 23 décembre 2013 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 20 janvier 2014 apporte un lot de correctifs suite aux 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 7 février 2014 fournie le support des protocoles MS-CHAP et MS-CHAPv2.
  • La version 4.2.1 du 14 février 2014 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 3 mars 2014 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 13 mars 2014 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 30 mars 2014 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 6 avril 2014 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 13 avril 2014 améliore la gestion de XML dans la totalité du projet en utilisant plus qu'une seule librairie identique. Une erreur pouvant se produire lors de l'importation de définitions de tokens dans un fichier CSV a été corrigée.

Fonctionnement[modifier | modifier le code]

Le cœur de multiOTP est une classe PHP. Elle peut donc être instanciée dans n'importe quelle application PHP, ce pour autant que l'on utilise une version de PHP supérieure ou égale à la version 5.3.0 (jusqu'en version 4.2.4.2, la librairie fonctionne toujours avec une installation de PHP en version 4.4.4 ou supérieure, mais sans garantie).

La librairie multiOTP est fournie sous la forme d'un seul fichier à inclure regroupant tout le code PHP nécessaire, ce qui évite tout problème de liens relatifs ou absolus par rapport à d'autres fichiers qu'il faudrait inclure. Les codes sources séparés sont toutefois également disponibles dans le fichier compressé du projet et sur la plateforme SourceForge.

Si l'authentification forte se fait non pas depuis une application Internet, mais depuis un appareil en réseau, on passera alors par un serveur RADIUS qui appellera l'outil en ligne de commande fourni avec la librairie multiOTP.

Description générale[modifier | modifier le code]

Pour les projets sous Windows, la librairie multiOTP est fournie avec un serveur RADIUS pré-configuré (freeRADIUS) pouvant être installé en service ainsi qu'un serveur web pré-configuré (mongoose) pouvant également être installé en service. Le service web fourni la partie serveur lorsque l'on veut utiliser multiOTP en configuration client/server.

Pour les projets sous Linux, le fichier readme.txt fourni avec la librairie indique ce qu'il est nécessaire de faire afin de configurer le serveur RADIUS et le service Web.

L'authentification d'un client sur une application ou un appareil nécessitant une authentification forte peut se faire de différentes manières:

  • clé logicielle (par exemple en utilisant le logiciel Google Authenticator)
  • clé matérielle (par exemple une clé de type Feitian C200 pour un code dépendant du temps)
  • code envoyé par SMS (depuis la version 4.0.4)
  • liste de mots de passe à biffer (depuis la version 4.0.4)

Standardisation et normalisation[modifier | modifier le code]

multiOTP est certifié OARH pour HOTP et TOTP et implémente les standards suivants concernant l'authentification forte:

  • HOTP, HMAC-Based One-Time Password Algorithm (RFC4226)
  • TOTP, Time-Based One-Time Password Algorithm (RFC6238)
  • mOTP, Mobile-OTP, strong, two-factor authentication with mobile phones

Applications pratiques[modifier | modifier le code]

multiOTP permet notamment:

  • d'ajouter de l'authentification forte pour l'identification d'un utilisateur (évite ainsi la connexion avec un mot de passe volé ou deviné).
  • en fixant une clé matérielle à un endroit particulier, de s'assurer la présence d'une personne à cet endroit à un moment précis (le code fourni par la personne à un moment donné permettant de connaître l'heure à laquelle ce code a été affiché).
  • d'authentifier un utilisateur en lui envoyant un code par SMS, validant ainsi automatiquement l'utilisateur par rapport à son numéro de téléphone mobile.
  • de créer automatiquement des comptes d'authentifications fortes pour les utilisateurs d'un Active Directory (ou d'un LDAP) présents dans un groupe spécifique.

Apports et limitations[modifier | modifier le code]

Le fait que multiOTP soit disponible en tant que librairie PHP permet de l'installer partout, y compris sur un serveur web mutualisé.

L'implémentation est suffisamment légère pour tourner sans problème sur des nano-ordinateurs comme le Raspberry Pi. Le fichier readme fourni avec le fichier compressé indique toutes les étapes pour réaliser l'implémentation de multiOTP sur ce dernier.

Aspects économiques et sociaux[modifier | modifier le code]

Les mots de passe traditionnels sont encore bien présents dans les environnements informatiques actuels, mais c'est le principal talon d'Achille de l'authentification en général. En effet, on l'a vu encore récemment avec les dernières failles de sécurité, et notamment avec Heartbleed, un simple mot de passe ne suffit plus, même s'il est envoyé via un canal réputé sûr!

En fournissant une solution simple, légère et gratuite d'authentification forte, multiOTP permet de démocratiser l'utilisation de l'authentification forte. Depuis sa version 4.1.0, il est même possible de mettre en place facilement un appareil autonome d'authentification forte pour moins de $100 en matériel, ou simplement en recyclant une vieille machine Linux.

Voir aussi[modifier | modifier le code]

Liens externes[modifier | modifier le code]