Filippo Valsorda, crittografo responsabile della sicurezza del linguaggio di programmazione Go in Google, ha pubblicato la prima versione stabile del nuovo strumento per la crittografia dei dati, Age (Actually Good Encryption). Questo strumento offre un'interfaccia a riga di comando semplice per crittografare file utilizzando algoritmi crittografici simmetrici (basati su password) e asimmetrici (basati su chiavi pubbliche). Il codice del progetto è scritto in Go e distribuito con licenza BSD. Le build sono disponibili per Linux, FreeBSD, macOS e Windows.
Le funzionalità di base sono state estratte in una libreria, che può essere utilizzata per integrare le funzionalità fornite dallo strumento nelle proprie applicazioni. Separatamente, nell'ambito del progetto rage, viene sviluppata un'implementazione alternativa simile dello strumento e della libreria, scritta in Rust. Per la crittografia vengono utilizzati algoritmi collaudati come HKDF (Funzione di derivazione della chiave basata su HMAC), SHA-256, HMAC (Codice di autenticazione dei messaggi basato su hash), 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
È disponibile una modalità di crittografia dei file per più destinatari, in cui il file viene crittografato utilizzando più chiavi pubbliche e ciascuno della lista dei destinatari può decrittografarlo. Sono inoltre forniti strumenti per la crittografia simmetrica dei file basata su password e per proteggere i file con chiavi private tramite crittografia con password. Una funzionalità utile è che se durante la crittografia viene inserita una password vuota, l'utility genera automaticamente e propone una password sicura. $ age -p secrets.txt > secrets.txt.age Inserisci la passphrase (lascia vuoto per generare automaticamente una sicura): Utilizzando la passphrase generata automaticamente «release-response-step-brand-wrap-ankle-pair-unusual-sword-train». $ age -d secrets.txt.age > secrets.txt Inserisci la passphrase: $ age-keygen | age -p > key.age Chiave pubblica: age1yhm4gftwfmrpz87tdslm530wrx6m79y9f2hdzt0lndjnehwj0bkqrjpyx5 Inserisci la passphrase (lascia vuoto per generare automaticamente una sicura): Utilizzando la passphrase generata automaticamente «hip-roast-boring-snake-mention-east-wasp-honey-input-actress».
Sono previsti piani futuri per creare un backend per la gestione delle password e server chiavi condivise (PAKE), supporto per chiavi YubiKey, generazione di chiavi mnemoniche sotto forma di set di parole e creazione di un'utility age-mount per montare in FS file o archivi crittografati.
Fonte: opennet.ru
