Surveillance des mots de passe
La surveillance des mots de passe est une fonctionnalité qui compare les mots de passe stockés le trousseau de remplissage automatique de mots de passe de l’utilisateur avec une liste préparée avec soin et continuellement mise à jour de mots de passe connus pour avoir été exposés dans le cadre de fuites de données de différentes organisations présentes en ligne. Si la fonctionnalité est activée, le protocole de surveillance compare en permanence les mots de passe du trousseau de remplissage automatique de mots de passe de l’utilisateur avec cette liste soigneusement élaborée.
Fonctionnement de la surveillance
L’appareil de l’utilisateur effectue continuellement des vérifications circulaires des mots de passe de l’utilisateur et soumet les requêtes à un intervalle indépendant de ceux-ci ou des habitudes d’utilisation du gestionnaire de mots de passe. Cette méthode permet de veiller à ce que les états de vérification soient à jour en tenant compte de la liste actuelle de mots de passe divulgués. Afin de contribuer à éviter la fuite d’informations quant au nombre de mots de passe uniques dont un utilisateur dispose, les demandes sont consolidées et soumises en parallèle. Un nombre fixe de mots de passe est vérifié en parallèle lors de chaque vérification. Des mots de passe aléatoires sont générés et ajoutés aux requêtes pour compenser la différence si un utilisateur en possède moins que ce nombre.
Mise en correspondance des mots de passe
La mise en correspondance des mots de passe s’effectue en deux phases. Les mots de passe les plus communs parmi ceux qui ont été divulgués dans le cadre de fuites de données sont répertoriés dans une liste locale sur l’appareil de l’utilisateur. Si le mot de passe de l’utilisateur figure sur cette liste, l’utilisateur est immédiatement alerté sans interaction externe. Cela vise à garantir qu’aucune information n’est divulguée sur les mots de passe les plus vulnérables d’un utilisateur en raison d’une fuite de mots de passe.
Si le mot de passe ne figure pas dans cette liste, il est comparé avec les mots de passe divulgués moins fréquemment.
Comparaison des mots de passe des utilisateurs avec une liste préparée
La vérification d’un mot de passe qui ne figure pas dans la liste locale requiert des interactions avec les serveurs d’Apple. Afin de veiller à ce que les véritables mots de passe des utilisateurs ne soient pas envoyés à Apple, une forme d’intersection d’ensembles cryptographiques confidentiels est déployée pour comparer les mots de passe avec un large ensemble de mots de passe divulgués. Cela vise à garantir que peu d’informations sont partagées avec Apple quant aux mots de passe dont le risque de violation est moindre. Pour le mot de passe d’un utilisateur, ces informations sont limitées à un préfixe de 15 bits d’un hachage cryptographique. La suppression des mots de passe les plus fréquemment divulgués de ce processus interactif, en utilisant la liste locale des mots de passe divulgués les plus communs, réduit le delta en fréquence relative des mots de passe qui figurent dans les compartiments du service Web tout en empêchant quiconque de deviner les mots de passe des utilisateurs à partir de ces recherches.
Le protocole sous-jacent divise la liste des mots de passe traités (la liste contient environ 1,5 milliard de mots de passe au moment où nous rédigeons ce guide) en 215 compartiments différents. Les 15 premiers bits de la valeur de hachage SHA256 du mot de passe déterminent le compartiment auquel le mot de passe est assigné. Par ailleurs, chaque mot de passe divulgué (pw) est associé à un point de courbe elliptique sur la courbe NIST P256 : Ppw = ⍺·HSWU(pw), où ⍺ est une clé aléatoire secrète connue uniquement par Apple, et HSWU est une fonction d’oracle aléatoire qui met les mots de passe en correspondance avec des points de courbe selon la méthode Shallue–Van de Woestijne–Ulas. Cette transformation est conçue pour masquer informatiquement les valeurs des mots de passe et contribuer à empêcher la révélation de mots de passe ayant récemment fait l’objet d’une fuite par l’entremise de la surveillance des mots de passe.
Pour calculer l’intersection d’ensembles confidentiels, l’appareil de l’utilisateur détermine le compartiment auquel le mot de passe de l’utilisateur appartient en utilisant λ, le préfixe de 15 bits de SHA256(upw), où upw est l’un des mots de passe de l’utilisateur. L’appareil génère sa propre constante aléatoire, β, puis envoie le point Pc = β·HSWU(upw) au serveur accompagné d’une requête pour le compartiment qui correspond à λ. Ici, β masque les informations qui se rapportent au mot de passe de l’utilisateur et limite les informations issues du mot de passe à λ pour Apple. Enfin, le serveur reçoit le point envoyé par l’appareil de l’utilisateur, procède au calcul, ⍺Pc = ⍺β·HSWU(upw), et le renvoie à l’appareil accompagné du compartiment approprié des points : Bλ={ Ppw | SHA256(pw) commence avec le préfixe λ}.
Les informations reçues permettent à l’appareil de calculer B’λ={β·Ppw | Ppw∈Bλ}, et s’il en résulte que ⍺Pc ∈B’λ, cela établit que le mot de passe de l’utilisateur a fait l’objet d’une fuite.