it-swarm-eu.dev

Verschlüsselung und Komprimierung von Daten

Wenn wir sowohl Verschlüsselung als auch Komprimierung während der Übertragung wünschen, ist dies die am meisten bevorzugte Reihenfolge.

  1. Verschlüsseln und dann komprimieren
  2. Komprimieren und dann verschlüsseln
48
Ali Ahmad

Sie sollten vor dem Verschlüsseln komprimieren.

Durch die Verschlüsselung werden Ihre Daten in Daten mit hoher Entropie umgewandelt, die normalerweise nicht von einem zufälligen Datenstrom zu unterscheiden sind. Die Komprimierung basiert auf Mustern, um eine Größenreduzierung zu erzielen. Da die Verschlüsselung solche Muster zerstört, kann der Komprimierungsalgorithmus Sie nicht (wenn überhaupt) erheblich verkleinern, wenn Sie ihn auf verschlüsselte Daten anwenden.

Die Komprimierung vor der Verschlüsselung erhöht auch geringfügig Ihren praktischen Widerstand gegen differenzielle Kryptoanalyse (und bestimmte andere Angriffe), wenn der Angreifer nur den unkomprimierten Klartext steuern kann, da die resultierende Ausgabe möglicherweise schwer abzuleiten ist.

EDIT : Ich bearbeite dieses Jahr später, weil dieser Rat in einem interaktiven Fall tatsächlich schlecht ist. In den meisten Fällen sollten Sie Daten nicht komprimieren, bevor Sie sie verschlüsseln. Eine als "Komprimierungs-Oracle" bekannte Seitenkanal-Angriffsmethode kann verwendet werden, um Klartextdaten abzuleiten, wenn der Angreifer interaktiv dazu führen kann, dass Zeichenfolgen in einen ansonsten unbekannten Klartext-Datenstrom eingefügt werden. Beispiele hierfür sind Angriffe auf SSL/TLS wie CRIME und BREACH.

65
Polynomial

Wenn Sie nach der Verschlüsselung komprimieren und die Komprimierung etwas Gutes bewirkt (d. H. Sie reduziert die Länge wirklich um einen nicht zu vernachlässigenden Betrag), können Sie die Verschlüsselung aufgeben, sie ist furchtbar schwach. Verschlüsselter Text sollte nicht von Zufälligkeit zu unterscheiden sein. Selbst schlecht verschlüsselte Daten können normalerweise nicht komprimiert werden.

Komprimieren Sie daher vor der Verschlüsselung. Aus diesem Grund unterstützen Protokolle, die sich mit Verschlüsselung befassen, normalerweise die Komprimierung, z. OpenPGP (Abschnitt 5.6) und SSL/TLS . In einigen Szenarien kann die Komprimierung Informationen über vertrauliche Daten verlieren (da durch die Komprimierung die Länge abhängig von den Daten verringert wird und die verschlüsselte Länge mehr oder weniger der Klartextlänge entspricht). Dies ist die Idee hinter dem neuen CRIME-Angriff auf SSL/TLS .


Randausnahme: Wenn Sie eine Nachricht mit OpenPGP verschlüsseln und dann das Ergebnis "ACSII-Rüstung", d. H. In Base64 codieren, vergrößert diese Codierung die Daten um 34%: 3 Bytes werden zu 4 Zeichen (plus der ungeraden Zeilenumbruch). Durch die Komprimierung mit DEFLATE wird diese Erweiterung wirksam abgebrochen (dank Huffman-Codes). Das ist ein Fall von Nützlichkeit der Komprimierung nach der Verschlüsselung - aber das ist wirklich mehr Komprimierung über Base64 als Komprimierung über Verschlüsselung.

25
Thomas Pornin

Ich würde empfehlen, zuerst die Daten zu komprimieren und dann zu verschlüsseln.

  1. Der Komprimierungsalgorithmus könnte von der Kenntnis der Datenstruktur profitieren und diese Struktur würde durch die Verschlüsselung verschleiert. Ein Beispiel wäre MP3, das nur Sounddaten komprimieren kann.

  2. sie müssten weniger Daten verschlüsseln. Während Sie beim ersten Verschlüsseln und anschließenden Komprimieren keine Geschwindigkeit gewinnen würden.

8
Raphael Ahrens

Weder: Komprimieren Sie während der Verschlüsselung mit einem Verschlüsselungstool, das beide sicher ausführen kann , wie GPG/OpenPGP .

Dies ist im Grunde genommen Thomas Pornins Antwort nur direkter, damit die Leser in Eile die Feinheiten dessen, was Thomas Pornin in seiner Antwort erklärt, nicht falsch verstehen. Die Frage drückt eine falsche Zweiteilung aus. Wenn das OP (und der Leser) daran denken, dass der erste und zweite Schritt die Ausführung von zwei verschiedenen Werkzeugen wie gzip und gpg ist:

  1. Wenn Sie zuerst verschlüsseln, wird die Komprimierung nicht viel bewirken, abgesehen davon, dass die Base64-Inflation von 34% der "ASCII-Rüstung", die @ ThomasPornin erwähnt hat, herausgedrückt wird.

  2. Wenn Sie zuerst komprimieren, ist die Verschlüsselung weniger sicher und anfällig für Angriffe wie diejenigen , die @ThomasPornin erwähnt hat.

2
hobs

Die Komprimierung nach der Verschlüsselung hat möglicherweise nicht die eigentliche Funktion zum Komprimieren von Daten, da dadurch die Größe nicht wesentlich verringert wird. Die Verschlüsselung nach dem Komprimieren verringert zwar die Größe, führt jedoch nicht die ordnungsgemäße Funktion der Verschlüsselung aus, da Angriffe wie CRIME auftreten können.

Als Beispiel in Webanfragen enthalten Header geheime Web-Cookies, daher werden diese geheimen Informationen durch Komprimierung der Header vor der Verschlüsselung nach außen offengelegt.

Daher ist es ratsam, eine selektive Komprimierung durchzuführen, bei der nur nicht geheime Daten auf einer Seite komprimiert und anschließend verschlüsselt werden. Dies ist sinnvoll und verhindert das Extrahieren geheimer Informationen.

1
user466720