OpenSSH adiciona suporte para autenticação universal de dois fatores

Para a base de código OpenSSH adicionado suporte experimental para autenticação de dois fatores usando dispositivos que suportam o protocolo U2F, desenvolvido pela aliança FIDO. O U2F permite a criação de tokens de hardware de baixo custo para verificar a presença física do usuário, interagindo com ele via USB, Bluetooth ou NFC. Esses dispositivos são promovidos como meio de autenticação de dois fatores em sites, já são suportados pelos principais navegadores e são produzidos por diversos fabricantes, incluindo Yubico, Feitian, Thetis e Kensington.

Para interagir com dispositivos que confirmam a presença do usuário, um novo tipo de chaves foi adicionado ao OpenSSH”[email protegido]” (“ecdsa-sk”), que usa o algoritmo de assinatura digital ECDSA (Elliptic Curve Digital Signature Algorithm) com curva elíptica NIST P-256 e hash SHA-256. Os procedimentos para interagir com tokens são colocados em uma biblioteca intermediária, que é carregada de maneira semelhante à biblioteca para suporte PKCS#11 e é um wrapper no topo da biblioteca libfido2, que fornece ferramentas para comunicação com tokens por USB (os protocolos FIDO U2F/CTAP 1 e FIDO 2.0/CTAP 2 são suportados). Biblioteca intermediária libsk-libfido2 preparada por desenvolvedores OpenSSH está incluído no núcleo libfido2, bem como Motorista HID para OpenBSD.

Para habilitar o U2F, você pode usar uma nova fatia da base de código de repositório OpenSSH e o ramo HEAD da biblioteca libfido2, que já inclui a camada necessária para OpenSSH.
Libfido2 suporta OpenBSD, Linux, macOS e Windows.

Para autenticar e gerar uma chave, você precisa definir a variável de ambiente SSH_SK_PROVIDER, indicando nela o caminho para libsk-libfido2.so (exportar SSH_SK_PROVIDER=/path/to/libsk-libfido2.so), ou definir a biblioteca através do SecurityKeyProvider configuração e, em seguida, execute “ssh-keygen -t ecdsa-sk” ou, se as chaves já tiverem sido criadas e configuradas, conecte-se ao servidor usando “ssh”. Ao executar o ssh-keygen, o par de chaves gerado será salvo em “~/.ssh/id_ecdsa_sk” e poderá ser usado de forma semelhante a outras chaves.

A chave pública (id_ecdsa_sk.pub) deve ser copiada para o servidor no arquivoauthorized_keys. No lado do servidor, apenas a assinatura digital é verificada, e a interação com tokens é realizada no lado do cliente (não é necessário instalar libsk-libfido2 no servidor, mas o servidor deve suportar o tipo de chave “ecdsa-sk”) . A chave privada gerada (id_ecdsa_sk) é essencialmente um identificador de chave, formando uma chave real apenas em combinação com a sequência secreta armazenada no lado do token U2F.

Se a chave id_ecdsa_sk cair nas mãos de um invasor, para passar a autenticação ele também precisará obter acesso ao token de hardware, sem o qual a chave privada armazenada no arquivo id_ecdsa_sk será inútil. Além disso, por padrão, ao realizar qualquer operação com chaves (tanto durante a geração quanto durante a autenticação), é necessária a confirmação local da presença física do usuário, por exemplo, é proposto tocar no sensor do token, o que dificulta a realizar ataques remotos em sistemas com um token conectado. Como outra linha de defesa, uma senha também pode ser especificada durante a fase de inicialização do ssh-keygen para acessar o arquivo de chave.

A chave U2F pode ser adicionada ao ssh-agent via "ssh-add ~/.ssh/id_ecdsa_sk", mas o ssh-agent deve ser construído com suporte para chaves "ecdsa-sk", a camada libsk-libfido2 deve estar presente e o O agente deve estar em execução no sistema ao qual o token está conectado.
Um novo tipo de chave “ecdsa-sk” foi adicionado, uma vez que o formato das chaves OpenSSH ecdsa difere do formato U2F para assinaturas digitais ECDSA na presença de campos adicionais.

Fonte: opennet.ru

Adicionar um comentário