Age es una herramienta de cifrado, un formato de archivo y una librería desarrollada en Go. => https://github.com/FiloSottile/age 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. => https://github.com/str4d/rage 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. ## Generando una llave privada 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 ``` ## Cifrado asimétrico con rage 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. ## Decodificado asimétrico 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 ``` ## Cifrado simétrico con rage 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�,% ``` ## Decodificado simétrico 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 => articulos.gmi << Volver a artículos => index.gmi << Volver al inicio