
Anteriormente, os certificados frequentemente expiravam porque precisavam ser atualizados manualmente. As pessoas simplesmente esqueciam de fazê-lo. Com o surgimento do Let’s Encrypt e do procedimento automático de atualização, o problema parecia ter sido resolvido. Mas uma recente mostra que, na verdade, ainda é uma questão atual. Infelizmente, os certificados continuam a expirar.
Se alguém perdeu essa história, à meia-noite do dia 4 de maio de 2019, quase todas as extensões do Firefox pararam de funcionar repentinamente.
Como se descobriu, uma falha em massa ocorreu porque a Mozilla , que era utilizado para assinar as extensões. Portanto, elas foram marcadas como "inválidas" e não passaram na verificação (). Nos fóruns, como uma solução alternativa, recomendou-se desativar a verificação das assinaturas das extensões no about:config ou alterar a data e hora do sistema.
A Mozilla rapidamente lançou o patch do Firefox 66.0.4, que resolve o problema do certificado inválido, e todas as extensões retornam ao normal. Os desenvolvedores recomendam que você instale-o e nenhuma solução alternativa para contornar a verificação de assinaturas, pois isso pode conflitar com o patch.
No entanto, essa história mais uma vez mostra que a expiração dos certificados continua sendo um problema relevante até hoje.
Nesse sentido, é interessante observar uma maneira bastante original que os desenvolvedores do protocolo resolveram essa tarefa. Sua solução pode ser dividida em duas partes. Em primeiro lugar, são os certificados de curto prazo. Em segundo lugar, o aviso aos usuários sobre a expiração dos certificados de longo prazo.
DNSCrypt
DNSCrypt é um protocolo que criptografa o tráfego DNS. Ele protege as comunicações DNS contra interceptações e ataques Man-in-the-Middle, além de permitir contornar bloqueios em nível de consultas DNS.
O protocolo encapsula o tráfego DNS entre o cliente e o servidor em uma estrutura criptográfica, operando sobre os protocolos de transporte UDP e TCP. Para usá-lo, tanto o cliente quanto o resolvedor DNS devem suportar o DNSCrypt. Por exemplo, desde março de 2016, o serviço DNS do "Yandex" o habilitou em seus servidores DNS e no navegador. Outros provedores também anunciaram suporte, incluindo Google e Cloudflare. Infelizmente, eles não são muitos (no site oficial, 152 servidores DNS públicos estão listados). Mas o programa pode ser instalado manualmente em clientes com Linux, Windows e MacOS. Também existem .

Como funciona o DNSCrypt? Em resumo, o cliente pega a chave pública do provedor escolhido e, com ela, verifica seus certificados. Já estão presentes chaves públicas de curto prazo para a sessão e um identificador do conjunto de cifras. Recomenda-se que os clientes gerem uma nova chave para cada solicitação, enquanto os servidores devem mudar as chaves a cada 24 horas. Ao trocar chaves, é utilizado o algoritmo X25519, para assinatura — EdDSA, e para criptografia em bloco — XSalsa20-Poly1305 ou XChaCha20-Poly1305.
Um dos desenvolvedores do protocolo, Frank Denis , afirmou que a troca automática a cada 24 horas resolveu o problema dos certificados expirados. Em princípio, o cliente de referência dnscrypt-proxy aceita certificados com qualquer prazo de validade, mas emite um aviso "O período das chaves dnscrypt-proxy para este servidor é muito longo", se ele for válido por mais de 24 horas. Ao mesmo tempo, uma imagem Docker foi lançada, na qual foi implementada a troca rápida de chaves (e certificados).
Em primeiro lugar, isso é extremamente útil para a segurança: se o servidor for comprometido ou a chave vazada, o tráfego de ontem não pode ser decifrado. A chave já foi alterada. Provavelmente, isso será um problema para a implementação da "lei Yarovaya", que obriga os provedores a armazenar todo o tráfego, incluindo o criptografado. Presume-se que, posteriormente, ele poderá ser decifrado quando necessário, solicitando a chave ao site. Mas, nesse caso, o site simplesmente não poderá fornecê-la, pois utiliza chaves de curto prazo, excluindo as antigas.
Mas o principal, escreve Denis, é que as chaves de curto prazo fazem com que os servidores, desde o primeiro dia, configurem a automação. Se o servidor se conecta à rede e os scripts de troca de chaves não estão configurados ou não funcionam, isso será imediatamente detectado.
Quando a automação muda as chaves a cada vários anos, não se pode confiar nela, e as pessoas podem esquecer o vencimento do certificado. Com a troca diária de chaves, isso será detectado imediatamente.
Ao mesmo tempo, se a automação estiver configurada corretamente, não importa com que frequência a troca de chaves é realizada: anualmente, trimestralmente ou três vezes ao dia. Se tudo funcionar por mais de 24 horas, funcionará para sempre, escreve Frank Denis. Segundo ele, a recomendação de trocar chaves diariamente na segunda versão do protocolo, juntamente com uma imagem Docker implementando isso, reduziu efetivamente o número de servidores com certificados expirados, ao mesmo tempo em que melhorou a segurança.
No entanto, alguns provedores decidiram, por razões técnicas, estabelecer um prazo de validade do certificado superior a 24 horas. Esse problema foi principalmente resolvido com algumas linhas de código no dnscrypt-proxy: os usuários recebem um aviso informativo 30 dias antes da expiração do certificado, uma mensagem de maior gravidade 7 dias antes da expiração e uma mensagem crítica se restar menos de 24 horas para o certificado. Isso se aplica apenas a certificados que inicialmente têm um prazo de validade prolongado.
Essas mensagens permitem que os usuários informem os operadores de DNS sobre a iminente expiração do certificado, antes que seja tarde demais.
Talvez, se todos os usuários do Firefox recebessem essa mensagem, alguém com certeza informaria os desenvolvedores e eles não permitiriam a expiração do certificado. "Não me lembro de nenhum servidor DNSCrypt da lista de servidores DNS públicos que tenha expirado nos últimos dois ou três anos", escreve Frank Denis. De qualquer forma, talvez seja melhor primeiro avisar os usuários, em vez de desativar as extensões sem aviso.
Fonte: habr.com
