Lors de la compression et de cryptage, dois-je compresser d'abord, ou chiffrer en premier?
Si je AES-crypter un fichier, puis ZLIB-compresser, serait la compression d'être moins efficaces que si je compressés puis crypté?
En d'autres termes, il faut que j'compresser première ou crypter premier, ou est-il question?
- Ils ne sont pas la même question à tous. Cette question pose des questions sur l'efficacité, l'autre est à propos de la sécurité.
Vous devez vous connecter pour publier un commentaire.
Compresser en premier. Une fois que vous crypter le fichier, vous allez générer un flux de données aléatoires, qui ne sont pas compressibles. Le processus de compression, il faut trouver compressible modèles dans les données.
De Compression avant de chiffrement est sûrement plus efficace de l'espace, mais dans le même temps, moins sécurisé. C'est pourquoi je ne serais pas d'accord avec les autres réponses.
La plupart des algorithmes de compression de l'utilisation de "magie" en-têtes de fichier et qui pourraient être utilisées pour des attaques.
Par exemple, il y a un CRIME SSL/TLS attaque.
Si votre algorithme de chiffrement est tout bon (et AES, avec un chaînage de mode, c'est bon), alors pas de compresseur sera en mesure de réduire le texte crypté. Ou, si vous préférez l'autre sens: si vous arrivez à la compression de certains, le texte chiffré, alors il est grand temps de remettre en question la qualité de l'algorithme de chiffrement...
C'est parce que la sortie d'un système de chiffrement doit être distingué de manière purement aléatoire des données, même par une personne déterminée. Un compresseur n'est pas malveillant, mais il fonctionne en essayant de trouver des non-aléatoire des modèles, ce qui peut représenter avec moins de bits. Le compresseur ne doit pas être en mesure de trouver un tel modèle dans le texte chiffré.
Donc, vous devez compresser les données d'abord, puis chiffrer le résultat, pas l'inverse. C'est ce que fait, par exemple, la Format OpenPGP.
Compresser en premier. Si vous chiffrez vos données se transforme en (essentiellement) un flux de bits aléatoires. Bits aléatoires sont incompressable du fait de la compression cherche des modèles dans les données et d'un flux aléatoire, par définition, n'a pas de motifs.
Bien sûr, c'est important. Il est généralement préférable de compresser d'abord et ensuite à chiffrer.
ZLib utilise Le codage de Huffman et de compression LZ77. L'arbre de Huffman sera plus équilibrée et optimale si elle est effectuée sur la plaine de texte, par exemple) et donc le taux de compression sera mieux.
Cryptage peut suivre après la compression, même si la compression résultat semble être "crypté", mais peut facilement être détecté à être compressé parce que le fichier commence généralement avec PK.
ZLib ne fournissent pas de cryptage en mode natif. C'est pourquoi j'ai mis en place ZeusProtection. Le code source est également disponible à github.
il est vrai que le compresseur ne fonctionne que sur des ensembles de données qui a bien défini les motifs, mais il est exploratoire, afin de crypter les données premières qui produit bien définie non-aléatoire des motifs qui peuvent être traitées par le compresseur avec moins de temps de complexité.
À partir d'un point de vue pratique, je pense que vous devriez compresser d'abord simplement parce que de nombreux fichiers sont pré-comprimé. Par exemple, l'encodage vidéo implique généralement une forte compression. Si vous crypter ce fichier vidéo et de le compresser, il a été comprimé deux fois. Non seulement, la deuxième compression obtenir un mauvais taux de compression, mais la compression de nouveau, beaucoup de ressources pour compresser de gros fichiers ou des cours d'eau. Comme Thomas Pornin et Ferruccio a déclaré, la compression de fichiers cryptés peuvent avoir peu d'effet de toute façon en raison du caractère aléatoire des fichiers cryptés.
Je pense que la meilleure et la plus simple, la politique peut être pour compresser les fichiers uniquement en tant que de besoin à l'avance (à l'aide d'une liste blanche ou liste noire), puis chiffrer, quel que soit le.