Séquence de système
Structure du système
Le passwordcheck se compose d'un serveur web, d'une application de contrôle de mot de passe et d'une base de données.
Serveur Web
Le serveur Web représente l'interface avec l'utilisateur. Il fournit le contrôle des mots de passe, gère les statistiques dans une base de données et les présente sous forme de pages Web.
Application de vérification de mot de passe
Le passwordcheck est le point central de l'application et sert à évaluer la force d'un mot de passe saisi. Le passwordcheck est codé en JavaScript. Les programmes JavaScript sont chargés par le navigateur et exécutés sur l'ordinateur de l'utilisateur. Par conséquent, aucun mot de passe et aucune autre donnée d'utilisateur privée n'est envoyé au serveur. Tous les calculs sont effectués sur l'ordinateur de l'utilisateur. Les données sont effacées lorsque le navigateur est fermé. Pour générer des statistiques sur la fréquence des mots de passe forts et faibles, JavaScript envoie le résultat au serveur. La seule information transmise ici est celle du résultat du test, c’est à dire si le mot de passe est considéré comme fort ou faible.
La vérification du mot de passe saisi est décrite sur la page Procédure d'examen.
Banque de données
La base de données recueille des informations sur la qualité (fort / faible) du mot de passe vérifié à des fins statistiques.
Seuls les résultats du contrôle sont sauvegardés. Les mots de passe ne sont jamais transmis au serveur.
Procédure d'examen
Le passwordcheck évalue la force des mots de passe en fonction de la probabilité du nombre de tentatives dont un attaquant aura besoin pour trouver le mot de passe.
Cela dépend principalement de la longueur du mot de passe et du jeu de caractères utilisé. Si un mot de passe contient des mots, des chiffres ou des motifs de clavier connus, un attaquant peut en profiter. Au lieu d'essayer au hasard de longues séquences de caractères, il essaiera d'abord de combiner des mots provenant des dictionnaires, des dates, des motifs de clavier, etc. Cela réduit considérablement le nombre de tentatives nécessaires.
Par conséquent, le passwordcheck recherche les composants suivants:
- Mots du dictionnaire allemand, français, italien, rhéto-roman et anglais (selon le choix de l'utilisateur)
- Motifs de clavier sur le clavier suisse (par exemple «qwertz»)
- Séries de numéros et séquences alphabétiques (par exemple «1234», «abcd»)
- Dates (par exemple «03.06.2109»)
Lors de la recherche dans le dictionnaire, les majuscules et minuscules modifiées ainsi que l'orthographe l33t sont également reconnus. Ainsi, par exemple, cHAt, m@ison et f3nêtre sont reconnus comme des mots.
Le passwordcheck calcule le nombre probable de combinaisons qu'il faudra essayer pour casser le mot de passe. Tout d'abord, comme indiqué plus haut, il recherche les mots du dictionnaire et d’éventuels motifs du clavier dans le mot de passe. Ensuite et le mot de passe est décomposé en ses composants.
Ensuite, pour chaque mot partiel, on calcule combien de possibilités un attaquant aurait à tenter:
- Pour les mots des dictionnaires chargés, le nombre de possibilités est égal à la taille du dictionnaire. Puisque le système fait la distinction entre majuscules et minuscules et reconnaît le l33t, la taille du dictionnaire doit être multipliée par 10.
- Pour les motifs de clavier, les séries de nombres et les séquences alphabétiques, c'est le nombre de combinaisons possibles qui est pris en compte.
- Pour les autres caractères ne faisant partie ni d'un mot, ni d'un motif, le nombre de possibilités est kn, où k est le nombre de caractères possibles et n la longueur.
Pour estimer le temps nécessaire, on suppose qu'un attaquant peut effectuer cent milliards de tentatives par seconde. Cela correspond à la puissance de calcul d'un PC performant doté d'un logiciel et d'un matériel spécialisés.
Un mot de passe doit résister à une attaque pendant plus d'un an pour être considéré comme fort.
Cracker des mots de passe
La façon la plus simple de craquer un mot de passe est d'essayer toutes les possibilités l'une après l'autre. Cette méthode prend énormément de temps car le nombre de possibilités augmente de manière exponentielle avec la longueur du mot de passe.
Comme la plupart des gens ne choisissent pas leurs mots de passe au hasard, les outils de craquage de mots de passe ambitieux ont recours à des dictionnaires de mots de passe spéciaux. Ces dictionnaires contiennent, en plus des mots normaux d'un dictionnaire, d'autres séquences de caractères courantes telles que des motifs de clavier ou des séries de nombres du type 12345. Ils prennent également en compte du fait que les lettres sont souvent remplacées par d'autres caractères, par exemple «E» par «3» ou «A» par «@» (orthographe leet speak / l33t). L'utilisation de dictionnaires de mots de passe et la prise en compte de l'orthographe l33t réduisent le nombre de tentatives de craquage nécessaires de manière significative.
Les attaques en ligne et hors ligne se déroulent différemment. Si, par exemple, un ordinateur portable est perdu, une personne non autorisée peut faire une copie du disque dur et tenter des milliards de mots de passe potentiels différents sur son propre ordinateur. Pour son estimation du temps requis, le passwordcheck suppose que l'attaquant peut effectuer des centaines de milliards de tentatives par seconde.
Les services en ligne peuvent également être affectés par une attaque hors ligne. Si une personne parvient à copier des bases de données de mots de passe, elle peut effectuer plusieurs tentatives par seconde sur son propre ordinateur.
Le vol de bases de données de mots de passe est également délicat pour une autre raison: Ces bases de données contiennent souvent des données d’utilisateur supplémentaires, telles que le nom et l'adresse e-mail. Comme de nombreux utilisateurs utilisent le même mot de passe pour plusieurs services, les attaquants peuvent tenter de se connecter à d'autres services avec les données de courriel et de mot de passe volées.
Que fait le passwordcheck?
Ce qu’il fait
Le passwordcheck vérifie que le mot de passe ne contient pas de séquences de caractères usuelles auxquelles un attaquant peut s’attendre, ce qui simplifie considérablement le craquage. Il s'agit de mots du dictionnaire, de modèles de clavier, de séquences de nombres etc.
L'effort de recherche voulu est estimé sur la base des séquences de caractères trouvées.
Pour plus de détails sur la procédure d'évaluation, voir la page Procédure d'examen.
Ce qu’il ne fait pas
Les risques liés aux recherches ciblées ne peuvent être couverts par un passwordcheck générique. Le contrôle du mot de passe fonctionne sur la base de dictionnaires généraux. Ceux-ci répertorient notamment des noms communs dans différentes langues. Un agresseur qui cible une victime spécifique peut inclure ce qu’il sait de la personne: Date de naissance, nom, adresse, données de famille, noms d'enfants ou d'animaux domestiques, etc.
Le passwordcheck ne peut pas non plus prendre en compte le risque qu'un mot de passe parvienne à la connaissance de personnes non autorisées par un autre biais, par exemple par le stockage non sécurisé du mot de passe sur l’ordinateur ou par l'espionnage avec des logiciels malveillants.
Nouvelles méthodes
Le passwordcheck de la Préposée à la protection des données du Canton de Zurich présente les particularités suivantes:
- Tous les contrôles sont effectués localement dans le navigateur de l'utilisateur. Aucun mot de passe n'est envoyé à un serveur.
- Le contrôle s'effectue en temps réel. Avec chaque lettre tapée, l’utilisateur peut voir comment l’évaluation de la force de son mot de passe par le système change.
- Des dictionnaires pour l'allemand standard suisse, l'italien, le français, le romanche et l'anglais sont disponibles et peuvent être sélectionnés par l'utilisateur.
- La recherche par mots reconnaît également les formes usuelles de modifications (leet speak / l33t).
- Les motifs de clavier sont reconnus sur la base du clavier suisse.
- Le code source et la méthode appliquée sont ouverts et accessibles à tous (Github Repository).