Finalizado el proceso de alta, la única barrera que protege a nuestros datos confidenciales de la curiosidad ajena es dicha contraseña. Por ello, dicha contraseña debería ser elegida con toda la cautela y el máximo recelo posible, puesto que todos conocemos las consecuencias de exponer información sensible y los peligros que eso conlleva.
Para elegir una contraseña segura, hay que tener en cuenta algunas recomendaciones de lo mas básicas:
- Debe ser fácil de recordar pero difícil de adivinar
- Es obligatorio usar un mínimo de 8 caracteres
- Debe combinar letras con dígitos numéricos
- No debe utilizarse la misma contraseña para acceder a distintos servicios online
- No deben utilizarse palabras que aparezcan en un diccionario
La gente acumula cuentas de usuario en distintos servicios online. Con el paso del tiempo tienden a olvidar las contraseñas elegidas. Para evitar ese olvido, muchos optan por elegir contraseñas fáciles de adivinar, basadas en su propio nombre, edad, fecha de nacimiento, dni, matricula de tu coche, profesión, comida favorita, el nombre de tu perro o de tu gato, etc. Y muchas veces esa misma contraseña fácil de recordar, se utiliza en todos y cada uno de los servicios online registrados. Podéis imaginaros la dimensión del problema.
En este post se propone un método para resolver este problema.
La solución propuesta se basa en dos inputs que combinados adecuadamente mediante un algoritmo que definiremos nosotros mismos, generan como output la contraseña segura.
f_algoritmo_secreto(servicio_online, semilla) = contraseña
Como inputs tendremos el nombre identificativo del servicio online donde estamos registrando la cuenta, y una semilla secreta única para todas nuestras contraseñas. El algoritmo combina los dos inputs para obtener como output la contraseña segura.
Vamos a explicar todo esto con un ejemplo sencillo para que se entienda mejor. Sea f_algoritmo_secreto una función que concatena las cadenas semilla y servicio_online, aplicando la función de hash md5 sobre el resultado de su concatenación, y del md5 resultante extrae los 10 primeros caracteres como contraseña de salida. Sea "supersecreto" la cadena semilla. Veamos algunos ejemplos de aplicación con distintos servicios online:
Portal gmail --> md5sum[ "gmailsupersecreto" ] = 6037becb2f
Portal facebook --> md5sum[ "facebooksupersecreto" ] = ca713f6ce3
Maquina amd64 --> md5sum[ "amd64supersecreto" ] = ea816a9399
Por tanto, el password para la cuenta de gmail sería "6037becb2f", para la cuenta de facebook sería "ca713f6ce3" y para la cuenta en la maquina amd64 sería "ea816a9399". Como veis se trata de passwords dificiles de memorizar incluso para aquellos que estuvieran mirando vuestro teclado mientras pulsais las teclas.
Aqui teneis un sencillo bash shell script que os resuelve el problema sin mayor complicación:
#! /bin/bash
echo -ne "Online service: "
read READ
stty -echo
read -p "Supersecret seed: " SEED
echo -ne "\n"
stty echo
echo -ne "$READ$SEED" | md5sum | cut -b 1-10
El secreto del método reside tanto en el algoritmo_secreto como en la cadena semilla.
Aunque el algoritmo_secreto cayera en manos ajenas, el método continúa protegido por la semilla. Esta semilla deberíais interiorizarla como si fuera vuestro propio nombre, tendrían que torturaros para obtenerla (aunque ojito por donde viajais :-) Pero obviamente es mas fácil recordar esa semilla que todas y cada una de las distintas contraseñas de los distintos servicios online en los que tenemos alguna cuenta registrada.
Este método (y cualquier variante basada en el mismo principio) cumple todas y cada una de las recomendaciones básicas que se han enumerado al comienzo de este post para garantizar la elección de una contraseña segura.
Quede claro que se trata de una propuesta concreta para explicar el método con un ejemplo. No os recomiendo en absoluto que uséis este mismo método tal y como esta publicado. Así que ¡aya vosotros! que este mismo método ya lo conocen todos los lectores de este blog! ;) Aunque con pequeñas modificaciones debería ser sencillo adaptarlo a vuestras propias necesidades personales.