Recursos CNG

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, a conversão da implementação de protocolos como SSL (Secure Sockets Layer Protocol ) ou TLS (TRANSPORT LAYER SECURITY ), CMS (S/MIME), IPsec, Kerberos e assim por diante para CNG foi necessária para tornar essa capacidade valiosa. No nível CNG, era necessário fornecer substituição e capacidade de descoberta para todos os tipos de algoritmo (funções simétricas, assimétricas, hash), geração de números aleatórios e outras funções de utilidade. As alterações no nível do protocolo são mais significativas porque, em muitos casos, as APIs de protocolo precisavam adicionar seleção de algoritmo e outras opções de flexibilidade que não existiam anteriormente.

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

  • Um novo sistema de configuração de criptografia, oferecendo melhor agilidade criptográfica.
  • Abstração mais refinada para armazenamento de chaves (e separação de armazenamento de operações de algoritmo).
  • Isolamento de processo para operações com chaves de longo prazo.
  • Geradores de números aleatórios substituíveis.
  • Alívio das restrições de assinatura de exportação.
  • Segurança de rosca 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 for disponibilizado.

Conformidade e certificação

O CNG é validado de acordo com os Padrões Federais de Processamento de Informações (FIPS) 140-2 e faz parte da certificação Target of Evaluation for the Windows Common Criteria. O GNC foi projetado para ser usado como um componente em um sistema validado pelo FIPS nível 2.

O CNG está em conformidade com os requisitos do Common Criteria, armazenando e usando chaves de longa duração em um processo seguro.

Suporte Suite B

Uma característica importante do CNG é seu suporte para os algoritmos do Suite B. Em fevereiro de 2005, a Agência de Segurança Nacional dos Estados Unidos (NSA) 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 uso futuro 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 Top Secret, Secret e informações privadas que, no passado, foram descritas como confidenciais, mas não classificadas. Por isso, o suporte ao Suite B é muito importante para fornecedores de software de aplicativos e integradores de sistemas, bem como para a Microsoft.

Todos os algoritmos do Suite 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 Suite B para proteger suas informações.

A criptografia Suite B recomenda o uso de curva elíptica Diffie-Hellman (ECDH) em muitos protocolos existentes, como o Internet Key Exchange (IKE, usado principalmente em IPsec), Transport Layer Security (TLS) e Secure MIME (S/MIME).

O CNG inclui suporte para o Suite 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 curva elíptica DSA (ECDSA) sobre as curvas principais padrão NIST P-256, P-384 e P-521. Curvas binárias, curvas de Koblitz, curvas primas personalizadas e curva elíptica de Menezes-Qu-Vanstone (ECMQV) não são suportadas pelos provedores de algoritmos da Microsoft incluídos no Windows Vista.

Suporte herdado

O CNG fornece suporte para o conjunto atual de algoritmos no CryptoAPI 1.0. Todos os algoritmos com suporte 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 kernel e no modo de usuário para oferecer 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 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 em PASSIVE_LEVEL IRQL. Além disso, algumas funções CNG do 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 de uso geral, baseado em software, que reside no nível do modo kernel do Windows. Ksecdd.sys é executado como um driver de exportação de modo kernel e fornece serviços criptográficos por meio de suas interfaces documentadas para componentes do kernel. O único algoritmo de provedor interno da Microsoft que não é compatível com Ksecdd.sys é o DSA.

Windows Server 2008 e Windows Vista: a CNG não oferece 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 do Common Criteria, além de fornecer segurança abrangente, muitas ações que ocorrem na camada CNG são auditadas no KSP (provedor de armazenamento de chave 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 chaves e pares de chaves, incluindo falhas de autoteste, devem ser auditadas.
  • A importação e a exportação de chaves devem ser auditadas.
  • As falhas de destruição de chave devem ser auditadas.
  • As chaves persistentes precisam ser auditadas quando são gravadas e lidas de arquivos.
  • As falhas de verificação de consistência em pares devem ser auditadas.
  • As 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úmeros aleatórios devem ser auditadas.
  • Os autotestes criptográficos devem ser auditados.

Em geral, se uma chave não tiver um nome, é 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 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úmeros aleatórios substituíveis

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

Acesso thread-safe

Quaisquer funções que modifiquem a mesma área de memória ao mesmo tempo (seções críticas) ao serem chamadas de threads separadas 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 Valor BCRYPT_CHAINING_MODE Algoritmos Standard
BCE (Livro de Códigos Eletrônicos) BCRYPT_CHAIN_MODE_ECB Cifras de bloco simétricas SP800-38A
CBC (Encadeamento de Blocos de Criptografia) BCRYPT_CHAIN_MODE_CBC Cifras de bloco simétricas SP800-38A
CFB (Feedback de Criptografia) BCRYPT_CHAIN_MODE_CFB Cifras de bloco simétricas SP800-38A
CCM (Contador com CBC) BCRYPT_CHAIN_MODE_CCM AES SP800-38C
GCM (Modo de Contador/Galois) 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. GCM e CCM requerem Windows Vista com Service Pack 1 (SP1) ou Windows Server 2008.