Si reemplaza 8 números con 3 letras, la cantidad de veces cambiará.
Supongamos que los enteros del 0 al 7 tienen la misma probabilidad. Al usar el resto de dividir por 3 como índice, los restos 0 y 1 aparecen tres veces cada uno, y el 2 dos veces. Una distribución uniforme de entrada no produce aquí restos uniformes: es el sesgo de módulo.
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 rechazas los dos últimos números obtienes el mismo número de veces.
Rechaza 6 y 7 y solicita un nuevo número. Entre los valores aceptados, del 0 al 5, cada resto aparece dos veces. Si los números originales son uniformes, esto elimina el sesgo en el rango aceptado. No se reutiliza el número rechazado.
randomInt de Moyoutil llena Uint32Array(1) mediante crypto.getRandomValues. Divide 2^32 entre el número de opciones, redondea hacia abajo y multiplica por ese mismo número de opciones para obtener el límite. Rechaza los valores mayores o iguales al límite y solicita otro número. Para tres opciones, el límite es 4294967295 y solo se rechaza el valor máximo.
Math.floor(4294967296 / 3) * 3
// 4294967295
// accept: 0 through 4294967294
// reject: 4294967295W3C Web Cryptography: getRandomValues
La documentación de Criptografía web especifica que getRandomValues genera números aleatorios criptográficamente fuertes. La verificación en este artículo es para garantizar que el código del proyecto maneje los límites de rechazo y no sea una auditoría de la entropía del sistema operativo o implementaciones específicas de números aleatorios del navegador.
Incluir tipos de caracteres difiere de elegir cada posición de forma independiente
La herramienta elige un carácter de cada tipo seleccionado, completa las posiciones restantes con el conjunto combinado y mezcla el orden. Cada tipo elegido aparece al menos una vez. Elegir solo mayúsculas y elegir los cuatro tipos son condiciones diferentes. Esto no garantiza la seguridad ni permite convertir una cantidad de combinaciones en un tiempo real de adivinación.
La longitud debe ser un entero de 4 a 128 y hay que seleccionar al menos un tipo de carácter. Una longitud fraccionaria, fuera de rango o ningún tipo seleccionado produce un error. Admitir cuatro caracteres no significa que cuatro sea un mínimo seguro. NIST SP 800-63B-4 exige a los verificadores incluidos en su ámbito contraseñas de al menos 15 caracteres para autenticación de un solo factor y ocho cuando forman parte de la autenticación multifactor. No son reglas de entrada universales para todos los sitios.
NIST SP 800-63B-4: Requisitos del verificador de contraseñas
Distinga entre guardar y borrar la pantalla después de la creación.
- Verifique la longitud permitida y las condiciones de caracteres para el servicio que utilizará. La longitud predeterminada de Moyoutil es 20 y puede ajustar la longitud y el tipo.
- Genera una nueva contraseña con la configuración actual. Cambiar un ajuste borra el resultado anterior y desactiva la copia; pulsa el botón de generar otra vez.
- Utilice contraseñas diferentes para cada sitio y guárdelas en un administrador de contraseñas. Esta herramienta no proporciona una bóveda de contraseñas ni una función de inicio de sesión de servicio.
- Al borrar los resultados de la pantalla, la pantalla queda en blanco, pero no elimina el contenido copiado del portapapeles. Verifique el estado del portapapeles y de los dispositivos compartidos por separado.
NIST SP 800-63B-4: administradores de contraseñas y contraseñas específicas de servicios
Actualmente, los resultados generados no se envían ni se almacenan en el servidor de herramientas. Sin embargo, no bloquea las extensiones que leen la entrada y el portapapeles, ni los ataques de phishing desde dispositivos y cuentas compartidos. No utilice la cadena de ejemplo publicada como contraseña de su cuenta real.
Preguntas frecuentes
¿Es seguro seleccionar todos los caracteres especiales?
Los tipos de caracteres no bastan para determinar la seguridad. Revisa los requisitos del servicio, una longitud suficiente, contraseñas distintas para cada servicio y su almacenamiento seguro.
¿Este artículo verifica la calidad de los números aleatorios del navegador?
No. Enumeramos un rango pequeño y reproducimos el límite de rechazo de la función del proyecto. No medimos la entropía del navegador ni el tiempo necesario para adivinar una contraseña.