Esta página genera contraseñas que son criptográficamente seguras. Las contraseñas se generan en el navegador y no se almacenan por lo que nadie que no esté viendo la pantalla tiene acceso a ellas.
La clave para que una contraseña sea segura es que sea difícil de predecir. Los lenguajes de programación tienen funciones para la generación de números aleatorios. Pero los algoritmos que emplean generan secuencias pseudoaleatorias; no son totalmente aleatorias y son, por tanto, más predecibles. La criptografía acude al rescate proporcionando algoritmos que "rompen" los patrones y proporcionan secuencias mucho más aleatorias. Suficientemente aleatorias como para generar buenas contraseñas aleatorias.
Una contraseña segura es aquella que un atacante no puede precedir, para la que no hay un atajo que permita saltarse distintas combinaciones. La contraseña ideal sólo deja la posibilidad de un ataque de fuerza bruta que obliga a probar una por una todas las posibilidades. Por tanto, una buena contraseña debe ser aleatoria, realmente aleatoria. Una vez se garantiza su aleatoriedad, la seguridad que proporciona será una función de las combinaciones que obliga a generar para atacarla. Por tanto, cuanto más rico sea el juego de caracteres empleado y más larga sea la contraseña, más segura será.
La opción por defecto de nuestro generador maneja números, símbolos, mayúsculas y minúsculas, asegurándose de que hay al menos un caracter de cada tipo (clave para dar más seguridad a las contraseñas muy cortas); su longitud por defecto son dieciséis caracteres. Entropía suficiente para que un ataque vía fuerza bruta tenga que probar una cantidad astronómica de posibilidades. Unido a que la generación se realiza en el navegador y no en nuestro servidor (la contraseña sólo la verá el usuario o alguien que esté mirando a su pantalla), proporciona un medio de obtener contraseñas seguras de manera rápida y sencilla.
Las peores contraseñas son aquellas que son fáciles de predecir. Un número de identificación, una fecha clave, una dirección, una combinación pobre de números o letras, son ejemplos de malas contraseñas. También aquellas que se basan en palabras comunes que se pueden encontrar en un diccionario. Incluso si se emplean varias palabras, siempre será más sencillo probar con combinaciones de palabras que con todas las posibilidades de una secuencia de caracteres aleatorios. Cualquier atacante puede investigar un poco y obtener datos de su objetivo para vulnerar una mala contraseña con facilidad.
Cuando se emplea la misma contraseña reiteradamente, aunque se trate de una contraseña segura, se facilita su vulneración. Son varios los motivos. El primero es que una contraseña que se teclea a menudo es más fácil de captar para un atacante que esté próximo. El segundo es que una contraseña muy segura puede ser vulnerada si se vulnera el sistema en el que se emplea. Empresas muy conocidas han sido objeto de ataques que han logrado vulnerar su seguridad. El resultado es que hay listas de contraseñas vulneradas que permiten a un atacante probar con ellas y saltarse la seguridad con facilidad. No importa si eran buenas contraseñas. Una vez obtenidas, el acceso a ellas es "público" y si se siguen empleando ya no serán seguras. Por eso es importante utilizar contraseñas diferentes y seguras para distintos cometidos. De este modo, aunque una sea vulnerada, las demás seguirán siendo seguras.
Hay sistemas que, buscando dar una mayor seguridad, obligan a sus usuarios a cambiar las contraseñas con frecuencia. Si cada cambio de contraseña emplea una nueva contraseña segura, se mejora la seguridad. Pero en muchos casos la alternativa es utilizar un patrón para modificar la contraseña anterior y generar una nueva de manera fácil de recordar. Este hábito, completamente comprensible, convierte una medida que debería mejorar la seguridad en todo lo contrario. Por tanto, si un sistema obliga a cambiar la contraseña, cada nueva contraseña debe ser segura. Una forma de garantizarlo es generando una nueva contraseña de forma aleatoria cada vez. Es tedioso, pero seguro...
Cuando se emplea una contraseña para acceder a una página web, es importante comprobar que la conexión con el sitio remoto está utilizando el protocolo "https". Si es así, la comunicación entre los dos extremos será "segura" y todo el tráfico intercambiado estará encriptado. Este tipo de conexiones son muy seguras y garantizan que los elementos de red que permiten la comunicación entre los extremos, no verán otra cosa que el tráfico encriptado. De lo contrario, cabría la posibilidad de que un intermediario en el transporte de los datos "man in the middle" pudiera acceder a éstos. Por ejemplo, al inicio de una conexión es frecuente que el usuario se identifique, pongamos que tecleando su usuario y contraseña. Si la conexión es segura, estos datos no podrán ser captados fácilmente.
Lamentablemente, las contraseñas más seguras son secuencias aleatorias de muchos caracteres. Esto las hace muy difíciles de recordar, sobre todo si son largas. También complica la "misión" de teclearlas cuando es necesario. Sin entrar en detalles concretos, existen multitud de utilidades que permiten almacenar contraseñas de manera segura. En el peor de los casos, un fichero encriptado donde consultarlas siempre será mejor que dejarlas apuntadas en algún lugar visible. Las mejores utilidades deben funcionar en el mismo dispositivo donde se teclearán las contraseñas, de modo que todo sea cuestión de "copiar y pegar". Los navegadores también proporcionan hoy día medios para generar o recordar contraseñas. Si se emplean estos medios, lo ideal es utilizar una contraseña diferente para cada uso. Considerar también el memorizar (y no apuntar) las contraseñas que protegen aquellos activos que son clave (como la lista de contraseñas).
La seguridad suele basarse en algo que "sé", algo que "tengo" o algo que "soy". Algo que sé es el ejemplo típico de un PIN o contraseña. Algo que tengo es el ejemplo habitual de un carnet, una tarjeta de acceso o de claves, o el propio teléfono móvil. Algo que "soy" emplea la biometría. Habitualmente la huella dactilar, aunque también la retina en sistemas sofisticados o nuestra cara más recientemente. La biometría aporta seguridad al tiempo que comodidad. Siempre llevamos con nosotros nuestras huellas y no tenemos que recordar nada. Pero, ¿qué pasa cuando se vulnera la seguridad biométrica? Si una contraseña se vulnera, podemos cambiarla. Pero no podemos cambiar nuestras huellas o nuestra cara. Así que cuidado, porque la biometría puede ser muy cómoda si tenemos la seguridad de que el sistema biométrico está leyéndola de la persona que tiene delante. ¿Y si no es así?
¿Se puede garantizar la seguridad con malas contraseñas? La respuesta es "sí". Hoy día se puede alcanzar un nuevo nivel de seguridad mediante la seguridad de "doble factor". Hablamos de utilizar dos capas de seguridad. Una suele basarse en algo que "sé" y la otra en algo que "tengo". Por ejemplo, primero se usa un par usuario/contraseña y luego recibo un SMS en el móvil con un PIN. Combinados hacen mucho más difícil la suplantación. Los sistemas bancarios tienden a emplearlos sin preguntarnos porque asumen que sus usuarios utilizan malas contraseñas o reutilizan el PIN de sus tarjetas. En otro tipo de sistemas tenemos la opción de activar este mayor nivel de seguridad. Ante la pregunta de si tiene sentido hacerlo, la respuesta, salvo en sistemas poco críticos donde la comodidad puede ser más importante, es siempre un rotundo "sí".