αž€αžΆαžšαž…αŸαž‰αž•αŸ’αžŸαžΆαž™αžŸαŸ’αžαŸαžšαž—αžΆαž–αžŠαŸ†αž”αžΌαž„αž“αŸƒαž’αžΆαž™αž» αžŠαŸ‚αž›αž‡αžΆαž§αž”αž€αžšαžŽαŸαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž’αŸŠαž·αž“αž‚αŸ’αžšαžΈαž”αž‘αž·αž“αŸ’αž“αž“αŸαž™

Filippo Valsorda αžŠαŸ‚αž›αž‡αžΆαž’αŸ’αž“αž€αžŸαžšαžŸαŸαžšαž€αžΌαžŠαžŸαž˜αŸ’αž„αžΆαžαŸ‹αžŠαŸ‚αž›αž‘αž‘αž½αž›αžαž»αžŸαžαŸ’αžšαžΌαžœαž…αŸ†αž–αŸ„αŸ‡αžŸαž»αžœαžαŸ’αžαž·αž—αžΆαž–αž“αŸƒαž—αžΆαžŸαžΆαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ Go αž“αŸ… Google αž”αžΆαž“αž…αŸαž‰αž•αŸ’αžŸαžΆαž™αž€αžΆαžšαž…αŸαž‰αž•αŸ’αžŸαžΆαž™αž”αŸ’αžšαž€αž”αžŠαŸ„αž™αžŸαŸ’αžαŸαžšαž—αžΆαž–αžŠαŸ†αž”αžΌαž„αž“αŸƒαž§αž”αž€αžšαžŽαŸαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž’αŸŠαž·αž“αž‚αŸ’αžšαžΈαž”αž‘αž·αž“αŸ’αž“αž“αŸαž™αžαŸ’αž˜αžΈ Age (αž€αžΆαžšαž’αŸŠαž·αž“αž‚αŸ’αžšαžΈαž”αž›αŸ’αž’αž–αž·αžαž”αŸ’αžšαžΆαž€αžŠ) αŸ” αž§αž”αž€αžšαžŽαŸαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž•αŸ’αžαž›αŸ‹αž“αžΌαžœαž…αŸ†αžŽαž»αž…αž”αŸ’αžšαž‘αžΆαž€αŸ‹αž”αž“αŸ’αž‘αžΆαžαŸ‹αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαžŸαžΆαž˜αž‰αŸ’αž‰αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž’αŸŠαž·αž“αž‚αŸ’αžšαžΈαž”αž―αž€αžŸαžΆαžšαžŠαŸ„αž™αž”αŸ’αžšαžΎαžŸαŸŠαžΈαž˜αŸαž‘αŸ’αžšαžΈ (αž–αžΆαž€αŸ’αž™αžŸαž˜αŸ’αž„αžΆαžαŸ‹) αž“αž·αž„αž€αŸ’αž”αž½αž“αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž€αžΆαžšαž‚αŸ’αžšαžΈαž”αž˜αž·αž“αžŸαŸŠαžΈαž˜αŸαž‘αŸ’αžšαžΈ (αžŸαŸ„αžŸαžΆαž’αžΆαžšαžŽαŸˆ) αŸ” αž€αžΌαžŠαž‚αž˜αŸ’αžšαŸ„αž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαžšαžŸαŸαžšαž‡αžΆ Go αž“αž·αž„αž…αŸ‚αž€αž…αžΆαž™αž€αŸ’αžšαŸ„αž˜αž’αžΆαž‡αŸ’αž‰αžΆαž”αŸαžŽαŸ’αžŽ BSD αŸ” αž€αžΆαžšαž”αž„αŸ’αž€αžΎαžαžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαŸ€αž”αž…αŸ†αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Linux, FreeBSD, macOS αž“αž·αž„ Windows αŸ”

αž˜αž»αžαž„αžΆαžšαž‡αžΆαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαž½αž˜αž”αž‰αŸ’αž…αžΌαž›αž“αŸ…αž€αŸ’αž“αž»αž„αž”αžŽαŸ’αžŽαžΆαž›αŸαž™αžŠαŸ‚αž›αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαžŠαžΎαž˜αŸ’αž”αžΈαžšαž½αž˜αž”αž‰αŸ’αž…αžΌαž›αž˜αž»αžαž„αžΆαžšαžŠαŸ‚αž›αž•αŸ’αžαž›αŸ‹αžŠαŸ„αž™αž§αž”αž€αžšαžŽαŸαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž‘αŸ…αž€αŸ’αž“αž»αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αŸ” αžŠαŸ„αž™αž‘αŸ‚αž€αž“αŸ…αž€αŸ’αž“αž»αž„αž€αŸ’αžšαž”αžαŸαžŽαŸ’αžŒαž“αŸƒαž‚αž˜αŸ’αžšαŸ„αž„αž€αŸ†αž αžΉαž„ αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž‡αž˜αŸ’αžšαžΎαžŸαž“αŸƒαž§αž”αž€αžšαžŽαŸαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ αž“αž·αž„αž”αžŽαŸ’αžŽαžΆαž›αŸαž™αžŸαŸ’αžšαžŠαŸ€αž„αž‚αŸ’αž“αžΆ αžŠαŸ‚αž›αžŸαžšαžŸαŸαžšαž‡αžΆαž—αžΆαžŸαžΆ Rust αž€αŸ†αž–αž»αž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž‘αžΎαž„αŸ” αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž’αŸŠαž·αž“αž‚αŸ’αžšαžΈαž” αž€αŸ’αž”αž½αž“αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŠαŸ‚αž›αž”αž„αŸ’αž αžΆαž‰αž±αŸ’αž™αžƒαžΎαž‰αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαŸ– HKDF (αž˜αž»αžαž„αžΆαžšαž‘αžΆαž‰αž™αž€ αž“αž·αž„αž–αž„αŸ’αžšαžΈαž€αž‚αž“αŸ’αž›αžΉαŸ‡αžŠαŸ‚αž›αž˜αžΆαž“αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž›αžΎ HMAC), SHA-256, HMAC (αž›αŸαžαž€αžΌαžŠαž•αŸ’αž‘αŸ€αž„αž•αŸ’αž‘αžΆαžαŸ‹αžŸαžΆαžšαžŠαŸ‚αž›αž˜αžΆαž“αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž›αžΎαž αžΆαžŸ), X25519, Scrypt αž“αž·αž„ ChaCha20-Poly1305 AEAD αŸ”

αž€αŸ’αž“αž»αž„β€‹αž…αŸ†αžŽαŸ„αž˜β€‹αž›αž€αŸ’αžαžŽαŸˆβ€‹αž–αž·αžŸαŸαžŸβ€‹αž“αŸƒβ€‹αž’αžΆαž™αž» αž…αŸ†αžŽαž»αž…β€‹αžŠαžΌαž…β€‹αžαžΆαž„β€‹αž€αŸ’αžšαŸ„αž˜β€‹αž‚αžΊβ€‹αž‡αžΆβ€‹αžŸαž˜αžαŸ’αžαž—αžΆαž–β€‹αž€αŸ’αž“αž»αž„β€‹αž€αžΆαžšβ€‹αž”αŸ’αžšαžΎβ€‹αž€αžΌαž“αžŸαŸ„β€‹αžŸαžΆαž’αžΆαžšαžŽαŸˆβ€‹αžαžΌαž…β€‹αž‘αŸ†αž αŸ† 512 αž”αŸŠαžΈαž αž•αŸ’αž‘αŸαžšβ€‹αž™αŸ‰αžΆαž„β€‹αž„αžΆαž™β€‹αžŸαŸ’αžšαž½αž›β€‹αžαžΆαž˜β€‹αž€αŸ’αžŠαžΆαžšβ€‹αžαž˜αŸ’αž”αŸ€αžβ€‹αžαŸ’αž‘αžΆαžŸαŸ‹αŸ” αž…αŸ†αžŽαž»αž…αž”αŸ’αžšαž‘αžΆαž€αŸ‹αž”αž“αŸ’αž‘αžΆαžαŸ‹αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαžŸαžΆαž˜αž‰αŸ’αž‰αž˜αž·αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αž•αŸ’αž‘αž»αž€αž›αžΎαžŸαž‘αž˜αŸ’αž„αž“αŸ‹αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž‡αž˜αŸ’αžšαžΎαžŸ; αž€αž„αŸ’αžœαŸ‡αž―αž€αžŸαžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’; αž›αž‘αŸ’αž’αž—αžΆαž–αž“αŸƒαž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αžŸαŸ’αž‚αŸ’αžšαžΈαž” αž“αž·αž„αžšαž½αž˜αž”αž‰αŸ’αž…αžΌαž›αž‚αŸ’αž“αžΆαž‡αžΆαž˜αž½αž™αž§αž”αž€αžšαžŽαŸαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαžŠαŸ„αž™αž”αž„αŸ’αž€αžΎαžαžαŸ’αžŸαŸ‚αžŸαž„αŸ’αžœαžΆαž€αŸ‹αž“αŸƒαž€αžΆαžšαž αŸ…αž‘αžΌαžšαžŸαž–αŸ’αž‘αž“αŸ…αž€αŸ’αž“αž»αž„αžšαž…αž“αžΆαž”αŸαž‘αŸ’αž˜αž™αžΌαž“αžΈαž€αŸ” αž‘αžΆαŸ†αž„αž€αžΆαžšαž”αž„αŸ’αž€αžΎαžαž€αžΌαž“αžŸαŸ„αž”αž„αŸ’αžšαž½αž˜αž•αŸ’αž‘αžΆαž›αŸ‹αžαŸ’αž›αž½αž“αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€ αž“αž·αž„αž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αžŸαŸ„ SSH αžŠαŸ‚αž›αž˜αžΆαž“αžŸαŸ’αžšαžΆαž”αŸ‹ ("ssh-ed25519", "ssh-rsa") αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αžΆαŸ†αž‘αŸ’αžš αžšαž½αž˜αž‘αžΆαŸ†αž„αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž―αž€αžŸαžΆαžš Github.keys αŸ” $ age-keygen -o key.txt αžŸαŸ„αžŸαžΆαž’αžΆαžšαžŽαŸˆαŸ– age1ql3z7hjy58pw3hyww5ayyfg7zqgvc7w3j2elw2zmrj2kg5sfn9bqmcac8p $tar cvz ~/data | αž’αžΆαž™αž» -r age1ql3z7hjy58pw3hyww5ayyfg7zqgvc7w3j2elw2zmrj2kg5sfn9bqmcac8p > data.tar.gz.age $ age --decrypt -i key.txt data.tar.gz.age > data.tar.gz $age-25519.jpg.jpg. > example.jpg.age $age -d -i ~/.ssh/id_ed25519 example.jpg.age > example.jpg

αž˜αžΆαž“αžšαž”αŸ€αž”αž’αŸŠαž·αž“αž‚αŸ’αžšαžΈαž”αž―αž€αžŸαžΆαžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αž“αž€αž‘αž‘αž½αž›αž…αŸ’αžšαžΎαž“αž€αŸ’αž“αž»αž„αž–αŸαž›αžαŸ‚αž˜αž½αž™ αžŠαŸ‚αž›αž―αž€αžŸαžΆαžšαžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αŸŠαž·αž“αž‚αŸ’αžšαžΈαž”αž€αŸ’αž“αž»αž„αž–αŸαž›αžŠαŸ†αžŽαžΆαž›αž‚αŸ’αž“αžΆαžŠαŸ„αž™αž”αŸ’αžšαžΎαžŸαŸ„αžŸαžΆαž’αžΆαžšαžŽαŸˆαž‡αžΆαž…αŸ’αžšαžΎαž“ αž αžΎαž™αž”αž‰αŸ’αž‡αžΈαž’αŸ’αž“αž€αž‘αž‘αž½αž›αž“αžΈαž˜αž½αž™αŸ—αž’αžΆαž…αžŒαž·αž‚αŸ’αžšαžΈαž”αžœαžΆαž”αžΆαž“αŸ” αž§αž”αž€αžšαžŽαŸαžαŸ’αžšαžΌαžœαž”αžΆαž“αž•αŸ’αžαž›αŸ‹αž‡αžΌαž“αž•αž„αžŠαŸ‚αžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž’αŸŠαž·αž“αž‚αŸ’αžšαžΈαž”αž―αž€αžŸαžΆαžšαžŠαŸ‚αž›αž˜αžΆαž“αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž›αžΎαž–αžΆαž€αŸ’αž™αžŸαž˜αŸ’αž„αžΆαžαŸ‹αžŸαŸŠαžΈαž˜αŸαž‘αŸ’αžšαžΈ αž“αž·αž„αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž–αžΆαžšαž―αž€αžŸαžΆαžšαžŸαŸ„αž―αž€αž‡αž“αžŠαŸ„αž™αž€αžΆαžšαž’αŸŠαž·αž“αž‚αŸ’αžšαžΈαž”αž–αž½αž€αžœαžΆαžŠαŸ„αž™αž”αŸ’αžšαžΎαž–αžΆαž€αŸ’αž™αžŸαž˜αŸ’αž„αžΆαžαŸ‹αŸ” αž˜αž»αžαž„αžΆαžšαž˜αžΆαž“αž”αŸ’αžšαž™αŸ„αž‡αž“αŸαž˜αž½αž™αž‚αžΊαžαžΆ αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž”αž‰αŸ’αž…αžΌαž›αž–αžΆαž€αŸ’αž™αžŸαž˜αŸ’αž„αžΆαžαŸ‹αž‘αž‘αŸαž€αŸ†αž‘αž»αž„αž–αŸαž›αž’αŸŠαž·αž“αž‚αŸ’αžšαžΈαž” αž§αž”αž€αžšαžŽαŸαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž“αžΉαž„αž”αž„αŸ’αž€αžΎαžαžŠαŸ„αž™αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž· αž“αž·αž„αž•αŸ’αžαž›αŸ‹αž–αžΆαž€αŸ’αž™αžŸαž˜αŸ’αž„αžΆαžαŸ‹αžαŸ’αž›αžΆαŸ†αž„αŸ” $ age -p secrets.txt > secrets.txt.age αž”αž‰αŸ’αž…αžΌαž›αžƒαŸ’αž›αžΆαžŸαž˜αŸ’αž„αžΆαžαŸ‹ (αž‘αž»αž€αž‘αž‘αŸαžŠαžΎαž˜αŸ’αž”αžΈαž”αž„αŸ’αž€αžΎαžαžŸαž»αžœαžαŸ’αžαž·αž—αžΆαž–αžŠαŸ„αž™αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž·)αŸ– αžŠαŸ„αž™αž”αŸ’αžšαžΎαžƒαŸ’αž›αžΆαžŸαž˜αŸ’αž„αžΆαžαŸ‹αžŠαŸ‚αž›αž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαžŠαŸ„αž™αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž· "release-response-step-brand-wrap-ankle-pair-unusual-sword-train" . $ age -d secrets.txt.age > secrets.txt αž”αž‰αŸ’αž…αžΌαž›αžƒαŸ’αž›αžΆαžŸαž˜αŸ’αž„αžΆαžαŸ‹αŸ– $ age-keygen | αž’αžΆαž™αž» -p> key.age.age αžŸαžΆαž’αžΆαžšαžŽαŸˆαŸ– Age1YHM4GFTWFMRPZ87TDSLM530WRX6M79YY9F2HDZTAHNEHNEHNEHNEHNEHPQRJPYX0 αž”αž‰αŸ’αž…αžΌαž›αž›αŸαžαžŸαŸ†αž„αžΆαžαŸ‹ (αž‘αž»αž€αž‘αž‘αŸαžŠαžΎαž˜αŸ’αž”αžΈαž’αŸ’αžœαžΎαžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž·αž€αž˜αŸ’αž˜ aCure One)αŸ– αžŠαŸ„αž™αž”αŸ’αžšαžΎ "Autogened Passphrase-WASTOR-PASSHRASE" -INPUT-αžαžΆαžšαžΆαžŸαž˜αŸ’αžαŸ‚αž„"αŸ”

αž•αŸ‚αž“αž€αžΆαžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž–αŸαž›αž’αž“αžΆαž‚αžαžšαž½αž˜αž˜αžΆαž“αž€αžΆαžšαž”αž„αŸ’αž€αžΎαžαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαžΆαž„αž€αŸ’αžšαŸ„αž™αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžšαž€αŸ’αžŸαžΆαž‘αž»αž€αž–αžΆαž€αŸ’αž™αžŸαž˜αŸ’αž„αžΆαžαŸ‹ αž“αž·αž„αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžŸαŸ„αžŠαŸ‚αž›αž”αžΆαž“αž…αŸ‚αž€αžšαŸ†αž›αŸ‚αž€ (PAKE) αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΌαž“αžŸαŸ„ YubiKey αžŸαž˜αžαŸ’αžαž—αžΆαž–αž€αŸ’αž“αž»αž„αž€αžΆαžšαž”αž„αŸ’αž€αžΎαžαžŸαŸ„αž„αžΆαž™αžŸαŸ’αžšαž½αž›αž…αž„αž…αžΆαŸ†αž€αŸ’αž“αž»αž„αž‘αž˜αŸ’αžšαž„αŸ‹αž‡αžΆαžŸαŸ†αžŽαž»αŸ†αž“αŸƒαž–αžΆαž€αŸ’αž™ αž“αž·αž„αž€αžΆαžšαž”αž„αŸ’αž€αžΎαž αž“αŸƒαž§αž”αž€αžšαžŽαŸαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αžαžΆαž˜αž’αžΆαž™αž»αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž˜αŸ‰αŸ„αž“αž―αž€αžŸαžΆαžšαžŠαŸ‚αž›αž”αžΆαž“αž’αŸŠαž·αž“αž‚αŸ’αžšαžΈαž” αž¬αž”αžŽαŸ’αžŽαžŸαžΆαžšαž“αŸ…αž€αŸ’αž“αž»αž„ FS αŸ”

αž”αŸ’αžšαž—αž–: opennet.ru

αž”αž“αŸ’αžαŸ‚αž˜αž˜αžαž·αž™αŸ„αž”αž›αŸ‹