web-dev-qa-db-fra.com

Pourquoi l'utilisation d'un IV non aléatoire avec le mode CBC est-elle une vulnérabilité?

Je comprends le but d'un IV. Plus précisément, en mode CBC, cela garantit que le premier bloc de 2 messages chiffrés avec la même clé ne sera jamais identique. Mais pourquoi est-ce une vulnérabilité si les IV sont séquentiels? Selon CWE-329 Les IV non aléatoires permettent la possibilité d'une attaque par dictionnaire. Je sais que dans la pratique, des protocoles comme WEP ne font aucun effort pour cacher la perfusion. Si l'attaquant a le IV et un message texte chiffré, cela ouvre la porte à une attaque par dictionnaire contre la clé. Je ne vois pas comment un iv aléatoire change cela. (Je sais que les attaques contre wep sont plus complexes que cela.)

Quel avantage de sécurité un IV randomisé a-t-il? Est-ce toujours un problème avec un "chiffrement de bloc idéal"? (Un chiffrement de bloc parfaitement sécurisé sans aucune faiblesse possible.)

41
rook

Les IV prévisibles peuvent être exploités par du texte brut choisi.

Imaginez que Eve est DBA dans une compagnie d'assurance. La société recueille des antécédents médicaux auprès des bénéficiaires qui comprennent de nombreuses cases à cocher vraies/fausses sur les conditions médicales. Cette société arrive également à son propre fournisseur d'assurance maladie. Eve se rend compte qu'Alice pourrait être victime de chantage si elle découvrait qu'Alice avait une condition médicale particulièrement embarrassante. Cependant, la valeur dans chacun de ces champs est cryptée, donc même si Eve est le DBA, elle n'a accès qu'au texte chiffré.

En CBC, l'IV est XORed (noté par "⊕" ci-dessous) avec le texte brut, puis parcourt le chiffrement par bloc: C1 = Ek(IV ⊕ P1).

Étant donné qu'Eve est bénéficiaire de la compagnie d'assurance, elle peut choisir le texte brut pour son propre dossier médical, et comme elle est la DBA, elle peut examiner le texte chiffré de n'importe qui. En plus d'utiliser des IV prévisibles, le développeur d'applications bâclé a mal fait de valider les entrées de l'application. Si Eve peut prédire les IV qui lui seront appliquées (IVveille) et d'Alice (IValice) enregistre à l'avance, elle peut choisir le texte brut pour son propre enregistrement comme ceci: Pveille = IVveille ⊕ IValice ⊕ "faux"

L'application crypte ce texte brut comme ceci:

Cveille = Ek(IVveille ⊕ Pveille) = Ek(IVveille ⊕ (IVveille ⊕ IValice ⊕ "faux"))

Le IVveille ⊕ IVveille annule, ce qui signifie que Cveille = Ek(IValice ⊕ "faux")

Eve peut maintenant comparer Cveille et Calice. S'ils sont différents, elle sait qu'Alice doit être entrée "vraie" pour cette condition médicale.

Rendre les IV imprévisibles contrecarre cette attaque, et un moyen facile de les rendre imprévisibles est de les choisir au hasard après que le texte brut a été fourni.

95
erickson

Les autres réponses sont bonnes, bien que très techniques.

Pourquoi l'utilisation d'une IV non aléatoire avec le mode CBC est-elle une vulnérabilité?

Lorsque vous chiffrez des données avec une clé, si les données et la clé sont identiques (n'ont pas changé), les données chiffrées seront les mêmes. Si les données cryptées sont les mêmes, des ensembles de données cryptées peuvent être analysés pour des modèles qui peuvent ensuite être utilisés pour acquérir des connaissances sur les données cryptées.

CBC (Cipher Block Chaining) résout ce problème en XORing les données chiffrées du bloc précédent avec les données à chiffrer. Cela signifie que les blocs avec les mêmes données seront différents si les données chiffrées du bloc précédent sont différentes, même si les clés sont les mêmes.

Le problème avec CBC est de savoir quoi faire avec le premier bloc, car il n'y a pas de bloc précédent pour obtenir les données chiffrées. Au lieu de cela, les données sont XORed avec un bloc de bits aléatoires appelé IV (vecteur d'initialisation).

Vous pouvez considérer que la sécurité de l'IV est la même que la sécurité des blocs de données chiffrés. En d'autres termes, s'ils peuvent recevoir les données cryptées, ils peuvent également recevoir le IV.

7
Trisped

je veux expliquer votre question en utilisant WEP qui est vulnérable et maintenant d'autres protocoles tels que WPA2 sont utilisés.

la règle simple IEEE dit que:

La règle de base est de ne jamais utiliser une clé + IV deux fois, jamais

L'une des raisons pour lesquelles le WEP est compromis est due à la raison de la génération IV.

alt text

Comme le montre l'image, lorsque WEP est apparu pour la première fois, la longueur du IV était de 24 bits (plus tard, elle est augmentée de 48 bits) si l'attaquant sait comment les IV sont générés ou dans cette situation, les IV sont suffisamment petites pour que l'attaquant puisse exploiter le messages.

Si quelqu'un connaît la génération du IV ou s'il se chevauche (parce que les IV sont de 24 bits, cela signifie 2 ^ 24 IV) pendant la transmission des paquets, l'attaquant qui renifle le trafic peut: si les IV sont séquentiels, cela signifie qu'il y a toujours une possibilité que les IV se chevauchent dans un certain temps.

assumons,

passphrase key Kp

initialization vector Ivi

plaintext data D1, D2 (for separateblocks)

Traffic Key:Kti=Kp||Ivi

Ciphertext: E(Kti,Di)=RC4(Kti) xor Di

et supposons que

IV1=IV2  (created sequentially and from 0 to 2^24 again returns back)

L'attaquant a,

(RC4(Kt1) xor D1) Xor  (RC4(Kt1) xor D2) = D1 XOR D2

Cela peut être brisé en utilisant Aircrack-NG en utilisant des traces réseau. L'idée que j'ai montrée est l'hypothèse de base la plus complexe qui puisse être faite, encore une fois n'utilisez jamais la même IV qui se chevauchera.

7
berkay