Partilhar via


Quadro de segurança: Criptografia | Atenuação

Produto/Serviço Artigo
Aplicação Web
Base de dados
Dispositivo IoT
Gateway de nuvem IoT
Cliente do Dynamics CRM Mobile
Cliente Outlook do Dynamics CRM
Servidor de identidade

Use apenas cifras de bloco simétrico aprovadas e comprimentos de chave

Título Detalhes
Componente Aplicação Web
Fase SDL Construir
Tecnologias aplicáveis Genérico
Atributos N/A
Referências N/A
Passos

Os produtos devem usar apenas as cifras de bloco simétricas e comprimentos de chave associados que foram explicitamente aprovados pelo Crypto Advisor em sua organização. Os algoritmos simétricos aprovados na Microsoft incluem as seguintes cifras de bloco:

  • Para o novo código AES-128, AES-192 e AES-256 são aceitáveis
  • Para compatibilidade com versões anteriores do código existente, o 3DES de três teclas é aceitável
  • Para produtos que utilizam cifras de bloco simétrico:
    • AES (Advanced Encryption Standard) é necessário para o novo código
    • O padrão de criptografia de dados triplo de três chaves (3DES) é permitido no código existente para compatibilidade com versões anteriores
    • Todas as outras cifras de bloco, incluindo RC2, DES, 2 Key 3DES, DESX e Skipjack, só podem ser usadas para desencriptar dados antigos e devem ser substituídas se usadas para encriptação
  • Para algoritmos de encriptação de bloco simétrico, é necessário um comprimento mínimo de chave de 128 bits. O único algoritmo de encriptação de bloco recomendado para o novo código é AES (AES-128, AES-192 e AES-256 são todos aceitáveis)
  • O 3DES de três teclas é atualmente aceitável se já estiver em uso no código existente; recomenda-se a transição para AES. DES, DESX, RC2 e Skipjack não são mais considerados seguros. Esses algoritmos só podem ser usados para descriptografar dados existentes por uma questão de compatibilidade com versões anteriores, e os dados devem ser criptografados novamente usando uma cifra de bloco recomendada

Observe que todas as cifras de bloco simétrico devem ser usadas com um modo de codificação aprovado, que requer o uso de um vetor de inicialização apropriado (IV). Um IV apropriado, é tipicamente um número aleatório e nunca um valor constante

O uso de algoritmos de criptografia herdados ou não aprovados e comprimentos de chave menores para ler dados existentes (em oposição à gravação de novos dados) pode ser permitido após a revisão do Crypto Board da sua organização. No entanto, você deve entrar com um pedido de exceção contra esse requisito. Além disso, em implantações corporativas, os produtos devem considerar avisar os administradores quando a criptografia fraca é usada para ler dados. Essas advertências devem ser explicativas e acionáveis. Em alguns casos, pode ser apropriado que a Diretiva de Grupo controle o uso de criptografia fraca

Algoritmos .NET permitidos para agilidade de criptografia gerenciada (em ordem de preferência)

  • AesCng (compatível com FIPS)
  • AuthenticatedAesCng (compatível com FIPS)
  • AESCryptoServiceProvider (compatível com FIPS)
  • AESManaged (não compatível com FIPS)

Por favor, note que nenhum desses algoritmos pode ser especificado através dos SymmetricAlgorithm.Create métodos ou CryptoConfig.CreateFromName sem fazer alterações no arquivo machine.config. Além disso, observe que o AES em versões do .NET anteriores ao .NET 3.5 é nomeado RijndaelManaged, e AesCng e AuthenticatedAesCng estão >disponíveis através do CodePlex e requerem CNG no sistema operacional subjacente.

Usar modos de codificação de bloco aprovados e vetores de inicialização para cifras simétricas

Título Detalhes
Componente Aplicação Web
Fase SDL Construir
Tecnologias aplicáveis Genérico
Atributos N/A
Referências N/A
Passos Todas as cifras de bloco simétrico devem ser usadas com um modo de cifra simétrica aprovado. Os únicos modos aprovados são CBC e CTS. Em particular, deve ser evitado o modo de funcionamento do livro eletrónico de códigos (ECB); o uso do BCE requer a revisão do Crypto Board da sua organização. Todo o uso de OFB, CFB, CTR, CCM e GCM ou qualquer outro modo de criptografia deve ser revisado pelo Crypto Board da sua organização. Reutilizar o mesmo vetor de inicialização (IV) com cifras de bloco em "modos de codificação de streaming", como CTR, pode fazer com que dados criptografados sejam revelados. Todas as cifras de bloco simétrico também devem ser usadas com um vetor de inicialização apropriado (IV). Um IV apropriado é um número criptograficamente forte, aleatório e nunca um valor constante.

Use algoritmos assimétricos, comprimentos de chave e preenchimento aprovados

Título Detalhes
Componente Aplicação Web
Fase SDL Construir
Tecnologias aplicáveis Genérico
Atributos N/A
Referências N/A
Passos

A utilização de algoritmos criptográficos proibidos introduz riscos significativos para a segurança dos produtos e deve ser evitada. Os produtos devem usar apenas os algoritmos criptográficos e comprimentos de chave e preenchimento associados que foram explicitamente aprovados pelo Conselho de Criptografia da sua organização.

  • RSA- pode ser usado para encriptação, troca de chaves e assinatura. A criptografia RSA deve usar apenas os modos OAEP ou RSA-KEM de Preenchimento. O código existente pode usar o modo de preenchimento PKCS #1 v1.5 apenas para compatibilidade. O uso de preenchimento nulo é explicitamente proibido. Chaves >= 2048 bits é necessário para o novo código. O código existente pode suportar chaves < de 2048 bits apenas para compatibilidade com versões anteriores após uma revisão pelo Crypto Board da sua organização. As chaves < de 1024 bits só podem ser usadas para desencriptar/verificar dados antigos e devem ser substituídas se forem utilizadas para operações de encriptação ou assinatura
  • ECDSA- só pode ser utilizado para assinatura. ECDSA com chaves de 256 bits é requerido para novos códigos. As assinaturas baseadas em ECDSA devem usar uma das três curvas aprovadas pelo NIST (P-256, P-384 ou P521). As curvas que foram cuidadosamente analisadas podem ser usadas somente após uma revisão com o Crypto Board da sua organização.
  • ECDH- só pode ser utilizado para troca de chaves. ECDH com chaves de 256 bits é necessário para o novo código. A troca de chaves baseada em ECDH deve usar uma das três curvas aprovadas pelo NIST (P-256, P-384 ou P521). As curvas que foram cuidadosamente analisadas podem ser usadas somente após uma revisão com o Crypto Board da sua organização.
  • DSA- pode ser aceitável após revisão e aprovação do Crypto Board da sua organização. Entre em contato com seu consultor de segurança para agendar a revisão do Crypto Board da sua organização. Se o seu uso do DSA for aprovado, observe que você precisará proibir o uso de chaves com menos de 2048 bits de comprimento. O CNG suporta comprimentos de chave de 2048 bits e maiores a partir do Windows 8.
  • Diffie-Hellman- pode ser usado apenas para gerenciamento de chaves de sessão. É necessário que o comprimento da chave > seja de 2048 bits para o novo código. O código existente pode suportar comprimentos de chave < de 2048 bits somente por questões de compatibilidade com versões anteriores após uma revisão pelo Conselho de Criptografia da sua organização. As chaves < de 1024 bits não podem ser usadas.

    Use geradores de números aleatórios aprovados

    Título Detalhes
    Componente Aplicação Web
    Fase SDL Construir
    Tecnologias aplicáveis Genérico
    Atributos N/A
    Referências N/A
    Passos

    Os produtos devem utilizar geradores de números aleatórios aprovados. Funções pseudoaleatórias, como a função de tempo de execução C rand, a classe System.Random do .NET Framework ou funções do sistema, como GetTickCount, nunca devem, portanto, ser usadas em tal código. É proibido o uso do algoritmo gerador de números aleatórios de curva elíptica dupla (DUAL_EC_DRBG)

    • CNG- BCryptGenRandom(uso do sinalizador BCRYPT_USE_SYSTEM_PREFERRED_RNG recomendado, a menos que o chamador possa ser executado em qualquer IRQL maior que 0 [ou seja, PASSIVE_LEVEL])
    • CAPI- cryptGenRandom
    • Win32/64- RtlGenRandom (novas implementações devem usar BCryptGenRandom ou CryptGenRandom) * rand_s * SystemPrng (para o modo kernel)
    • . NET- RNGCryptoServiceProvider ou RNGCng
    • Aplicações da Loja Windows- Windows.Security.Cryptography.CryptographicBuffer.GenerateRandom ou .GenerateRandomNumber
    • Apple OS X (10.7+)/iOS(2.0+)- int SecRandomCopyBytes (SecRandomRef aleatório, contagem de size_t, uint8_t *bytes )
    • Apple OS X (<10.7)- Use /dev/random para recuperar números aleatórios
    • Java(incluindo o código Java do Google Android)- java.security.SecureRandom classe. Observe que para o Android 4.3 (Jelly Bean), os desenvolvedores devem seguir a solução alternativa recomendada pelo Android e atualizar seus aplicativos para inicializar explicitamente o PRNG com entropia de /dev/urandom ou /dev/random

    Não use cifras de fluxo simétricas

    Título Detalhes
    Componente Aplicação Web
    Fase SDL Construir
    Tecnologias aplicáveis Genérico
    Atributos N/A
    Referências N/A
    Passos Não devem ser utilizadas cifras de fluxo simétricas, como RC4. Em vez de cifras de fluxo simétricas, os produtos devem usar uma cifra de bloco, especificamente AES com um comprimento de chave de pelo menos 128 bits.

    Use algoritmos aprovados de hash MAC/HMAC/com chave

    Título Detalhes
    Componente Aplicação Web
    Fase SDL Construir
    Tecnologias aplicáveis Genérico
    Atributos N/A
    Referências N/A
    Passos

    Os produtos devem usar apenas algoritmos de código de autenticação de mensagem (MAC) aprovado ou código de autenticação de mensagem baseado em hash (HMAC).

    Um código de autenticação de mensagem (MAC) é uma informação anexada a uma mensagem que permite ao seu destinatário verificar a autenticidade do remetente e a integridade da mensagem usando uma chave secreta. O uso de um MAC baseado em hash (HMAC) ou MAC baseado em cifra de bloco é permitido, desde que todos os algoritmos subjacentes de criptografia simétrica ou hash também sejam aprovados para uso; atualmente isso inclui as funções HMAC-SHA2 (HMAC-SHA256, HMAC-SHA384 e HMAC-SHA512) e os MACs baseados em cifra de bloco CMAC/OMAC1 e OMAC2 (estes são baseados em AES).

    O uso de HMAC-SHA1 pode ser permitido para compatibilidade com a plataforma, mas você será obrigado a registrar uma exceção a este procedimento e passar pela revisão de criptografia da sua organização. Não é permitido o truncamento de HMACs para menos de 128 bits. O uso de métodos de cliente para hash de uma chave e dados não é aprovado e deve passar pela revisão do Crypto Board da sua organização antes de usá-lo.

    Usar apenas funções hash criptográficas aprovadas

    Título Detalhes
    Componente Aplicação Web
    Fase SDL Construir
    Tecnologias aplicáveis Genérico
    Atributos N/A
    Referências N/A
    Passos

    Os produtos devem usar a família SHA-2 de algoritmos de hash (SHA256, SHA384 e SHA512). Se um hash mais curto for necessário, como um comprimento de saída de 128 bits para ajustar uma estrutura de dados projetada com o hash MD5 mais curto em mente, as equipes de produto podem truncar um dos hashes SHA2 (normalmente SHA256). Observe que SHA384 é uma versão truncada do SHA512. Não é permitido o truncamento de hashes criptográficos para fins de segurança para menos de 128 bits. O novo código não deve usar os algoritmos de hash MD2, MD4, MD5, SHA-0, SHA-1 ou RIPEDD. Colisões de hash são computacionalmente viáveis para esses algoritmos, o que efetivamente os quebra.

    Algoritmos de hash .NET permitidos para agilidade de criptografia gerenciada (em ordem de preferência):

    • SHA512Cng (compatível com FIPS)
    • SHA384Cng (compatível com FIPS)
    • SHA256Cng (compatível com FIPS)
    • SHA512Managed (não compatível com FIPS) (use SHA512 como nome de algoritmo em chamadas para HashAlgorithm.Create ou CryptoConfig.CreateFromName)
    • SHA384Managed (não compatível com FIPS) (use SHA384 como nome de algoritmo em chamadas para HashAlgorithm.Create ou CryptoConfig.CreateFromName)
    • SHA256Managed (não compatível com FIPS) (use SHA256 como nome de algoritmo em chamadas para HashAlgorithm.Create ou CryptoConfig.CreateFromName)
    • SHA512CryptoServiceProvider (compatível com FIPS)
    • SHA256CryptoServiceProvider (compatível com FIPS)
    • SHA384CryptoServiceProvider (compatível com FIPS)

    Use algoritmos de criptografia fortes para criptografar dados no banco de dados

    Título Detalhes
    Componente Base de dados
    Fase SDL Construir
    Tecnologias aplicáveis Genérico
    Atributos N/A
    Referências Escolher um algoritmo de encriptação
    Passos Os algoritmos de encriptação definem transformações de dados que não podem ser facilmente revertidas por utilizadores não autorizados. O SQL Server permite que administradores e desenvolvedores escolham entre vários algoritmos, incluindo DES, Triple DES, TRIPLE_DES_3KEY, RC2, RC4, RC4 de 128 bits, DESX, AES de 128 bits, AES de 192 bits e AES de 256 bits

    Os pacotes SSIS devem ser criptografados e assinados digitalmente

    Título Detalhes
    Componente Base de dados
    Fase SDL Construir
    Tecnologias aplicáveis Genérico
    Atributos N/A
    Referências Identificar a origem dos pacotes com assinaturas digitais, mitigação de ameaças e vulnerabilidades (Integration Services)
    Passos A origem de um pacote é o indivíduo ou organização que criou o pacote. Executar um pacote de uma fonte desconhecida ou não confiável pode ser arriscado. Para evitar a adulteração não autorizada de pacotes SSIS, assinaturas digitais devem ser usadas. Além disso, para garantir a confidencialidade dos pacotes durante o armazenamento/trânsito, os pacotes SSIS devem ser criptografados

    Adicionar assinatura digital às entidades protegidas de bancos de dados críticos.

    Título Detalhes
    Componente Base de dados
    Fase SDL Construir
    Tecnologias aplicáveis Genérico
    Atributos N/A
    Referências ADICIONAR ASSINATURA (Transact-SQL)
    Passos Nos casos em que a integridade de uma base de dados crítica protegível tenha de ser verificada, devem ser utilizadas assinaturas digitais. Os protegíveis de banco de dados, como um procedimento armazenado, função, montagem ou gatilho, podem ser assinados digitalmente. Abaixo está um exemplo de quando isso pode ser útil: Digamos que um ISV (Fornecedor Independente de Software) forneceu suporte a um software entregue a um de seus clientes. Antes de fornecer suporte, o ISV gostaria de garantir que um banco de dados protegível no software não fosse adulterado por engano ou por uma tentativa maliciosa. Se o protegível for assinado digitalmente, o ISV pode verificar sua assinatura digital e validar sua integridade.

    Usar o SQL Server EKM para proteger chaves de criptografia

    Título Detalhes
    Componente Base de dados
    Fase SDL Construir
    Tecnologias aplicáveis Genérico
    Atributos N/A
    Referências Gerenciamento extensível de chaves (EKM) do SQL Server, Gerenciamento extensível de chaves usando o Cofre de Chaves do Azure (SQL Server)
    Passos O Gerenciamento Extensível de Chaves do SQL Server permite que as chaves de criptografia que protegem os arquivos de banco de dados sejam armazenadas em um dispositivo off-box, como um cartão inteligente, dispositivo USB ou módulo EKM/HSM. Isso também permite a proteção de dados de administradores de banco de dados (exceto membros do grupo sysadmin). Os dados podem ser criptografados usando chaves de criptografia às quais apenas o usuário do banco de dados tem acesso no módulo EKM/HSM externo.

    Use o recurso AlwaysEncrypted se as chaves de criptografia não puderem ser reveladas ao mecanismo de banco de dados

    Título Detalhes
    Componente Base de dados
    Fase SDL Construir
    Tecnologias aplicáveis SQL Azure, OnPrem
    Atributos Versão SQL - V12, MsSQL2016
    Referências Sempre criptografado (Mecanismo de Banco de Dados)
    Passos O Always Encrypted é um recurso projetado para proteger dados confidenciais, como números de cartão de crédito ou números de identificação nacionais/regionais (por exemplo, números de segurança social dos EUA), armazenados no Banco de Dados SQL do Azure ou bancos de dados do SQL Server. O Always Encrypted permite que os clientes criptografem dados confidenciais dentro de aplicativos cliente e nunca revelem as chaves de criptografia para o Mecanismo de Banco de Dados (Banco de Dados SQL ou SQL Server). Como resultado, o Always Encrypted fornece uma separação entre aqueles que possuem os dados (e podem visualizá-los) e aqueles que gerenciam os dados (mas não devem ter acesso)

    Armazene chaves criptográficas com segurança no dispositivo IoT

    Título Detalhes
    Componente Dispositivo IoT
    Fase SDL Construir
    Tecnologias aplicáveis Genérico
    Atributos SO do dispositivo - Windows IoT Core, conectividade de dispositivo - SDKs de dispositivo IoT do Azure
    Referências TPM no Windows IoT Core, Configurar TPM no Windows IoT Core, Azure IoT Device SDK TPM
    Passos Chaves privadas simétricas ou de certificado de forma segura em um armazenamento protegido por hardware, como TPM ou chips de cartão inteligente. O Windows 10 IoT Core suporta o usuário de um TPM e há vários TPMs compatíveis que podem ser usados: TPM discreto (dTPM). Recomenda-se a utilização de um Firmware ou de um TPM Discreto. Um TPM de software só deve ser usado para fins de desenvolvimento e teste. Uma vez que um TPM esteja disponível e as chaves sejam provisionadas nele, o código que gera o token deve ser escrito sem codificar nenhuma informação confidencial nele.

    Exemplo

    TpmDevice myDevice = new TpmDevice(0);
    // Use logical device 0 on the TPM 
    string hubUri = myDevice.GetHostName(); 
    string deviceId = myDevice.GetDeviceId(); 
    string sasToken = myDevice.GetSASToken(); 
    
    var deviceClient = DeviceClient.Create( hubUri, AuthenticationMethodFactory. CreateAuthenticationWithToken(deviceId, sasToken), TransportType.Amqp); 
    

    Como pode ser visto, a chave primária do dispositivo não está presente no código. Em vez disso, ele é armazenado no TPM no slot 0. O dispositivo TPM gera um token SAS de curta duração que é usado para se conectar ao Hub IoT.

    Gere uma chave simétrica aleatória de comprimento suficiente para autenticação no Hub IoT

    Título Detalhes
    Componente Gateway de nuvem IoT
    Fase SDL Construir
    Tecnologias aplicáveis Genérico
    Atributos Escolha de gateway - Hub IoT do Azure
    Referências N/A
    Passos O Hub IoT contém um Registro de Identidade de dispositivo e, ao provisionar um dispositivo, gera automaticamente uma chave simétrica aleatória. É recomendável usar esse recurso do Registro de Identidade do Hub IoT do Azure para gerar a chave usada para autenticação. O Hub IoT também permite que uma chave seja especificada durante a criação do dispositivo. Se uma chave for gerada fora do Hub IoT durante o provisionamento do dispositivo, é recomendável criar uma chave simétrica aleatória ou pelo menos 256 bits.

    Verifique se há uma política de gerenciamento de dispositivos em vigor que exija um PIN de uso e permita o apagamento remoto

    Título Detalhes
    Componente Cliente do Dynamics CRM Mobile
    Fase SDL Implantação
    Tecnologias aplicáveis Genérico
    Atributos N/A
    Referências N/A
    Passos Verifique se há uma política de gerenciamento de dispositivos em vigor que exija um PIN de uso e permita o apagamento remoto

    Verifique se existe uma política de gerenciamento de dispositivos que exija um PIN/senha/bloqueio automático e criptografe todos os dados (por exemplo, BitLocker)

    Título Detalhes
    Componente Cliente Outlook do Dynamics CRM
    Fase SDL Construir
    Tecnologias aplicáveis Genérico
    Atributos N/A
    Referências N/A
    Passos Verifique se existe uma política de gerenciamento de dispositivos que exija um PIN/senha/bloqueio automático e criptografe todos os dados (por exemplo, BitLocker)

    Verifique se as chaves de assinatura são substituídas ao usar o Identity Server

    Título Detalhes
    Componente Servidor de identidade
    Fase SDL Implantação
    Tecnologias aplicáveis Genérico
    Atributos N/A
    Referências N/A
    Passos Certifique-se de que as chaves de assinatura sejam substituídas ao usar o Identity Server. O link na seção de referências explica como isso deve ser planejado sem causar interrupções nos aplicativos que dependem do Identity Server.

    Certifique-se de que o ID do cliente criptograficamente forte e o segredo do cliente sejam usados no Identity Server

    Título Detalhes
    Componente Servidor de identidade
    Fase SDL Construir
    Tecnologias aplicáveis Genérico
    Atributos N/A
    Referências N/A
    Passos

    Certifique-se de que o ID do cliente criptograficamente forte, o segredo do cliente sejam usados no Servidor de Identidade. As seguintes diretrizes devem ser usadas ao gerar um ID de cliente e segredo:

    • Gere um GUID aleatório como o ID do cliente
    • Gere uma chave criptograficamente aleatória de 256 bits como o segredo