Comment DNSCrypt a résolu le problème des certificats expirés en introduisant une période de validité de 24 heures

Comment DNSCrypt a résolu le problème des certificats expirés en introduisant une période de validité de 24 heures

Dans le passé, les certificats expiraient souvent car ils devaient être renouvelés manuellement. Les gens ont simplement oublié de le faire. Avec l'avènement de Let's Encrypt et la procédure de mise à jour automatique, il semble que le problème devrait être résolu. Mais récent Histoire de Firefox montre qu’il est en fait toujours d’actualité. Malheureusement, les certificats continuent d'expirer.

Au cas où vous auriez manqué l'histoire, le 4 mai 2019 à minuit, presque toutes les extensions Firefox ont soudainement cessé de fonctionner.

Il s'est avéré que l'échec massif s'est produit parce que Mozilla le certificat a expiré, qui était utilisé pour signer des extensions. Par conséquent, ils ont été marqués comme « invalides » et n’ont pas été vérifiés (détails techniques). Sur les forums, comme solution de contournement, il a été recommandé de désactiver la vérification de la signature de l'extension dans about: config ou changer l'horloge du système.

Mozilla a rapidement publié le correctif Firefox 66.0.4, qui résout le problème d'un certificat invalide et toutes les extensions reviennent à la normale. Les développeurs recommandent de l'installer et ne pas utiliser aucune solution de contournement pour contourner la vérification de la signature car elle peut entrer en conflit avec le correctif.

Cependant, cette histoire montre une fois de plus que l’expiration des certificats reste aujourd’hui un problème urgent.

À cet égard, il est intéressant d’examiner de manière plutôt originale la manière dont les développeurs de protocoles ont géré cette tâche. DNSCrypt. Leur solution peut être divisée en deux parties. Premièrement, ce sont des certificats à court terme. Deuxièmement, avertir les utilisateurs de l’expiration des contrats à long terme.

DNSCrypt

Comment DNSCrypt a résolu le problème des certificats expirés en introduisant une période de validité de 24 heuresDNSCrypt est un protocole de cryptage du trafic DNS. Il protège les communications DNS des interceptions et du MiTM, et vous permet également de contourner le blocage au niveau des requêtes DNS.

Le protocole enveloppe le trafic DNS entre le client et le serveur dans une construction cryptographique, fonctionnant sur les protocoles de transport UDP et TCP. Pour l'utiliser, le client et le résolveur DNS doivent prendre en charge DNSCrypt. Par exemple, depuis mars 2016, il est activé sur ses serveurs DNS et dans le navigateur Yandex. Plusieurs autres fournisseurs ont également annoncé leur support, notamment Google et Cloudflare. Malheureusement, ils ne sont pas nombreux (152 serveurs DNS publics sont répertoriés sur le site officiel). Mais le programme proxy-dnscrypt peut être installé manuellement sur les clients Linux, Windows et MacOS. Il y a aussi implémentations de serveur.

Comment DNSCrypt a résolu le problème des certificats expirés en introduisant une période de validité de 24 heures

Comment fonctionne DNSCrypt ? En bref, le client prend la clé publique du fournisseur sélectionné et l'utilise pour vérifier ses certificats. Les clés publiques à court terme pour la session et l'identifiant de la suite de chiffrement sont déjà là. Les clients sont encouragés à générer une nouvelle clé pour chaque demande et les serveurs sont encouragés à modifier les clés. toutes les 24 heures. Lors de l'échange de clés, l'algorithme X25519 est utilisé, pour la signature - EdDSA, pour le cryptage par blocs - XSalsa20-Poly1305 ou XChaCha20-Poly1305.

L'un des développeurs du protocole Frank Denis écritce remplacement automatique toutes les 24 heures a résolu le problème des certificats expirés. En principe, le client de référence dnscrypt-proxy accepte les certificats avec n'importe quelle période de validité, mais émet un avertissement « La période de clé dnscrypt-proxy pour ce serveur est trop longue » si elle est valide plus de 24 heures. Dans le même temps, une image Docker a été publiée, dans laquelle un changement rapide des clés (et des certificats) a été mis en œuvre.

Premièrement, c'est extrêmement utile pour la sécurité : si le serveur est compromis ou si la clé est divulguée, le trafic d'hier ne peut pas être déchiffré. La clé a déjà changé. Cela posera probablement un problème pour la mise en œuvre de la loi Yarovaya, qui oblige les fournisseurs à stocker tout le trafic, y compris le trafic crypté. L'implication est qu'il peut ensuite être déchiffré si nécessaire en demandant la clé au site. Mais dans ce cas, le site ne peut tout simplement pas le fournir, car il utilise des clés à court terme et supprime les anciennes.

Mais plus important encore, écrit Denis, les clés à court terme obligent les serveurs à mettre en place une automatisation dès le premier jour. Si le serveur se connecte au réseau et que les scripts de changement de clé ne sont pas configurés ou ne fonctionnent pas, cela sera détecté immédiatement.

Lorsque l'automatisation change les clés toutes les quelques années, on ne peut plus s'y fier et les gens peuvent oublier l'expiration des certificats. Si vous changez les clés quotidiennement, cela sera détecté instantanément.

Dans le même temps, si l'automatisation est configurée normalement, peu importe la fréquence de changement des clés : chaque année, tous les trimestres ou trois fois par jour. Si tout fonctionne plus de 24 heures, cela fonctionnera pour toujours, écrit Frank Denis. Selon lui, la recommandation d'une rotation quotidienne des clés dans la deuxième version du protocole, ainsi qu'une image Docker prête à l'emploi qui l'implémente, ont effectivement réduit le nombre de serveurs avec des certificats expirés, tout en améliorant simultanément la sécurité.

Cependant, certains fournisseurs ont tout de même décidé, pour des raisons techniques, de fixer la durée de validité du certificat à plus de 24 heures. Ce problème a été en grande partie résolu avec quelques lignes de code dans dnscrypt-proxy : les utilisateurs reçoivent un avertissement informatif 30 jours avant l'expiration du certificat, un autre message avec un niveau de gravité plus élevé 7 jours avant l'expiration et un message critique s'il en reste au certificat. validité inférieure à 24 heures. Cela ne s'applique qu'aux certificats qui ont initialement une longue période de validité.

Ces messages donnent aux utilisateurs la possibilité d'informer les opérateurs DNS de l'expiration imminente du certificat avant qu'il ne soit trop tard.

Peut-être que si tous les utilisateurs de Firefox recevaient un tel message, quelqu'un en informerait probablement les développeurs et ils ne permettraient pas l'expiration du certificat. "Je ne me souviens pas d'un seul serveur DNSCrypt sur la liste des serveurs DNS publics dont le certificat a expiré au cours des deux ou trois dernières années", écrit Frank Denis. Dans tous les cas, il est probablement préférable d’avertir d’abord les utilisateurs plutôt que de désactiver les extensions sans avertissement.

Comment DNSCrypt a résolu le problème des certificats expirés en introduisant une période de validité de 24 heures


Source: habr.com

Ajouter un commentaire