OpenSSH ืžื•ืกื™ืฃ ืฉื˜ื™ืฆืŸ ืคึฟืึทืจ ื•ื ื™ื•ื•ืขืจืกืึทืœ ืฆื•ื•ื™ื™-ืคืึทืงื˜ืึธืจ ืึธื˜ืขื ื˜ืึทืงื™ื™ืฉืึทืŸ

ืฆื• ื“ื™ OpenSSH ืงืึธื“ืขื‘ืึทืกืข ืฆื•ื’ืขื’ืขื‘ืŸ ื™ืงืกืคึผืขืจืžืขื ืึทืœ ืฉื˜ื™ืฆืŸ ืคึฟืึทืจ ืฆื•ื•ื™ื™-ืคืึทืงื˜ืึธืจ ืึธื˜ืขื ื˜ืึทืงื™ื™ืฉืึทืŸ ื ื™ืฆืŸ ื“ืขื•ื•ื™ืกืขืก ื•ื•ืึธืก ืฉื˜ื™ืฆืŸ ื“ืขื ืคึผืจืึธื˜ืึธืงืึธืœ U2F, ื“ืขื•ื•ืขืœืึธืคึผืขื“ ื“ื•ืจืš ื“ื™ ื‘ื•ื ื“ ืคื™ื“ืึธ. U2F ืึทืœืึทื•ื– ื“ื™ ืฉืึทืคื•ื ื’ ืคื•ืŸ ื ื™ื“ืขืจื™ืง-ืคึผืจื™ื™ึทื– ื™ื™ึทื–ื ื•ื•ืึทืจื’ ื˜ืึธืงืขื ืก ืฆื• ื‘ืึทืฉื˜ืขื˜ื™ืงืŸ ื“ืขื ื‘ืึทื ื™ืฆืขืจ 'ืก ื’ืฉืžื™ื•ืช ื‘ื™ื™ึทื–ื™ื™ึทืŸ, ื™ื ื˜ืขืจืึทืงื˜ื™ื ื’ ืžื™ื˜ ื–ื™ื™ ื“ื•ืจืš ื•ืกื‘, ื‘ืœื•ืขื˜ืึธืึธื˜ื” ืึธื“ืขืจ NFC. ืึทื–ืึท ื“ืขื•ื•ื™ืกืขืก ื–ืขื ืขืŸ ืคึผืจืึธืžืึธื˜ืขื“ ื•ื•ื™ ืึท ืžื™ื˜ืœ ืคื•ืŸ ืฆื•ื•ื™ื™-ืคืึทืงื˜ืึธืจ ืึธื˜ืขื ื˜ืึทืงื™ื™ืฉืึทืŸ ืื•ื™ืฃ ื•ื•ืขื‘ืกื™ื˜ืขืก, ื–ืขื ืขืŸ ืฉื•ื™ืŸ ื’ืขืฉื˜ื™ืฆื˜ ื“ื•ืจืš ื”ื•ื™ืคึผื˜ ื‘ืจืึทื•ื–ืขืจื– ืื•ืŸ ื–ืขื ืขืŸ ื’ืขืฉืืคืŸ ื“ื•ืจืš ืคืึทืจืฉื™ื“ืŸ ืžืึทื ื™ืึทืคืึทืงื˜ืฉืขืจืขืจื–, ืึทืจื™ื™ึทื ื’ืขืจืขื›ื ื˜ Yubico, Feitian, Thetis ืื•ืŸ Kensington.

ืฆื• ื™ื ื˜ืขืจืึทืงื˜ ืžื™ื˜ ื“ืขื•ื•ื™ืกืขืก ื•ื•ืึธืก ื‘ืึทืฉื˜ืขื˜ื™ืงืŸ ื“ืขื ื‘ื™ื™ึทื–ื™ื™ึทืŸ ืคื•ืŸ ื“ืขืจ ื‘ืึทื ื™ืฆืขืจ, ืึท ื ื™ื™ึทืข ื˜ื™ืคึผ ืคื•ืŸ ืฉืœื™ืกืœืขืŸ ืื™ื– ืฆื•ื’ืขื’ืขื‘ืŸ ืฆื• OpenSSH "[ืื™ืžืขื™ืœ ื‘ืืฉื™ืฆื˜]" ("ecdsa-sk"), ื•ื•ืึธืก ื ื™ืฆื˜ ื“ื™ ECDSA (Elliptic Curve Digital Signature Algorithm) ื“ื™ื’ื™ื˜ืึทืœ ื›ืกื™ืžืข ืึทืœื’ืขืจื™ื“ืึทื ืžื™ื˜ NIST P-256 ื™ืœื™ืคึผื˜ื™ืง ื•ื™ืกื‘ื™ื™ื’ ืื•ืŸ SHA-256 ื”ืึทืฉ. ืคึผืจืึธื•ืกื™ื“ื–ืฉืขืจื– ืคึฟืึทืจ ื™ื ื˜ืขืจืึทืงื˜ื™ื ื’ ืžื™ื˜ ื˜ืึธืงืขื ืก ื–ืขื ืขืŸ ื’ืขืฉื˜ืขืœื˜ ืื™ืŸ ืึท ื™ื ื˜ืขืจืžื™ื“ื™ื™ื˜ ื‘ื™ื‘ืœื™ืึธื˜ืขืง, ื•ื•ืึธืก ืื™ื– ืœืึธื•ื“ื™ื“ ืื™ืŸ ืึท ืขื ืœืขืš ื•ื•ืขื’ ืฆื• ื“ื™ ื‘ื™ื‘ืœื™ืึธื˜ืขืง ืคึฟืึทืจ PKCS #11 ืฉื˜ื™ืฆืŸ ืื•ืŸ ืื™ื– ืึท ืจืึทืคึผืขืจ ืื•ื™ืฃ ืฉืคึผื™ืฅ ืคื•ืŸ ื“ืขืจ ื‘ื™ื‘ืœื™ืึธื˜ืขืง libfido2, ื•ื•ืึธืก ื’ื™ื˜ ืžื›ืฉื™ืจื™ื ืคึฟืึทืจ ืงืึทืžื™ื•ื ืึทืงื™ื™ื˜ื™ื ื’ ืžื™ื˜ ื˜ืึธืงืขื ืก ืื™ื‘ืขืจ ื•ืกื‘ (FIDO U2F/CTAP 1 ืื•ืŸ FIDO 2.0/CTAP 2 ืคึผืจืึธื˜ืึธืงืึธืœืก ื–ืขื ืขืŸ ื’ืขืฉื˜ื™ืฆื˜). ื™ื ื˜ืขืจืžื™ื“ื™ื™ื˜ ื‘ื™ื‘ืœื™ืึธื˜ืขืง libsk-libfido2 ืฆื•ื’ืขื’ืจื™ื™ื˜ ื“ื•ืจืš OpenSSH ื“ืขื•ื•ืขืœืึธืคึผืขืจืก ืึทืจื™ื™ึทื ื’ืขืจืขื›ื ื˜ ืื™ืŸ ื“ื™ ื”ืึทืจืฅ libfido2, ื•ื•ื™ ื’ืขื–ื•ื ื˜ ื•ื•ื™ HID ืฉืึธืคืขืจ ืคึฟืึทืจ OpenBSD.

ืฆื• ื’ืขื‘ืŸ U2F, ืื™ืจ ืงืขื ืขืŸ ื ื•ืฆืŸ ืึท ืคืจื™ืฉ ืจืขืคื˜ืœ ืคื•ืŸ ื“ื™ ืงืึธื“ื‘ืึทืกืข ืคึฟื•ืŸ ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™ OpenSSH ืื•ืŸ ื“ื™ HEAD ืฆื•ื•ื™ื™ึทื’ ืคื•ืŸ ื“ืขืจ ื‘ื™ื‘ืœื™ืึธื˜ืขืง libfido2, ื•ื•ืึธืก ืฉื•ื™ืŸ ื›ื•ืœืœ ื“ื™ ืฉื™ื›ื˜ืข ื ื™ื™ื˜ื™ืง ืคึฟืึทืจ OpenSSH.
Libfido2 ืฉื˜ื™ืฆื˜ ืึธืคึผืขื ื‘ืกื“, ืœื™ื ื•ืงืก, ืžืึทืงืึธืก ืื•ืŸ ื•ื•ื™ื ื“ืึธื•ื–.

ืฆื• ืึธื˜ืขื ื˜ืึทืงื™ื™ื˜ ืื•ืŸ ื“ื–ืฉืขื ืขืจื™ื™ื˜ ืึท ืฉืœื™ืกืœ, ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ืฉื˜ืขืœืŸ ื“ื™ SSH_SK_PROVIDER ืกื•ื•ื™ื•ื•ืข ื‘ื™ื™ึทื˜ืขื•ื•ื“ื™ืง, ื•ื•ืึธืก ื™ื ื“ื™ืงื™ื™ืฅ ื“ืขืจ ื“ืจืš ืฆื• libsk-libfido2.so (ืขืงืกืคึผืึธืจื˜ SSH_SK_PROVIDER=/path/to/libsk-libfido2.so), ืึธื“ืขืจ ื“ืขืคื™ื ื™ืจืŸ ื“ื™ ื‘ื™ื‘ืœื™ืึธื˜ืขืง ื“ื•ืจืš ื“ื™ SecurityKeyProvider ื‘ืึทืฉื˜ืขื˜ื™ืงืŸ, ืื•ืŸ ืœื•ื™ืคืŸ "ssh-keygen -t ecdsa-sk" ืึธื“ืขืจ, ืื•ื™ื‘ ื“ื™ ืฉืœื™ืกืœืขืŸ ื”ืึธื‘ืŸ ืฉื•ื™ืŸ ื‘ืืฉืืคืŸ ืื•ืŸ ืงืึทื ืคื™ื’ื™ืขืจื“, ืคืึทืจื‘ื™ื ื“ืŸ ืฆื• ื“ื™ ืกืขืจื•ื•ืขืจ ื ื™ืฆืŸ "ssh". ื•ื•ืขืŸ ืื™ืจ ืœื•ื™ืคืŸ ssh-keygen, ื“ื™ ื“ื–ืฉืขื ืขืจื™ื™ื˜ืึทื“ ืฉืœื™ืกืœ ืคึผืึธืจ ื•ื•ืขื˜ ื–ื™ื™ืŸ ื’ืขืจืื˜ืขื•ื•ืขื˜ ืื™ืŸ "~/.ssh/id_ecdsa_sk" ืื•ืŸ ืงืขื ืขืŸ ื–ื™ื™ืŸ ื’ืขื•ื•ื™ื™ื ื˜ ืขื ืœืขืš ืฆื• ืื ื“ืขืจืข ืฉืœื™ืกืœืขืŸ.

ื“ืขืจ ืฆื™ื‘ื•ืจ ืฉืœื™ืกืœ (id_ecdsa_sk.pub) ื–ืึธืœ ื–ื™ื™ืŸ ืงืึทืคึผื™ื“ ืฆื• ื“ื™ ืกืขืจื•ื•ืขืจ ืื™ืŸ ื“ืขืจ ืึธื˜ืขืจื™ื™ื–ื“_ืงื™ื™ืก ื˜ืขืงืข. ืื•ื™ืฃ ื“ื™ ืกืขืจื•ื•ืขืจ ื–ื™ื™ึทื˜, ื‘ืœื•ื™ื– ื“ื™ ื“ื™ื’ื™ื˜ืึทืœ ื›ืกื™ืžืข ืื™ื– ื•ื•ืขืจืึทืคื™ื™ื“, ืื•ืŸ ื™ื ื˜ืขืจืึทืงืฉืึทืŸ ืžื™ื˜ ื˜ืึธืงืขื ืก ืื™ื– ื“ื•ืจื›ื’ืขืงืึธื›ื˜ ืื•ื™ืฃ ื“ื™ ืงืœื™ืขื ื˜ ื–ื™ื™ึทื˜ (ืื™ืจ ื˜ืึธืŸ ื ื™ื˜ ื“ืึทืจืคึฟืŸ ืฆื• ื™ื ืกื˜ืึทืœื™ืจืŸ libsk-libfido2 ืื•ื™ืฃ ื“ื™ ืกืขืจื•ื•ืขืจ, ืึธื‘ืขืจ ื“ืขืจ ืกืขืจื•ื•ืขืจ ืžื•ื–ืŸ ืฉื˜ื™ืฆืŸ ื“ื™ "ecdsa-sk" ืฉืœื™ืกืœ ื˜ื™ืคึผ) . ื“ื™ ื“ื–ืฉืขื ืขืจื™ื™ื˜ืึทื“ ืคึผืจื™ื•ื•ืึทื˜ ืฉืœื™ืกืœ (id_ecdsa_sk) ืื™ื– ื™ืกืขื ืฉืึทืœื™ ืึท ืฉืœื™ืกืœ ืฉืขืคึผืŸ, ืคืึธืจืžื™ื ื’ ืึท ืคืึทืงื˜ื™ืฉ ืฉืœื™ืกืœ ื‘ืœื•ื™ื– ืื™ืŸ ืงืึธืžื‘ื™ื ืึทืฆื™ืข ืžื™ื˜ ื“ื™ ืกื•ื“ ืกื™ืงื•ื•ืึทื ืก ืกื˜ืึธืจื“ ืื•ื™ืฃ ื“ื™ U2F ื˜ืึธืงืขืŸ ื–ื™ื™ึทื˜.

ืื•ื™ื‘ ื“ื™ id_ecdsa_sk ืฉืœื™ืกืœ ืคืืœืŸ ืื™ืŸ ื“ื™ ื”ืขื ื˜ ืคื•ืŸ ืึท ืึทื˜ืึทืงืขืจ, ืฆื• ืคืึธืจืŸ ืึธื˜ืขื ื˜ืึทืงื™ื™ืฉืึทืŸ ืขืจ ื•ื•ืขื˜ ืื•ื™ืš ื“ืึทืจืคึฟืŸ ืฆื• ื‘ืึทืงื•ืžืขืŸ ืึทืงืกืขืก ืฆื• ื“ื™ ื™ื™ึทื–ื ื•ื•ืึทืจื’ ืกื™ืžืขืŸ, ืึธืŸ ื•ื•ืึธืก ื“ื™ ืคึผืจื™ื•ื•ืึทื˜ ืฉืœื™ืกืœ ืกื˜ืึธืจื“ ืื™ืŸ ื“ื™ id_ecdsa_sk ื˜ืขืงืข ืื™ื– ืึทืจื•ื™ืกื’ืขื•ื•ืึธืจืคืŸ. ืื™ืŸ ืึทื“ื™ืฉืึทืŸ, ื“ื•ืจืš ืคืขืœื™ืงื™ื™ึทื˜, ื•ื•ืขืŸ ืคึผืขืจืคืึธืจืžื™ื ื’ ืงื™ื™ืŸ ืึทืคึผืขืจื™ื™ืฉืึทื ื– ืžื™ื˜ ืฉืœื™ืกืœืขืŸ (ื‘ื™ื™ื“ืข ื‘ืขืฉืึทืก ื“ื•ืจ ืื•ืŸ ื‘ืขืฉืึทืก ืึธื˜ืขื ื˜ืึทืงื™ื™ืฉืึทืŸ), ื”ื™ื’ืข ื‘ืึทืฉื˜ืขื˜ื™ืงื•ื ื’ ืคื•ืŸ ื“ื™ ื‘ืึทื ื™ืฆืขืจ 'ืก ื’ืฉืžื™ื•ืช ื‘ื™ื™ึทื–ื™ื™ึทืŸ ืื™ื– ืคืืจืœืื ื’ื˜, ืœืžืฉืœ, ืขืก ืื™ื– ืคืืจื’ืขืœื™ื™ื’ื˜ ืฆื• ืคืึทืจื‘ื™ื ื“ืŸ ื“ื™ ืกืขื ืกืขืจ ืื•ื™ืฃ ื“ื™ ืกื™ืžืขืŸ, ื•ื•ืึธืก ืžืื›ื˜ ืขืก ืฉื•ื•ืขืจ ืฆื• ื“ื•ืจื›ืคื™ืจืŸ ื•ื•ื™ื™ึทื˜ ืื ืคืืœืŸ ืื•ื™ืฃ ืกื™ืกื˜ืขืžืขืŸ ืžื™ื˜ ืึท ืงืึธื ื ืขืงื˜ืขื“ ืกื™ืžืขืŸ. ื•ื•ื™ ืืŸ ืื ื“ืขืจ ืฉื•ืจื” ืคื•ืŸ ืคืึทืจื˜ื™ื™ื“ื™ืงื•ื ื’, ืึท ืคึผืึทืจืึธืœ ืงืขื ืขืŸ ืื•ื™ืš ื–ื™ื™ืŸ ืกืคึผืขืกื™ืคื™ืขื“ ื‘ืขืฉืึทืก ื“ื™ ืกื˜ืึทืจื˜ืึทืคึผ ืคืึทืกืข ืคื•ืŸ โ€‹โ€‹ssh-keygen ืฆื• ืึทืงืกืขืก ื“ื™ ืฉืœื™ืกืœ ื˜ืขืงืข.

ื“ื™ U2F ืฉืœื™ืกืœ ืงืขื ืขืŸ ื–ื™ื™ืŸ ืžื•ืกื™ืฃ ืฆื• ssh-agent ื“ื•ืจืš "ssh-add ~/.ssh/id_ecdsa_sk", ืึธื‘ืขืจ ssh-agent ืžื•ื–ืŸ ื–ื™ื™ืŸ ื’ืขื‘ื•ื™ื˜ ืžื™ื˜ ืฉื˜ื™ืฆืŸ ืคึฟืึทืจ "ecdsa-sk" ืฉืœื™ืกืœืขืŸ, ื“ื™ libsk-libfido2 ืฉื™ื›ื˜ืข ืžื•ื–ืŸ ื–ื™ื™ืŸ ืคืึธืจืฉื˜ืขืœืŸ ืื•ืŸ ืึทื’ืขื ื˜ ืžื•ื–ืŸ ื–ื™ื™ืŸ ืคืœื™ืกื ื“ื™ืง ืื•ื™ืฃ ื“ื™ ืกื™ืกื˜ืขื ืฆื• ื•ื•ืึธืก ื“ื™ ืกื™ืžืขืŸ ืื™ื– ืงืึธื ื ืขืงื˜ืขื“.
ื ื ื™ื™ึทืข ืฉืœื™ืกืœ ื˜ื™ืคึผ "ecdsa-sk" ืื™ื– ืฆื•ื’ืขื’ืขื‘ืŸ ื–ื™ื ื˜ ื“ื™ ืคึฟืึธืจืžืึทื˜ ืคื•ืŸ OpenSSH ecdsa ืฉืœื™ืกืœืขืŸ ืื™ื– ืึทื ื“ืขืจืฉ ืคื•ืŸ ื“ื™ U2F ืคึฟืึธืจืžืึทื˜ ืคึฟืึทืจ ECDSA ื“ื™ื’ื™ื˜ืึทืœ ืกื™ื’ื ืึทื˜ืฉืขืจื– ืื™ืŸ ื“ืขื ื‘ื™ื™ึทื–ื™ื™ึทืŸ ืคื•ืŸ ื ืึธืš ืคืขืœื“ืขืจ.

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

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