API de Criptografia: Próxima Geração

Propósito

API de Criptografia: A próxima geração (CNG) é a substituição de longo prazo para a CryptoAPI. O CNG foi projetado para ser extensível em vários níveis e agnóstico em relação à criptografia em seu comportamento.

Público-alvo do desenvolvedor

O CNG destina-se ao uso por desenvolvedores de aplicativos que permitirão que os usuários criem e troquem documentos e outros dados em um ambiente seguro, especialmente por meio de mídia não segura, como a Internet. Os desenvolvedores devem estar familiarizados com as linguagens de programação C e C++ e o ambiente de programação baseado no Windows. Embora não seja necessário, é recomendável entender a criptografia ou os assuntos relacionados à segurança.

Se estiver desenvolvendo um provedor de algoritmo criptográfico CNG ou um provedor de armazenamento de chaves, você deverá baixar o do Kit de Desenvolvimento do Provedor Criptográfico da Microsoft.

Requisitos de tempo de execução

O CNG tem suporte a partir do Windows Server 2008 e do Windows Vista. Para obter informações sobre os requisitos de runtime para um determinado elemento de programação, consulte a seção Requisitos da página de referência desse elemento.

Nesta seção

Os tópicos a seguir fornecem informações sobre cng e como usá-lo em seus aplicativos:

Tópico Descrição
sobre CNG Descreve os recursos de CNG, primitivos criptográficos e armazenamento de chaves, recuperação, importação e exportação.
Uso de GNV Explica como usar os recursos de configuração de criptografia de CNG e programação CNG típica.
Referência CNG Descrições detalhadas dos elementos de programação CNG. Essas páginas incluem descrições de referência da API para trabalhar com CNG.

Quando usar CNG

Use CNG quando precisar de controle direto sobre operações criptográficas em aplicativos Windows. As diretrizes a seguir ajudam você a escolher a API apropriada:

Scenario API recomendada
Criptografia simétrica/descriptografia (AES, ChaCha20-Poly1305) CNG (BCryptEncrypt / BCryptDecrypt)
Hashing (SHA-256, SHA-384, SHA-512) CNG (BCryptCreateHash)
Operações assimétricas (RSA, ECDSA, ML-DSA) CNG (BCryptSignHash, BCryptVerifySignature)
Proteção de dados do usuário em repouso (escopo por usuário ou por máquina) DPAPI (mais simples, sem necessidade de gerenciamento de chave)
Proteger dados acessíveis a vários usuários ou computadores DPAPI-NG (NCryptProtectSecret)
Conexões TLS/SSL Schannel (usa CNG internamente)
Código herdado que já usa CryptoAPI Continue com CryptoAPI para manutenção, mas planeje a migração para CNG para novos recursos

Aviso

Armadilhas criptográficas comuns para evitar:

  • Não use o modo de criptografia de bloco do BCE – ele vaza padrões de texto sem formatação. Use o CBC com um IV aleatório ou, preferencialmente, um modo autenticado como GCM.
  • Não codificar chaves de criptografia no código-fonte. Use provedores de armazenamento de chaves ou DPAPI para proteção de chave.
  • Não use MD5 ou SHA-1 para fins de integridade ou segurança. Use SHA-256 ou mais forte.
  • Sempre valide os códigos de retorno das funções CNG. Uma operação criptográfica com falha que é silenciosamente ignorada pode levar a dados armazenados não criptografados.

Kit de desenvolvimento de provedor criptográfico

CryptoAPI