Avec la montée en puissance des mécanismes d’authentification forte à multiple facteurs, l’utilisation des “One-Time Password” (OTP) se généralise et se démocratise.
Un exemple parlant, le protocole “3D-Secure” qui est utilisé dans le secteur bancaire pour valider un achat effectué sur l’Internet via un code numérique unique transmis par SMS au téléphone du client.
Le mécanisme OTP :
Il existe deux grandes familles d’OTP, généralement représentés sous la forme d’un code numérique unique de 4 à 8 chiffres. Ce code est censé être utilisable qu’une fois, il intervient en complément d’un couple login/password classique pour authentifier une identité.
Les OTP sont donc un deuxième facteur en plus des crédentiels habituels, d’où la notion d’authentification forte “double-facteur” (2FA pour “2-Factor Authentication”).
L’intérêt principal de ces “nouveaux facteurs” dans une phase d’authentification est d’augmenter la sécurité globale de la transaction.
Divers facteurs qui permettent d’accroître la sécurité d’une authentification peuvent être employés suivant les besoins et la criticité :
- “Ce que l’on sait” : le mot de passe
- “Ce que l’on possède” : le téléphone qui reçoit un OTP par SMS, ou le token qui génère l’OTP.
- “Ce que l’on est” : des caractéristiques biométriques propres à l’individu.
- “Où se situe t-on” : la géolocalisation de l’identité qui cherche à s’authentifier peut être un facteur déterminant. Ce facteur permet d’assurer une authentification à partir de lieu définis, ou encore empêcher une nouvelle authentification si la précédente a été réalisée à des miliers de kilomètres au cours de la même heure.
- “A quelle date/heure est-on” : Certaines authentifications se voient autorisées qu’en période de travail, à des heures définies. En dehors de ces créneaux, elles n’ont pas raison d’être.
L’OTP est donc un code généré ou envoyé à un instrument que l’on possède, qui intègre généralement une unicité d’utilisation, un notion d’aléa et régulièrement un facteur temporel.
Deux grandes familles d’OTP existent, les H-OTP et les T-OTP.
HOTP (HMAC-based One-Time Password) :
HOTP un algorithme défini par l’OATH puis par l’IEFT au sein de la RFC 4226.
HOTP a pour objectif de définir un algorithme d’OTP simple et robuste basé sur une fonction d’HMAC, elle même basée sur SHA-1. HOTP vise à répondre aux objectifs suivants :
– être basé sur un compteur ou une séquence ;
– être simple à implémenter même avec des ressources limitées (carte à puce) ;
– être utilisable sur des dispositifs ne proposant pas d’entrée utilisateur ;
– produire une valeur générée facilement lisible et manipulable par l’utilisateur ;
– être simple à re-synchroniser pour l’utilisateur ;
– être basé sur un secret partagé fort (ie. >= 160 bits).
TOTP (Time-based One-Time Password) :
Détail du TOTP dans la RFC6238 (draft).
Ces authentifieurs utilisent, en plus du secret partagé, un dénominateur commun qui est le temps. Chaque partie est synchronisée sur le temps universel (UTC). On utilise alors un Code NIP comme deuxième facteur d’authentification. Ces authentifieurs sont définis comme une technologie dite synchrone. Chaque minute, par exemple, ces authentifieurs affichent un nouveau « Token Code », le One Time Password.
L’exemple le plus connu est SecurID de la société RSA Security.
De nombreuses implémentations de générateurs/vérificateurs d’OTP ont été réalisées au travers de divers langages de programmation ; assurant ainsi une intégration aisée d’un second facteur
d’authentification dans des projets de développement.
Les TOTP sont relativement simples à mettre en oeuvre. Ils nécessitent un secret partagé entre le serveur et le client, ainsi qu’une synchronisation temporelle (NTP). Parmi les solutions d’actualité qui exploitent les TOTP, il y a GoogleAuthenticator et les diverses API mises à disposition par Google.
Pour illustrer et maquetter des développements logiciels en exploitant les mécanismes d’authentification forte TOTP, quelques implémentations dans divers langages des algorithmes de TOTP/HOTP sont présents dans les “sources & ressources” à la fin de cet article.
L’authentification forte au travers des OTP est une méthode relativement simple à mettre en place. Les consultants de SYNETIS intègrent les solutions “clé en main” de nos partenaires, tel Symantec avec la solution Symantec VIP, HID, pour protéger les systèmes d’authentification critiques des entreprises tels que les VPN, les sessions distantes, les accès SSH, les consoles d’administrations, etc.
Sources & ressources :
- RFC4226 – IETF
- RFC6238 – IETF
- L’authentification forte par OTP, l’exemple d’HOTP (OATH) – Stelau
- Goole2FA en PHP
- OneTimePassword TOTP/HOTP en Python
- Google Authenticator iOS, Android, Blackberry, PAM
- Google Authenticator JAVA
- Google Authenticator JavaScript
Yann
Consultant Sécurité