Le machine learning pour des mots de passe robustes : l'expérience de Michelin
Michelin a expérimenté le développement d'un système de contrôle de robustesse des mots de passe au moment de leur renouvellement, à renfort d'IA.
Comment élaborer, pour les utilisateurs qui changent leur mot de passe, un indicateur de robustesse ne se fondant pas simplement sur l'entropie ?
Michelin mène des travaux à ce sujet. Ils impliquent le développement d'un modèle capable de détecter l'usage de patterns.
Un dictionnaire vous manque...
L'apprentissage supervisé n'a pas apporté satisfaction. Il s'agissait, dans ce cadre, d'alimenter le modèle à la fois avec des mots de passe considérés comme faibles et des mots de passe considérés comme forts. Pour les premiers, il existe des listes. Pas pour les seconds. Il a donc fallu en générer "à la manière humaine". À ces fins, plusieurs algorithmes basés sur des mots du dictionnaire ont été mis à contribution, avec permutation de lettres, insertion de syllabes, leet speak, etc. Les caractères ont ensuite été convertis en code ASCII.
Des modèles Scikit-Learn comme RandomForestClassifier et MLPClassifier tendent à n'apprendre que les patterns de construction des mots de passe forts. Ainsi considèrent-ils MOT2passe% comme fort parce qu'il reprend un de ces patterns, alors qu'ils jugent E9-LM14zyak2 comme faible.
Face à ce constat, il a été décidé d'ajouter des métadonnées : distances de Jaro-Winkler et de Levenshtein (mesure de la différence entre deux chaînes de caractères), quantité de chaque type de caractères, entropie de Shannon... La méthode n'a pas eu de résultats concluants. Même chose avec une approche impliquant plusieurs réseaux de neurones qui attribuent chacun un score à une version simplifiée du mot de passe (tout en minuscules, leet speak converti en lettres, etc.).
Conclusion : l'absence d'un dictionnaire de mots de passe "forts" de type humain entrave l'apprentissage supervisé. D'où un repli sur du non supervisé, uniquement sur la base de mots de passe "faibles" qu'on cherche à clusteriser en fonction de patterns. La distance d'un mot de passe par rapport au centre de chaque cluster devant donner une indication de robustesse.
Masque sur masque
Le choix de l'algorithme s'est porté sur AgglomerativeClustering. Mais le premier jet a produit nombre de clusters de faible qualité (non représentatifs d'un pattern). Il s'est avéré qu les mots de passe au format brut étaient trop précis (trop de combinaisons possibles). On y a donc ajouté un masque : m pour les minuscules, M pour les majuscules, C pour les chiffres, S pour les caractères spéciaux. Et on leur a donné respectivement les valeurs de 1 à 4.
En mettant à 8 le seuil de distance entre deux clusters, l'algorithme en trouve 518 sur un échantillon de 50 000 mots de passe. Pour chaque mot de passe l'algorithme NearestNeighbors donne la distance par rapport au barycentre de cluster le plus proche.
Cet algo ne fait toutefois pas la différence entre un mot du dictionnaire et une séquence aléatoire de lettres. MaMaison12 et JuDszcab34 ont donc le même score. Tout du moins jusqu'à ce qu'on répartisse les caractères en 8 catégories dépendant de leur fréquence d'apparition en anglais, français et espagnol.
1 | e, s, a, i, t, n, r, u, o, l |
2 | autres minuscules |
3 | E, S, A, I, T, N, R, U, O, I |
4 | autres majuscules |
5 | chiffres |
6 | >, <, -, ?, ., /, !, %, @, & |
7 | autres caractères spéciaux |
0 | padding |
Avec ce nouveau masque, JuDszcab34 devient plus complexe que MaMaison12. 98 % des mots de passe ont une distance de moins de 4.
Pour valider le modèle, on utilise les mots de passe "forts" générés au moment de la phase d'apprentissage supervisé. Avec un tri par longueur pour éviter les biais. Le chevauchement entre les courbes de résultats permet d'ajuster le seuil de distance pour minimiser le risque d'erreur.
Face au manque de dictionnaire de mots de passe forts, Michelin envisage de calculer la distance de chaque mot de passe au renouvellement, puis de faire la comparaison avec les résultats de campagnes régulières de cracking.
Illustration © bygermina - Shutterstock.com
Sur le même thème
Voir tous les articles Cybersécurité