Características do GNV
O GNV tem as seguintes características.
- Agilidade Criptográfica
- de Certificação e Conformidade
- de Suporte Suite B
- Suporte Legado
- de Suporte ao Modo Kernel
- Auditoria
- Geradores de números aleatórios substituíveis
- de segurança de roscas
- Modo de Operação
Agilidade criptográfica
Uma das principais propostas de valor do GNV é a agilidade criptográfica, às vezes chamada de agnosticismo criptográfico. A conversão da implementação de protocolos como Secure Sockets Layer protocol (SSL) ou transport layer security (TLS), CMS (S/MIME), IPsec, Kerberos e assim por diante, para CNG, no entanto, foi necessária para tornar essa capacidade valiosa. No nível CNG, foi necessário fornecer substituição e descoberta para todos os tipos de algoritmos (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.
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, suportando melhor agilidade criptográfica.
- Abstração mais refinada para armazenamento de chaves (e separação do armazenamento das operações do algoritmo).
- Isolamento de processos para operações com chaves de longo prazo.
- Geradores de números aleatórios substituíveis.
- Isenção das restrições de assinatura de exportação.
- Segurança de roscas em toda a pilha.
- API criptográfica de modo kernel.
Além disso, o CNG inclui suporte para todos os algoritmos do Suite B necessários, incluindo de 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 GNC é validado de acordo com os Padrões Federais de Processamento de Informações (FIPS) 140-2 e faz parte do Target of Evaluation para a certificação Windows Common Criteria. O GNC foi concebido para ser utilizável como componente num sistema validado FIPS nível 2.
O GNC cumpre os requisitos dos Critérios Comuns, armazenando e utilizando chaves de longa duração num processo seguro.
Suporte Suite B
Uma característica importante do CNG é o seu suporte para os algoritmos Suite B. Em fevereiro de 2005, a Agência de Segurança Nacional (NSA) dos 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 uso futuro do governo dos EUA chamado Suite B. A NSA anunciou que 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, eram descritas como Sensitive-But-Unclassified. Por isso, o suporte ao Suite B é muito importante para os 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 âmbito do sigilo governamental historicamente associado ao desenvolvimento de algoritmos criptográficos. Neste mesmo período, alguns países e regiões europeus também propuseram os mesmos requisitos do Suite B para proteger as suas informações.
A criptografia Suite B recomenda o uso de Diffie-Hellman de curva elíptica (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 a 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 primos padrão NIST P-256, P-384 e P-521. Curvas binárias, curvas Koblitz, curvas primos personalizadas e curva elíptica Menezes-Qu-Vanstone (ECMQV) não são suportadas pelos provedores de algoritmos da Microsoft incluídos no Windows Vista.
Suporte legado
CNG fornece suporte para o conjunto atual de algoritmos no CryptoAPI 1.0. Todos os algoritmos atualmente suportados no CryptoAPI 1.0 continuarão a ser suportados no CNG.
Suporte ao Modo Kernel
CNG suporta criptografia no modo kernel. As mesmas APIs são usadas no kernel e no modo de usuário para suportar totalmente os recursos de criptografia. Tanto o SSL/TLS quanto 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 a partir do modo kernel. O tópico de referência para as funções que não podem ser chamadas a partir do modo kernel indicará explicitamente que a função não pode ser chamada a partir do modo kernel. Caso contrário, todas as funções CNG podem ser chamadas a partir do modo kernel se o chamador estiver sendo executado em PASSIVE_LEVELIRQL. Além disso, algumas funções CNG do modo kernel podem ser chamadas em DISPATCH_LEVELIRQL, dependendo das capacidades 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 através de suas interfaces documentadas para componentes do kernel. O único algoritmo de provedor interno da Microsoft que não é suportado pelo Ksecdd.sys é o DSA.
Windows Server 2008 e Windows Vista: CNG não oferece suporte a algoritmos e provedores conectáveis no modo kernel. Os únicos algoritmos criptográficos suportados disponíveis no modo kernel são as implementações fornecidas pela Microsoft através 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 acontecem na camada CNG são auditadas no Microsoft Software Key Storage Provider (KSP). O Microsoft KSP segue as seguintes diretrizes para criar registros de auditoria no log de segurança:
- As falhas de geração de chaves e pares de chaves, incluindo falhas de autoteste, devem ser auditadas.
- A importação e exportação de chaves devem ser auditadas.
- As falhas de destruição de chaves devem ser auditadas.
- As chaves persistentes precisam ser auditadas quando são gravadas e lidas em arquivos.
- As falhas de verificação de consistência em pares devem ser auditadas.
- Falhas secretas de validação de chaves, se houver, devem ser auditadas, por exemplo, verificações de paridade em chaves 3DES.
- Falhas na criptografia, descriptografia, hashing, 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 tem 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 modo kernel CNG. 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:"Outros eventos do sistema" /success:enable /failure:enable
Geradores de números aleatórios substituíveis
Outra melhoria que o GNC proporciona é a capacidade de substituir o gerador de números aleatórios padrão (RNG). Em CryptoAPI, é possível fornecer um RNG alternativo como parte de um provedor de serviços de criptografia (CSP), mas não é possível redirecionar os CSPs da Base da Microsoft para usar outro RNG. O GNC torna possível especificar explicitamente um determinado RNG para usar em chamadas específicas.
Segurança de roscas
Quaisquer funções que modifiquem a mesma área de memória ao mesmo tempo (seções críticas) ao serem chamadas a partir de threads separados não são thread safe.
Modo de Operação
O CNG suporta cinco modos de operações que podem ser usados com cifras de bloco simétricas através 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çãoBCryptSetProperty.
Modo de operação | BCRYPT_CHAINING_MODE valor | Algoritmos | Padrão |
---|---|---|---|
BCE (Electronic Codebook) | BCRYPT_CHAIN_MODE_ECB | Cifras de bloco simétrico | SP800-38A |
CBC (Encadeamento de Blocos de Cifra) | BCRYPT_CHAIN_MODE_CBC | Cifras de bloco simétrico | SP800-38A |
CFB (Feedback de cifra) | BCRYPT_CHAIN_MODE_CFB | Cifras 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
Apenas 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 Service Pack 1 (SP1) ou o Windows Server 2008.