web-dev-qa-db-fra.com

Quel est l'impact de la faible IV signalée dans 7 Zip?

Il a été rapporté que 7 Zip génère IVs d'une manière faible.

Quel est l'impact réel de cela? Je pose des questions sur les fichiers Zip historiques que j'ai envoyés. Je n'ai pas l'intention d'utiliser 7 Zip à l'avenir jusqu'à ce que cela soit résolu.

Si je comprends bien, 7 Zip utilise AES-CBC et cela n'aurait pas d'impact majeur. Même si un utilisateur utilisait à plusieurs reprises le même mot de passe, la petite quantité d'aléatoire dans l'IV serait suffisante pour empêcher les attaques cryptographiques.

16
paj28

En mode CBC, le vecteur d'initialisation (IV) doit répondre à deux propriétés:

  • Unicité : Ici, l'IV est très probablement unique en raison de time (NULL) et gettimeofday () = qui sont essentiellement l'heure actuelle de votre système. C'est encore plus probable sur la plate-forme Windows car le cycle du processeur est impliqué.
  • Imprévisibilité : cette propriété est obligatoire si l'utilisateur peut choisir le message à crypter, ce qui n'est pas le cas ici.

Notez que le IV n'a pas à être secret . En fait, il est souvent ajouté au début du texte chiffré, sous forme de texte clair. Le fait qu'un attaquant puisse récupérer l'IV n'est pas une vulnérabilité: l'IV est supposé être public une fois le cryptage effectué. Seules les deux propriétés répertoriées ci-dessus sont obligatoires.

La génération IV n'est certainement pas bonne (surtout pour la taille de l'IV), mais la réaction de l'OP est exagérée, l'impact n'est pas si grand. C'est en fait assez petit.

L'impact le plus important serait qu'un attaquant ne pourrait reconnaître deux textes chiffrés chiffrant le même texte en clair que si ils ont été chiffrés dans la même microseconde, en utilisant la même clé. Même dans ces conditions, sur une plate-forme Windows, le cycle CPU est très peu probable le même, donc l'IV sera différent.

Pour répondre à vos préoccupations: Non, cette vulnérabilité n'a pas un grand impact dans ce cas particulier.

17
Faulst

7-Zip a ajouté le support AES-256 (pour le 7z format) dans la version "2.30 Beta 25" ( janvier 20 ) et le support nécessaire pour ses IV (un peu) "aléatoires" dans la version "4.48 beta" ( juin 2007 =).

AES est un chiffrement par bloc, ce qui signifie qu'il "traduit" un bloc de données non chiffrées (texte en clair) en un bloc de données chiffrées (texte chiffré) pendant le chiffrement. Sans améliorations supplémentaires, c'est-à-dire en mode ECB , cela crée des correspondances déterministes entre le texte en clair et le texte chiffré, et même entre les blocs individuels des deux.

Le mode CBC améliore ce schéma en "randomisant" chaque bloc de texte en clair en premier. Pour ce faire, il XOR le bloc de texte en clair avec le texte chiffré du bloc précédent. Ainsi, le texte chiffré résultant d'un bloc de texte en clair ne dépend pas seulement de la clé mais également de chaque bloc précédent.

Pour le premier bloc, vous n'avez aucun bloc précédent, vous utilisez donc un vecteur d'initialisation (IV) . Pour AES, vous avez besoin de 128 bits ou 16 octets de "caractère aléatoire" pour votre IV.

Sans IV du tout pendant le cryptage, vous ne pouviez toujours pas simplement décrypter un fichier crypté (que vous avez peut-être envoyé des années auparavant) sans connaître la clé. Mais vous pourriez certainement déduire des connaissances à partir de textes chiffrés que vous observez et tentez attaques en texte clair choisi .

Maintenant, ce qui semble être arrivé ici avec 7-Zip signifie qu'il ne protège pas complètement contre certaines attaques, mais personne ne peut simplement décrypter facilement votre texte chiffré. Néanmoins, deviner et appliquer les attaques (contre lesquelles les IV sont censés se protéger) est beaucoup plus facile avec cette mauvaise implémentation.

Soit dit en passant, si ce problème avait été signalé une semaine plus tard, il y aurait eu un bug bounty pour 7-Zip - avec des primes entre 350 € et 15 000 € - payé par le Programme FOSSA 2 de la Commission européenne . Mais c'est formidable que cela ait été signalé le plus tôt possible.

3
caw