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 documento apresenta as diretrizes mais recentes sobre como identificar e remover rapidamente as dependências do protocolo TLS (Transport Layer Security) versão 1.0 no software criado com base nos sistemas operacionais da Microsoft, acompanhando detalhes sobre as alterações no produto e os novos recursos fornecidos pela Microsoft para proteger seus próprios clientes e serviços online. Ele deve ser usado como ponto de partida para criar um plano de migração para um ambiente de rede TLS 1.2+. Embora as soluções discutidas aqui possam levar e ajudar na remoção do uso do TLS 1.0 em sistemas operacionais ou bibliotecas de criptografia que não sejam da Microsoft, elas não são um foco deste documento.
O TLS 1.0 é um protocolo de segurança definido pela primeira vez em 1999 para estabelecer canais de criptografia em redes de computador. A Microsoft tem suporte para esse protocolo desde o Windows XP/Server 2003. Embora não seja mais o protocolo de segurança padrão em uso pelos OSes modernos, o TLS 1.0 ainda tem suporte para compatibilidade com versões anteriores. Os requisitos regulatórios em evolução, bem como novas vulnerabilidades de segurança no TLS 1.0, fornecem às corporações o incentivo para desabilitar totalmente o TLS 1.0.
A Microsoft recomenda que os clientes se antecipem a esse problema, removendo as dependências do TLS 1.0 em seus ambientes e desabilitando o TLS 1.0 no nível do sistema operacional sempre que possível. Considerando o período de tempo que o TLS 1.0 tem suporte pelo setor de software, é altamente recomendável que qualquer plano de substituição do TLS 1.0 inclua o seguinte:
Análise de código para localizar/corrigir instâncias codificadas do TLS 1.0 ou protocolos de segurança mais antigos.
Verificação de ponto de extremidade de rede e análise de tráfego para identificar sistemas operacionais usando protocolos TLS 1.0 ou mais antigos.
Testes de regressão completos em toda a pilha de aplicativos com o TLS 1.0 desabilitado.
Migração de sistemas operacionais herdados e bibliotecas/estruturas de desenvolvimento para versões capazes de negociar o TLS 1.2 por padrão.
Teste de compatibilidade entre sistemas operacionais usados pela sua empresa para identificar problemas de suporte do TLS 1.2.
Coordenação com seus próprios parceiros de negócios e clientes para notificá-los sobre sua mudança para descontinuar o TLS 1.0.
Noções básicas sobre quais clientes podem não ser mais capazes de se conectar aos servidores depois que o TLS 1.0 estiver desabilitado.
O objetivo deste documento é fornecer recomendações que possam ajudar a remover bloqueadores técnicos para desabilitar o TLS 1.0 e, ao mesmo tempo, aumentar a visibilidade do impacto dessa alteração para seus próprios clientes. Concluir essas investigações pode ajudar a reduzir o impacto nos negócios da próxima vulnerabilidade de segurança no TLS 1.0. Para fins deste documento, as referências à substituição do TLS 1.0 também incluem o TLS 1.1.
Os desenvolvedores de software corporativo têm uma necessidade estratégica de adotar soluções mais futuroseguras e ágeis (também conhecidas como Crypto Agility) para lidar com futuros comprometimentos de protocolos de segurança. Embora este documento proponha soluções ágeis para a eliminação da codificação TLS, soluções mais amplas de Agilidade de Criptografia estão além do escopo deste documento.
O estado atual da implementação do TLS 1.0 da Microsoft
A implementação do TLS 1.0 da Microsoft está livre de vulnerabilidades de segurança conhecidas. Devido ao potencial de futuros ataques de downgrade de protocolo e outras vulnerabilidades do TLS 1.0 não específicas à implementação da Microsoft, é recomendável que as dependências de qualquer protocolo de segurança mais antigo que o TLS 1.2 sejam removidas sempre que possível (TLS 1.1/1.0/SSLv3/SSLv2).
No planejamento dessa migração para o TLS 1.2+, os desenvolvedores e administradores do sistema devem estar cientes do potencial de codificação de versão de protocolo em aplicativos desenvolvidos por seus funcionários e parceiros. A codificação aqui significa que a versão do TLS é corrigida para uma versão desatualizada e menos segura do que as versões mais recentes. Versões TLS mais recentes que a versão codificada não podem ser usadas sem modificar o programa em questão. Essa classe de problema não pode ser resolvida sem alterações de código-fonte e implantação de atualização de software. A codificação de versão de protocolo era comum no passado para fins de teste e de suporte, pois muitos navegadores e sistemas operacionais diferentes tinham diferentes níveis de suporte do TLS.
Versões com suporte do TLS no Windows
Muitos sistemas operacionais têm padrões de versão TLS desatualizados ou limites de suporte que precisam ser considerados.
Figura 1: Suporte ao protocolo de segurança por versão do sistema operacional
| Sistema operacional Windows | SSLv2 | SSLv3 | TLS 1.0 | TLS 1.1 | TLS 1.2 | TLS 1.3 |
|---|---|---|---|---|---|---|
| Windows Vista | Habilitado | Habilitado | Habilitado | Sem suporte | Sem suporte | Sem suporte |
| Windows Server 2008 | Habilitado | Habilitado | Habilitado | Desativado* | Desativado* | Sem suporte |
| Windows 7 (WS2008 R2) | Habilitado | Habilitado | Habilitado | Desativado* | Desativado* | Sem suporte |
| Windows 8 (WS2012) | Desactivado | Habilitado | Habilitado | Habilitado | Habilitado | Sem suporte |
| Windows 8.1 (WS2012 R2) | Desactivado | Habilitado | Habilitado | Habilitado | Habilitado | Sem suporte |
| Windows 10 | Desactivado | Habilitado | Habilitado | Habilitado | Habilitado | Sem suporte |
| Windows 11 | Desactivado | Habilitado | Habilitado | Habilitado | Habilitado | Habilitado |
| Windows Server 2016 | Sem suporte | Desactivado | Habilitado | Habilitado | Habilitado | Sem suporte |
| Windows Server 2016 | Sem suporte | Desactivado | Habilitado | Habilitado | Habilitado | Sem suporte |
| Windows Server 2019 | Sem suporte | Desactivado | Habilitado | Habilitado | Habilitado | Sem suporte |
| Windows Server 2019 GS Edition | Sem suporte | Desactivado | Desactivado | Desactivado | Habilitado | Sem suporte |
| Windows Server 2022 | Sem suporte | Desactivado | Desactivado | Desactivado | Habilitado | Habilitado |
O Windows Server 2019 GS edition é compatível com o Microsoft SDL, TLS 1.2 apenas com um conjunto restrito de conjuntos de criptografia.
O Windows Server 2022 Edition é compatível com o Microsoft SDL, TLS 1.2 e TLS 1.3 apenas com um conjunto restrito de pacotes de criptografia.
O TLS 1.1/1.2 pode ser habilitado no Windows Server 2008 por meio desse pacote opcional do Windows Update.
Para obter mais informações sobre a substituição do TLS 1.0/1.1 no IE/Edge, consulte Modernizando conexões TLS no Microsoft Edge e Internet Explorer 11, alterações que afetam a compatibilidade de sites que chegam ao Microsoft Edge e desabilitando o TLS/1.0 e o TLS/1.1 no novo Navegador do Edge
Uma maneira rápida de determinar qual versão do TLS será solicitada por vários clientes ao se conectar aos seus serviços online é referindo-se à Simulação de Handshake no Qualys SSL Labs. Essa simulação abrange combinações de sistema operacional/navegador dos clientes entre diferentes fabricantes. Consulte o Apêndice A no final deste documento para obter um exemplo detalhado mostrando as versões de protocolo TLS negociadas por várias combinações simuladas do sistema operacional/navegador do cliente ao se conectar a www.microsoft.com.
Se ainda não estiver concluído, é altamente recomendável realizar um inventário dos sistemas operacionais usados por sua empresa, clientes e parceiros (para estes dois últimos, por meio de divulgação/comunicação ou, pelo menos, coleta de cadeias de caracteres do HTTP User-Agent). Esse inventário pode ser complementado ainda mais pela análise de tráfego na borda da rede corporativa. Nessa situação, a análise de tráfego produzirá as versões do TLS negociadas com êxito por clientes/parceiros que se conectam aos seus serviços, mas o tráfego em si permanecerá criptografado.
Melhorias de engenharia da Microsoft para eliminar dependências do TLS 1.0
Desde a versão v1 deste documento, a Microsoft enviou várias atualizações de software e novos recursos em suporte à substituição do TLS 1.0. Elas incluem:
Registro em log personalizado do IIS para correlacionar IP do cliente, cadeia de caracteres do agente do usuário, URI de serviço, versão do protocolo TLS e suíte de cifras.
- Com esse registro em log, os administradores podem finalmente quantificar a exposição de seus clientes ao TLS fraco.
SecureScore – Para ajudar os administradores de locatários do Office 365 a identificar seu próprio uso fraco do TLS, o portal SecureScore foi criado para compartilhar essas informações à medida que o TLS 1.0 saiu do suporte no Office 365 em outubro de 2018.
Este portal fornece aos administradores de locatários do Office 365 as informações valiosas necessárias para entrar em contato com seus próprios clientes que podem não estar cientes de suas próprias dependências do TLS 1.0.
Visite https://securescore.microsoft.com/ para obter mais informações.
As atualizações do .Net Framework eliminam a codificação fixa em nível de aplicativo e removem dependências de TLS 1.0 herdadas do framework.
Diretrizes para desenvolvedores e atualizações de software foram lançadas para ajudar os clientes a identificar e eliminar dependências do .NET em TLS fracas: práticas recomendadas de Segurança da Camada de Transporte (TLS) com o .NET Framework
- FYI: Todos os aplicativos destinados ao .NET 4.5 ou inferior provavelmente precisarão ser modificados para dar suporte ao TLS 1.2.
O TLS 1.2 foi retroportado para Windows Server 2008 SP2 e XP POSReady 2009 para ajudar os clientes com obrigações herdadas.
Mais anúncios serão feitos no início de 2019 e comunicados em atualizações subsequentes deste documento.
Localizando e corrigindo dependências do TLS 1.0 no código
Para produtos que usam as bibliotecas de criptografia e os protocolos de segurança fornecidos pelo sistema operacional Windows, as seguintes etapas devem ajudar a identificar qualquer uso de TLS 1.0 codificado em seus aplicativos:
Identifique todas as instâncias de AcquireCredentialsHandle(). Isso ajuda os revisores a se aproximarem mais dos blocos de código em que o TLS pode ser codificado.
Revise as instâncias das estruturas SecPkgContext_SupportedProtocols e SecPkgContext_ConnectionInfo para detecção de TLS codificado.
No código nativo, defina as atribuições não zero de grbitEnabledProtocols como zero. Isso permite que o sistema operacional use sua versão TLS padrão.
Desabilite o modo FIPS se ele estiver habilitado devido ao potencial de conflito com as configurações necessárias para desabilitar explicitamente o TLS 1.0/1.1 neste documento. Consulte Apêndice B para obter mais informações.
Atualize e recompile todos os aplicativos usando o WinHTTP hospedado no Server 2012 ou anterior.
Aplicativos gerenciados – recompilar e redirecionar em relação à versão mais recente do .NET Framework
Os aplicativos devem adicionar código para dar suporte ao TLS 1.2 via WinHttpSetOption
Para cobrir todas as bases, examine o código-fonte e os arquivos de configuração de serviço online para os padrões abaixo correspondentes aos valores de tipo enumerados comumente usados na codificação TLS:
TipoDeProtocoloDeSegurança
SSLv2, SSLv23, SSLv3, TLS1, TLS 10, TLS11
WINHTTP_FLAG_SECURE_PROTOCOL_
SP_PROT_
NSStreamSocketSecurityLevel
PROTOCOL_SSL ou PROTOCOL_TLS
A solução recomendada em todos os casos acima é remover a seleção de versão do protocolo definida de forma fixa e confiar no padrão do sistema operacional. Se você estiver usando o DevSkim, clique aqui para ver as regras que abrangem as verificações acima que podem ser usadas com seu próprio código.
Atualizar scripts do Windows PowerShell ou configurações de registro relacionadas
O Windows PowerShell usa o .NET Framework 4.5, que não inclui o TLS 1.2 como um protocolo disponível. Para contornar isso, duas soluções estão disponíveis:
Modifique o script em questão para incluir o seguinte:
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]::Tls12;Adicione uma chave de Registro para todo o sistema (por exemplo, por meio da Política de Grupo) em qualquer máquina que precise estabelecer conexões TLS 1.2 a partir de um aplicativo .NET. Isso fará com que o .NET use as versões do TLS "Padrão do Sistema" que adicionam o TLS 1.2 como um protocolo disponível e permitirá que os scripts usem versões futuras do TLS quando o sistema operacional dá suporte a elas. (por exemplo, TLS 1.3)
reg add HKLM\SOFTWARE\Microsoft.NETFramework\v4.0.30319 /v SystemDefaultTlsVersions /t REG_DWORD /d 1 /f /reg:64
reg add HKLM\SOFTWARE\Microsoft.NETFramework\v4.0.30319 /v SystemDefaultTlsVersions /t REG_DWORD /d 1 /f /reg:32
As soluções (1) e (2) são mutuamente exclusivas, o que significa que elas não precisam ser implementadas juntas.
Recompilar/redirecionar aplicativos gerenciados usando a versão mais recente do .Net Framework
Os aplicativos que usam versões do .NET Framework anteriores à 4.7 podem ter limitações que efetivamente limitam o suporte ao TLS 1.0, independentemente dos padrões subjacentes do sistema operacional. Consulte o diagrama abaixo e as práticas recomendadas de TLS (Transport Layer Security) com o .NET Framework para obter mais informações.
SystemDefaultTLSVersion tem precedência sobre o direcionamento de versões do TLS no nível do aplicativo. A melhor prática recomendada é sempre adiar para a versão do TLS padrão do sistema operacional. Ela também é a única solução cripto-ágil que permite que seus aplicativos aproveitem o suporte futuro do TLS 1.3.
Se você estiver direcionando versões mais antigas do .NET Framework, como 4.5.2 ou 3.5, por padrão, seu aplicativo usará os protocolos mais antigos e não recomendados, como SSL 3.0 ou TLS 1.0. É altamente recomendável que você atualize para versões mais recentes do .NET Framework, como o .NET Framework 4.6 ou defina as chaves de registro apropriadas para 'UseStrongCrypto'.
Teste com TLS 1.2+
Após as correções recomendadas na seção acima, os produtos devem ser testados por regressão para erros de negociação de protocolo e compatibilidade com outros sistemas operacionais em sua empresa.
O problema mais comum neste teste de regressão será uma falha de negociação do TLS devido a uma tentativa de conexão de cliente de um sistema operacional ou navegador que não dá suporte ao TLS 1.2.
- Por exemplo, um cliente do Vista falhará ao negociar o TLS com um servidor configurado para TLS 1.2+, já que a versão máxima de TLS com suporte no Vista é 1.0. Esse cliente deve ser atualizado ou desativado em um ambiente TLS 1.2+.
Os produtos que usam a autenticação Mutual TLS baseada em certificado podem exigir testes de regressão adicionais, pois o código de seleção de certificado associado ao TLS 1.0 foi menos expressivo do que o do TLS 1.2.
- Se um produto negociar MTLS com um certificado de um local não padrão (fora dos repositórios de certificados nomeados padrão no Windows), esse código poderá precisar de atualização para garantir que o certificado seja adquirido corretamente.
As interdependências de serviço devem ser revisadas em busca de pontos problemáticos.
Todos os serviços que interoperam com 3 serviços deterceiros devem realizar testes de interoperabilidade adicionais com essas trêspartes .
Todos os aplicativos não Windows ou sistemas operacionais de servidor em uso exigem investigação/confirmação de que eles podem dar suporte ao TLS 1.2. O escaneamento é a maneira mais fácil de determinar isso.
Um blueprint simples para testar essas alterações em um serviço online consiste no seguinte:
Realize uma verificação dos sistemas de ambiente de produção para identificar sistemas operacionais que não dão suporte ao TLS 1.2.
Examine o código-fonte e os arquivos de configuração de serviço online para TLS codificado, conforme descrito em "Localizando e corrigindo dependências do TLS 1.0 no código"
Atualizar/recompilar aplicativos conforme necessário:
Aplicativos gerenciados
Recompile com a versão mais recente do .NET Framework.
Verifique se qualquer uso da enumeração SSLProtocols está definido como SSLProtocols.None para usar as configurações padrão do sistema operacional.
Aplicativos WinHTTP – recompilar com WinHttpSetOption para dar suporte ao TLS 1.2
Inicie o teste em um ambiente de pré-produção ou preparo com todos os protocolos de segurança mais antigos do que o TLS 1.2 desabilitado por meio do Registro.
Corrija as instâncias restantes da codificação rígida de TLS conforme forem encontradas durante os testes. Reimplante o software e execute uma nova execução de teste de regressão.
Notificando os parceiros de seus planos de substituição do TLS 1.0
Depois que a codificação de TLS for tratada e as atualizações da estrutura de desenvolvimento/sistema operacional forem concluídas, caso você opte por preterir o TLS 1.0, será necessário coordenar com clientes e parceiros:
A divulgação antecipada para parceiros/clientes é essencial para uma implantação bem-sucedida da descontinuação do TLS 1.0. No mínimo, isso deve consistir em postagens de blog, white papers ou outro conteúdo da Web.
Cada um dos parceiros precisa avaliar sua própria preparação do TLS 1.2 por meio das iniciativas de teste de verificação/regressão de código/sistema operacional descritas nas seções acima.
Conclusion
Eliminar dependências do TLS 1.0 é uma tarefa complexa de conduzir de ponta a ponta. Os parceiros da Microsoft e do setor estão tomando medidas sobre isso hoje para garantir que toda a nossa pilha de produtos esteja mais segura por padrão, desde nossos componentes do sistema operacional e estruturas de desenvolvimento até os aplicativos/serviços criados sobre eles. Seguir as recomendações feitas neste documento ajudará sua empresa a mapear o curso certo e saber quais desafios esperar. Ele também ajudará seus próprios clientes a se prepararem mais para a transição.
Apêndice A: Simulação de Handshake para vários clientes que se conectam a www.microsoft.com, cortesia SSLLabs.com
Apêndice B: Descontinuando o TLS 1.0/1.1 enquanto mantém o modo FIPS
Siga as etapas abaixo se sua rede exigir o modo FIPS, mas você também quiser preterir o TLS 1.0/1.1:
Configure as versões do TLS por meio do registro definindo "Habilitado" como zero para as versões indesejadas do TLS.
Desabilite a Curva 25519 (somente Servidor 2016) por meio da Política de Grupo.
Desabilite todos os conjuntos de cifras que utilizem algoritmos não permitidos pela publicação FIPS relevante. Para o Server 2016 (supondo que as configurações padrão estejam em vigor), isso significa desabilitar criptografias RC4, PSK e NULL.
Colaboradores/Obrigado a
Mark Cartwright
Bryan Sullivan
Patrick Jungles
Michael Scovetta
Tony Rice
David LeBlanc
Mortimer Cook
Daniel Sommerfeld
Andrei Popov
Michiko Short
Justin Burke
Gov Maharaj
Brad Turner
Sean Stevenson