ืขืจืฉื˜ืขืจ ืกื˜ืึทื‘ื™ืœ ืžืขืœื“ื•ื ื’ ืคื•ืŸ ืึทื’ืข, ืึท ื“ืึทื˜ืŸ ืขื ืงืจื™ืคึผืฉืึทืŸ ื ื•ืฆืŸ

Filippo Valsorda, ืึท ืงืจื™ืคึผื˜ืึธื’ืจืึทืฃ ืคืึทืจืึทื ื˜ื•ื•ืึธืจื˜ืœืขืš ืคึฟืึทืจ ื“ื™ ื–ื™ื›ืขืจื”ื™ื™ื˜ ืคื•ืŸ ื“ื™ Go ืคึผืจืึธื’ืจืึทืžืžื™ื ื’ ืฉืคึผืจืึทืš ื‘ื™ื™ Google, ื”ืื˜ ืคืืจืขืคื ื˜ืœืขื›ื˜ ื“ืขืจ ืขืจืฉื˜ืขืจ ืกื˜ืึทื‘ื™ืœ ืžืขืœื“ื•ื ื’ ืคื•ืŸ ืึท ื ื™ื™ึทืข ื“ืึทื˜ืŸ ืขื ืงืจื™ืคึผืฉืึทืŸ ื ื•ืฆืŸ, Age (Actually Good Encryption). ื“ื™ ื ื•ืฆืŸ ื’ื™ื˜ ืึท ืคึผืฉื•ื˜ ื‘ืึทืคึฟืขืœืŸ ืฉื•ืจื” ืฆื•ื‘ื™ื ื“ ืคึฟืึทืจ ืขื ืงืจื™ืคึผื˜ื™ื ื’ ื˜ืขืงืขืก ื ื™ืฆืŸ ืกื™ืžืžืขื˜ืจื™ืง (ืฉืคึผืจื™ื›ื•ื•ืึธืจื˜) ืื•ืŸ ืึทืกื™ืžืžืขื˜ืจื™ืง (ืฆื™ื‘ื•ืจ ืฉืœื™ืกืœ) ืงืจื™ืคึผื˜ืึธื’ืจืึทืคื™ืง ืึทืœื’ืขืจื™ื“ืึทืžื–. ื“ื™ ืคึผืจื•ื™ืขืงื˜ ืงืึธื“ ืื™ื– ื’ืขืฉืจื™ื‘ืŸ ืื™ืŸ Go ืื•ืŸ ืคื•ื ืื ื“ืขืจื’ืขื˜ื™ื™ืœื˜ ืื•ื ื˜ืขืจ ื“ื™ BSD ื“ืขืจืœื•ื™ื‘ืขื ื™ืฉ. ื‘ื™ืœื“ื– ื–ืขื ืขืŸ ืฆื•ื’ืขื’ืจื™ื™ื˜ ืคึฟืึทืจ ืœื™ื ื•ืงืก, ืคืจืขืขื‘ืกื“, ืžืึทืงืึธืก ืื•ืŸ ื•ื•ื™ื ื“ืึธื•ื–.

ื“ื™ ื™ืงืขืจื“ื™ืง ืคืึทื ื’ืงืฉืึทื ื– ื–ืขื ืขืŸ ื™ื ืงืœื•ื“ืขื“ ืื™ืŸ ืึท ื‘ื™ื‘ืœื™ืึธื˜ืขืง ื•ื•ืึธืก ืงืขื ืขืŸ ื–ื™ื™ืŸ ื’ืขื•ื•ื™ื™ื ื˜ ืฆื• ื•ื™ืกืฉื˜ื™ืžืขืŸ ื“ื™ ืคืึทื ื’ืงืฉืึทื ืึทืœื™ื˜ื™ ืฆื•ื’ืขืฉื˜ืขืœื˜ ื“ื•ืจืš ื“ื™ ื ื•ืฆืŸ ืื™ืŸ ื“ื™ื™ืŸ ืžื’ื™ืœื”. ืกืขืคึผืขืจืึทื˜ืœื™, ืื™ืŸ ื“ื™ ืคืจื™ื™ืžื•ื•ืขืจืง ืคื•ืŸ ื“ื™ ืฉื˜ื•ืจืขื ืคึผืจื•ื™ืขืงื˜, ืึทืŸ ืึธืœื˜ืขืจื ืึทื˜ื™ื•ื• ื™ืžืคึผืœืึทืžืขื ื˜ื™ื™ืฉืึทืŸ ืคื•ืŸ ืึท ืขื ืœืขืš ื ื•ืฆืŸ ืื•ืŸ ื‘ื™ื‘ืœื™ืึธื˜ืขืง, ื’ืขืฉืจื™ื‘ืŸ ืื™ืŸ ื“ื™ ืจื•ืกื˜ ืฉืคึผืจืึทืš, ืื™ื– ื“ืขื•ื•ืขืœืึธืคึผืขื“. ืคึฟืึทืจ ืขื ืงืจื™ืคึผืฉืึทืŸ, ืคึผืจืึธื•ื•ืขืŸ ืึทืœื’ืขืจื™ื“ืึทืžื– ื–ืขื ืขืŸ ื’ืขื ื™ืฆื˜: HKDF (HMAC-ื‘ืื–ื™ืจื˜ ืขืงืกื˜ืจืึทืงื˜-ืื•ืŸ-ืขืงืกืคึผืึทื ื“ ืฉืœื™ืกืœ ื“ืขืจื™ื•ื•ืึทื˜ื™ืึธืŸ ืคึฟื•ื ืงืฆื™ืข), SHA-256, HMAC (ื”ืึทืฉ-ื‘ืื–ื™ืจื˜ ืึธื ื–ืึธื’ ืึธื˜ืขื ื˜ืึทืงื™ื™ืฉืึทืŸ ืงืึธื•ื“), X25519, Scrypt ืื•ืŸ ChaCha20-Poly1305 AEAD.

ืฆื•ื•ื™ืฉืŸ ื“ื™ ืคึฟืขื™ึดืงื™ื™ื˜ืŸ ืคื•ืŸ ืึทื’ืข, ื“ื™ ืคืืœื’ืขื ื“ืข ืฉื˜ื™ื™ืŸ ืื•ื™ืก: ื“ื™ ืคื™ื™ื™ืงื™ื™ื˜ ืฆื• ื ื•ืฆืŸ ืกืึธืœื™ื“ 512-ื‘ื™ืกืœ ืฆื™ื‘ื•ืจ ืฉืœื™ืกืœืขืŸ, ืœื™ื™ื›ื˜ ื˜ืจืึทื ืกืคืขืจื“ ื“ื•ืจืš ื“ื™ ืงืœื™ืคึผื‘ืึธืจื“; ืคึผืฉื•ื˜ ื‘ืึทืคึฟืขืœืŸ ืฉื•ืจื” ืฆื•ื‘ื™ื ื“ ื ื™ื˜ ืึธื•ื•ื•ืขืจืœืึธื•ื“ื™ื“ ืžื™ื˜ ืึธืคึผืฆื™ืขืก; ืคืขืœืŸ ืคื•ืŸ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ ื˜ืขืงืขืก; ื“ื™ ืžืขื’ืœืขื›ืงื™ื™ื˜ ืคื•ืŸ ื ื•ืฆืŸ ืื™ืŸ ืกืงืจื™ืคึผืก ืื•ืŸ ืื™ืŸ ืงืึธืžื‘ื™ื ืึทืฆื™ืข ืžื™ื˜ ืื ื“ืขืจืข ื™ื•ื˜ื™ืœืึทื˜ื™ื– ื“ื•ืจืš ื‘ื•ื™ืขืŸ ืึท ืงื™ื™ื˜ ืคื•ืŸ ืงืึทืœืœืก ืื™ืŸ UNIX ืกื˜ื™ืœ. ื‘ื™ื™ื“ืข ื“ื–ืฉืขื ืขืจื™ื™ื˜ื™ื ื’ ื“ื™ื™ืŸ ืื™ื™ื’ืขื ืข ืกืึธืœื™ื“ ืฉืœื™ืกืœืขืŸ ืื•ืŸ ื ื™ืฆืŸ ื™ื’ื–ื™ืกื˜ื™ื ื’ SSH ืฉืœื™ืกืœืขืŸ ("ssh-ed25519", "ssh-rsa") ืื™ื– ื’ืขืฉื˜ื™ืฆื˜, ืึทืจื™ื™ึทื ื’ืขืจืขื›ื ื˜ ืฉื˜ื™ืฆืŸ ืคึฟืึทืจ Github.keys ื˜ืขืงืขืก. $ age-keygen -o key.txt ืฆื™ื‘ื•ืจ ืฉืœื™ืกืœ: age1ql3z7hjy58pw3hyww5ayyfg7zqgvc7w3j2elw2zmrj2kg5sfn9bqmcac8p $ tar cvz ~/data | ืขืœื˜ืขืจ -ืจ age1ql3z7hjy58pw3hyww5ayyfg7zqgvc7w3j2elw2zmrj2kg5sfn9bqmcac8p > data.tar.gz.age $ age --decrypt -i key.txt data.tar.gz.age > data.tar.gz $ age/id_25519.pub.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 | Age -p> key.age.age ืคึผื•ื‘ืœื™ืง: Age1YHM4GFTWFMRPZ87TDSLM530WRX6M79YY9F2HDZTAHNEHNEHNEHNEHNEHPQRJPYX0 ืึทืจื™ื™ึทืŸ ืคึผืึทืกืกืคืจืึทืกืข (ืœืึธื–ืŸ ืœื™ื™ื“ื™ืง ืฆื• ืึทื•ื˜ืึธื’ืขื ื™ื™ื˜ ืึทืงื•ืจืข ืื™ื™ืŸ): ื ื™ืฆืŸ ื“ื™ ืึทื•ื˜ืึธื’ืขื ืขื“ ืคึผืึทืกืกืคืจืึทื–ืข-ื”ื™ืคึผ-ื ืขื -ื”ืคึผ-ื ืขื -ืคืจืึทืกืข ืึทืงื˜ืจื™ืกืข".

ืคึผืœืึทื ื– ืคึฟืึทืจ ื“ืขืจ ืฆื•ืงื•ื ืคึฟื˜ ืึทืจื™ื™ึทื ื ืขืžืขืŸ ื“ื™ ืฉืึทืคื•ื ื’ ืคื•ืŸ ืึท ื‘ืึทืงืขื ื“ ืคึฟืึทืจ ืกื˜ืึธืจื™ื ื’ ืคึผืึทืกื•ื•ืขืจื“ื– ืื•ืŸ ืึท ืกืขืจื•ื•ืขืจ ืคึฟืึทืจ ืฉืขืจื“ ืฉืœื™ืกืœืขืŸ (PAKE), ืฉื˜ื™ืฆืŸ ืคึฟืึทืจ YubiKey ืฉืœื™ืกืœืขืŸ, ื“ื™ ืคื™ื™ื™ืงื™ื™ื˜ ืฆื• ื“ื–ืฉืขื ืขืจื™ื™ื˜ ื’ืจื™ื ื’-ืฆื•-ื’ืขื“ืขื ืงืขืŸ ืฉืœื™ืกืœืขืŸ ืื™ืŸ ื“ื™ ืคืึธืจืขื ืคื•ืŸ ืึท ื’ืึทื ื’ ืคื•ืŸ ื•ื•ืขืจื˜ืขืจ, ืื•ืŸ ื“ื™ ืฉืึทืคื•ื ื’. ืคื•ืŸ ืึทืŸ ืขืœื˜ืขืจ-ื‘ืืจื’ ื ื•ืฆืŸ ืคึฟืึทืจ ืžืึทื•ื ื˜ื™ื ื’ ื™ื ืงืจื™ืคึผื˜ื™ื“ ื˜ืขืงืขืก ืึธื“ืขืจ ืึทืจืงื™ื™ื•ื•ื– ืื™ืŸ ื“ื™ FS.

ืžืงื•ืจ: opennet.ru

ืœื™ื™ื’ืŸ ืึท ื‘ืึทืžืขืจืงื•ื ื’