Authentification OTP

Définition et usage du One Time Password (OTP)

Dans cet article, notre consultant Jalil explique le concept de One-Time-Password, ses usages, l’intérêt de l’utiliser, son principe de fonctionnement, ses usages et les différentes typologies existantes.

Définition

OTP pour « OneTime Password » en anglais ou « Mot de passe à usage unique » en français, est un mot de passe généré pour être utilisé et valable que lors d’une unique session ou une transaction sur un système informatique ou autre appareil numérique.

Pourquoi faire usage des OTP

Jusqu’aujourd’hui, l’accès aux différents services (professionnel ou particuliers) sur internet se fait généralement par le couple identifiant/mot de passe. Ce mode d’identification est aujourd’hui insuffisamment sécurisé. Un hacker peut facilement intercepter ou deviner ces identifiants et les utiliser.  Et cela d’autant plus, que les mots de passe utilisés sont souvent trop simples.

 

Afin de lutter contre ce genre d’attaques communément appelé “attaque par rejoué” ou « replay attack », l’OTP a vu le jour pour renforcer les systèmes d’authentificationCependant, il ne protège pas le système contre les attaques dites « active » ou de type « social engineering ». 

Quels sont ses avantages

Les principaux avantages de l’OTP sont les suivants : 

  • Il est facile à implémenter sous n’importe quel type de support, de plateforme ou d’environnement logiciel car il est open-source ; 
  • Il génère des codes à usage unique qui permettent d’éviter les attaques par rejoué. En effet, même si un attaquant arrive à intercepter l’OTP, il ne pourra rien tirer comme information ;
  • Il ne nécessite pas forcement internet pour sa mise en place.

Comment fonctionne-t-il

Pour comprendre le fonctionnement d’un OTP, il faut prendre en compte deux composants, le générateur d’OTP et le serveur d’authentification.

Tout d’abord, le générateur d’OTP a comme mission de fournir à l’utilisateur un mot de passe unique généré sur la base : 

  • d’un secret connu de l’utilisateur (exemple un code PIN); 
  • d’un « seed » fournit par le serveur. 

Pour ce faire, le générateur d’OTP transmet au serveur le secret de l’utilisateur avec un «seed» préalablement reçu du serveur, à travers plusieurs itérations d’une fonction de hachage sécurisée pour produire l’OTP. Après chaque authentification réussie, le nombre d’itérations de la fonction de hachage est décrémenté d’un (1). Cela permet d’assurer l’unicité de l’OTP généré.

Ensuite, le serveur d’authentification a pour rôle de:  

  • Générer un « secret » ou « seed » avec les bons paramètres puis de l’envoyer (QR code, SMS, voix ou mail) au générateur; 
  • Vérifier l’OTP reçu; 
  • Stocker le dernier OTP valide reçu avec le numéro de séquence correspondant à ce dernier ;
  • Faciliter le changement du secret de l’utilisateur de manière sécurisée.

 

En effet, le serveur vérifie l’OTP reçu par le générateur d’OTP en appliquant une seule fois la fonction de hachage sécurisée utilisée par le générateur. Puis il fait une comparaison avec l’OTP qui avait été précédemment accepté. 

La sécurité du One Time Password est basé sur le fait qu’une fonction de hachage n’est pas inversible. De ce fait, lors de la mise en place d’un système OTP, on utilise généralement l’un des algorithmes de hachage suivants MD4, MD5 ou SHA. Par conséquent, le générateur d’OTP et le serveur doivent utiliser le même algorithme de hachage. Ses algorithmes permettent de prendre en entrée une chaine de longueur aléatoire et de fournir en sortie une taille de 64 bits (suffisant pour être incassable et assez court pour être saisi si nécessaire).

Types d’OTP

HOTP

 

HOTP pour HMAC-Based One-Time Password (Hashed Message Authentication Code), est un type d’OTP basé sur les évènements, apparu en 2005 et fait partie des standards développés par l’Initiative for Open AuTHentication(OATH), un groupe de collaboration international qui vise à promouvoir l’authentification forte en open-source. Il génère des OTP à partir de deux informations : 

  • la première information concerne un « secret » ou « seed » connue uniquement du générateur d’OTP et du serveur qui valide les codes OTP soumis. 
  • la seconde information concerne le facteur de changement à savoir un compteur. 

A l’initialisation le serveur génère un « secret » et le transmet au générateur d’OTP. Après cette initialisation, plus aucune information n’est transmise entre les deux parties. Ensuite, on passe à une fonction de hachage SHA1, la valeur du compteur « mixé » avec le « secret ». Puis, on tronque le résultat du hash selon des règles non détaillées ici. Le générateur d’OTP incrémente le compteur et envoie l’OTP généré au serveur pour validation. Cependant, le compteur du serveur ne s’incrémente que s’il valide l’OTP reçu. Dans ce cas, cela peut engendrer des problèmes de synchronisation entre les compteurs. C’est pour résoudre ce problème que le TOTP à vue le jour. 

En effet, la nature des fonctions de hachage fait que le résultat du hash est totalement différent et imprévisible à chaque incrémentation du compteur, c’est ce qui rend pratiquement impossible la prise d’information concernant la valeur du « secret ».

 

TOTP

TOTP pour Time-based One Time password, est quant à lui basé sur le temps. Apparu en 2011, il fait partie également des standards développés par OATH. Il est basé sur le HOTP, à la seule différence que le facteur de changement est le temps et non un compteur. Il s’appuie sur l’heure “Posix“. En effet, tous les processeurs possèdent une horloge interne implémentant de façon directe ou indirecte « l’heure Posix ». De ce fait, on évite le problème de synchronisation car toutes les horloges (celui du générateur d’OTP et du serveur) sont synchronisées avec peut-être un décalage infime. 

Le partage initial du « secret » entre les deux entités reste le même. Cependant, la génération de l’OTP se fera avec le couple « secret » et heure (ou plus précisément un « timestamp ») sur une période définie (en général 30 à 60 secondes). Cela veut dire que le TOTP utilise le temps de manière incrémentale et que chaque OTP est valide pendant la durée de l’intervalle de temps.

Méthodes de générations d’OTP

Avec un mobile

Via SMS : la technologie la plus utilisée pour l’envoie d’un OTP sur les mobiles est le SMS. En effet, il ne nécessite pas une connexion internet. Il est disponible sur tout type de mobile. Enfin, il est accessible pour tout le monde avec un coût d’implémentation faible. Cependant, cette omniprésence des SMS est confrontée à de sérieux problèmes de sécurité. L’attaque le plus utilisée sur les SMS OTP est le SIM swap scam. Il cible l’authentification à deux facteurs où le second facteur est le SMS, et consiste à prendre le contrôle du compte d’un utilisateur afin de se faire passer pour le propriétaire de la carte SIM. Ce problème de sécurité s’explique par le fait que les messages passent à travers le réseau sans chiffrement, authentification, et sans protection contre l’intégrité. Cela permet donc aux attaquants qui ont accès au réseau, d’intercepter les OTP envoyés via SMS.

 

Via des applications mobiles : il est également possible de générer des OTP avec des applications mobiles incluant une authentification. Aussi, ces applications ne partagent pas les mêmes problèmes de vulnérabilité du SMS et ne nécessitent pas forcement de connexion à internet. Nous avons par exemple pour les :

 

Avec un générateur d’OTP électronique

RSA SecurID : la clé RSA est un OTP de type TOTP développée par la société RSA Security. Elle est dotée d’un écran digital affichant un OTP toutes les 60 secondes et d’une horloge interne lui permettant de connaître l’heure actuelle. Elle est conçue pour être « tamper-resistant ». Cela implique que si un attaquant tente de récupérer le « secret » ou « seed », le composant va s’auto-détruire afin de supprimer les informations qu’elle contient. Cependant, elle a pour inconvénient d’avoir une durée de vie limitée dans le temps et d’avoir une batterie non remplaçable.

Yubico OTP : est un OTP de type HOTP, présent sur tous les types de clé Yubikey. C’est une clé USB qui embarque un composant électronique permettant de générer des OTP lorsqu’on appuie sur cette dernière. Etant donné que c’est une clé USB, elle échappe au problème d’autonomie.

Notification push

Une notification push est un message d’alerte reçu via une application que l’on peut ouvrir, supprimer, autoriser ou bloquer. Pour ce faire, on peut utiliser soit la tactilité du mobile, soit l’empreinte biométrique. 

En terme de fonctionnement, il y a 3 éléments importants qui interviennent lors d’une notification push :

  • le serveur d’envoi ;
  • le serveur push (APNS pour IOS, GCM pour Android et MPNS pour Windows) ;
  • et le mobile.

 

Pour la pré-configuration et l’envoie d’une notification push, nous avons les opérations suivantes : 

  • L’ouverture de l’application mobile nouvellement installée, génère une demande d’identifiant unique (token, URL, ID,…) auprès du serveur push pour qu’il puisse identifier de façon unique l’application sur le mobile pour le serveur d’envoi associé ; 
  • Le serveur push envoie un identifiant unique associé au serveur d’envoi à l’application mobile ; 
  • L’application mobile transmet l’identifiant unique reçu du serveur push au serveur d’envoi qui va le stocker (ou rafraîchir) dans une base de données ; 
  • Pour l’envoi d’une notification push, le serveur d’envoi transmet cette notification au serveur push qui contient l’identifiant unique de l’application mobile et le message associé ; 
  • Le serveur push vérifie les paramètres push (autorisations et identité de l’application) et transmet la notification au mobile ciblé ; 
  • En final, il envoie après un rapport de délivrance de la notification au serveur d’envoi.

Exemple de réalisations

Chez Idento, nous avons mis en œuvre pour le compte de nos clients, de nombreuses solutions d’OTP, notamment avec les produits de nos partenaires, Sign&Go Authenticator d’Ilex, Ping ID  de Ping Identity et Okta verify d’Okta.

 

Pour l’un de nos clients, grandes marques de prêt à porter, Idento a mis en place une solution d’OTP pour sécuriser l’authentification d’un utilisateur de l’extérieur des locaux. L’utilisateur entre son login/mot de passe puis reçoit sur son mobile une notification contenant un « OTP push ». Pour récupérer la notification, il doit s’authentifier via un contrôle biométrique. Une fois identifié, il peut finaliser sa connexion au système d’information automatiquement en cliquant sur l’OTP Push.

 

Vous avez un besoin de renforcer vos process d’authentification ou souhaitez en savoir plus sur comment mettre en place un système d’OTP, contactez-nous !

Jalil Cissé consultant IAM

Jalil Cissé
Consultant IAM chez Idento