La sécurité informatique et internet au service des entreprises
Accueil | Produits & Services | Documentation | Partenaires | Références | A propos | Contact | Flux RSS | Flux RSS Facebook Recherche 
 

Produits & Services
Appliance de sécurité
Prestations d'Audits : audit intrusif, de vulnérabilités, ...
Hébergement sécurisé
Serveur de mails
Recouvrement de mot de passe
SecuriteInfo.com AntiPub
Formations
SecuriteInfo.com sur Facebook
Le Grand Livre
Le grand livre de Securiteinfo.com sécurité informatique et internet
Tout notre savoir faire en 319 pages. Commandez le maintenant !
Initiation
Qu'est-ce que le piratage informatique ?
Introduction à la sécurité informatique
Sécurisation de vos données informatiques : Quels enjeux pour votre entreprise ?
Principes de sécurité informatique et évolution du marché
Initiation à la cryptographie
Principaux types d'attaque
Open Source et sécurité
Modélisation
Le Compartemented Mode Workstation
Le modèle "Bell La Padula"
La méthode FEROS
Classes de Fonctionnalité
Les contrats de licence et la Sécurité Informatique
Laboratoire
LibClamAV Warning : RAR code not compiled-in
myServer 0.7
TrackMania DoS
Pablo FTP 1.77
CuteNews 1.3
myServer 0.4.3
Pablo Baby Web Server 1.51
Téléchargements
NetAudit pour Android
Ebooks
WinSSLMiM
WinTCPKill
WinDNSSpoof
ICMP Shell Detect
Domino Hash Breaker

Les mots de passe à usage unique : One Time Password



Envoyer cet article par Email ! Imprimer cet article ! Exporter cet article en PDF ! Facebook Twitter Netvibes Google Bookmarks Technorati StumbleUpon Sphinn Scoopeo Tapemoi VisitezMonSite MisterWong Fr Wikio FR Fuzz Blogonet Yoolink Viadeo



Qu'est-ce que c'est ?

De nombreux systèmes informatiques se basent sur une authentification faible de type login/mot de passe. Ce type d'authentification a de nombreuses contraintes :
  • Un mot de passe choisi par l'utilisateur est souvent simple à retenir. Il peut donc être attaqué par dictionnaire.
  • Un mot de passe "classique" a une durée de vie généralement longue (plusieurs semaines au minimum). Même si le mot de passe est correctement choisi pour être difficile à trouver, il reste néanmoins attaquable par la méthode de force brute.
  • Souvent les mots de passe sont transférés en clair sur le réseau. Par un sniffer, il est possible de récupérer certains mots de passe.
  • Si un mot de passe est chiffré avant d'être transmis sur le réseau, avec un sniffer, on peut récupérer le mot de passe chiffré, et faire une attaque par force brute sur le chiffré.
Les mots de passe à usage unique (one time password ou OTP en anglais) sont un système d'authentification forte basés sur le principe de challenge/réponse. Le concept est simple : Utiliser un mot de passe pour une et une seule session. De plus, le mot de passe n'est plus choisi par l'utilisateur mais généré automatiquement par une méthode de précalculé (c'est à dire que l'on précalcule un certain nombre de mot de passe qui seront utilisés ultérieurement). Cela supprime les contraintes de :
  • Longévité du mot de passe. Le mot de passe est utilisé une seule fois
  • Simplicité du mot de passe. Le mot de passe est calculé par l'ordinateur et non pas choisi par un utilisateur
  • Attaque par dictionnaire ou par force brute : Pourquoi essayer de cracker un mot de passe obsolète ?
  • Sniffer et chiffrement du mot de passe : Le mot de passe à usage unique peut être envoyé en clair sur le réseau : Lorsqu'un sniffer en détecte un, il est déjà trop tard, car il est utilisé, et non réexpoitable.


Comment cela fonctionne-t-il ?



D'un point de vue du serveur

L'administrateur du serveur (c'est à dire de l'ordinateur qui va recevoir la connexion et qui va déclencher le processus d'authentification) doit utiliser un outil qui va permettre de générer un certain nombre de mot de passe à usage unique.
Ensuite, il utilisera des outils adaptés à cette méthode d'authentification, par exemple il remplacera les programmes login ou su sous Unix, ftp, etc... Ces OTP générés sont calculés à partir de trois données :
  • Une donnée publique (mot ou phrase courte par exemple), choisie par l'administrateur. On appèle cela aussi la semence, ou seed en anglais.
  • Un numéro de séquence : C'est un nombre relatif au numéro de connexion. C'est un compteur, tout simplement. C'est ce paramètre qui rend le mot de passe unique : L'OTP de la connexion n°587 n'est pas le même que la connexion n°586 ou 588.
  • Un mot de passe utilisateur, connu de lui seul, qui servira à l'authentifier.
Voici comment cela se passe :

L'utilisateur exécute le programme opiepasswd.
Le système lui demande son mot de passe, et ensuite il lui demande de calculer le premier challenge.

scrap $ /usr/local/bin/opiepasswd
Adding scrap:
You need the response from an OTP generator.
New secret pass phrase:
        otp-md5 499 ge8086
        Response:

L'utilisateur va alors calculer le challenge avec un logiciel :

Saisie avec Winkey
Calcul de la réponse au challenge avec Winkey


L'utilisateur fait ensuite un copier/coller, et les OTP sont générés. Le système est opérationnel.

scrap $ /usr/local/bin/opiepasswd
Adding scrap:
You need the response from an OTP generator.
New secret pass phrase:
        otp-md5 499 ge8086
        Response:KURT SLOW HINT BODE ART HERB
ID mint OTP key is 499 ge8086
KURT SLOW HINT BODE ART HERB

scrap $

D'un point de vue du client

L'utilisateur va se connecter normalement sur le système distant (telnet, ftp, etc...)
Ensuite, il recevra un challenge à résoudre :

Trying 212.43.230.175...
Connected to securiteinfo.com.
Escape character is '^]'.
Red Hat Linux release 4.2 (Biltmore)
Kernel 2.0.32 on an i386
login: scrap
        otp-md5 498 ge8086 ext
        Response:


L'utilisateur va ensuite utiliser un programme pour résoudre ce challenge : Il y rentre le challenge en question, et entre son mot de passe personnel.

Saisie avec Winkey
Calcul de la réponse au challenge avec Winkey.


L'utilisateur n'a plus qu'à copier/coller l'OTP généré pour s'authentifier.

Trying 212.43.230.175...
Connected to securiteinfo.com.
Escape character is '^]'.
Red Hat Linux release 4.2 (Biltmore)
Kernel 2.0.32 on an i386
login: scrap
        otp-md5 498 ge8086 ext
        Response: RIO AMOS SLAT NOOK ROD SLAT

scrap #



D'un point de vue technique

Le principe des OTP repose sur une fonction de hachage sécurisée. Ce hachage ne peut être "remonté" pour revenir à l'original. Une fonction de hachage permet d'obtenir une information sur 64 bits. Généralement les mots de passe à usage uniques sont générés à partir des fonctions de hachage MD4 et MD5.

Génération des OTP

La génération des OTP se font en trois étapes :
  • Une préparation, qui va prendre en compte toutes les données utilisateurs : la semence, et le mot de passe.
  • La génération, qui consiste à appliquer la fonction de hachage n fois sur elle même, n étant le nombre de sequences.
  • Le formatage du résultat, qui transforme la donnée obtenue de longueur égale à 64 bits en un mot de passe à base de caractères ASCII, c'est à dire lisible par l'homme.


Calcul des OTP
Calcul des mots de passe à usage unique.



Vérification des OTP : Authentification de l'utilisateur

Comme nous l'avons vu dans l'exemple utilisateur, le challenge en lui même (généré par le serveur) est composé de trois parties :

otp-md5 498 ge8086

  • otp-md5 : indique que c'est un OTP calculé en MD5.
  • 498 : c'est le numéro de séquence actuelle.
  • ge8086 : c'est la semence.
L'utilisateur doit donc calculer la réponse au challenge grâce à un programme (par exemple WinKey). Il envoie ensuite le résultat de son calcul au serveur.
Du côté serveur, le système a un fichier qui contient, pour chaque utilisateur, le dernier OTP valide utilisé pour une authentification. Sur les systèmes Unix, ce fichier est /etc/skeykeys. Pour vérifier la validité de l'OTP utilisateur, le serveur a une astuce : Le numéro de séquence (498 dans notre exemple) est décrémenté à chaque authentification valide. Aussi, si le client calcule pour un numéro d'itération n, le serveur, lui, a n+1 stocké dans son fichier. Dans notre exemple, le serveur a donc stocké l'OTP correspondant au numéro de séquence 499. Le système n'a donc plus qu'une tâche à effectuer : Calculer le hachage de l'OTP que l'utilisateur vient de lui envoyer. Si le résultat est égal au résultat n+1 stocké dans le fichier, l'utilisateur est authentifié.

Les failles des mots de passe à usage unique

Malgré tout, les mots de passe à usage unique comportent des failles exploitables. Elles sont présentées par ordre croissant de difficulté pour l'attaquant :

Social engineering, trashing, etc...

L'utilisateur, l'éternelle faiblesse. Quelquefois, il est possible de récupérer le mot de passe de l'utilisateur en regardant sous le clavier, dans ses tiroirs, ou même en fouillant ses poubelles... Une fois que vous avez le mot de passe, vous pouvez répondre au challenge...
Une autre technique : Certains programmes, comme WinKey, comportent un trou de sécurité : Tant que le programme de calcul n'est pas fermé, celui-ci garde en mémoire le mot de passe, visible sous forme d'étoiles. (voir photos d'ecrans ci-dessus). Il existent des programmes dans l'environnement Win32 qui permettent de rendre clair le contenu des étoiles. Cinq minutes d'inattention suffisent...

Attaque par cheval de Troie et keylogger

Il "suffit" de mettre un cheval de Troie ou un keylogger sur le poste de l'utilisateur victime, pour essayer de récupérer le mot de passe de celui-ci.

Le fichier skeykeys

Si le hacker a la main sur le serveur, il est possible qu'il exploite une faille : Si le fichier /etc/skeykeys est disponible en lecture pour le hacker, voici ce qu'il y trouve :

login numéro de séquence semence Représentation hexa de la réponse du challenge (le dernier OTP utilisé) Date Heure
victime 985 xv 5235b 5b3c89552aa09435 Jun 25, 2001 05:30:15

L'attaquant récupère alors : Le login et la représentation hexa de l'OTP. Avec cette représentation, il peut créer un outils qui générera la réponse au challenge en fonction d'un dictionnaire, ou par force brute (voir ci dessous).

Pour contrer cette attaque, vérifiez que ce fichier n'est pas en lecture pour tout le monde (encore moins en écriture !).

Attaque par sniffing

L'OTP est envoyé vers le serveur en clair. Il est donc possible de récupérer la réponse du challenge et de faire une attaque par dictionnaire ou par force brute (voir ci-dessous).

Attaque par dictionnaire

L'attaque par dictionnaire permet de calculer la réponse au challenge en fonction d'un nombre de mots préalablement stockés dans un gros fichier. Ces mots serons utilisés comme mot de passe de l'utilisateur. Si le résultat du calcul est identique à la réponse d'un challenge passé, alors c'est que le mot utilisé dans le dictionnaire est le mot de passe de l'utilisateur.

Attaque par force brute

Exactement le même principe que pour l'attaque par dictionnaire. C'est plus long, mais cela reste toujours possible...

Attaque par le milieu

Cette attaque consiste pour l'attaquant à avoir la main sur une machine qui transmet l'authentification de la session. C'est une machine intermédiaire. Dans ce cas, l'attaquant peut écouter les trames qui transitent et repérer le challenge et la réponse du challenge. Là aussi il devra utiliser le cracking par dictionnaire ou par brute force. Cette méthode revient à du sniffing.

Attaque par le milieu
Attaque par le milieu


Attaque par spoofing

La technique du spoofing, dans ce cas, est de se faire passer pour le serveur. C'est une attaque par le milieu (voir ci-dessus), mais un peu plus évolué. En effet, il faut en plus simuler exactement le comportement du serveur. On récupère ainsi le compteur (numéro de séquence) et la réponse au challenge Il est alors possible d'exploiter cela par deux techniques différentes :
  • Soit essayer de trouver le mot de passe utilisateur par dictionnaire et brute force
  • Soit l'attaquant a utilisé sciemment un numéro de séquence inférieur à ce qu'attend vraiment le serveur. Dans ce cas, l'attaquant peut alors utilisé un nombre de connexion, au détriment de l'utilisateur, égal à la différence entre le vrai numéro de séquence serveur, et le faux numéro de séquence de l'attaquant.
Cette attaque est facilement décelable pour l'utilisateur victime, car il se rend compte que le serveur ne fonctionne pas correctement. Par contre, pour l'attaquant, les données récupérées sont directement exploitables. Cette attaque est donc à prendre très au serieux, d'autant plus qu'elle n'est pas très difficile à réaliser.

Attaque par faille temps réel

Il se peut qu'il y ait un problème dans l'implémentation d'un OTP. Il est possible que, lorsque deux ouverture de session arrivent en même temps sur le serveur, celui-ci ne sache pas comment les gérer. C'est un problème purement temps réel. Il y a alors trois cas de figures :
  • Le serveur rejette les deux connexions. L'attaquant n'a aucune chance d'avoir accès. L'utilisateur non plus ! Ce cas est peu probable.
  • Le serveur accepte une connexion (la première arrivée en général), et refuse la seconde. Dans ce cas, l'attaquant a 50% de chance de réussir. Ce cas est probable par l'utilisation d'une sémaphore.
  • Le serveur accepte les deux connexions. L'attaquant a 100% de chance de réussir. Ce cas est peu probable.

Attaque par Hi-Jacking

L'authentification se fait au moment de la connexion. Passé cette authentification, il n'y a plus d'autres moyens de vérifier si l'authentification est toujours correcte. Aussi, il est possible de détourner la communication TCP/IP. C'est une attaque de type Hi-jacking. Une fois le détournement effectué, le serveur dialogue avec l'attaquant,et l'attaquant utilise la session de la victime.

Conclusion

Le maillon faible des OTP est le mot de passe utilisateur. Comme on l'a vu, il y a divers moyens pour le récupérer. Les mots de passe à usage uniques ne sont donc pas fiables à 100%
Ceci dit, cette méthode est tout de même beaucoup plus sécurisée que la méthode traditionnelle login/password.
De plus il est possible de l'implémenter sans avoir de coûts excessifs. Il faudrat néanmoins penser à former les utilisateurs, qui n'ont pas l'habitude de manipuler un logiciel de chiffrement pour se loguer :)

Références

  • La RFC 1760 : The S/KEY One-Time Password System
  • La RFC 1321 : The MD5 Message-Digest Algorithm
  • La RFC 1320 : The MD4 Message-Digest Algorithm


Arnaud Jacques
13 Aout 2001
Cybercriminalité
Cybercriminalité : le piratage politique
Que faire lors d'une attaque ?
Cybercriminalité : Comment porter plainte ?
Cryptographie
La cryptographie à algorithmes symétriques
Les mots de passe à usage unique (OTP : One Time Password)
Le chiffrement AES
Les fonctions de hachage
Attaques et faiblesses du SSL : Secure Socket Layer
Le tunneling
IPSec
Technologies de la sécurité informatique
Technologie
Choisir un mot de passe robuste
Les firewalls
Les antivirus gratuits en ligne et professionnels
La biométrie : L'informatique au service de l'authentification des personnes
Sécurité des réseaux Wifi et Wardriving
Les enjeux sécuritaires de la 3G
Les sauvegardes : enjeux et choix des supports
Malwares
Les différents types de malwares
Statistiques des malwares capturés par notre pot de miel
Statistiques des malwares détectés sur des sites web infectés
Chevaux de Troie (ou Trojans) expliqués
Fonctionnement des Key Loggers (enregistreurs de touches)
Découverte des Espiogiciels (Spywares)
La collecte d'information grâce au Social Engeeriering
Explication du fonctionnement des emails de Spam Images
Attaques
IP Spoofing
DNS Spoofing
Buffer Overflow
Deni de Service Distribué (DDoS)
Challenges de hacking