OpenSSH aldonas subtenon por universala dufaktora aŭtentigo

Al la kodbazo OpenSSH aldonis eksperimenta subteno por dufaktora aŭtentigo uzante aparatojn kiuj subtenas la protokolon U2F, evoluigita fare de la alianco Fido. U2F permesas la kreadon de malmultekostaj aparataj ĵetonoj por kontroli la fizikan ĉeeston de la uzanto, interagante kun ili per USB, Bluetooth aŭ NFC. Tiaj aparatoj estas reklamitaj kiel rimedo de dufaktora aŭtentigo en retejoj, jam estas subtenataj de ĉefaj retumiloj kaj estas produktitaj de diversaj fabrikantoj, inkluzive de Yubico, Feitian, Thetis kaj Kensington.

Por interagi kun aparatoj, kiuj konfirmas la ĉeeston de la uzanto, nova speco de ŝlosiloj estis aldonita al OpenSSH "[retpoŝte protektita]” (“ecdsa-sk”), kiu uzas la ciferecan subskriban algoritmon ECDSA (Elliptic Curve Digital Signature Algorithm) kun NIST P-256 elipsa kurbo kaj SHA-256 hash. Proceduroj por interagado kun ĵetonoj estas metitaj en mezan bibliotekon, kiu estas ŝarĝita en simila maniero al la biblioteko por PKCS#11-subteno kaj estas envolvaĵo supre de la biblioteko. libfido2, kiu disponigas ilojn por komuniki kun ĵetonoj per USB (protokoloj FIDO U2F/CTAP 1 kaj FIDO 2.0/CTAP 2 estas subtenataj). Meza biblioteko libsk-libfido2 preparita de OpenSSH-programistoj inkluzivita en la kernon libfido2, same kiel HID-ŝoforo por OpenBSD.

Por ebligi U2F, vi povas uzi freŝan tranĉaĵon de la kodbazo de deponejo OpenSSH kaj la HEAD-filio de la biblioteko libfido2, kiu jam inkluzivas la tavolon necesan por OpenSSH.
Libfido2 subtenas OpenBSD, Linukso, macOS kaj Vindozo.

Por aŭtentikigi kaj generi ŝlosilon, vi devas agordi la mediovariablon SSH_SK_PROVIDER, indikante en ĝi la vojon al libsk-libfido2.so (eksportu SSH_SK_PROVIDER=/path/to/libsk-libfido2.so), aŭ difini la bibliotekon per la SecurityKeyProvider agordo, kaj poste rulu "ssh-keygen -t ecdsa-sk" aŭ, se la ŝlosiloj jam estas kreitaj kaj agordis, konekti al la servilo per "ssh". Kiam vi rulas ssh-keygen, la generita ŝlosilparo estos konservita en "~/.ssh/id_ecdsa_sk" kaj povas esti uzata simile al aliaj ŝlosiloj.

La publika ŝlosilo (id_ecdsa_sk.pub) estu kopiita al la servilo en la dosiero authorized_keys. Ĉe la servilo, nur la cifereca subskribo estas kontrolita, kaj interago kun ĵetonoj estas farita ĉe la klienta flanko (vi ne bezonas instali libsk-libfido2 sur la servilo, sed la servilo devas subteni la "ecdsa-sk" ŝlosiltipo) . La generita privata ŝlosilo (id_ecdsa_sk) estas esence ŝlosila tenilo, formante realan ŝlosilon nur en kombinaĵo kun la sekreta sekvenco stokita sur la U2F-ĵetonflanko.

Se la id_ecdsa_sk-ŝlosilo falas en la manojn de atakanto, por pasigi aŭtentikigon li ankaŭ bezonos akiri aliron al la aparatara ĵetono, sen kiu la privata ŝlosilo konservita en la id_ecdsa_sk-dosiero estas senutila. Krome, defaŭlte, kiam oni faras ajnajn operaciojn per klavoj (kaj dum generacio kaj dum aŭtentigo), loka konfirmo de la fizika ĉeesto de la uzanto necesas, ekzemple, oni proponas tuŝi la sensilon sur la ĵetono, kio malfaciligas fari forajn atakojn sur sistemoj kun konektita ĵetono. Kiel alia defendlinio, pasvorto ankaŭ povas esti specifita dum la ekfazo de ssh-keygen por aliri la ŝlosilan dosieron.

La U2F-ŝlosilo povas esti aldonita al ssh-agent per "ssh-add ~/.ssh/id_ecdsa_sk", sed ssh-agent devas esti konstruita kun subteno por "ecdsa-sk" ŝlosiloj, la libsk-libfido2 tavolo devas ĉeesti kaj la agento devas funkcii en la sistemo , al kiu la ĵetono estas konektita.
Nova ŝlosilspeco "ecdsa-sk" estis aldonita ĉar la formato de OpenSSH ecdsa ŝlosiloj diferencas de la U2F-formato por ECDSA ciferecaj subskriboj en la ĉeesto de kromaj kampoj.

fonto: opennet.ru

Aldoni komenton