Filippo Valsorda, criptógrafo responsável pela segurança da linguagem de programação Go no Google, publicou a primeira versão estável de uma nova ferramenta para criptografia de dados — Age (Actually Good Encryption). A ferramenta oferece uma interface simples de linha de comando para criptografar arquivos usando algoritmos criptográficos simétricos (com senha) e assimétricos (com chaves públicas). O código do projeto é escrito na linguagem Go e é distribuído sob a licença BSD. Compilações estão disponíveis para Linux, FreeBSD, macOS e Windows.
As funções básicas foram extraídas para uma biblioteca que pode ser usada para integrar a funcionalidade fornecida pela ferramenta em seus programas. Além disso, dentro do projeto rage, está em desenvolvimento uma implementação alternativa de uma ferramenta e biblioteca semelhantes, escritas na linguagem Rust. Para a criptografia, são utilizados algoritmos comprovados como HKDF (HMAC-based Extract-and-Expand Key Derivation Function), SHA-256, HMAC (Hash-based Message Authentication Code), X25519, Scrypt e 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
Há um modo de criptografia de arquivo para vários destinatários, onde o arquivo é criptografado simultaneamente usando várias chaves públicas e cada um dos destinatários na lista pode descrifrá-lo. Também são fornecidos recursos para criptografia simétrica de arquivos baseada em senha e proteção de arquivos com chaves privadas através de sua criptografia com uma senha. Uma característica útil é que, se durante a criptografia uma senha vazia for inserida, a ferramenta gera automaticamente e sugere uma senha segura. $ age -p secrets.txt > secrets.txt.age Digite a frase secreta (deixe em branco para autogerar uma segura): Usando a frase secreta autogerada «release-response-step-brand-wrap-ankle-pair-unusual-sword-train». $ age -d secrets.txt.age > secrets.txt Digite a frase secreta: $ age-keygen | age -p > key.age Chave pública: age1yhm4gftwfmrpz87tdslm530wrx6m79y9f2hdzt0lndjnehwj0bkqrjpyx5 Digite a frase secreta (deixe em branco para autogerar uma segura): Usando a frase secreta autogerada «hip-roast-boring-snake-mention-east-wasp-honey-input-actress».
Nos planos futuros, destaca-se a criação de um backend para armazenamento de senhas e servidor chaves compartilhadas (PAKE), suporte para chaves YubiKey, a capacidade de gerar chaves memorizáveis na forma de um conjunto de palavras e a criação de uma ferramenta age-mount para montar arquivos ou arquivos compactados criptografados em um sistema de arquivos.
Fonte: opennet.ru
