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. A conversão da implementação de protocolos como protocolo SSL ( Secure Sockets Layer protocol ) ou TLS (transport layer security ), CMS (S/MIME), IPsec, Kerberos e assim por diante, em CNG, no entanto, foi necessária 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).
  • Processe o isolamento 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.
  • Segurança de thread 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 ficar disponível.

Certificação e conformidade

O CNG é validado para o FIPS (Federal Information Processing Standards) 140-2 e faz parte do Destino de Avaliação para a certificação Windows Common Criteria. 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 ao Suite B

Um recurso importante do CNG é seu suporte para os algoritmos do Suite B. Em fevereiro de 2005, a Agência Nacional de Segurança (NSA) do Estados Unidos anunciou um conjunto coordenado de criptografia simétrica, contrato secreto assimétrico (também conhecido como troca de chaves), assinatura digital e funções de hash para futuros 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 Segredo Superior, Segredo 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 aplicativo e integradores de sistema, 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 europeias também propuseram os mesmos requisitos do Suite B para proteger suas informações.

A criptografia do Suite B recomenda o uso de Diffie-Hellman de curva elíptica (ECDH) em muitos protocolos existentes, como o IKE (Internet Key Exchange, usado principalmente no IPsec), tls (segurança da camada de transporte) e MIME Seguro (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 DSA de curva elíptica (ECDSA) sobre as curvas principais padrão NIST P-256, P-384 e P-521. As curvas binárias, as curvas koblitz, as curvas primo personalizadas e a curva elíptica Menezes-Qu-Vanstone (ECMQV) não são compatíveis com os 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 com 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 no modo kernel. O tópico de referência para as funções que não podem ser chamadas do modo kernel afirmará 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 no 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 de uso geral baseado em software que reside no nível do modo kernel de 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 do kernel. O único algoritmo interno do provedor da Microsoft que não tem suporte no Ksecdd.sys é o DSA.

Windows Server 2008 e Windows Vista: O CNG não dá suporte a algoritmos e provedores plugá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 chaves e pares-chave, 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.
  • Falhas de verificação 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 auto-testes 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 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:"outros eventos do sistema" /success:enable /failure:enable

Geradores de número aleatório substituíveis

Outra melhoria fornecida pelo CNG é 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 CSP (provedor de serviços criptográficos), mas não é possível redirecionar os CSPs de 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étrico 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 algoritmo usando a função BCryptSetProperty .

Modo de operação BCRYPT_CHAINING_MODE valor Algoritmos Standard
BCE (Codebook Eletrônico) BCRYPT_CHAIN_MODE_ECB Criptografias de bloco simétrico SP800-38A
CBC (Encadeamento de blocos de criptografia) BCRYPT_CHAIN_MODE_CBC Criptografias de bloco simétrico 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 BCE, CBC e CFB são definidos em Windows Vista. GCM e CCM exigem Windows Vista com Service Pack 1 (SP1) ou Windows Server 2008.