2010-01-01 5 views
1

Si je viens de crypter du texte brut en texte chiffré avec CBC et Rijndael, est-il dangereux de dire au monde que le texte brut original avait une longueur de x octets? Il semble que c'est toujours la même chose que la longueur du texte chiffré, donc, je pense que cela n'a pas d'importance, mais y a-t-il des modes de blocs ou des chiffrements où cela a de l'importance?Révéler la longueur du texte brut?

+0

D'autres détails suivent: Je stocke la longueur du texte brut dans une base de données afin que je puisse plus tard éliminer les octets nuls causés par CBC. – Tower

Répondre

5

Vous devez utiliser le schéma de remplissage PKCS5. Ce schéma contient toujours des informations supplémentaires, y compris le nombre d'octets supplémentaires qui ont été ajoutés. Lors du déchiffrement, le dernier bloc est examiné pour voir combien d'octets doivent être jetés.

Il est difficile de supprimer les informations sur la longueur du message d'origine. Même avec un remplissage pour bloquer la taille, vous pouvez déduire que le message d'origine est n, n-1, n-2, ... ou n-blocksize + 1 octets de longueur. La plupart des protocoles de chiffrement font peu ou pas d'efforts pour cacher la longueur du texte en clair.

0

La longueur de la sortie n'est pas toujours la même. Cependant, si les longueurs de texte brut sont similaires, la longueur du texte chiffré peut être le même en raison de rembourrage (Rijndael/AES est un chiffrement par bloc) http://en.wikipedia.org/wiki/Padding_(cryptography)

Et il est affaiblit votre sécurité si vous dites le monde la longueur du texte en clair, donc à moins qu'il y ait une très bonne raison, je déconseille.

Jetez aussi un oeil sur la façon dont fonctionne la CBC:

http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Cipher-block_chaining_.28CBC.29

+0

J'ai besoin de la longueur pour que je puisse plus tard enlever les octets nuls causés par CBC. Ainsi, la longueur est stockée en texte brut dans la base de données. – Tower

0

Rijndael est un chiffrement par bloc, de sorte que le texte brut est rembourré à un bloc complet. (Cela peut être masqué par votre couche de cryptage). Par conséquent, la longueur du texte du message crypté indiquera la longueur du texte brut.

Si vous fuyez des informations en fonction de la longueur du message, vous devrez effectuer votre propre remplissage. En effet, l'envoi d'un message peut provoquer des fuites d'informations, vous devrez donc envoyer des messages no-op lorsque vous n'avez rien à envoyer.

0

Le texte brut n'a généralement pas la même longueur que le texte chiffré. Le texte brut est complété avant le cryptage. Si vous envoyez l'un des deux messages différents 'Oui' ou 'Non', l'envoi de la longueur d'origine n'est probablement pas une bonne idée. Si tous vos messages sont de la même longueur, vous pouvez publier cette longueur.

Questions connexes