Frage

Ich möchte AES-Verschlüsselung auf ein Software-Produkt hinzuzufügen, aber ich bin besorgt über die Größe der Daten zu erhöhen. Ich vermute, dass die hinterlegten Daten Zunahme der Größe, und dann werde ich habe einen Kompressionsalgorithmus hinzufügen zu kompensieren.

War es hilfreich?

Lösung

AES erweitern keine Daten. Darüber hinaus wird die Ausgabe im Allgemeinen nicht komprimierbar sein; wenn Sie beabsichtigen, Ihre Daten zu komprimieren, vor, bevor sie verschlüsselt werden.

Beachten Sie jedoch, dass AES-Verschlüsselung in der Regel mit padding kombiniert wird, die < em> wird erhöhen Sie die Größe der Daten (wenn auch nur um wenige Bytes).

Andere Tipps

AES erweitert die Daten nicht, mit Ausnahme von ein paar Bytes der Polsterung am Ende des letzten Blockes.

Die resultierenden Daten sind nicht komprimierbar ist, auf jeden Fall, weil sie im Grunde zufällig sind - kein Wörterbuch-basierten Algorithmus in der Lage ist, sie effektiv zu komprimieren. Eine bewährte Methode ist es, die Daten zuerst zu komprimieren, dann verschlüsseln sie.

Es ist üblich, Daten zu komprimieren, bevor die Verschlüsselung. Komprimieren es danach nicht funktioniert, weil AES verschlüsselten Daten zufällig erscheint (wie für jede gute Chiffre, abgesehen von irgendwelchen Header und so weiter).

Allerdings Kompression können Seitenkanalangriffe in manchen Kontexten einführen, so müssen Sie Ihren eigenen Gebrauch analysieren. Solche Angriffe wurden kürzlich gegen verschlüsselte VOIP berichtet: der Kern ist, dass verschiedene Silben charakteristischen Variationen in Bitrate, wenn es mit VBR komprimiert, weil einige Töne besser als andere komprimieren. Einige (oder alle) Silben können daher mit ausreichender Analyse gestellt werden, da die Daten mit einer Geschwindigkeit übertragen wird, es erzeugt wird. Die Fix entweder zu bedienen ist (weniger effizient) CBR Kompression oder einen Puffer zu verwenden, mit einer konstanten Geschwindigkeit unabhängig von der Datenrate zu übertragen, aus der Drehgeber (zunehmenden Latenz) kommen.

AES schaltet 16-Byte-Eingangsblocks in 16-Byte-Ausgangsblocks. Die einzige Erweiterung ist, die Daten aufrunden auf eine ganze Anzahl von Blöcken.

Ich bin ziemlich sicher, dass AES-Verschlüsselung nichts zu den Daten hinzufügt verschlüsselt wird, da dies Informationen über die Zustandsvariablen weggeben, und das ist eine schlechte Sache, wenn es um die Kryptographie kommt.

Wenn Sie die Komprimierung und Verschlüsselung mischen möchten, tun sie in dieser Reihenfolge. Der Grund ist, verschlüsselte Daten (im Idealfall) sehen aus wie völlig zufällige Daten und Komprimierungsalgorithmen werden am Ende machen die Daten größer, aufgrund seiner Unfähigkeit, tatsächlich irgendetwas davon OHP und der Buchhaltung zu komprimieren, die mit jedem komprimierten Dateiformat kommt.

Wenn Kompression ist notwendig, tun es, bevor Sie verschlüsseln.

Nein. Die einzige Änderung, wird eine kleine Menge Padding sein, die Daten an die Größe eines Blocks

auszurichten

Wenn Sie jedoch den Inhalt zur Kenntnis komprimieren dass Sie dies tun sollte vor Verschlüsselungs-. Verschlüsselte Daten sollten in der Regel nicht zu unterscheiden sein von zufälligen Daten, was bedeutet, dass es nicht komprimieren.

@freespace und andere: Eines der Dinge, die ich von meiner Kryptographie Klassen erinnern ist, dass Sie nicht auf Ihre Daten vor der Verschlüsselung komprimieren sollte, weil einige wiederholbare Stücke von komprimierten Strom (wie Abschnittsüberschriften zum Beispiel) kann es Ihr machen leichter zu knacken Verschlüsselung.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top