As senhas são um problema. Embora continuem a ser a principal forma de proteger aplicações, serviços e sistemas, estão cada vez mais vulneráveis. A computação em nuvem torna econômico o uso de senhas valiosas por força bruta, enquanto políticas de senha mal pensadas levam os usuários a comportamentos inerentemente arriscados. E embora os gerenciadores de senhas facilitem a separação de senhas complexas para todos os lugares em que precisamos delas, outras políticas de “segurança” nos impedem de usar essas senhas.

O que se pretendia ser uma Internet segura é cada vez mais inseguro, com os nossos ficheiros, dados e finanças em risco. Ainda há um Velho Oeste por aí, e a questão é: quem vencerá essa fronteira? Os mocinhos ou uma miríade de maus atores?

Uma opção é mudar das senhas para um mundo sem senhas, onde a biometria e a criptografia forte proporcionam melhor segurança, trabalhando com nosso hardware para adicionar novas camadas de proteção. Ao nos afastarmos de senhas cada vez mais complexas e difíceis de lembrar e aprendermos a confiar em hardware seguro, podemos aproveitar as vantagens de chaves criptograficamente complexas que são difíceis de roubar e de quebrar.

Windows como plataforma segura

A Microsoft colocou a segurança no centro do Windows 11, exigindo processadores que suportem os principais padrões criptográficos, bem como hardware construído em torno de TPMs (módulos de plataforma confiáveis). Agora, a empresa está aproveitando esse esforço para trazer autenticação sem senha para suas plataformas e incentivar os desenvolvedores a utilizar essas mesmas ferramentas e APIs em seus próprios códigos.

No centro da abordagem da Microsoft estão duas tecnologias principais: Windows Hello e o protocolo WebAuthn. O Windows Hello é um conjunto de APIs que funcionam com sensores biométricos certificados do Windows, sejam câmeras faciais 3D ou sensores de impressão digital, para fornecer uma identidade verificada para um usuário de dispositivo. Os dados biométricos iniciais são capturados durante a inscrição e um hash é salvo no armazenamento seguro de um TPM. Esses dados são usados ​​para criar uma credencial vinculada a um dispositivo. A combinação de usuário e dispositivo cria um identificador único que pode ser usado para desbloquear a autenticação, funcionando como identificação primária ou secundária.

Senhas FIDO2 e Windows Hello

O Windows Hello evoluiu de parte da experiência de login do Windows para um componente da implementação do protocolo de autenticação FIDO2 no Windows, junto com o WebAuthn. Agora o Windows Hello pode ser vinculado a chaves de acesso, o nome comum para credenciais detectáveis ​​FIDO2. As chaves de acesso são usadas tanto para autenticar quanto para atestar o usuário, fornecendo identificação e verificação, automatizando as complexidades de um processo de autorização moderno.

As chaves de acesso gerenciadas pelo Windows Hello são “chaves de acesso vinculadas ao dispositivo” vinculadas ao seu PC. O Windows pode suportar outras chaves de acesso, por exemplo, chaves de acesso armazenadas em um smartphone próximo ou em um token de segurança moderno. Existe até a opção de usar terceiros para fornecer e gerenciar chaves de acesso, por exemplo, por meio de um aplicativo bancário ou serviço web.

O suporte de senha do Windows permite salvar chaves em dispositivos de terceiros. Você pode usar um código QR para transferir os dados da chave de acesso para o dispositivo ou, se for um smartphone Android vinculado, pode transferi-los por meio de uma conexão sem fio local. Em ambos os casos, os dispositivos necessitam de um sensor de identidade biométrico e de armazenamento seguro. Como alternativa, o Windows funcionará com chaves de segurança prontas para FIDO2, armazenando chaves em um YubiKey ou dispositivo semelhante. Uma caixa de diálogo Segurança do Windows ajuda você a escolher onde e como salvar suas chaves.

Se estiver salvando a chave no Windows, você será solicitado a verificar sua identidade usando o Windows Hello antes de o dispositivo ser salvo localmente. Se estiver usando o Windows 11 22H2 ou posterior, você pode gerenciar as chaves de acesso por meio das configurações do Windows.

Adicionando FIDO2 aos seus aplicativos .NET

Você pode aproveitar o suporte do Windows para FIDO2 e APIs WebAuthn para trabalhar com credenciais fortes em seu código. Grande parte da funcionalidade necessária está integrada no navegador Edge, com APIs JavaScript para aplicativos da web. Um conjunto de APIs Win32 fornece suporte para C e C++, que pode ser usado como base para bibliotecas .NET.

Para começar a adicionar recursos sem senha aos seus aplicativos rapidamente, você pode usar a biblioteca FIDO2 .NET, disponível no GitHub e gerenciada pela .NET Foundation. Como a maioria das bibliotecas .NET, a biblioteca FIDO2 pode ser adicionada ao seu código via NuGet. A biblioteca funciona com todos os aplicativos .NET, incluindo código da web ASP.NET Core.

A biblioteca FIDO2 .NET contém tudo que você precisa para criar suporte FIDO2 em aplicativos, desde o registro de usuários até sua verificação, com suporte para todas as classes de autenticadores, incluindo o Windows Hello. Ele pode ser usado para autenticação multifator básica (MFA), bem como para cenários mais complexos sem senha. Você pode considerar usá-lo para MFA como uma primeira abordagem para migrar os usuários para técnicas de autenticação mais seguras, permitindo que eles se acostumem a usar um segundo dispositivo como parte do processo de login.

Autenticação sem senha em .NET

Depois de implementar uma solução MFA, você poderá desenvolvê-la com recursos sem senha. Esse é talvez um dos aspectos mais importantes do FIDO2: ele foi projetado para suportar a jornada da autenticação tradicional até técnicas mais modernas e, eventualmente, até o uso de chaves de acesso.

Não é difícil usar a biblioteca FIDO2 .NET como parte de um servidor. Primeiro você cria um novo usuário com um nome de usuário e um nome de exibição. A biblioteca pode verificar se um usuário ainda não possui credenciais armazenadas em sua máquina ou em um armazenamento externo. As opções de atestado de serviço são entregues ao cliente solicitante, que são renderizadas usando sua implementação FIDO2. O cliente cria e armazena a chave de acesso, salvando as credenciais. Depois que o cliente solicitante retornar os dados de atestado necessários, você poderá criar os dados do usuário adicionando credenciais ao armazenamento do servidor, juntamente com um ID do usuário.

O login no serviço é o inverso do processo. O servidor recebe o ID do usuário do cliente, verifica se ele existe e solicita uma asserção. O cliente usa biometria para desbloquear a chave de acesso e envia dados de asserção ao servidor, onde são verificados usando os recursos de criptografia de chave pública do FIDO2. Por fim, após verificação, o usuário está autorizado a utilizar o serviço. Eles não precisaram digitar uma senha; tudo o que é necessário para o acesso é feito por um armazenamento de senhas local em seu PC ou telefone. A implementação FIDO2 do cliente fornece essas credenciais ao servidor após passar a biometria.

APIs sem senha Bitwarden

Outra boa opção são as APIs Passwordless.dev da Bitwarden. Eles oferecem uma maneira rápida de adicionar suporte de senha a aplicativos existentes, juntamente com uma estrutura de gerenciamento baseada em nuvem para credenciais e a estrutura criptográfica necessária. Bitwarden também não é muito caro. Uma conta gratuita oferece suporte para um único aplicativo e 10.000 usuários. Implantações maiores poderiam usar uma conta profissional, que oferece suporte para aplicativos ilimitados por US$ 0,05 por usuário por mês para os primeiros 10.000 usuários, caindo para US$ 0,01 por usuário por mês para usuários adicionais. Se você preferir vincular-se à infraestrutura de autenticação existente, como o Microsoft Entra ID, um plano empresarial custa US$ 3 por usuário por mês.

FIDO2 e seus padrões sem senha associados são uma forma muito mais segura de controlar o acesso a aplicativos e serviços. Com o Windows agora fornecendo suporte para criação e gerenciamento de chaves de acesso, é hora de começar a pensar em usar essas ferramentas em seu código, usando as ferramentas biométricas do Windows para controlar o acesso e TPMs e hardware de autenticação pronto para FIDO2 para gerenciar chaves. Quanto mais confiamos nestas tecnologias, mais reduzimos o risco para todos.