เบเบฒเบ™เบ›เปˆเบญเบเบ„เบงเบฒเบกเบซเบกเบฑเป‰เบ™เบ„เบปเบ‡เบ„เบฑเป‰เบ‡เบ—เปเบฒเบญเบดเบ”เบ‚เบญเบ‡ Age, เบœเบปเบ™เบ›เบฐเป‚เบซเบเบ”เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เบ‚เปเป‰เบกเบนเบ™

Filippo Valsorda, เบ™เบฑเบเบ‚เบฝเบ™เบฅเบฐเบซเบฑเบ”เบฅเบฑเบšเบ—เบตเปˆเบฎเบฑเบšเบœเบดเบ”เบŠเบญเบšเบ”เป‰เบฒเบ™เบ„เบงเบฒเบกเบ›เบญเบ”เป„เบžเบ‚เบญเบ‡เบžเบฒเบชเบฒเบเบฒเบ™เบ‚เบฝเบ™เป‚เบ›เบฅเปเบเบฅเบก Go เบขเบนเปˆ Google, เป„เบ”เป‰เป€เบœเบตเบเปเบœเปˆเบเบฒเบ™เบ›เปˆเบญเบเบ•เบปเบงเบ—เปเบฒเบญเบดเบ”เบ—เบตเปˆเบซเบกเบฑเป‰เบ™เบ„เบปเบ‡เบ‚เบญเบ‡เบญเบธเบ›เบฐเบเบญเบ™เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เบ‚เปเป‰เบกเบนเบ™เปƒเบซเบกเปˆ, เบญเบฒเบเบธ (เบ•เบปเบงเบˆเบดเบ‡เปเบฅเป‰เบงเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบ”เบต). เบœเบปเบ™เบ›เบฐเป‚เบซเบเบ”เบชเบฐเบซเบ™เบญเบ‡เบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบšเป€เบชเบฑเป‰เบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เบ‡เปˆเบฒเบเบ”เบฒเบเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เป„เบŸเบฅเปŒเป‚เบ”เบเปƒเบŠเป‰ symmetric (เบฅเบฐเบซเบฑเบ”เบœเปˆเบฒเบ™) เปเบฅเบฐ asymmetric (public key) algorithms cryptographic. เบฅเบฐเบซเบฑเบ”เป‚เบ„เบ‡เบเบฒเบ™เปเบกเปˆเบ™เบ‚เบฝเบ™เปƒเบ™ Go เปเบฅเบฐเปเบˆเบเบขเบฒเบเบžเบฒเบเปƒเบ•เป‰เปƒเบšเบญเบฐเบ™เบธเบเบฒเบ” BSD. เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เปเบกเปˆเบ™เบเบฝเบกเบžเป‰เบญเบกเบชเปเบฒเบฅเบฑเบš Linux, FreeBSD, macOS เปเบฅเบฐ Windows.

เบŸเบฑเบ‡เบŠเบฑเบ™เบžเบทเป‰เบ™เบ–เบฒเบ™เปเบกเปˆเบ™เบฅเบงเบกเบขเบนเปˆเปƒเบ™เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰เป€เบžเบทเปˆเบญเบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™เบเบฒเบ™เบ—เปเบฒเบ‡เบฒเบ™เบ—เบตเปˆเบชเบฐเบซเบ™เบญเบ‡เป‚เบ”เบเบœเบปเบ™เบ›เบฐเป‚เบซเบเบ”เป€เบ‚เบปเป‰เบฒเปƒเบ™เป‚เบ„เบ‡เบเบฒเบ™เบ‚เบญเบ‡เบ—เปˆเบฒเบ™. เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบ, เปƒเบ™เบ‚เบญเบšเบ‚เบญเบ‡เป‚เบ„เบ‡เบเบฒเบ™ rage, เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ‚เบญเบ‡เบœเบปเบ™เบ›เบฐเป‚เบซเบเบ”เบ—เบตเปˆเบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เปเบฅเบฐเบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”, เบฅเบฒเบเบฅเบฑเบเบญเบฑเบเบชเบญเบ™เปƒเบ™เบžเบฒเบชเบฒ Rust, เป„เบ”เป‰เบ–เบทเบเบžเบฑเบ”เบ—เบฐเบ™เบฒ. เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”, เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบเบฒเบ™เบžเบดเบชเบนเบ”เป„เบ”เป‰เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰: HKDF (HMAC-based Extract-and-Expand Key Derivation Function), SHA-256, HMAC (Hash-based Message Authentication Code), X25519, Scrypt เปเบฅเบฐ ChaCha20-Poly1305 AEAD.

เปƒเบ™เบšเบฑเบ™เบ”เบฒเบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เบ‚เบญเบ‡เบญเบฒเบเบธ, เบ”เบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰เบขเบทเบ™เบญเบญเบ: เบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เปƒเบ™เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบเบฐเปเบˆเบชเบฒเบ—เบฒเบฅเบฐเบ™เบฐ 512-bit เบซเบ™เบฒเปเบซเบ™เป‰เบ™, เป‚เบญเบ™เป„เบ”เป‰เบขเปˆเบฒเบ‡เบ‡เปˆเบฒเบเบ”เบฒเบเป‚เบ”เบเบœเปˆเบฒเบ™ clipboard เป„เบ”เป‰; เบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบšเป€เบชเบฑเป‰เบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เบ‡เปˆเบฒเบเบ”เบฒเบเบšเปเปˆ overloaded เบเบฑเบšเบ—เบฒเบ‡เป€เบฅเบทเบญเบ; เบ‚เบฒเบ”เป„เบŸเบฅเปŒเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ; เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ‚เบญเบ‡เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เปƒเบ™เบชเบฐเบ„เบดเบšเปเบฅเบฐเบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™เบเบฑเบšเบœเบปเบ™เบ›เบฐเป‚เบซเบเบ”เบญเบทเปˆเบ™เป†เป‚เบ”เบเบเบฒเบ™เบชเป‰เบฒเบ‡เบฅเบฐเบšเบปเบšเบ•เปˆเบญเบ‡เป‚เบชเป‰เบเบฒเบ™เป‚เบ—เปƒเบ™เปเบšเบš UNIX. เบ—เบฑเบ‡เบเบฒเบ™เบชเป‰เบฒเบ‡เบเบฐเปเบˆเบ‚เบฐเปœเบฒเบ”เบ™เป‰เบญเบเบ‚เบญเบ‡เป€เบˆเบปเป‰เบฒเป€เบญเบ‡ เปเบฅเบฐเปƒเบŠเป‰เบเบฐเปเบˆ SSH เบ—เบตเปˆเบกเบตเบขเบนเปˆเปเบฅเป‰เบง (โ€œssh-ed25519โ€, โ€œssh-rsaโ€) เปเบกเปˆเบ™เบฎเบญเบ‡เบฎเบฑเบš, เบฅเบงเบกเบ—เบฑเบ‡เบเบฒเบ™เบฎเบญเบ‡เบฎเบฑเบšเป„เบŸเบฅเปŒ Github.keys. $ age-keygen -o key.txt เบฅเบฐเบซเบฑเบ”เบชเบฒเบ—เบฒเบฅเบฐเบ™เบฐ: age1ql3z7hjy58pw3hyww5ayyfg7zqgvc7w3j2elw2zmrj2kg5sfn9bqmcac8p $tar cvz ~/data | age -r age1ql3z7hjy58pw3hyww5ayyfg7zqgvc7w3j2elw2zmrj2kg5sfn9bqmcac8p > data.tar.gz.age $ age --decrypt -i key.txt data.tar.gz.age > data.tar.gz $age-25519p example.jpg. > example.jpg.age $ age -d -i ~/.ssh/id_ed25519 example.jpg.age > example.jpg

เบกเบตเบฎเบนเบšเปเบšเบšเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เป„เบŸเบฅเปŒเบชเปเบฒเบฅเบฑเบšเบœเบนเป‰เบฎเบฑเบšเบซเบผเบฒเบเป†เบ„เบปเบ™เปƒเบ™เบ„เบฑเป‰เบ‡เบ”เบฝเบง, เป€เบŠเบดเปˆเบ‡เป„เบŸเบฅเปŒเบˆเบฐเบ–เบทเบเป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เบžเป‰เบญเบกเบเบฑเบ™เป‚เบ”เบเปƒเบŠเป‰เบฅเบฐเบซเบฑเบ”เบชเบฒเบ—เบฒเบฅเบฐเบ™เบฐเบซเบผเบฒเบเบญเบฑเบ™ เปเบฅเบฐเปเบ•เปˆเบฅเบฐเบฅเบฒเบเบŠเบทเปˆเบ‚เบญเบ‡เบœเบนเป‰เบฎเบฑเบšเบชเบฒเบกเบฒเบ”เบ–เบญเบ”เบฅเบฐเบซเบฑเบ”เบกเบฑเบ™เป„เบ”เป‰. เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบเบฑเบ‡เบ–เบทเบเบชเบฐเบซเบ™เบญเบ‡เปƒเบซเป‰เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เป„เบŸเบฅเปŒเบ—เบตเปˆเบญเบตเบ‡เปƒเบชเปˆเบฅเบฐเบซเบฑเบ” symmetric เปเบฅเบฐเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เบปเบเบ›เป‰เบญเบ‡เป„เบŸเบฅเปŒเบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เบชเปˆเบงเบ™เบ•เบปเบงเป‚เบ”เบเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เปƒเบซเป‰เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเป‚เบ”เบเปƒเบŠเป‰เบฅเบฐเบซเบฑเบ”เบœเปˆเบฒเบ™. เบ„เบธเบ™เบ™เบฐเบชเบปเบกเบšเบฑเบ”เบ—เบตเปˆเป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เปเบกเปˆเบ™เบงเปˆเบฒเบ–เป‰เบฒเบ—เปˆเบฒเบ™เปƒเบชเปˆเบฅเบฐเบซเบฑเบ”เบœเปˆเบฒเบ™เบซเบงเปˆเบฒเบ‡เป€เบ›เบปเปˆเบฒเปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”, เบœเบปเบ™เบ›เบฐเป‚เบซเบเบ”เบˆเบฐเบชเป‰เบฒเบ‡เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เปเบฅเบฐเบชเบฐเป€เบซเบ™เบตเบฅเบฐเบซเบฑเบ”เบœเปˆเบฒเบ™เบ—เบตเปˆเป€เบ‚เบฑเป‰เบกเปเบ‚เบ‡. $ 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 | age -p > key.age เบฅเบฐเบซเบฑเบ”เบชเบฒเบ—เบฒเบฅเบฐเบ™เบฐ: age1yhm4gftwfmrpz87tdslm530wrx6m79y9f2hdzt0lndjnehwj0bkqrjpyx5 เบ›เป‰เบญเบ™เบงเบฐเบฅเบตเบœเปˆเบฒเบ™ (เบ›เปˆเบญเบเปƒเบซเป‰เบซเบงเปˆเบฒเบ‡เป€เบ›เบปเปˆเบฒเป€เบžเบทเปˆเบญเบœเบฐเบฅเบดเบ”เบญเบฑเบ™เบ—เบตเปˆเบ›เบญเบ”เป„เบžเป‚เบ”เบเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”): เบเบฒเบ™เปƒเบŠเป‰เบฅเบฐเบซเบฑเบ”เบœเปˆเบฒเบ™เบ—เบตเปˆเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เป€เบญเบ‡ "hip-spasing-shoast-borastake"

เปเบœเบ™เบเบฒเบ™เบชเปเบฒเบฅเบฑเบšเบญเบฐเบ™เบฒเบ„เบปเบ”เบ›เบฐเบเบญเบšเบกเบตเบเบฒเบ™เบชเป‰เบฒเบ‡ backend เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบฅเบฐเบซเบฑเบ”เบœเปˆเบฒเบ™เปเบฅเบฐเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบชเปเบฒเบฅเบฑเบšเบเบฐเปเบˆเบ—เบตเปˆเปƒเบŠเป‰เบฎเปˆเบงเบกเบเบฑเบ™ (PAKE), เบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบฅเบฐเบซเบฑเบ” YubiKey, เบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เปƒเบ™เบเบฒเบ™เบชเป‰เบฒเบ‡เบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบ‡เปˆเบฒเบเบ•เปเปˆเบเบฒเบ™เบˆเบทเปˆเบˆเปเบฒเปƒเบ™เบฎเบนเบšเปเบšเบšเบ‚เบญเบ‡เบ„เปเบฒเบ—เบตเปˆเบเปเบฒเบ™เบปเบ”เป„เบงเป‰, เปเบฅเบฐเบเบฒเบ™เบชเป‰เบฒเบ‡ เบœเบปเบ™เบ›เบฐเป‚เบซเบเบ”เบ‚เบญเบ‡เบญเบฒเบเบธเบชเบนเบ‡เบชเบธเบ”เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เป„เบŸเบฅเปŒเบ—เบตเปˆเป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เบฅเบฑเบšเบซเบผเบทเปเบŸเป‰เบกเบˆเบฑเบ”เป€เบเบฑเบšเปƒเบ™ FS.

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: opennet.ru

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™