API de criptografia: próxima geração

Finalidade

API de criptografia: Next Generation (CNG) é o substituto de longo prazo para a CryptoAPI. O CNG foi concebido para ser extensível a muitos níveis e para ter um comportamento independente da criptografia.

Público de desenvolvedores

CNG destina-se ao uso por desenvolvedores de aplicativos que permitirão aos usuários criar e trocar documentos e outros dados em um ambiente seguro, especialmente em mídias não seguras, como a Internet. Os desenvolvedores devem estar familiarizados com as linguagens de programação C e C++ e com o ambiente de programação baseado no Windows. Embora não seja necessário, aconselha-se uma compreensão de criptografia ou assuntos relacionados à segurança.

Se você estiver desenvolvendo um provedor de algoritmo criptográfico CNG ou provedor de armazenamento de chaves, deverá baixar o Cryptographic Provider Development Kit da Microsoft.

Requisitos de tempo de execução

O CNG é suportado a partir do Windows Server 2008 e do Windows Vista. Para obter informações sobre os requisitos de tempo de execução para um elemento de programação específico, consulte a seção Requisitos da página de referência desse elemento.

Nesta secção

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

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

Quando usar GNC

Use GNC quando precisar de controlo direto sobre operações criptográficas em aplicações Windows. A orientação seguinte ajuda-o a escolher a API apropriada:

Scenario API recomendada
Encriptação/desencriptação simétrica (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 dos dados do utilizador em repouso (por utilizador ou por máquina) DPAPI (mais simples, sem necessidade de gestão de chaves)
Proteger dados acessíveis a múltiplos utilizadores ou máquinas DPAPI-NG (NCryptProtectSecret)
Ligações TLS/SSL Schannel (usa GNC internamente)
Código legado que já utiliza a CryptoAPI Continue com a CryptoAPI para manutenção, mas planeie migrar para GNC para novas funcionalidades

Warning

Armadilhas criptográficas comuns a evitar:

  • Não utilize o modo de cifra por blocos do ECB — pode libertar padrões de texto simples. Use CBC com um IV aleatório, ou preferencialmente um modo autenticado como GCM.
  • Não codifique as chaves de encriptação no código-fonte. Use fornecedores de armazenamento chave ou DPAPI para proteção de chaves.
  • Não utilize MD5 ou SHA-1 por razões de integridade ou segurança. Use SHA-256 ou mais forte.
  • Valide sempre os códigos de retorno das funções CNG. Uma operação criptográfica falhada e silenciosamente ignorada pode levar ao armazenamento de dados sem encriptação.

Kit de Desenvolvimento do Provedor de Criptografia

CryptoAPI