Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este artigo descreve como desabilitar algoritmos criptográficos fracos usando políticas no Windows e no Windows Server. Essas políticas se aplicam apenas à validação de certificado X.509 – quando o Windows verifica certificados digitais para conexões TLS, assinatura de código e outros cenários de segurança.
Você pode configurar o Windows para rejeitar certificados que usam algoritmos desatualizados, como MD5 e SHA1, ou chaves RSA que são muito curtas para serem seguras. Rejeitar certificados fracos ajuda a proteger seu ambiente contra certificados que podem ser facilmente comprometidos ou forjados. Usando essas políticas, você pode:
Aderir ou cancelar adesão a cada política de forma independente.
Habilite o registro de logs por política (independentemente de outras políticas). O registro está desativado por padrão.
Especifique um local para o qual os certificados desabilitados são copiados.
Configure políticas para algoritmos de hash e algoritmos assimétricos.
Sintaxe de política
A política de algoritmo criptográfico é definida no Registro do Windows e definida usando o Editor do Registro ou certutil. O administrador define a política na seguinte chave do Registro:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\OID\EncodingType 0\CertDllCreateCertificateChainEngine\Config
As políticas são definidas usando a seguinte sintaxe:
Weak<CryptoAlg><ConfigType><ValueType>
CryptoAlg, ConfigTypee ValueType estão presentes em todos os nomes de política.
Por exemplo, WeakMD5ThirdPartyFlags ou WeakRSAAllMinBitLength.
Para cada política, os seguintes valores podem ser definidos:
CryptoAlgvalores possíveis:- MD5 – algoritmo de hash MD5.
- SHA-1 - Algoritmo de hash SHA-1.
- Rsa – Algoritmo assimétrico RSA.
- Dsa – Algoritmo assimétrico DSA.
- Ecdsa - algoritmo assimétrico ECDSA.
ConfigTypevalores possíveis:- ThirdParty – A política só é aplicada a certificados em raízes de terceiros.
- Tudo – A política é aplicada a todos os certificados, mesmo em ambientes empresariais.
ValueTypevalores possíveis:Sinalizadores -
REG_DWORDtipo de dados que pode ser definido para desabilitar o algoritmo de hash ou habilitar um comprimento mínimo de chave. Um detalhamento de como calcular os sinalizadores é fornecido na próxima seção.MinBitLength -
REG_DWORDtipo de dados que especifica o comprimento mínimo da chave pública em bits.MinBitLengthé aplicável somente à política de algoritmos de chave. Especificado como um valor decimal do comprimento mínimo da chave em bits. Por exemplo, 1024 representa um comprimento mínimo de chave de 1.024 bits.AfterTime -
REG_BINARYtipo de dados que contém um FILETIME de 8 bytes. A verificação de algoritmos criptográficos fracos está desabilitada para arquivos com carimbo de data/hora antes deste momento. Esse valor de configuração não é aplicável a cadeias de timestamps.Sha256Allow -
REG_SZouREG_MULTI_SZtipo de dados que contém a lista de impressões digitais SHA256 de certificados formatadas em ASCII_HEX, identificando certificados fracos que devem ser explicitamente permitidos. Caracteres não ASCII_HEX na cadeia de caracteres são ignorados, o que permite espaços embutidos.
Marcadores de tipos de valor
Para definir os sinalizadores para uma política de algoritmo criptográfica fraca, você pode usar os valores a seguir REG_DWORD . Esses sinalizadores são usados para habilitar ou desabilitar comportamentos específicos para as políticas de algoritmo criptográfico.
Você pode combinar esses sinalizadores usando uma operação OR bit a bit para criar um valor de sinalizador composto que representa vários comportamentos.
Por exemplo, para habilitar o log e desabilitar o algoritmo para todas as EKUs, você pode combinar os sinalizadores CERT_CHAIN_ENABLE_WEAK_LOGGING_FLAG e CERT_CHAIN_DISABLE_ALL_EKU_WEAK_FLAG. Para combinar esses sinalizadores, você definiria o valor como 0x80010004 (ou seja 0x80000000 | 0x00010000 | 0x00000004).
Expanda as seções a seguir para ver uma descrição dos sinalizadores que podem ser definidos para políticas de algoritmo criptográficas fracas:
Habilitar configurações criptográficas fracas
O CERT_CHAIN_ENABLE_WEAK_SETTINGS_FLAG sinalizador é usado para habilitar ou desabilitar configurações fracas de algoritmo criptográfico para uma política de algoritmo criptográfica específica. Esse sinalizador é essencial para controlar como algoritmos fracos são tratados no processo de criação da cadeia de certificados.
Valor hexadecimal: 0x80000000
Aqui estão alguns exemplos para ilustrar como o CERT_CHAIN_ENABLE_WEAK_SETTINGS_FLAG sinalizador (0x80000000) afeta o comportamento da política:
Se esse sinalizador não estiver definido para uma determinada
Weak<CryptoAlg><ConfigType>Flagspolítica, todos os outros sinalizadores e valores do Registro dessa política serão ignorados. Por exemplo, se você configurar outros sinalizadores paraWeakMD5ThirdPartyFlags, mas não definir0x80000000, essas configurações não terão efeito.Quando um administrador define esse sinalizador para uma política específica
Weak<CryptoAlg><ConfigType>Flags, as configurações de política definidas no registro substituem o comportamento padrão do sistema operacional para esse tipo de configuração e algoritmo criptográfico.Se o sinalizador estiver definido na
Weak<CryptoAlg>AllFlagspolítica, o resultadoWeak<CryptoAlg>ThirdPartyFlagsserá uma combinação dos valores definidos em ambosWeak<CryptoAlg>ThirdPartyFlagseWeak<CryptoAlg>AllFlags, com exceção dos sinalizadores relacionados ao registro em log, que não são combinados. Por exemplo, os sinalizadores de terceiros efetivos são calculados como:
ThirdPartyFlags |= AllFlags & ~(CERT_CHAIN_ENABLE_WEAK_LOGGING_FLAG | CERT_CHAIN_ENABLE_ONLY_WEAK_LOGGING_FLAG);Para configurações baseadas em tempo e comprimento de chave, o resultado
Weak<CryptoAlg>ThirdPartyAfterTimeé o valor mais cedo entreWeak<CryptoAlg>AllAfterTimeeWeak<CryptoAlg>ThirdPartyAfterTime(se ambos forem definidos e não zero). Da mesma forma, o resultanteWeak<KeyCryptoAlg>ThirdPartyMinBitLengthé o maior valor entreWeak<KeyCryptoAlg>AllMinBitLengtheWeak<KeyCryptoAlg>ThirdPartyMinBitLength.
Estes exemplos mostram como o sinalizador determina se as configurações de política personalizadas são aplicadas. O exemplo também explica como os valores combinados são calculados quando as configurações "All" e "ThirdParty" são definidas.
Habilitar registro
Quando esse sinalizador é definido, certificados fracos identificados durante o processo de construção da cadeia de certificados são registrados no diretório especificado pelo valor do registro CERT_CHAIN_WEAK_SIGNATURE_LOG_DIR_VALUE_NAME. O registro em log permite que os administradores examinem e tomem medidas sobre certificados fracos que podem representar riscos de segurança.
Valor hexadecimal: 0x00000004
Registro apenas de auditoria
Quando o sinalizador CERT_CHAIN_ENABLE_ONLY_WEAK_LOGGING_FLAG é definido, somente erros de assinatura fracos são registrados e nenhum erro de construção de cadeia é retornado. Nesse modo, erros de assinatura fraca não são retornados, permitindo um modo somente de auditoria em que certificados fracos são registrados sem afetar o processo de construção da cadeia.
Valor hexadecimal: 0x00000008
Desabilitar todas as EKUs
O sinalizador CERT_CHAIN_DISABLE_ALL_EKU_WEAK_FLAG é usado para desabilitar o algoritmo correspondente à política para todos os Usos Avançados de Chave (EKUs). Isso significa que o algoritmo criptográfico especificado não será usado para nenhum certificado, independentemente de sua EKU.
Valor hexadecimal: 0x00010000
Desabilitar EKUs de Autenticação de Servidor Opt-In
O CERT_CHAIN_DISABLE_OPT_IN_SERVER_AUTH_WEAK_FLAG flag é usado para desabilitar o algoritmo correspondente à política para EKUs de Autenticação de Servidor, mas apenas para aplicativos que adotam essa alteração por meio da configuração CERT_CHAIN_OPT_IN_WEAK_SIGNATURE. A política de assinatura fraca permite que os administradores exerciam um controle mais granular sobre os aplicativos afetados.
Valor hexadecimal: 0x00040000
EKUs de autenticação de servidor desabilitadas
O sinalizador CERT_CHAIN_DISABLE_SERVER_AUTH_WEAK_FLAG é usado para desabilitar o algoritmo correspondente à política para EKUs de Autenticação de Servidor. O que significa que o algoritmo criptográfico especificado não será usado para nenhum certificado com EKUs de Autenticação de Servidor, independentemente de os aplicativos aceitarem ou não.
Valor hexadecimal: 0x00100000
Desabilitar EKUs de Assinatura de Código
O sinalizador CERT_CHAIN_DISABLE_CODE_SIGNING_WEAK_FLAG é usado para desabilitar o algoritmo correspondente à política para assinar por código os Usos Avançados de Chave (EKUs). O que significa que o algoritmo criptográfico especificado não será usado para nenhum certificado de assinatura de código.
Valor hexadecimal: 0x00400000
Desabilitar EKUs de Assinatura de Código para binários baixados da Web
O sinalizador CERT_CHAIN_DISABLE_MOTW_CODE_SIGNING_WEAK_FLAG é usado para desabilitar o algoritmo correspondente à política para EKUs de assinatura de código, mas somente quando o binário é baixado da web.
Valor hexadecimal: 0x00800000
Desativar EKUs de carimbo de data e hora
O sinalizador CERT_CHAIN_DISABLE_TIMESTAMP_WEAK_FLAG é usado para desabilitar o algoritmo correspondente à política para todos os Usos Avançados de Chave (EKUs) de carimbo de data/hora. O que significa que o algoritmo criptográfico especificado não será usado para nenhum certificado de carimbo de data/hora.
Valor hexadecimal: 0x04000000
Desabilitar EKUs de carimbo de data/hora para binários baixados da Web
O sinalizador CERT_CHAIN_DISABLE_MOTW_TIMESTAMP_WEAK_FLAG é usado para desabilitar o algoritmo correspondente à política para EKUs de carimbo de data/hora, mas somente quando o binário é baixado da web.
Valor hexadecimal: 0x08000000
Pré-requisitos
Para configurar políticas de algoritmo criptográficas fracas, você precisa dos seguintes pré-requisitos:
Acesso administrativo local para modificar as configurações do Registro.
(Opcional) Um diretório de log designado se estiver habilitando o registro de de detecção de certificados fracos.
Você também precisa ter as seguintes informações prontas para configurar as políticas:
O nome do algoritmo criptográfico (por exemplo, MD5, SHA256, RSA, DSA, ECDSA).
Para algoritmos assimétricos, o tamanho mínimo da chave necessário (por exemplo, 1.024 bits para RSA).
Se a política deve se aplicar a certificados que se encadeiam em CAs raiz de terceiros ou a todos os certificados.
O horário antes do qual a verificação da política é desabilitada (para certificados de assinatura de códigos usados em binários assinados com carimbo de data/hora).
Os tipos de certificados ou EKUs (Usos Avançados de Chaves) aos quais a política se aplica, como:
Todos os certificados
Autenticação do Servidor EKU
EKU de assinatura de código
EKU de carimbo de data/hora
Se a política se aplica somente a binários baixados da Web ou a todos os binários.
Quaisquer exceções para certificados específicos de assinatura de código ou carimbo de data/hora, identificados pela impressão digital SHA2.
Configurar uma política de algoritmo criptográfico fraca
Para configurar uma política de algoritmo criptográfica fraca, você pode usar a certutil ferramenta de linha de comando ou modificar o Registro do Windows diretamente. Selecione o método que melhor atende às suas necessidades.
Para configurar uma política de algoritmo criptográfica fraca, você pode usar a certutil -setreg chain ferramenta de linha de comando. Essa ferramenta permite que você exiba, configure e remova configurações fracas de política de algoritmo criptográfico. Para saber mais sobre a certutil ferramenta de linha de comando, consulte certutil.
Para configurar uma política de algoritmo criptográfico fraca, siga estas etapas:
Determine o algoritmo criptográfico que você deseja desabilitar e o tipo de configuração (por exemplo, terceiros ou todos) usando os sinalizadores e valores descritos na seção Sintaxe De política . Execute uma operação OR bit a bit para combinar os sinalizadores conforme necessário e registrar o valor resultante.
Abra uma prompt de comando com privilégios de administrativos.
Para criar uma nova política baseada em sinalizador de algoritmo criptográfico fraco, use o seguinte comando:
certutil -setreg chain\Weak<CryptoAlg><ConfigType>Flags <value>Substitua
<CryptoAlg>,<ConfigType>e<value>pelos valores apropriados para sua política.Por exemplo, para desabilitar o MD5 para todos os certificados de autenticação do servidor SSL em CAs raiz de terceiros, você pode usar os seguintes comandos:
certutil -setreg chain\WeakMD5ThirdPartyFlags 0x80100000Para criar uma nova política de algoritmo assimétrico, use o seguinte comando:
certutil -setreg chain\Weak<CryptoAlg><ConfigType>MinBitLength <value>Substitua
<CryptoAlg>,<ConfigType>e<value>pelos valores apropriados para sua política.Por exemplo, para desabilitar o RSA 1024 em CAs raiz de terceiros, você pode usar os seguintes comandos:
certutil -setreg chain\WeakRSAThirdPartyMinBitLength 1024Para criar uma nova política baseada em tempo, use o seguinte comando:
certutil -setreg chain\Weak<CryptoAlg><ConfigType>AfterTime <value>Substitua
<CryptoAlg>,<ConfigType>e<value>pelos valores apropriados para sua política.Por exemplo, para desabilitar o MD5 para todos os certificados de autenticação de servidor SSL em CAs raiz de terceiros antes de 1º de março de 2009, você pode usar os seguintes comandos:
certutil -setreg chain\WeakMD5ThirdPartyAfterTime @03/01/2009
Exibir políticas configuradas
Para exibir as políticas de algoritmo criptográfico fracas configuradas no momento, você pode usar a certutil ferramenta de linha de comando ou o Editor do Registro do Windows. Selecione o método que melhor atende às suas necessidades.
Para exibir as políticas de algoritmo de criptografia fracas configuradas no momento usando a certutil ferramenta de linha de comando, siga estas etapas:
Abra uma prompt de comando com privilégios de administrativos.
Para ver o comportamento do sistema operacional padrão para algoritmos criptográficos fracos, execute o seguinte comando:
certutil -getreg chain\defaultPara exibir as políticas de algoritmo de criptografia fracas configuradas no momento, execute o seguinte comando:
certutil -getreg chain\Weak<CryptoAlg><ConfigType>FlagsSubstitua
<CryptoAlg>e<ConfigType>pelos valores apropriados para sua política.Por exemplo, para exibir os sinalizadores de terceiros do MD5, você pode usar o seguinte comando:
certutil -getreg chain\WeakMD5ThirdPartyFlagsPara exibir todas as políticas de algoritmo de criptografia fracas configuradas, você pode executar o seguinte comando:
certutil -getreg chain
Habilitar registro de log
A estrutura de Criptografia Fraca no Windows fornece um mecanismo para registrar certificados criptográficos fracos. Esse mecanismo permite que os administradores monitorem e tomem medidas sobre certificados considerados fracos de acordo com as configurações configuradas.
Você pode habilitar o logging usando a ferramenta de linha de comando certutil ou modificando diretamente o Registro do Windows. Selecione o método que melhor atende às suas necessidades.
Para habilitar o registro em log para certificados criptográficos fracos usando a certutil ferramenta de linha de comando, siga estas etapas:
Crie um diretório de log em que os certificados fracos são registrados. Por exemplo, crie um diretório
C:\Loge verifique se ele tem as permissões corretas.Para definir o diretório de log, use o seguinte comando:
certutil -setreg chain\WeakSignatureLogDir c:\logPara habilitar o registro em log, defina o sinalizador de registro em log para uma política de criptografia fraca existente. Combine o
CERT_CHAIN_ENABLE_WEAK_LOGGING_FLAG(0x00000004) ouCERT_CHAIN_ENABLE_ONLY_WEAK_LOGGING_FLAG(0x00000008) com os sinalizadores existentes para a política. Por exemplo, para habilitar o registro em log para todos os certificados de terceiros MD5 fracos da EKU, você pode usar o seguinte comando:certutil -setreg chain\WeakMD5ThirdPartyFlags 0x80010004