Question Compresser puis chiffrer, ou vice-versa?


J'écris un système VPN qui chiffre (AES256) son trafic sur Internet (Pourquoi écrire le mien alors qu'il y en a déjà 1 000 001? Eh bien, le mien est spécial pour une tâche spécifique qu'aucune des autres ne correspond).

Fondamentalement, je veux faire passer mon temps pour vous assurer que je le fais dans le bon ordre.

Pour le moment, les paquets sont juste cryptés avant d'être envoyés, mais je veux leur ajouter un certain niveau de compression pour optimiser le transfert des données. Pas de compression lourde - Je ne veux pas optimiser le processeur tout le temps, mais je veux m'assurer que la compression sera aussi efficace que possible.

Donc, je pense que je devrais compresser les paquets avant le cryptage en tant que paquet non crypté compressera mieux qu'un crypté? Ou l'inverse?

Je vais probablement utiliser zlib pour la compression.

Lire plus ici: http://blog.superuser.com/2011/03/21/compression-and-encryption


85
2018-03-15 09:37


origine


Ecrire comme "programmation"? Serait mieux adapté pour le débordement de pile alors. - Suma
Si je posais des questions sur la programmation, oui, mais je ne le suis pas. Ceci est une compression générale, puis crypter ou chiffrer, puis compresser la question qui pourrait s’appliquer à travailler avec des fichiers simples si vous le souhaitiez. Le côté programmation est juste le contexte pour lequel je pose la question. - Majenko
Voir également: stackoverflow.com/questions/4676095  stackoverflow.com/questions/4399812 - BlueRaja - Danny Pflughoeft
Probablement une question qui a le plus de sens pour security.stackexchange.com - Jeff Ferland
Ils connaissent la compression, n'est-ce pas? - Majenko


Réponses:


Si le cryptage est effectué correctement alors le résultat est essentiellement des données aléatoires. La plupart des schémas de compression fonctionnent en trouvant des modèles dans vos données qui peuvent être en quelque sorte éliminés, et grâce au cryptage, il n'y en a plus; les données sont complètement incompressibles.

Compressez avant de crypter.


169
2018-03-15 10:41



Plus important: la compression ajoute l'entropie. L'ajout d'entropie est bon pour votre chiffrement (plus difficile à rompre avec les attaques en texte clair). - Olli
En outre, le cryptage des ressources de coûts, le cryptage d'un fichier plus petit prend moins de ressources. Donc, compressez avant de crypter. - GAThrawn
@Olli - pas nécessairement si le schéma de compression ajoute du texte connu. Dans le pire des cas, imaginez si vous mettez un en-tête de 512 octets au début des données et que vous utilisez un chiffrement en mode bloc. - Martin Beckett
Je ne suis pas sûr de savoir pourquoi le commentaire de @Olli sera mis aux voix, car il est incorrect. non seulement est-ce significatif Moins important, pour tout cryptage à moitié décent, il devrait être pas important du tout. C'est-à-dire que la force du chiffrement doit être complètement indépendante de l'entropie du message. - BlueRaja - Danny Pflughoeft
Si vous compressez du tout, cela ne peut vraiment être fait que lors du cryptage du message, mais gardez à l'esprit que cela risque de laisser échapper des informations sur la «compressibilité» du message d'origine. canal. Considérons un fichier de taille fixe qui soit tous les 0 ou un message. Le tout 0 fichier entraînera une charge utile plus petite sous un schéma de compression raisonnable. Pas probablement un problème dans ce cas d'utilisation particulier. - Edward KMETT


Compresser avant le cryptage. Les données compressées peuvent varier considérablement pour de petits changements dans les données sources, ce qui rend très difficile l'exécution d'une cryptanalyse différentielle.

En outre, comme le souligne M.Alpha, si vous cryptez en premier, le résultat est très difficile à compresser.


21
2018-03-15 13:01



Eh bien, c'est correct, mais a été posté 2 heures avant que vous avez posté ... Entropie - Konerak


Même si cela dépend du cas d'utilisation spécifique, je conseillerais Encrypt-then-Compress. Sinon, un attaquant pourrait échapper des informations du nombre de blocs chiffrés.

Nous supposons qu'un utilisateur envoie un message au serveur et à un attaquant avec la possibilité d'ajouter du texte au message de l'utilisateur avant de l'envoyer (via JavaScript, par exemple). L'utilisateur souhaite envoyer des données sensibles au serveur et l'attaquant souhaite obtenir ces données. Il peut donc essayer d'ajouter différents messages aux données envoyées par l'utilisateur au serveur. Ensuite, l'utilisateur compresse son message et le texte ajouté à partir de l'attaquant. Nous supposons une compression DEFLATE LZ77, de sorte que la fonction remplace la même information par un pointeur vers la première apparence. Donc, si l'attaquant peut reproduire le texte en clair, la fonction de compression réduit la taille du texte brut à la taille d'origine et à un pointeur. Et après le chiffrement, l'attaquant peut compter le nombre de blocs de chiffrement, de sorte qu'il puisse voir si ses données ajoutées étaient les mêmes que celles envoyées par l'utilisateur au serveur. Même si ce cas semble un peu construit, il s'agit d'un grave problème de sécurité dans TLS. Cette idée est utilisée par une attaque appelée CRIME pour échapper des cookies dans une connexion TLS afin de voler des sessions.

la source: http://www.ekoparty.org/archive/2012/CRIME_ekoparty2012.pdf


3
2018-01-14 21:32





Mon point de vue est que lorsque vous compressez un message, vous le projetez dans une dimension inférieure et il y a donc moins de bits, ce qui signifie que le message compressé (en supposant un compressioon sans perte) contient moins de bits ) Donc, vous avez plus d'informations par bit et par conséquent plus d'entropie par bit, mais la même entropie totale que vous aviez auparavant lorsque le message n'était pas compressé. Maintenant, le hasard est une autre affaire et c'est là que les modèles en compression peuvent lancer une clé de singe.


2
2017-10-09 04:11





La compression doit être effectuée avant le cryptage. un utilisateur ne veut pas perdre de temps à attendre le transfert de données, mais il doit être immédiatement exécuté sans perdre de temps.


1
2018-03-16 08:39





Compression avant le cryptage, comme cela a été souligné précédemment. La compression recherche la structure qu'elle peut compresser. Le cryptage brouille les données pour éviter que la structure ne soit détectée. En compressant d'abord, vous êtes beaucoup plus susceptible d'avoir un fichier plus petit et donc moins de charge utile à transférer. Le chiffrement va faire son travail indépendamment du fait qu'il soit compressé ou non et, comme indiqué précédemment, il sera probablement plus difficile d'effectuer une analyse cryptographique différentielle sur un fichier compressé.


1
2018-06-19 19:54



Cela semble être une répétition des réponses acceptées et des deuxièmes réponses. Chaque réponse devrait apporter une solution substantiellement nouvelle à la question. - fixer1234


La compression réduit l’entropie des informations. La compression maximale rend l'entropie minimale. Pour une donnée parfaitement cryptée (bruit), l'entropie maximale et minimale est la même.


0
2018-03-16 00:19



Attendez, vous ne l'avez pas en arrière? Je pensais que l'entropie augmentait à mesure que la redondance diminuait. Par conséquent, la compression devrait augmenter l'entropie. - Zan Lynx
Nop, moins d'entropie = plus de motifs. Le hasard a le plus d'entropie. - AbiusX
Mais il est information entropie donc tout est question de sens. Le hasard ne veut rien dire et ne s'applique pas. Une phrase en anglais peut avoir des lettres changées et signifier la même chose donc il a une faible entropie. Une phrase anglaise compressée peut être illisible si un seul bit change de manière à ce qu'il en ait le plus. Ou alors je pense. - Zan Lynx
L'entropie ne concerne pas le sens et la capacité de lire ou de comprendre, tout est question de modèles. Les fichiers compressés sont remplis de motifs. - AbiusX
@AbiusX: D'accord. Patterns. Et moins il y a de motifs, plus il y a d'entropie. Ce qui signifie que la compression qui remplace tous les motifs répétés par une seule copie augmente l’entropie. - Zan Lynx