Generador de contraseñas aleatorias


Un generador de contraseñas aleatorias es un programa de software o dispositivo de hardware que toma la entrada de un generador de números aleatorios o pseudoaleatorios y genera automáticamente una contraseña . Las contraseñas aleatorias se pueden generar manualmente, usando fuentes simples de aleatoriedad como dados o monedas, o se pueden generar usando una computadora.

Si bien hay muchos ejemplos de programas de generación de contraseñas "aleatorias" disponibles en Internet, generar aleatoriedad puede ser complicado y muchos programas no generan caracteres aleatorios de una manera que garantice una seguridad sólida. Una recomendación común es utilizar herramientas de seguridad de código abierto siempre que sea posible, ya que permiten verificaciones independientes de la calidad de los métodos utilizados. Tenga en cuenta que simplemente generar una contraseña al azar no garantiza que la contraseña sea segura, porque es posible, aunque muy poco probable, generar una contraseña fácil de adivinar o descifrar. De hecho, no es necesario que una contraseña haya sido producida por un proceso perfectamente aleatorio: solo debe ser lo suficientemente difícil de adivinar.

Un generador de contraseñas puede formar parte de un administrador de contraseñas . Cuando una política de contraseñas impone reglas complejas, puede ser más fácil utilizar un generador de contraseñas basado en ese conjunto de reglas que crear contraseñas manualmente.

Las cadenas largas de caracteres aleatorios son difíciles de memorizar para la mayoría de las personas. Los hash mnemónicos , que convierten de forma reversible cadenas aleatorias en contraseñas más memorables, 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 tanta información como la cadena original. [1] Se utilizan técnicas similares en el deporte de la memoria .

Aquí hay dos ejemplos de código que un programador que no está familiarizado con las limitaciones de los generadores de números aleatorios en las bibliotecas de programación estándar puede implementar:

En este caso, la función C estándar rand , que es un generador de números pseudoaleatorios , se siembra inicialmente usando el tiempo de funciones C , pero las iteraciones posteriores usan rand en su lugar. De acuerdo con el estándar ANSI C, el tiempo devuelve un valor de tipo tiempo t , que está definido por la implementación, pero más comúnmente un entero de 32 bits que contiene el número actual de segundos desde el 1 de enero de 1970 ( ver: tiempo Unix ). Hay alrededor de 31 millones de segundos en un año, por lo que un atacante que conoce el año (un asunto simple en situaciones en las que la política de contraseñas exige cambios frecuentes de contraseña ) y el ID del procesocon el que se generó la contraseña, enfrenta un número relativamente pequeño, según los estándares criptográficos, de opciones para probar. Si el atacante sabe con mayor precisión cuándo se generó la contraseña, se enfrenta a un número aún menor de candidatos para probar, una falla grave en esta implementación.