7
votes

Comment déchiffrer AES / CBC avec connais IV

J'ai une tâche impossible de déchiffrer les paquets de données cryptés AES / CBC envoyés à partir d'un client. J'ai fait des tonnes de recherches menant à moi de croire que le cryptage n'est pas sûr si le IV est statique. Pour cette tâche spécifiquement, l'IV est toujours défini sur le plan statique à 0. Y a-t-il une manière que cela puisse être fait?

EDIT: Le texte brut est des extraits du script de hameau. Le client les envoie dans des morceaux aléatoires afin que la longueur ne soit même cohérente. Les paquets peuvent éventuellement répéter mais je ne suis pas sûr à 100%.


1 commentaires

Y a-t-il des motifs / répétition connus dans le clairexuel? Je ne connais pas une approche pour un texte clair complètement aléatoire.


4 Réponses :


3
votes

pas sans la clé.

Spécifiquement, en supposant qu'il n'y ait pas de rembourrage, la vulnérabilité qui se produit avec l'utilisation de la même IV à chaque fois est que si vous commencez à chiffrer les mêmes données que vous avez cryptées la dernière fois, vous obtiendrez la même chaîne cryptée des deux fois. Cela permet aux attaquants de déduire quelque chose sur le contenu du message, bien que cela ne les aide pas à le déchiffrer.


0 commentaires

0
votes

Zero IV peut toutefois fuir certaines informations sur les premiers octets de données, si elles diffèrent, cela ne devrait pas être un problème (cependant, il n'est pas recommandé d'utiliser). Par exemple, OpenPGP utilise zéro IV dans certains cas.


0 commentaires

3
votes

Juste pour la notation, le terme "déchiffrement" désigne l'opération normale à l'aide de la clé. Si vous n'avez pas la clé, cela s'appelle normalement «rupture», «craquelation» ou «cryptanalyse».

CBC avec un vecteur d'initialisation fixe a la propriété que les messages (chiffrés avec la même clé) avec des blocs de départ identiques afficheront également des blocs de départ identiques dans le cipherext ... et cela concerne la seule faiblesse. Donc, si vous pouvez obtenir votre victime de crypter une hypothèse de deviner pour votre message (avec la même clé), vous pouvez comparer son CIPHERText sur celui utilisé dans le message que vous utilisez.

Ceci est plus facile lorsque le message est de format fixe et sans espoir si le message contient suffisamment de données aléatoires avant la partie intéressante (il s'agit de «vecteur d'initialisation de l'homme pauvre»).

Autres faiblesses de CBC qui dépendent des attaques choisies de CIPHERText où vous avez choisi le vecteur d'initialisation et observe une certaine validation du déchiffrement de celui-ci peut également être applicable (vous définiriez le premier bloc CIPHERText et observeriez si le deuxième bloc a un remplissage valide). < / p>


0 commentaires

1
votes

Le principal problème avec un IV non aléatoire est que deux blocs initiaux identiques cryptés avec la même clé produiront la même sortie. Donc, compte tenu de votre description des pièces de Hamlet, sachant que vous utilisez le même IV à plusieurs reprises, je ferais ce qui suit:

  • Je calculerais le cipherext pour "être ou non" (16 octets) pour une grande variété de mots de passe probables (comme pourraient être générés par John The Ripper).
  • Je comparerais le CIPERText résultant contre tous les messages, en fonction de la prémisse qu'ils pourraient commencer par ces 16 octets.
  • Si on correspond à un match, je connais le mot de passe. Fait.

    Je ferais la même chose avec plusieurs autres phrases bien connues. Il s'agit d'une opération que je peux faire massivement parallèlement avant même de capturer votre fichier et votre cache dans une base de données. Le terme général de cette approche est un table arc-en-ciel .

    Mon travail devient beaucoup plus facile si j'arrive si je connais les 16 premiers octets de vos messages (tels que s'ils sont des messages électroniques à une personne connue, ou des demandes HTTP avec des en-têtes connus ou similaires).

    Mais si vous utilisez des touches aléatoires (ou un kdf approprié comme PBKDF2)? Eh bien, disons que j'ai quelques messages de votre part, et au moins certains d'entre eux ont les mêmes 16 premiers octets (encore une fois, les en-têtes du protocole m'aident beaucoup ici). Eh bien, la première étape est que je sais que ces messages ont les mêmes 16 premiers octets. C'est des informations assez utiles. Et maintenant j'ai un Crib pour attaquer vos messages.

    La réutilisation d'une clé IV + dans CBC ne détruisait pas complètement sa sécurité (en réutilisant une clé nonce + en mode CTR). Mais cela donne à l'attaquant beaucoup d'outils utiles pour simplifier l'attaque.

    Je ne dis pas que celles-ci vous permettraient de déchiffrer votre ciIphertext spécifique dans une courte période de temps. Mais ils dégradent tous fortement la prétendue cryptographie de l'AES.


0 commentaires