11
votes

Pour le cryptage AES CBC, quelle est l'importance de la IV?

Quelle est la menace de sécurité d'utiliser toujours tous les zéros pour le IV? Si cela permet au texte crypté d'être déchiffré, comment un attaquant pourrait-il faire cela?

mise à jour: alors, si le premier bloc de données non cryptées avait un horodatage qui n'a jamais répété, un IV serait toujours nécessaire?


3 commentaires

En tant que note latérale, si vous devez poser ce genre de questions, vous ne devriez probablement pas utiliser directement les primitives de crypto. Recherchez plutôt une bibliothèque de niveau supérieur.


@NICK I D'accord, j'ai posé une question plus tôt à propos d'une bibliothèque de niveau supérieure que je puisse faire cela avec ( Stackoverflow.com/Questtions/2435479/AES-Colypyption-Library ).


Si vous avez une sorte de caractères aléatoires (c'est-à-dire un horodatage aléatoire) dans le tout premier bloc, cela substituerait au caractère aléatoire que l'IV fournirait. Mais vous pouvez aussi bien utiliser un IV parce que si cela finit par être non aléatoire. Comme si vous décidez d'utiliser l'heure actuelle.


4 Réponses :


3
votes

Pas facilement, mais cela expose des informations sur les messages, ce qui est quelque chose que le cryptage tente d'éviter.

Disons que vous utilisez la même clé et un zéro IV. Quelqu'un reniflant le trafic peut remarquer que les messages commencent avec le même chiffrestext. Cela leur donne des informations. En randomisant le IV, cette fuite d'informations s'en va. Des attaques plus puissantes peuvent être lancées en sachant davantage sur la structure des données en plainte. De plus, si vous envoyez de nombreux messages de telle manière, un attaquant pourrait apprendre lentement plus d'informations sur la clé utilisée en raison de la réduction de la variance (seul le texte en texte est différent, au lieu du clairext et de l'IV


0 commentaires

1
votes

Si le IV est toujours zéro, tous les messages avec du texte commun au démarrage (par exemple, des courriels avec les mêmes premiers ou trois blocs de chiffrement pour le "de" ou "de:" Information) seront cryptés. Cela donne l'effet de levier de l'attaquant sur votre clé. C'est inconditionnellement mauvais. Tant que vous utilisez un IV raisonnablement aléatoire, l'attaquant perd cet effet de levier. Ne risquez pas cela.


0 commentaires

12
votes

Une fois que l'attaquant a un message en clair-poste et le cipostext correspondant (peut-être qu'elle l'a interceptée ailleurs, comme la destination), elle pourra savoir quand tout autre message avec la même séquence de départ est envoyé. Puisqu'elle peut apprendre quelque chose sur le contenu de vos messages cryptés, cela n'est pas sûr.

Il permet également à l'attaquant d'effectuer une analyse de fréquence. Par exemple, imaginez que vos messages plaints sont des commandes au backend d'une plate-forme boursière. Ils commencent tous avec tous les "Commande = Acheter" ou "Commande = Vendre" . Cela signifie que les messages cryptés commencent avec seulement deux séquences de ciIphertext différentes. L'attaquant ne peut pas les déchiffrer directement - mais si elle est capable de respecter plus tard le nombre de commandes de vente que vous avez placées en observant les données de marché, elle pourra retourner et travailler qui est la suivante. Je saurai exactement quel ordre vous placez comme vous les placez.

L'analyse de fréquence est la manière dont les chiffres de substitution simples sont cassés, ce qui n'est pas une coïncidence - à l'aide d'un IV fixe signifie que la partie initiale de vos messages utilise efficacement une substitution, un bloc à la fois.


0 commentaires

7
votes

Le point de CBC est de randomiser les blocs d'entrée, car un bloc d'entrée donné est toujours crypté de la même manière avec une clé donnée (AES est déterministe). Un bloc d'entrée est randomisé en le xorant avec le bloc de sortie précédent. Le premier bloc n'a pas de bloc précédent, il est randomisé en le xorant avec le IV.

Ainsi, à l'aide d'un IV non aléatoire signifie que vous ne randomez pas le premier bloc. si vous n'utilisez jamais la même clé deux fois, c'est-à-dire une nouvelle clé lorsque vous chiffrez un nouveau message, puis un tout-zéro IV n'est pas un problème. Les problèmes avec des blocs d'entrée non randomisés ne sont pertinents que lorsqu'il existe deux blocs d'entrée non randomisés cryptés avec la même clé. Si vous utilisez une clé donnée pour un seul message, seul seul le premier bloc de ce message sera non randomisé, donc aucun problème. Mais c'est un gros "si". En particulier, si vous pouvez générer une nouvelle clé pour chaque message, vous pouvez probablement générer un nouveau IV pour chaque message. Il faudrait un scénario assez spécifique pour justifier d'utiliser un IV tout zéro avec CBC.


0 commentaires