Hoʻohui ʻo OpenSSH i ke kākoʻo no ka hōʻoia ʻelua-factor āpau

I ka OpenSSH codebase hoʻohui ʻia kākoʻo hoʻokolohua no ka hōʻoia ʻelua kumu me ka hoʻohana ʻana i nā polokalamu e kākoʻo ana i ka protocol U2F, hoʻomohala ʻia e ka hui kuʻikahi Fido. ʻAe ʻo U2F i ka hana ʻana i nā hōʻailona lako haʻahaʻa haʻahaʻa e hōʻoia i ka noho kino o ka mea hoʻohana, e launa pū me lākou ma o USB, Bluetooth a i ʻole NFC. Hoʻolaha ʻia kēlā mau mea hana ma ke ʻano o ka hōʻoia ʻelua-factor ma nā pūnaewele, ua kākoʻo ʻia e nā polokalamu kele nui a hana ʻia e nā mea hana like ʻole, me Yubico, Feitian, Thetis a me Kensington.

No ka launa pū ʻana me nā polokalamu e hōʻoia i ka hele ʻana o ka mea hoʻohana, ua hoʻohui ʻia kahi ʻano kī hou i OpenSSH "[pale ʻia ka leka uila]” (“ecdsa-sk”), e hoʻohana ana i ka ECDSA (Elliptic Curve Digital Signature Algorithm) hōʻailona kikohoʻe algorithm me NIST P-256 elliptic curve a me SHA-256 hash. Hoʻokomo ʻia nā kaʻina hana no ka launa pū ʻana me nā hōʻailona i loko o kahi waihona waena, i hoʻouka ʻia ma ke ʻano like me ka waihona no ke kākoʻo PKCS#11 a he ʻōwili ma luna o ka waihona. libfido2, e hāʻawi ana i nā mea hana no ke kamaʻilio ʻana me nā hōʻailona ma luna o USB (FIDO U2F/CTAP 1 a me FIDO 2.0/CTAP 2 protocols kākoʻo ʻia). ʻO ka hale waihona puke waena libsk-libfido2 i hoʻomākaukau ʻia e nā mea hoʻomohala OpenSSH hui pū ʻia i loko o ka libfido2 kumu, a me Keaukaha HID no OpenBSD.

No ka hiki iā U2F, hiki iā ʻoe ke hoʻohana i kahi ʻāpana hou o ka codebase mai waihona waihona OpenSSH a me ka lālā HEAD o ka waihona libfido2, ka mea i komo i ka papa e pono ai no OpenSSH.
Kākoʻo ʻo Libfido2 iā OpenBSD, Linux, macOS a me Windows.

No ka hōʻoia ʻana a me ka hana ʻana i kahi kī, pono ʻoe e hoʻonohonoho i ka hoʻololi kaiapuni SSH_SK_PROVIDER, e hōʻike ana i ke ala i libsk-libfido2.so (export SSH_SK_PROVIDER=/path/to/libsk-libfido2.so), a i ʻole e wehewehe i ka waihona ma o ka SecurityKeyProvider hoʻonohonoho, a laila holo "ssh-keygen -t ecdsa-sk" a i ʻole, inā ua hana ʻia a hoʻonohonoho ʻia nā kī, e hoʻopili i ke kikowaena me ka "ssh". Ke holo ʻoe i ka ssh-keygen, e mālama ʻia ka pālua kī i hana ʻia ma "~/.ssh/id_ecdsa_sk" a hiki ke hoʻohana like me nā kī ʻē aʻe.

Pono e kope ʻia ke kī lehulehu (id_ecdsa_sk.pub) i ke kikowaena ma ka waihona authorized_keys. Ma ka ʻaoʻao kikowaena, ʻo ka hōʻailona kikohoʻe wale nō i hōʻoia ʻia, a hana ʻia ka launa pū me nā hōʻailona ma ka ʻaoʻao o ka mea kūʻai aku (ʻaʻole pono ʻoe e hoʻokomo i ka libsk-libfido2 ma ke kikowaena, akā pono ke kikowaena e kākoʻo i ke ʻano kī "ecdsa-sk") . ʻO ke kī pilikino i hana ʻia (id_ecdsa_sk) he kī kī maoli nō ia, e hana ana i kī maoli wale nō i hui pū ʻia me ke kaʻina huna i mālama ʻia ma ka ʻaoʻao hōʻailona U2F.

Inā hāʻule ke kī id_ecdsa_sk i ka lima o ka mea hoʻouka, no ka hōʻoiaʻiʻo ʻana, pono ʻo ia e komo i ka hōʻailona lako, me ka ʻole o ke kī pilikino i mālama ʻia i ka faila id_ecdsa_sk he mea ʻole. Eia kekahi, ma ka maʻamau, i ka wā e hana ai i nā hana me nā kī (i ka wā o ka hanauna a i ka wā o ka hōʻoia ʻana), koi ʻia ka hōʻoia kūloko o ka noho kino o ka mea hoʻohana, no ka laʻana, ua manaʻo ʻia e hoʻopā i ka mea ʻike ma ka hōʻailona, ​​​​e paʻakikī ai. hoʻokō i nā hoʻouka mamao ma nā ʻōnaehana me kahi hōʻailona pili. E like me kahi laina pale ʻē aʻe, hiki ke kuhikuhi ʻia kahi ʻōlelo huna i ka wā hoʻomaka o ssh-keygen e komo i ka faila kī.

Hiki ke hoʻohui ʻia ke kī U2F i ka ssh-agent ma o "ssh-add ~/.ssh/id_ecdsa_sk", akā pono ke kūkulu ʻia ʻo ssh-agent me ke kākoʻo no nā kī "ecdsa-sk", pono ka papa libsk-libfido2 a me ka Pono e holo ka luna ma ka ʻōnaehana, kahi e pili ai ka hōʻailona.
Ua hoʻohui ʻia kahi ʻano kī hou "ecdsa-sk" ma muli o ka ʻokoʻa o ke ʻano o nā kī ecdsa OpenSSH mai ka hōʻano U2F no nā pūlima kikohoʻe ECDSA i mua o nā kahua hou.

Source: opennet.ru

Pākuʻi i ka manaʻo hoʻopuka