trustword: Un pequeño programa para cifrar, firmar y el mantenimiento de claves

Iniciado por DtxdF, Enero 31, 2021, 10:19:25 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Trustword es un programa muy simple para la firma, el cifrado y el mantenimiento de claves para facilitar y fortalecer una comunicación segura. Usa internamente (gracias a No tienes permitido ver los links. Registrarse o Entrar a mi cuenta) para el cifrado XSalsa20, y en el caso de la criptografía asimétrica, se complementa con el intercambio de claves X25519. Y para la firma digital Ed25519ph con SHA512. En el caso del almacenamiento de contraseñas usa No tienes permitido ver los links. Registrarse o Entrar a mi cuenta.


Dependencias:

Usando el gestor de paquetes de nuestro sistema, podremos instalar las siguientes dependencias que harán funcionar a trustword:


  • gcc (recomendado) o clang (no probado)
  • cmake
  • openssl
  • libsodium
  • argon2
  • sqlite3

Arch Linux:

Código: bash
sudo pacman -S base-devel cmake openssl libsodium argon2 sqlite3


Debian:

Código: bash
sudo apt-get install libssl-dev libsqlite3-dev libsodium-dev libargon2-dev cmake make gcc


FreeBSD:

Código: bash
doas pkg install gcc cmake openssl libsodium libargon2 sqlite3


Instalación:

Ya habiendo instalado las dependencias correspondientes para nuestro sistema, es hora de realizar la instalación:

Código: bash
git clone https://github.com/UltraTesla/trustword.git
cd trustword
chmod +x dependences.sh
./dependences.sh
sudo chown <Tu nombre de usuario>:<Tu grupo> ~/.trustword
trustword --help


Tutorial:

Antes que nada es necesario generar nuestro par de claves, o en otras palabras, la clave pública, la secreta, la del firmado, y la de verificación. Afortunadamente es tan fácil como ejecutar un comando con la información necesaria:

Código: bash
trustword -g --user [Nombre de usuario] --password [Contraseña]


Recordando que si no se ajustara un nombre de usuario conveniente, trustword usaría el valor de la variable de entorno USER.


Resultado de generar las claves

Una vez generadas, es posible, nuevamente con un simple comando, visualizar todas las claves de nuestro sistema:

Código: bash
trustword -l



Las claves que están en nuestro sistema

Algo peculiar de trustword es que no almacena los nombres de usuarios tal cual se escriben, más bien guarda la suma de verificación (SHA3_224(), específicamente) con el propósito de agregar un extra de confidencialidad. La contra de este método de almacenamiento es que se necesita conocer de antemano el nombre de usuario del remitente y del destinatario, por lo que podría dificultar el mantenimiento.

Pero qué mejor forma de demostrar lo que digo que importando la clave pública y de nuestro compañero @Kirari:


Código: bash
trustword -i [Ruta de la clave] --hash [Huella dactilar]



Importando la clave de nuestro compañero

Una vez le compartimos nuestra clave pública (y de verificación, en caso de ser necesario) tendremos la posibilidad de comunicarnos de forma segura con la otra parte a tratar, pero primero hay que exportar nuestra clave pública correspondiente, ya sea en binario, o en formato hexadecimal (usando el parámetro -h), siendo este último una muy buena opción en caso de no poder distribuir la clave como un archivo.

Código: bash
trustword -e --user [Nombre de usuario]



Exportando mi clave pública

Para importar una clave en trustword es necesario indicar, además de la clave, su huella dactilar. Una muy útil forma de verificar que la clave a importar sea la del usuario correspondiente y también verifica que no se haya modificado en el transcurso.

Una vez hecho el apretón de manos con nuestra otra parte, es posible cifrar.


Código: bash
./trustword -C [Nombre del archivo a cifrar] --from [Nombre de usuario - origen] --to [Nombre de usuario - destino] --password [Contraseña de la clave secreta del usuario de origen]



Cifrando el mensaje para nuestro compañero

Tal vez surga la duda de por qué trustword necesita de la contraseña que usamos en la generación del par de claves. Pues es una sencilla cuestión: trustword almacena la clave secreta y de firmado cifrada para que un atacante al obtener la base de datos, en caso de un ataque, no pueda obtener su contenido.


Descifrando el mensaje de nuestro compañero

Siguiendo con el tema de cifrado. Si el usuario no desea generar su par de claves, está la posibilidad de usar el cifrado simétrico, lo cual implica que las dos partes sepan de antemano la contraseña para el cifrado y descifrado.

Código: bash
./trustword -k [Nombre del archivo a cifrar] --password [Contraseña]



Vídeo:

Nuestro compañero @Kirari realizó un vídeo para el que desee ver una demostración visual de la herramienta:


~ DtxdF
Los seres humanos son robots, cuyo combustible es el afanado dinero.

Excelente tutorial y herramienta compañero, estaremos pendientes a nuevos cambios.   ;D

Es un gusto haber ayudado en la misma . :D

Saludos!
-Kirari


@No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Excelente aporte!!!! para usar lejos de IRC. XD

Al malvado @No tienes permitido ver los links. Registrarse o Entrar a mi cuenta se agradece el video, pero ya me explicarás sobre big sister.

Estupendo trabajo, y contribución propia a la comunidad.

Saludos

Gabriela


Tú te enamoraste de mi valentía, yo me enamoré de tu oscuridad; tú aprendiste a vencer tus miedos, yo aprendí a no perderme en tu abismo.

Un placer @No tienes permitido ver los links. Registrarse o Entrar a mi cuenta y @No tienes permitido ver los links. Registrarse o Entrar a mi cuenta. Y muchas gracias a nuestro compañero por el vídeo.

~ DtxdF
Los seres humanos son robots, cuyo combustible es el afanado dinero.