Información
Actualidad
Aquí encontraras noticias de actualidad sobre Gnu Linux y Open Source.

Además de información sobre la comunidad LiGNUx.
Distribuciones y entornos
Información ordenada sobre los diferenes sistema operativos Gnu Linux y las diferentes opciones de entornos gráficos.
Tutoriales y guías
Todos los pasos e informaciones que puedes desear para tu día a día.
Tutoriales
Tutoriales
Programación
Programación
About Us
Get to know the people behind the code and the mission behind the work
how we handle data
Privacy
Security
Legal

Crea tu propio gestor de contraseñas

26 septiembre, 2016

KeePassX y otras aplicaciones pueden servir bastante a la hora de almacenar varias contraseñas de manera segura, esto es conveniente si te inicias en el mundo de la seguridad y quieres mantener tus invaluables contraseñas lejos de los ojos curiosos, pero como novato puede costarte mucho.

Varias aplicaciones son tan complejas que resulta difícil para un usuario normal analizar el código fuente y verificar por ti mismo que hace solamente lo que promete.

Cuando por fin le quité a mi navegador la tarea de recordar contraseñas, buscaba una alternativa bastante eficiente, como fanática del minimalismo, decidí crear un rudimentario sistema para almacenar unas cuantas contraseñas.

Básicamente tengo dos maneras de guardar mis contraseñas, una forma es el archivo cifrado y otra es un script, vamos a ver como crear y usar ambos.

Archivo cifrado con GPG

Meditando varias ideas se me ocurrió una que involucraba temas que en esos momentos estaba estudiando. Tenia entre manos un manual de UNIX y leía sobre los permisos. Cuando me cae la idea, como un rayo de luz en la oscuridad: porque no crear un archivo de texto con las contraseñas y nombres de usuario en texto plano y cifrar ese archivo con GPG.

La rudimentaria idea estuvo varios días en mi cabeza, tratando de econtrar mejorarla o ver algún problema que tendría con ella al usarla. Decidí darle una oportunidad y me ha funcionado hasta ahora de manera segura.
Estos  son los pasos para crear nuestro archivo, puedes probarlo sin problemas en una máquina con GNU/Linux o MacOS:

Creamos un archivo vacío: $touch test

Abrimos dicho archivo para ingresar los datos: $nano test

fichero

Ingresamos un par de datos, como ejemplo podemos escribir el nombre de algún servicio y enseguida el nombre del usuario y la contraseña, voy a escribir twitter como servicio, usuario es "usuario" y la contraseña es "1234"
Si quieres hacerlo un poco más estilizado puedes crear tablas, tabulaciones, etc.

Guarda los cambios y cierra nano para liberar el archivo, ahora vamos a cifrarlo, puedes optar por guardarlo con o sin extensión txt, UNIX reconocerá que es un fichero de texto.

cifrando

Para cifrar el archivo escribe: $gpg --cipher-algo AES256 --symmetric test

Ahora ingresa una contraseña fácil de recordar pero lo suficientemente fuerte para evitar que el archivo pueda ser roto por fuerza bruta. El archivo creado será un fichero cifrado con el algoritmo AES256, algo lo suficientemente robusto para garantizar la seguridad con una contraseña fuerte.

Una vez tengamos el archivo cifrado creado tenemos dos archivos test en el directorio donde estamos trabajando: un archivo texto plano llamado "test" y otro archivo llamado "test.gpg"

Procedemos a borrar de manera segura el archivo en texto plano: $shred -uvz test

borrando

Esto es para evitar que pueda ser encontrado durante un análisis profundo del sistema (por ejemplo un análisis forense), ya que el borrado común no borra totalmente ningún archivo, solo los oculta.

Ahora vamos a trabajar en el archivo "test.gpg", vamos a quitarle los permisos de escritura y ejecución, solo dejamos con permisos de lectura: $chmod -x -w test.gpg

Verificamos los cambios de permisos con el comando $ls -l, la salida debe verse de esta manera:
-r--r----- 1 denisse denisse  126 sep 23 21:49 test.gpg

Ahora vamos a ver el contenido del archivo cifrado para verificar que se ha guardado correctamente:
$gpg -d test.gpg

mostrando
Debe mostrarse a la salida el contenido del archivo con los nombre de usuario y las contraseñas.

Algo opcional que puedes hacer es crear un alias para el archivo y acceder a él solamente con un comando. Ubica el archivo en home o el directorio de tu preferencia, en el archivo .bashrc escribe:
"alias contrasenas='gpg -d /home/usuario/test.gpg'

No olvides crear una copia de seguridad del archivo test.gpg en un medio extraible o disco duro externo cifrado. Incluso puedes subirlo en la nube si confías en lo robusto de tu contraseña maestra, recuerda que la nube son las computadoras de otras personas, no quieres darle un archivo con todas tus contraseñas en sus manos.

Con esto ha terminado el primer mini gestor de contraseñas rudimentario, el inconveniente es al momento de querer agregar más contraseñas o modificar alguna ya incluida, ya que tenemos que desencriptar el archivo y guardar la salida en texto plano, hacer los cambios, volver a cifrar y es un lío.

Script gestor de contraseñas

La segunda opción es un poco más sofisticada porque le deja el trabajo duro (comandos, generación de contraseñas, cifrado, etc) a un script, nosotros ahora solo nos preocupamos por ingresar las contraseñas y usuarios que queramos y que estén disponibles de manera rápida. El código fuente completo en bash está en este repositorio en GitHub.

Para usarlo descarga el repositorio clonando con $git clone o desde la página de GitHub bajando el archivo ZIP.
Una vez descargado y descomprimido vamos al directorio del proyecto y vemos que consta de varios archivos, el importante se llama "pwd.sh"

Abrimos el archivo para darle un vistazo rápido al código con $nano pwd.sh o tu editor favorito. Yo prefiero abrirlo con Sublime Text para resaltar los colores del script bash y entenderlo más fácil.

En las primeras lineas vemos safe="${PWDSH_SAFE:=pwd.sh.safe}" significa que pwd.sh.safe es un archivo de tipo GPG donde se guardan las contraseñas.

source code mini password manager

Explorando más del código vemos que tiene las siguientes funciones:

get_pass ()
Aqui lee las contraseñas que vamos a ingresar

decrypt ()
Es para descifrar la clave maestra

encrypt ()
Crea la contraseña maestra

read_pass ()
Lee las contraseñas que vamos a guardar preguntando también por el nombre de usuario relacionado

gen_pass ()
Podemos generar una contraseña segura o introducir la propia si tenemos nombre de usuario y contraseña ya definidos

write_pass ()
Escribir la contraseña de manera segura, se ocupa de ofuscar la contraseña introducida para evitar revelarla a ojos curiosos

create_username ()
Crea el usuario y contraseña a guardar

Para usar el archivo mini gestor de contraseñas primero damos permiso de ejecución al script con: $chmod +x pwd.sh y ahora podemos ejecutarlo con ./pwd.sh
La salida es la siguiente:

ejecucion

En la imagen anterior hemos creado una usuario llamado test y hemos generado una contraseña segura, se ha guardado en el archivo seguro y está protegido con la clave maestra 1234, recuerda crear una clave robusta y fácil de recordar para evitar que tus contraseñas sean robadas.

Tratar de obtener por fuerza bruta llevaría días con una contraseña débil y un buen poder de procesamiento. El algoritmo de cifrado que usa GPG es CAST5, es seguro y robusto.

Recuerda hacer una copia de seguridad del script y del archivo pwd.sh.safe, guardándolos en un disco duro externo cifrado o una unidad extraible. No está de más tener mucho cuidado con la administración de tus contraseñas, usar diferentes para cada servicio.

No recomiendo usar este método o el anterior si manejas información muy sensible, recuerda que lo más seguro es mantener la contraseña en tu mente, por ahora.

Escrito por Denisse

Edward Snowden es mi novio <3

Suscribirse
Notificarme las
guest
11 Comentarios
Los más recientes
Los más antiguos Más votados
Feedbacks en línea
Ver todos los comentarios
LiGNUx trabaja sobre una licencia de Creative Commons Reconocimiento 4.0 Internacional.
cloudflagpaperclipprinterfile-emptyfilm-playcamera-videopicturelaptop-phonebriefcasecrossmenu
linkedin facebook pinterest youtube rss twitter instagram facebook-blank rss-blank linkedin-blank pinterest youtube twitter instagram