Filippo Valsorda, criptógrafo responsable de la seguridad del lenguaje de programación Go en Google, ha publicado la primera versión estable de una nueva herramienta para el cifrado de datos: Age (Actually Good Encryption). Esta herramienta ofrece una interfaz de línea de comandos sencilla para cifrar archivos utilizando algoritmos criptográficos simétricos (basados en contraseñas) y asimétricos (basados en claves públicas). El código del proyecto está escrito en Go y se distribuye bajo la licencia BSD. Se han preparado compilaciones para Linux, FreeBSD, macOS y Windows.
Las funciones básicas se han trasladado a una biblioteca que se puede utilizar para integrar la funcionalidad proporcionada por la herramienta en sus programas. Además, en el marco del proyecto rage se desarrolla una implementación alternativa de una herramienta y biblioteca similares, escrita en Rust. Se utilizan algoritmos probados de cifrado como HKDF (HMAC-based Extract-and-Expand Key Derivation Function), SHA-256, HMAC (Hash-based Message Authentication Code), X25519, Scrypt y ChaCha20-Poly1305 AEAD.
Из особенностей Age выделяется: возможность использования компактных 512-битных открытых ключей, легко переносимых через буфер обмена; простой и не перегруженный опциями интерфейс командной строки; отсутствие файлов конфигурации; возможность использования в скриптах и в комбинации с другими утилитами через выстраивание цепочки вызовов в UNIX-стиле. Поддерживается как генерация собственных компактных ключей, так и использование существующих ключей от SSH («ssh-ed25519», «ssh-rsa»), включая поддержку файлов Github.keys. $ age-keygen -o key.txt Public key: age1ql3z7hjy58pw3hyww5ayyfg7zqgvc7w3j2elw2zmrj2kg5sfn9bqmcac8p $ tar cvz ~/data | age -r age1ql3z7hjy58pw3hyww5ayyfg7zqgvc7w3j2elw2zmrj2kg5sfn9bqmcac8p > data.tar.gz.age $ age —decrypt -i key.txt data.tar.gz.age > data.tar.gz $ age -R ~/.ssh/id_ed25519.pub example.jpg > example.jpg.age $ age -d -i ~/.ssh/id_ed25519 example.jpg.age > example.jpg
Hay un modo de cifrado de archivo para múltiples destinatarios, donde el archivo se cifra simultáneamente utilizando varias claves públicas y cada uno de los destinatarios en la lista puede descifrarlo. También se proporcionan herramientas para el cifrado simétrico de archivos basado en contraseñas y protección de archivos con claves privadas mediante su cifrado con una contraseña. Una característica útil es que si se introduce una contraseña vacía al cifrar, la herramienta generará automáticamente y ofrecerá una contraseña segura. $ age -p secrets.txt > secrets.txt.age Ingrese la frase de paso (deje vacío para autogenerar una segura): Usando la frase de paso autogenerada «release-response-step-brand-wrap-ankle-pair-unusual-sword-train». $ age -d secrets.txt.age > secrets.txt Ingrese la frase de paso: $ age-keygen | age -p > key.age Clave pública: age1yhm4gftwfmrpz87tdslm530wrx6m79y9f2hdzt0lndjnehwj0bkqrjpyx5 Ingrese la frase de paso (deje vacío para autogenerar una segura): Usando la frase de paso autogenerada «hip-roast-boring-snake-mention-east-wasp-honey-input-actress».
Entre los planes futuros se menciona la creación de un backend para el almacenamiento de contraseñas y servidores claves compartidas (PAKE), soporte para claves YubiKey, la posibilidad de generar claves fáciles de recordar en forma de un conjunto de palabras y la creación de la herramienta age-mount para montar archivos o archivos comprimidos cifrados en el sistema de archivos.
Fuente: opennet.ru
