Associer huit nombres à trois caractères modifie les fréquences

Supposons que les entiers de 0 à 7 soient équiprobables. Les restes de la division par 3 donnent trois occurrences de 0, trois de 1 et deux de 2. Des nombres de départ uniformes ne donnent donc pas ici des restes uniformes : c’est le biais de modulo.

0 % 3 = 0    1 % 3 = 1    2 % 3 = 2
3 % 3 = 0    4 % 3 = 1    5 % 3 = 2
6 % 3 = 0    7 % 3 = 1
// counts: [3, 3, 2]

Si vous rejetez les deux derniers numéros, vous obtenez le même nombre de fois

Rejetez 6 et 7, puis demandez un nouveau nombre. Parmi les valeurs acceptées de 0 à 5, chaque reste apparaît deux fois. Si les nombres de départ sont uniformes, cela supprime le biais dans la plage acceptée. Le nombre rejeté n’est pas réutilisé.

Nombre d’occurrences des restes : 3, 3, 2 pour les valeurs de 0 à 7, puis 2, 2, 2 après exclusion de 6 et 7.
Diagramme original calculé : à gauche, 0 à 7 ; à droite, uniquement 0 à 5. Ce n’est pas une distribution mesurée de l’aléa du navigateur.

randomInt de Moyoutil remplit Uint32Array(1) avec crypto.getRandomValues. La limite est obtenue en divisant 2^32 par le nombre de choix, en arrondissant vers le bas puis en multipliant par ce même nombre de choix. Les valeurs supérieures ou égales à la limite sont rejetées et un nouveau nombre est demandé. Pour trois choix, la limite est 4294967295 : seule la valeur maximale est rejetée.

Math.floor(4294967296 / 3) * 3
// 4294967295
// accept: 0 through 4294967294
// reject: 4294967295

W3C Web Cryptography: getRandomValues

La documentation Web Cryptography précise que getRandomValues ​​​​génère des nombres aléatoires cryptographiquement forts. La vérification dans cet article vise à garantir que le code du projet gère les limites de rejet et ne constitue pas un audit de l'entropie du système d'exploitation ou des implémentations de nombres aléatoires spécifiques du navigateur.

Inclure des types de caractères diffère d’un choix indépendant à chaque position

L’outil choisit un caractère de chaque type sélectionné, remplit les positions restantes avec l’ensemble combiné, puis mélange l’ordre. Chaque type choisi apparaît au moins une fois. Ne choisir que les majuscules et choisir les quatre types sont des conditions différentes. Cela ne garantit pas la sécurité ; un nombre de combinaisons ne donne pas un temps réel de devinette.

La longueur doit être un entier de 4 à 128 et au moins un type de caractère doit être sélectionné. Une longueur fractionnaire, hors limites ou aucun type sélectionné produit une erreur. Accepter quatre caractères ne signifie pas que quatre soit un minimum sûr. NIST SP 800-63B-4 exige des vérificateurs relevant de son champ des mots de passe d’au moins 15 caractères en authentification à un seul facteur, et huit lorsqu’ils font partie d’une authentification multifacteur. Ce ne sont pas des règles de saisie universelles pour tous les sites.

NIST SP 800-63B-4 : Exigences du vérificateur de mot de passe

Faites la distinction entre l'enregistrement et l'effacement de l'écran après la création.

  1. Vérifiez la longueur autorisée et les conditions de caractères pour le service que vous utiliserez. La longueur par défaut de Moyoutil est de 20 et vous pouvez ajuster la longueur et le type.
  2. Générez un nouveau mot de passe avec les réglages actuels. Un changement efface le résultat précédent et désactive la copie ; cliquez à nouveau sur le bouton de génération.
  3. Utilisez des mots de passe différents pour chaque site et conservez-les dans un gestionnaire de mots de passe. Cet outil ne fournit pas de coffre-fort de mots de passe ni de fonctionnalité de connexion au service.
  4. L'effacement des résultats de l'écran vide l'écran, mais ne supprime pas le contenu copié du presse-papiers. Vérifiez séparément l’état du presse-papiers et des appareils partagés.

NIST SP 800-63B-4 : gestionnaires de mots de passe et mots de passe spécifiques aux services

Actuellement, les résultats générés ne sont ni envoyés ni stockés sur le serveur d'outils. Cependant, il ne bloque pas les extensions qui lisent les entrées et le presse-papiers, ni les attaques de phishing provenant d'appareils et de comptes partagés. N'utilisez pas l'exemple de chaîne publié comme mot de passe réel de votre compte.

Questions fréquemment posées

Est-il sécuritaire de sélectionner tous les caractères spéciaux ?

Les types de caractères ne déterminent pas seuls la sécurité. Vérifiez les exigences du service, une longueur suffisante, des mots de passe distincts par service et leur stockage sûr.

Cet article vérifie-t-il la qualité des nombres aléatoires du navigateur ?

Non. Nous avons énuméré une petite plage et reproduit la limite de rejet de la fonction du projet. Nous n’avons mesuré ni l’entropie du navigateur ni le temps nécessaire pour deviner un mot de passe.