Société de Sécurité Informatique - Audit Firewall Appliances
La sécurité informatique - La sécurité des informations

Les mots de passe à usage unique : One Time Password


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 : 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 :

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 : 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 :

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

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 : 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 :

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




Arnaud Jacques
13 Aout 2001

Partagez cet article

Envoyer cet article par Email ! Imprimer cet article ! Exporter cet article en PDF ! Facebook Twitter Google Bookmarks

SecuriteInfo.com est une entreprise française de sécurité informatique. Nous proposons différentes solutions matérielles et prestations de services permettant de sécuriser les données des Systèmes d'Information d'entreprises ou de collectivités.
Twitter SecuriteInfo.com
Facebook SecuriteInfo.com
BOINC calcul scientifique
© 2004-2016 - Tous droits réservés - SecuriteInfo.com