it-swarm-eu.dev

Šifrování a komprese dat

Pokud chceme během přenosu jak šifrování, tak kompresi, bude to nejvýhodnější objednávka.

  1. Šifrovat a poté komprimovat
  2. Komprimujte a poté zašifrujte
48
Ali Ahmad

Před šifrováním byste měli komprimovat.

Šifrování změní vaše data na vysoce entropická data, obvykle nerozeznatelná od náhodného proudu. Komprese závisí na vzorcích, aby se dosáhlo jakéhokoli zmenšení velikosti. Protože šifrování ničí takové vzory, kompresní algoritmus by vám nemohl poskytnout velké (pokud vůbec nějaké) zmenšení velikosti, pokud jej použijete na šifrovaná data.

Komprese před šifrováním také mírně zvyšuje vaši praktickou odolnost proti diferenciální kryptoanalýze (a některým dalším útokům), pokud útočník dokáže ovládat pouze nekomprimovaný prostý text, protože výsledný výstup může být obtížné odvodit.

EDIT: Upravuji tento rok později, protože tato rada je v interaktivním případě ve skutečnosti špatná. Ve většině případů byste neměli komprimovat data, než je zašifrujete. Metodu útoku s bočním kanálem známou jako „komprese Oracle“ lze použít k dedukci dat prostého textu v případech, kdy útočník může interaktivně způsobit umístění řetězců do jinak neznámého datového toku prostého textu. Příklady útoků na SSL/TLS, jako jsou CRIME a BREACH.

65
Polynomial

Pokud komprimujete po šifrování a komprimace je dobrá (tj. Opravdu zkracuje délku o nezanedbatelnou částku), můžete šifrování skrýt, je to hrozně slabé. Šifrovaný text by měl být nerozeznatelný od náhodnosti; i špatně zašifrovaná data nelze obvykle komprimovat.

Proto komprimujte před šifrováním. Proto protokoly, které se zabývají šifrováním, obvykle zahrnují určitou podporu komprese, např. OpenPGP (oddíl 5.6) a SSL/TLS . V některých scénářích může komprese unikat informace o důvěrných datech (protože komprese snižuje délku v závislosti na datech a šifrovaná délka více či méně odpovídá délce prostého textu); to je myšlenka nového CRIME útok na SSL/TLS .


Okrajová výjimka: pokud zašifrujete zprávu pomocí OpenPGP a pak výsledek „ACSII brnění“, tj. Kóduje ji v Base64, pak toto kódování zvětšuje data o 34%: 3 bajty se stanou 4 znaky (plus lichý nový řádek). Komprese s DEFLATE bude účinná při zrušení tohoto rozšíření (díky Huffmanovým kódům). To je případ užitečnosti komprese po šifrování - ale ve skutečnosti je to spíše komprimace nad Base64 než komprese nad šifrováním.

25
Thomas Pornin

Doporučil bych nejprve komprimovat data a pak je zašifrovat.

  1. Kompresní algoritmus by mohl těžit ze znalosti datové struktury a tato struktura by byla šifrováním maskována. Příkladem může být mp3, které dokáže komprimovat pouze zvuková data.

  2. budete muset zašifrovat méně dat. Při prvním zašifrování a komprimaci byste nezrychlili.

8
Raphael Ahrens

Ani: Komprimovat během šifrování pomocí šifrovacího nástroje určeného k bezpečnému provádění obou , například GPG/OpenPGP .

To je v podstatě odpověď Thomasa Pornina přímější, takže čtenáři ve spěchu nepochopili jemnosti toho, co Thomas Pornin vysvětluje ve své odpovědi. Otázka vyjadřuje falešnou dichotomii. Pokud OP (a čtenář) přemýšlí o tom, že prvním a druhým krokem je provedení dvou různých nástrojů, jako jsou gzip a gpg:

  1. Pokud zašifrujete nejprve, komprese nebude moc, kromě vytlačení Base64 34% inflace "ASCII brnění", které @ ThomasPornin zmínilo.

  2. Pokud komprimujete nejprve, šifrování je méně bezpečné a zranitelné vůči útokům typu ty , které @ThomasPornin zmínil.

2
hobs

Komprese po šifrování nemusí fungovat jako skutečná funkce komprese dat, protože se tím příliš nezmění velikost. Šifrování po kompresi však zmenší velikost, ale neprovádí správné fungování šifrování, protože k útokům typu CRIME může dojít.

Jako příklad ve webových požadavcích obsahují záhlaví tajné webové cookies, takže komprese záhlaví před šifrováním odhalí tyto tajné informace na vnější straně.

Proto je moudré provádět selektivní kompresi, která komprimuje pouze tajná data na stránce a pak šifrování bude mít smysl a zabrání extrakci tajných informací.

1
user466720