Os perigos da hora do sistema errada e o recurso Propagação de Tempo Segura

Por que a hora do sistema Windows pode mudar repentinamente e como impedir que isso aconteça.

De vez em quando, os usuários e administradores do Windows 10 se perguntam por que, repentinamente, o relógio do sistema local salta várias semanas, meses ou até anos (tanto para frente quanto para trás).

Qual poderia ser a causa desses saltos? Os jornalistas da Ars Technica fizeram uma pequena pesquisa e descobriram que isso pode estar vinculado ao recurso Secure Time Seeding, ou em português, Propagação de Tempo Segura. Neste post, explico como esse recurso parece funcionar e o que pode ser feito para evitar tais saltos inesperados.

O que é o Secure Time Seeding ou Propagação de Tempo Segura?

Secure Time Seeding (STS) ou Propagação de Tempo Segura foi adicionado ao Windows 10 em 2015. O recurso tem como objetivo corrigir discrepâncias entre a hora definida no sistema e o valor temporal real – principalmente quando a bateria de um dispositivo que alimenta o relógio de tempo real interno acaba e as configurações do horário não têm relação com o tempo presente. Mais importante ainda, o STS é capaz de corrigir a hora do sistema sem acessar os servidores da infraestrutura existente.

Mas por que é necessária tal correção de discrepâncias de tempo? Curiosamente, por segurança. Normalmente, a troca de dados cliente-servidor (incluindo a conexão do sistema aos servidores online de sincronização de tempo) é protegida com protocolos de criptografia SSL/TLS. Para estabelecer tal conexão com o servidor, aquele que faz o papel de cliente primeiro precisa verificar o certificado digital, e esses certificados possuem um determinado período de validade. Portanto, se o valor temporal do sistema for definido com um erro significativo, o certificado poderá ser considerado expirado e uma conexão segura não será estabelecida.

Surge então um círculo vicioso: para saber o valor temporal presente, o computador deve ter a informação correta da hora atual. Não é necessário que seja perfeitamente preciso; o tempo aproximado também pode funcionar. Porém, quanto maior a diferença entre a hora do sistema e a horário real, maior será a chance do certificado receber a indicação de expirado.

O STS introduz (pelo menos na mente de seus desenvolvedores) uma forma do sistema identificar e corrigir automaticamente grandes discrepâncias, mesmo quando uma conexão segura não pode ser estabelecida com nenhum servidor. Isso é possível por meio da utilização de carimbos de data/hora presente e datas de expiração de certificados digitais contidos nos dados enviados pelos servidores cliente durante os procedimentos iniciais de uma conexão segura (os handshakes SSL e TLS).

O algoritmo exato do STS é desconhecido. Mas a ideia geral é que o Windows extraia dados dos protocolos SSL e os use para calcular um intervalo confiável para o horário atual e atribuir-lhe uma probabilidade. À medida que novos dados ficam disponíveis, o intervalo é atualizado e a probabilidade pode aumentar gradualmente. Quando atinge um determinado limite, o STS decide alterar o relógio do sistema local para o tempo mediano do intervalo que considera confiável. Em teoria, essa precisão deveria ser suficiente para estabelecer uma conexão segura, conectar-se a um servidor com valor temporal presente e obter a hora exata.

Por que você deve desabilitar o recurso de Propagação de Tempo Segura

O principal problema é que o recurso está habilitado no Windows 10 por padrão e funciona independentemente de o relógio do sistema local estar fora de sincronia. Como resultado, o STS pode redefinir a hora a qualquer momento quando o algoritmo secreto da Microsoft decidir que há sinais suficientes de que o relógio está marcando um horário incorreto e precisa ser ajustado.

A razão para tais problemas neste recurso de Propagação de Tempo Segura não é totalmente compreendida. Uma causa sugerida é o aumento significativo na popularidade das implementações SSL/TLS que enviam um carimbo de data/hora incorreto durante os protocolos de segurança. O principal suspeito aqui é a biblioteca OpenSSL frequentemente usada (que, em vez da hora atual do servidor, coloca valores aleatórios no carimbo de data/hora).

Além disso, esse bug também pode ocorrer em versões de servidor do sistema operacional: Windows Server 2016, Windows Server 2019 e Windows Server 2022. E embora para usuários comuns de computador o problema seja pouco mais que um incômodo, para infraestruturas maiores tende a ser catastrófico, já o funcionamento correto geralmente depende da precisão do tempo.

Há um conselho não oficial sobre isso de um profissional sênior de suporte técnico da Microsoft para administradores de controladores de domínio do Active Directory:

“Ei, pessoal, se vocês gerenciam controladores de domínio do Active Directory, quero dar alguns conselhos NÃO OFICIAIS que são apenas minha opinião pessoal: Desative o recurso Propagação de Tempo Segura para w32time em seus DCs.”

Conselho não oficial de um engenheiro sênior altamente especializado em Windows: desabilite o Secure Time Seeding

Conselho não oficial de um engenheiro sênior altamente especializado em Windows: desabilite o Secure Time Seeding

 

Desabilitando o recurso Propagação de Tempo Segura

Para desabilitar o STS, localize a seguinte chave no registro do Windows:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config

Encontre o valor UtilizeSslTimeData e o defina como 0.

W32tm.exe /config /update

Alternativamente, você pode executar o seguinte procedimento como administrador no prompt de comando do Windows (CMD):

reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\w32time\Config /v UtilizeSslTimeData /t REG_DWORD /d 0 /f

Após alterar o valor, você precisa reinicializar o sistema imediatamente. Se isso for difícil ou impossível, você pode forçar a atualização com este comando:

Feito isso, o recurso STS deixará de ser um problema para você. Agora só falta garantir que o relógio do sistema permaneça sempre atualizado e preciso. Sobre este ponto, o artigo da Ars Technica fornece algumas dicas úteis para administradores de servidores.

Dicas