Recursos do CNG

O CNG tem os seguintes recursos.

Agilidade criptográfica

Uma das principais propostas de valor do CNG é a agilidade criptográfica, às vezes chamada de agnosticismo criptográfico. No entanto, foi necessário converter a implementação de protocolos como protocolo SSL ou TLS ( protocolo TLS), CMS (S/MIME), IPsec, Kerberos e assim por diante para CNG, no entanto, para tornar essa capacidade valiosa. No nível do CNG, era necessário fornecer substituição e descoberta para todos os tipos de algoritmo (funções simétricas, assimétricas, hash), geração de número aleatório e outras funções de utilitário. As alterações no nível do protocolo são mais significativas porque, em muitos casos, as APIs de protocolo necessárias para adicionar seleção de algoritmo e outras opções de flexibilidade que não existiam anteriormente.

O CNG está disponível pela primeira vez no Windows Vista e está posicionado para substituir os usos existentes de CryptoAPI em toda a pilha de software da Microsoft. Desenvolvedores de terceiros encontrarão muitos novos recursos no CNG, incluindo:

  • Um novo sistema de configuração de criptografia, dando suporte a uma melhor agilidade criptográfica.
  • Abstração mais refinada para armazenamento de chaves (e separação do armazenamento de operações de algoritmo).
  • Isolamento de processo para operações com chaves de longo prazo.
  • Geradores de número aleatório substituíveis.
  • Alívio das restrições de assinatura de exportação.
  • Thread-safety em toda a pilha.
  • API criptográfica no modo kernel.

Além disso, o CNG inclui suporte para todos os algoritmos necessários do Suite B, incluindo criptografia de curva elíptica (ECC). Os aplicativos CryptoAPI existentes continuarão a funcionar à medida que o CNG se tornar disponível.

Certificação e conformidade

O CNG é validado para padrões federais de processamento de informações (FIPS) 140-2 e faz parte do Destino de Avaliação para a certificação Critérios Comuns do Windows. O CNG foi projetado para ser utilizável como um componente em um sistema validado de nível 2 fips.

O CNG está em conformidade com os requisitos de Critérios Comuns armazenando e usando chaves de longa duração em um processo seguro.

Suporte do Pacote B

Um recurso importante do CNG é o suporte para os algoritmos do Suite B. Em fevereiro de 2005, a Agência de Segurança Nacional (NSA) do Estados Unidos anunciou um conjunto coordenado de criptografia simétrica, acordo secreto assimétrico (também conhecido como troca de chaves), assinatura digital e funções de hash para o futuro uso do governo dos EUA chamado Suite B. A NSA anunciou que as implementações certificadas do Suite B podem e serão usadas para a proteção de informações designadas como ultra-secretas, secretas e informações privadas que, no passado, foram descritas como Confidenciais Mas Não Classificadas. Por isso, o suporte do Suite B é muito importante para fornecedores de software de aplicativo e integradores de sistema, bem como para a Microsoft.

Todos os algoritmos do Pacote B são conhecidos publicamente. Eles foram desenvolvidos fora do escopo do sigilo governamental historicamente associado ao desenvolvimento de algoritmos criptográficos. Nesse mesmo período, alguns países e regiões europeus também propuseram os mesmos requisitos do Pacote B para proteger suas informações.

A criptografia do Pacote B recomenda o uso de ECDH (Diffie-Hellman de curva elíptica) em muitos protocolos existentes, como o IKE (Internet Key Exchange, usado principalmente no IPsec), o TLS ( transport layer security ) e o S/MIME (Secure MIME).

O CNG inclui suporte para o Pacote B que se estende a todos os algoritmos necessários: AES (todos os tamanhos de chave), a família SHA-2 (SHA-256, SHA-384 e SHA-512) de algoritmos de hash, ECDH e ECDSA (curva elíptica DSA) sobre as curvas principais padrão NIST P-256, P-384 e P-521. Não há suporte para curvas binárias, curvas Koblitz, curvas primos personalizadas e curva elíptica Menezes-Qu-Vanstone (ECMQV) incluídas no Windows Vista.

Suporte herdado

O CNG fornece suporte para o conjunto atual de algoritmos no CryptoAPI 1.0. Todos os algoritmos com suporte atualmente no CryptoAPI 1.0 continuarão a ter suporte no CNG.

Suporte ao modo Kernel

O CNG dá suporte à criptografia no modo kernel. As mesmas APIs são usadas no modo kernel e usuário para dar suporte total aos recursos de criptografia. O SSL/TLS e o IPsec operam no modo kernel, além dos processos de inicialização que usarão o CNG. Nem todas as funções CNG podem ser chamadas do modo kernel. O tópico de referência para as funções que não podem ser chamadas do modo kernel declarará explicitamente que a função não pode ser chamada do modo kernel. Caso contrário, todas as funções CNG poderão ser chamadas do modo kernel se o chamador estiver em execução no PASSIVE_LEVELIRQL. Além disso, algumas funções CNG no modo kernel podem ser chamadas em DISPATCH_LEVEL IRQL, dependendo dos recursos do provedor.

A interface do provedor de suporte de segurança do kernel da Microsoft (Ksecdd.sys) é um módulo criptográfico baseado em software de uso geral que reside no nível do modo kernel do Windows. Ksecdd.sys é executado como um driver de exportação do modo kernel e fornece serviços criptográficos por meio de suas interfaces documentadas para componentes de kernel. O único algoritmo interno do provedor da Microsoft que não tem suporte do Ksecdd.sys é o DSA.

Windows Server 2008 e Windows Vista: O CNG não dá suporte a algoritmos e provedores conectáveis no modo kernel. Os únicos algoritmos criptográficos com suporte disponíveis no modo kernel são as implementações fornecidas pela Microsoft por meio das APIs CNG do modo kernel.

Auditoria

Para cumprir alguns dos requisitos de Critérios Comuns, além de fornecer segurança abrangente, muitas ações que ocorrem na camada CNG são auditadas no KSP (provedor de armazenamento de chaves de software) da Microsoft. O Microsoft KSP segue as seguintes diretrizes para criar registros de auditoria no log de segurança:

  • Falhas de geração de chave e par de chaves, incluindo falhas de auto-teste, devem ser auditadas.
  • A importação e a exportação de chaves devem ser auditadas.
  • As principais falhas de destruição devem ser auditadas.
  • As chaves persistentes precisam ser auditadas quando são gravadas e lidas de arquivos.
  • As falhas de marcar de consistência em termos de par devem ser auditadas.
  • Falhas de validação de chave secreta, se houver, devem ser auditadas, por exemplo, verificações de paridade em chaves 3DES.
  • Falhas na criptografia, descriptografia, hash, assinatura, verificação, troca de chaves e geração de número aleatório devem ser auditadas.
  • Os autotemos criptográficos devem ser auditados.

Em geral, se uma chave não tiver um nome, ela será uma chave efêmera. Uma chave efêmera não persiste e o Microsoft KSP não gera registros de auditoria para chaves efêmeras. O Microsoft KSP gera registros de auditoria no modo de usuário somente no processo LSA. Nenhum registro de auditoria é gerado pelo CNG do modo kernel. Os administradores precisam configurar a política de auditoria para obter todos os logs de auditoria do KSP do log de segurança. Um administrador deve executar a seguinte linha de comando para configurar auditorias adicionais geradas por KSPs:

auditpol /set /subcategory:"other system events" /success:enable /failure:enable

Geradores de número aleatório substituíveis

Outra melhoria que o CNG fornece é a capacidade de substituir o RNG (gerador de número aleatório) padrão. No CryptoAPI, é possível fornecer um RNG alternativo como parte de um provedor de serviços criptográficos (CSP), mas não é possível redirecionar os CSPs base da Microsoft para usar outro RNG. O CNG possibilita especificar explicitamente um RNG específico a ser usado em chamadas específicas.

Acesso thread-safe

Todas as funções que modificam a mesma área de memória ao mesmo tempo (seções críticas) ao serem chamadas de threads separados não são thread-safe.

Modo de operação

O CNG dá suporte a cinco modos de operações que podem ser usados com criptografias de bloco simétricas por meio das APIs de criptografia. Esses modos e sua capacidade de suporte estão listados na tabela a seguir. O modo de operação pode ser alterado definindo a propriedade BCRYPT_CHAINING_MODE para o provedor de algoritmos usando a função BCryptSetProperty .

Modo de operação BCRYPT_CHAINING_MODE valor Algoritmos Standard
ECB (Electronic Codebook) BCRYPT_CHAIN_MODE_ECB Criptografias de bloco simétricas SP800-38A
CBC (encadeamento de blocos de criptografia) BCRYPT_CHAIN_MODE_CBC Criptografias de bloco simétricas SP800-38A
CFB (comentários de criptografia) BCRYPT_CHAIN_MODE_CFB Criptografias de bloco simétrico SP800-38A
CCM (Contador com CBC) BCRYPT_CHAIN_MODE_CCM AES SP800-38C
GCM (Modo Galois/Contador) BCRYPT_CHAIN_MODE_GCM AES SP800-38D

 

Observação

Somente os modos de operação ECB, CBC e CFB são definidos no Windows Vista. O GCM e o CCM exigem o Windows Vista com o Service Pack 1 (SP1) ou o Windows Server 2008.