Un generador de contraseñas aleatorias es un programa de software o un dispositivo de hardware que toma la información de un generador de números aleatorios o pseudoaleatorios y genera automáticamente una contraseña . Las contraseñas aleatorias se pueden generar manualmente, utilizando fuentes de aleatoriedad simples como dados o monedas , o se pueden generar utilizando una computadora.
Aunque existen muchos ejemplos de programas generadores de contraseñas "aleatorias" disponibles en Internet, generar caracteres aleatorios puede ser complicado y muchos programas no generan caracteres aleatorios de una manera que garantice una seguridad sólida. Una recomendación habitual es utilizar herramientas de seguridad de código abierto siempre que sea posible, ya que permiten realizar comprobaciones independientes de la calidad de los métodos utilizados. El simple hecho de generar una contraseña al azar no garantiza que sea una contraseña segura, porque es posible, aunque muy poco probable, generar una contraseña que sea fácil de adivinar o descifrar. De hecho, no es necesario que una contraseña se haya generado mediante un proceso perfectamente aleatorio: solo tiene que ser lo suficientemente difícil de adivinar.
Un generador de contraseñas puede ser parte de un administrador de contraseñas . Cuando una política de contraseñas aplica reglas complejas, puede resultar más fácil utilizar un generador de contraseñas basado en ese conjunto de reglas que crear contraseñas manualmente.
Para la mayoría de las personas, las cadenas largas de caracteres aleatorios son difíciles de memorizar. Los hashes mnemotécnicos , que convierten de manera reversible cadenas aleatorias en contraseñas más fáciles de recordar, pueden mejorar sustancialmente la facilidad de memorización. Como el hash puede ser procesado por una computadora para recuperar la cadena original de 60 bits, tiene al menos tanto contenido de información como la cadena original. [1] Se utilizan técnicas similares en el deporte de la memoria .
Los generadores de contraseñas aleatorias normalmente generan una cadena de símbolos de una longitud específica. Estos pueden ser caracteres individuales de algún conjunto de caracteres, sílabas diseñadas para formar contraseñas pronunciables o palabras de alguna lista de palabras para formar una frase de contraseña . El programa se puede personalizar para garantizar que la contraseña resultante cumpla con la política de contraseñas local, por ejemplo, produciendo siempre una combinación de letras, números y caracteres especiales. Estas políticas suelen reducir la solidez ligeramente por debajo de la fórmula que sigue, porque los símbolos ya no se producen de forma independiente. [ cita requerida ]
La fortaleza de una contraseña aleatoria contra un ataque particular ( búsqueda por fuerza bruta ) se puede calcular calculando la entropía de información del proceso aleatorio que la produjo. Si cada símbolo de la contraseña se produce de forma independiente y con probabilidad uniforme, la entropía en bits se da mediante la fórmula , donde N es el número de símbolos posibles y L es el número de símbolos en la contraseña. La función log 2 es el logaritmo de base 2 . H se mide típicamente en bits . [2] [3]
Cualquier generador de contraseñas está limitado por el espacio de estados del generador de números pseudoaleatorios utilizado, si se basa en uno. Por lo tanto, una contraseña generada con un generador de 32 bits está limitada a una entropía de 32 bits, independientemente del número de caracteres que contenga la contraseña. [ cita requerida ]
En Internet hay una gran cantidad de programas y sitios web generadores de contraseñas. Su calidad varía y puede ser difícil de evaluar si no hay una descripción clara de la fuente de aleatoriedad que se utiliza y si no se proporciona el código fuente para permitir que se verifiquen las afirmaciones. Además, y probablemente lo más importante, la transmisión de contraseñas candidatas a través de Internet plantea problemas de seguridad obvios, en particular si la conexión con el programa del sitio de generación de contraseñas no está protegida adecuadamente o si el sitio está comprometido de alguna manera. Sin un canal seguro , no es posible evitar las escuchas clandestinas, especialmente en redes públicas como Internet . Una posible solución a este problema es generar la contraseña utilizando un lenguaje de programación del lado del cliente como JavaScript. La ventaja de este enfoque es que la contraseña generada permanece en la computadora del cliente y no se transmite hacia o desde un servidor externo. [ investigación original? ]
La API de criptografía web es la recomendación del Consorcio World Wide Web (W3C) para una interfaz de bajo nivel que aumentaría la seguridad de las aplicaciones web al permitirles realizar funciones criptográficas sin tener que acceder a material de claves sin procesar. La API de criptografía web proporciona una forma confiable de generar contraseñas utilizando el crypto.getRandomValues()
método. Aquí se muestra el código Javascript simple que genera la contraseña segura utilizando la API de criptografía web. [4] [5]
Muchos sistemas informáticos ya cuentan con una aplicación (normalmente denominada "apg") para implementar el estándar de generación de contraseñas FIPS 181. [6] FIPS 181 (Generador Automático de Contraseñas) describe un proceso estándar para convertir bits aleatorios (de un generador de números aleatorios de hardware) en "palabras" más o menos pronunciables adecuadas para una frase de contraseña. [7] Sin embargo, en 1994 se descubrió un ataque al algoritmo FIPS 181, de modo que un atacante puede esperar, en promedio, entrar en el 1% de las cuentas que tienen contraseñas basadas en el algoritmo, después de buscar solo 1,6 millones de contraseñas. Esto se debe a la falta de uniformidad en la distribución de las contraseñas generadas, que se puede solucionar utilizando contraseñas más largas o modificando el algoritmo. [8] [9]
Otro método consiste en utilizar dispositivos físicos, como dados, para generar la aleatoriedad. Una forma sencilla de hacerlo es utilizar una tabla de caracteres de 6 x 6. La primera tirada de dados selecciona una fila de la tabla y la segunda una columna. Por ejemplo, si sale un 2 seguido de un 4, se seleccionará la letra "j" de la tabla de fraccionamiento que aparece a continuación. [10] Para generar caracteres en mayúsculas o minúsculas o algunos símbolos, se puede utilizar el lanzamiento de una moneda, cara en mayúscula y cruz en minúscula. Si se seleccionó un dígito en las tiradas de dados, un lanzamiento de moneda con cara puede seleccionar el símbolo que se encuentra por encima de él en un teclado estándar, como el "$" encima del "4" en lugar de "4".
{{cite journal}}
: Requiere citar revista |journal=
( ayuda )