Técnicas de mitigação de ameaças

Há várias técnicas de mitigação de ameaças disponíveis que você pode usar para proteger melhor as senhas. Estas técnicas são implementadas utilizando uma ou mais das seguintes tecnologias principais.

Tecnologia Descrição
Criptografia: Próxima Geração (GNC) O CNG é a API criptográfica preferida para desenvolvimento no Windows. Suporta algoritmos modernos, isolamento de chaves e agilidade criptográfica. Para mais informações, consulte Características do GNC.
Listas de controlo de acesso Uma ACL (lista de controle de acesso) é uma lista de proteções de segurança que se aplica a um objeto. Um objeto pode ser um arquivo, processo, evento ou qualquer outra coisa que tenha um descritor de segurança. Para mais informações sobre ACLs, consulte Controlo de Acesso Lists.
API de Proteção de Dados (DPAPI) O DPAPI fornece funções para encriptar e desencriptar dados sensíveis vinculados à conta de utilizador ou máquina: CryptProtectData, CryptUnprotectData, CryptProtectMemory e CryptUnprotectMemory.
Gestor de Credenciais Windows Fornece armazenamento seguro para credenciais de utilizador (palavras-passe, certificados e outros segredos). Use o CredWrite e o CredRead para acesso programático. Também acessível através do CredUIPromptForWindowsCredentials.

Note

A CryptoAPI (as funções legadas Crypt* ) ainda é suportada para compatibilidade retroativa, mas o novo código deve usar APIs CNG (Criptografia: Next Generation) para suporte moderno de algoritmos e arquitetura de segurança melhorada.

As seguintes técnicas de mitigação de ameaças utilizam uma ou mais das tecnologias acima.

Obtendo senhas do usuário

Quando você permite que o usuário configure uma senha, force o uso de senhas fortes. Por exemplo, exija que as senhas tenham um comprimento mínimo, como oito caracteres ou mais. As senhas também devem incluir letras maiúsculas e minúsculas, números e outros caracteres do teclado, como o cifrão ($), ponto de exclamação (!) ou maior que (>).

Depois de obter uma senha, use-a rapidamente (usando o mínimo de código possível) e, em seguida, apague todos os vestígios da senha. Isso minimiza o tempo disponível para um intruso "capturar" a senha. A contrapartida com esta técnica é a frequência com que a senha deve ser recuperada do usuário; no entanto, o princípio deve ser aplicado sempre que possível. Para obter informações sobre como obter senhas corretamente, consulte Solicitando credenciais ao usuário.

Evite fornecer opções de interface de usuário "lembrar minha senha". Muitas vezes, os usuários exigirão ter essa opção. Se você precisar fornecê-la, então, no mínimo, certifique-se de que a senha seja salva de forma segura. Para obter informações, consulte a seção Armazenando senhas, mais adiante neste tópico.

Limite as tentativas de entrada de senha. Após um certo número de tentativas sem sucesso, bloqueie o usuário por um determinado período de tempo. Opcionalmente, aumente o tempo de resposta para cada tentativa no máximo. Esta técnica visa derrotar um ataque de adivinhação.

Armazenando senhas

Warning

Nunca armazene palavras-passe em texto simples (sem encriptação) — nem em ficheiros, no registo, nem na configuração ou no código-fonte. A encriptação de palavras-passe aumenta significativamente a sua segurança.

Para obter informações sobre como armazenar senhas criptografadas, consulte CryptProtectData. Para obter informações sobre como criptografar senhas na memória, consulte CryptProtectMemory. Guarde as palavras-passe no menor número possível de locais. Quanto mais lugares uma senha for armazenada, maior a chance de um intruso encontrá-la. Nunca armazene palavras-passe numa página Web ou num ficheiro baseado na Web. Armazenar senhas em uma página da Web ou em um arquivo baseado na Web permite que elas sejam facilmente comprometidas.

Depois de criptografar uma senha e armazená-la, use ACLs seguras para limitar o acesso ao arquivo. Como alternativa, você pode armazenar senhas e chaves de criptografia em dispositivos removíveis. Armazenar senhas e chaves de criptografia em uma mídia removível, como um cartão inteligente, ajuda a criar um sistema mais seguro. Depois que uma senha é recuperada para uma determinada sessão, o cartão pode ser removido, removendo assim a possibilidade de que um intruso possa ter acesso a ela.