当我拥有 SSL 时,最好的自定义压缩方法是什么?

信息安全 加密 tls 密码学 犯罪 压缩
2021-09-10 01:19:24

假设我有一个使用 SSL 进行加密的应用程序,并且您无法控制正在协商的密码套件,并假设我在加密发生之前对数据进行了一些自定义压缩。最好的压缩模式是什么?如果我继续使用 DEFLATE/GZIP 是偏执狂,我可能会将自己暴露在攻击中,攻击者可以使用选择的纯文本攻击暴露加密数据。(类似于 CRIME 攻击)

1个回答

加密隐藏数据但泄露数据大小这是所有加密系统的共同属性:加密数据的大小(或多或少)与明文数据相同。

压缩会改变数据大小,但它是通过在数据中找到“冗余”(广义上的)来实现的。所以压缩成功率取决于数据内容因此,压缩使数据大小取决于数据内容

将两者放在一起,这将导致您得出一个不可避免但严峻的结论:压缩会泄漏有关数据内容的信息,即使通过加密也是如此。唯一的一般性结论是您根本不应该压缩

CRIME 攻击只是使用该概念,在特定于 Web 的设置中,攻击者可以选择部分压缩数据,并尝试获取一些其他机密数据,这些数据也是压缩流的一部分。这是一种选择明文攻击,它使攻击非常有效。但是,总的来说,泄漏就是泄漏:即使在纯粹的被动攻击场景中,压缩也会使您的连接“不那么安全”。

该原理并不特定于Deflate将其更改为自定义算法不会拯救您。Deflate 在这方面不是“特别弱”或“特别强”。


以上所有内容适用于所有无损压缩算法。它不适用于实现固定数据带宽的有损压缩算法。例如,如果您以 128 kbits/s(无可变速率)将音乐压缩成 MP3,则生成的数据大小将不取决于音乐内容,而仅取决于原始音乐持续时间。但是,当然,有损压缩算法只适用于可以容忍丢失的数据。例如声音,而不是 XML。

(关于“有损”的事情是,由于鸽巢原理,您无法保证固定的压缩率而不会丢失一些潜在的数据,除非您的“压缩”实际上是缺乏压缩,输入数据完全不变。)