OpenSSH engade soporte para a autenticación universal de dous factores

Á base de código OpenSSH engadido soporte experimental para a autenticación de dous factores mediante dispositivos que admitan o protocolo U2F, desenvolvido pola alianza Fido. U2F permite a creación de tokens de hardware de baixo custo para verificar a presenza física do usuario, interactuando con eles a través de USB, Bluetooth ou NFC. Estes dispositivos promóvense como un medio de autenticación de dous factores nos sitios web, xa son compatibles cos principais navegadores e son producidos por varios fabricantes, incluíndo Yubico, Feitian, Thetis e Kensington.

Para interactuar con dispositivos que confirman a presenza do usuario, engadiuse un novo tipo de chaves a OpenSSH "[protexido por correo electrónico]” (“ecdsa-sk”), que utiliza o algoritmo de sinatura dixital ECDSA (Elliptic Curve Digital Signature Algorithm) con curva elíptica NIST P-256 e hash SHA-256. Os procedementos para interactuar cos tokens colócanse nunha biblioteca intermedia, que se carga de forma similar á biblioteca para compatibilidade con PKCS#11 e é un envoltorio na parte superior da biblioteca. libfido2, que ofrece ferramentas para comunicarse con tokens a través de USB (admítense os protocolos FIDO U2F/CTAP 1 e FIDO 2.0/CTAP 2). Biblioteca intermedia libsk-libfido2 preparada polos desenvolvedores de OpenSSH incluído no núcleo libfido2, así como controlador HID para OpenBSD.

Para activar U2F, podes usar unha nova parte da base de código desde repositorio OpenSSH e a rama HEAD da biblioteca libfido2, que xa inclúe a capa necesaria para OpenSSH.
Libfido2 admite OpenBSD, Linux, macOS e Windows.

Para autenticar e xerar unha chave, cómpre establecer a variable de ambiente SSH_SK_PROVIDER, indicando nela o camiño a libsk-libfido2.so (exportar SSH_SK_PROVIDER=/path/to/libsk-libfido2.so), ou definir a biblioteca a través do SecurityKeyProvider configuración e, a continuación, execute "ssh-keygen -t ecdsa-sk" ou, se as chaves xa foron creadas e configuradas, conéctese ao servidor mediante "ssh". Cando executa ssh-keygen, o par de claves xerado gardarase en “~/.ssh/id_ecdsa_sk” e pódese usar de xeito similar a outras claves.

A chave pública (id_ecdsa_sk.pub) debería copiarse no servidor no ficheiro authorized_keys. No lado do servidor, só se verifica a sinatura dixital e a interacción cos tokens realízase no lado do cliente (non é necesario instalar libsk-libfido2 no servidor, pero o servidor debe admitir o tipo de chave "ecdsa-sk"). . A clave privada xerada (id_ecdsa_sk) é esencialmente un identificador de chave, formando unha clave real só en combinación coa secuencia secreta almacenada no lado do token U2F.

Se a clave id_ecdsa_sk cae en mans dun atacante, para pasar a autenticación tamén terá que acceder ao token de hardware, sen o cal a clave privada almacenada no ficheiro id_ecdsa_sk é inútil. Ademais, por defecto, ao realizar calquera operación con claves (tanto durante a xeración como durante a autenticación), é necesaria a confirmación local da presenza física do usuario, por exemplo, proponse tocar o sensor do token, o que dificulta realizar ataques remotos a sistemas cun token conectado. Como outra liña de defensa, tamén se pode especificar un contrasinal durante a fase de inicio de ssh-keygen para acceder ao ficheiro de chave.

Pódese engadir a chave U2F a ssh-agent mediante "ssh-add ~/.ssh/id_ecdsa_sk", pero ssh-agent debe construírse con soporte para chaves "ecdsa-sk", a capa libsk-libfido2 debe estar presente e o o axente debe estar en execución no sistema ao que está conectado o token.
Engadiuse un novo tipo de chave "ecdsa-sk" xa que o formato das chaves ecdsa de OpenSSH difire do formato U2F para as sinaturas dixitais ECDSA en presenza de campos adicionais.

Fonte: opennet.ru

Engadir un comentario