Age es una herramienta de cifrado, un formato de archivo y una librería desarrollada en Go. Repositorio oficial del proyecto Age.
En torno a este proyecto han surgido utilidades y otras implementaciones como rage, una herramienta de cifrado desarrollada en Rust compatible con age. Repositorio oficial de Rage.
Ambas están orientadas a hacer más sencillo el cirado de información mediante un sistema de llaves públicas y privadas. En mi caso he estado probando rage en entornos Linux, FreeBSD y OpenBSD para cifrado de archivos que sincronizo en mi nube. Casi todos los comandos, si no todos, que componen rage están implementados también en age.
Nota previa: rage utiliza pinentry, si está instalado, para mostrar el prompt de la contraseña. Age no lo utiliza en su última versión.
Aunque rage se puede usar también con llaves ssh para el cifrado y decodificado, podemos generar un par de llaves pública y privada con el comando
rage-keygen -o llave.txt
Clave pública: age1apdp0zkr3pqs0kz4r62x0lg00sms9xhe9xf9p5q5rhfc6jd7qq8qjr2scu
cat llave.txt
# creada: 2024-06-23T18:52:02+02:00
# clave pública: age1apdp0zkr3pqs0kz4r62x0lg00sms9xhe9xf9p5q5rhfc6jd7qq8qjr2scu
AGE-SECRET-KEY-15W0MZWPZJ3YD7JXYYLV8N26DPU7NX9UJT0CVQT5LSM03X7W34AXS4AU03V
La acción por defecto de rage es cifrar los ficheros, por lo que no es necesario especificar la opción "-e", aunque la voy a poner en los ejemplos para que se vea más claro.
Podemos cifrar indicando las llaves públicas de dos formas: introduciéndola en el comando:
rage -e -r age1apdp0zkr3pqs0kz4r62x0lg00sms9xhe9xf9p5q5rhfc6jd7qq8qjr2scu fichero.txt -o fichero.age
cat fichero.age
age-encryption.org/v1
-> X25519 pxTn67huDq6SRNO/BRZCzNphu970Ed+auxFwpMt/kgU
SJH415MhxqffE7PbZdCbDoeHNJ6gK+1ca9gqSY75ZKQ
-> puce-grease O/}?cGx9 Rh qVN
zjdrqlwHZAL0RGw8tbTIUFNoDQ
--- rqJwEmcH68YzBr4a/q7R8Nv0igw4Dd0LPSU2q6hiIz0
�2�=�R]�f��}���S��QP%Dqd���ԔTO����
��j�DX�����ďdC�����=��)M� %
O guardando las llaves en un fichero de texto, una llave por línea:
rage -e -R llaves.txt fichero.txt -o fichero.age
Los parámetros "-r" y "-R" se pueden repetir en la misma línea de comando.
Para decodificar usando nuestra llave privada es tan sencillo como en los ejemplos anteriores:
rage -d -i llave.txt fichero.age -o fichero.txt
cat fichero.txt
Esta es una prueba de cifrado con rage/age
Rage también permite el cifrado simétrico mediante una contraseña:
rage -p fichero.txt -o fichero.simetrico.age
# Aquí pinentry me ha pedido la contraseña
cat fichero.simetrico.age
age-encryption.org/v1
-> scrypt 6QadM2Z8jEP0BKFGxTSaVA 17
Bz/MaBXRdeEU6f2UeFRjBZD3NtNXOW1G6nhze+M7PfA
--- cRL0jZX0aPrKvsCwyjR7xy0S8oD6Qds757j8wL8Ibwg
�V�L�V�G'U�Tΰ�N���WR�i���
��J���x�
����8@�j���"�B���l0&Q���e�,%
Rage detecta cuando un fichero tiene cifrado simétrico por lo que no es necesario añadir ningún tipo de parámetro:
rage -d fichero.simetrico.age
# Aquí pinentry me ha pedido la contraseña
Esta es una prueba de cifrado con rage/age
Si no especificamos un fichero de salida con el parámetro "-p" nos muestra el resultado por pantalla.
Y, obviamente, podemos combinar los dos métodos cifrando de forma simétrica nuestra llave privada:
rage -p llave.txt -o llave.age
# Aquí pinentry me ha pedido la contraseña
rage -d -i llave.age fichero.age
# aquí nos ha pedido contraseña
Esta es una prueba de cifrado con rage/age
Existe un último repositorio donde hay enlaces a implementaciones que utilizan age como base:
=> https://github.com/FiloSottile/awesome-age Awesome age
For any feedback or corrections, please write in to: jdrm@disroot.org