假设您只想加密数字。例如,假设数字可以是任何double。 C#和Java中的double是8字节。 br />
破解容易吗?如果不是这样,那么从较大的输入中破解出的密文至少比密文更容易:

评论

所谓“破解”,是指向后计算密钥,还是指根据给定的密文恢复有关消息的信息?

我的意思是要么重新计算密钥,要么能够以其他方式恢复输入。

#1 楼

假设加密正确执行:


使用现代密码(AES)
适当的操作模式
实现中没有错误

然后,明文的性质对密文的安全性没有影响。


如果不是这样,那么从较大的输入中破解密文至少比密文明显容易得多:比一小部分更容易“破解”。

原因是较大的密码为对手提供了更多已知的明文-密文对。确实存在针对现代密码的攻击,通常需要大量的明文-密文对。密码分析所需的明文-密文对的数量通常令人讨厌且过高。

评论


$ \ begingroup $
另外,如果密文很大,那么知道何时获得正确的密文会更容易。 (例如,如果您知道它是ascii文本,则只需检查每个字节的高位即可为您提供一个重要线索)。
$ \ endgroup $
–user253751
18年9月12日在0:34

$ \ begingroup $
@immibis:这就是为什么当不能假定纯文本输入是随机的时,良好的密码设置应使用压缩的原因。
$ \ endgroup $
– MSalters
18/09/12在10:51

$ \ begingroup $
@MSalters压缩实际上可能导致严重的利用,因为压缩的长度可能会以微妙且出乎意料的方式开始泄漏有关纯文本内容的信息(例如,请参见en.wikipedia.org/wiki/CRIME,以了解真实示例)压缩错误)
$ \ endgroup $
–托马斯
18/09/12在11:32



$ \ begingroup $
@MSalters压缩可能非常危险,并且基本上会使CPA安全性失效。取两个纯文本M_1和M_2,其中M_1非常容易压缩(例如2MB的0),而M_2几乎不可压缩(例如2MB的随机性)。因此,C_1很小,而C_2很大。
$ \ endgroup $
–MechMK1
18/09/12在15:06

$ \ begingroup $
@DavidStockinger:这不是一个论点;这是完全可逆的。取两个明文M1和M2,它们在压缩前的长度差异很大,但在压缩后的长度相同。但是我的论点仍然成立,如果在形成攻击矢量的情况下加密会泄漏消息长度:由于可能对实际输入进行压缩,因此这意味着对于实际输入,压缩长度的变化小于未压缩长度的变化。
$ \ endgroup $
– MSalters
18/09/12在15:20

#2 楼

由于您使用的是低可能性空间,因此绝对关键的是使用Salting和/或Initialization Vectors(IV)-否则,您所做的工作根本不安全。

这就是我的意思,基于各种攻击媒介:

人员可以访问您的应用程序代码。您不知所措-我假设您的应用程序中已有一个硬编码的加密密钥。如果是这种情况,无论如何获取应用程序代码都是一件麻烦事。在这种情况下,如果您不使用Salt或IV,则所有的'123'都将加密为相同的值。攻击者不会费心尝试“破解”您的加密密钥-他们将尝试根据加密值的计数/分布从数据中收集数据。根据数据表示的内容,仅根据其加密分布就可以很容易地对每个加密值表示的含义进行有根据的猜测。

人员可以访问您的后端数据,并且可以访问使用您的程序。现在,如果您不使用Salt或IV,您肯定会不舒服。因为在这种情况下,攻击者可以安排情况让您的应用将特定值写入数据库-然后只需查找输出值。没猜到-他们只是破解了所有没有密钥的匹配条目。根据需要重复多次以获取所需的值。

TL; DR-为此,需要使用Salt / IV。一旦这样做,就很好了,并且加密少量位也没关系。

评论


$ \ begingroup $
术语“盐”不能与“ IV”互换。盐在这种情况下不相关。我建议您阅读Q / A“您能帮助我理解什么是加密的盐吗?”
$ \ endgroup $
–艾拉·罗斯(Ella Rose)
18年9月11日在20:03

$ \ begingroup $
我知道食盐与静脉注射不同。我真的,真的。但是在这种情况下,两者都将达到“相同的初始值和相同的加密密钥未加密为相同的输出值”的条件。
$ \ endgroup $
–凯文
18年9月11日在20:09

$ \ begingroup $
次要错字:应“加密为相同的值”。
$ \ endgroup $
– Toby Speight
18年9月12日在7:45

$ \ begingroup $
这似乎是假定许多不良做法,并且与问题没有直接关系。无论是长消息还是短消息,始终使用IV当然是很好的建议。
$ \ endgroup $
– jpa
18年9月12日在9:37

#3 楼

“裂纹”是什么意思?这双应该是已知的明文吗?如果不是,您如何分辨建议的解密时间是正确的?可能有几对形式(双精度,双精度)产生相同的密文。如果明文的长度小于密码的唯一性距离,则即使在原则上也可能无法破解。

#4 楼

对于给定的任何输入大小,通过AES算法生成的密文的大小将相同。由于AES是分组密码技术,因此每个密文的大小将相同,而与输入消息的大小无关。因此,对手无法区分较大消息的密文和较小消息的密文。此外,您提到了CBC模式,它是不确定性的,即即使一次又一次地对相同的明文进行加密,每次也会给出不同的密文。因此,加密的消息无法轻易被破解。

#5 楼

这可能是一个技术性问题,但可以肯定地假设没有密钥或密钥也很小,那么可以。如果您要进行蛮力攻击,那么如果原始输入较小,肯定会更快地找到原始输入。

评论


$ \ begingroup $
您是否假设攻击者拥有密钥但没有密文?尚不清楚如果攻击者已经掌握了密钥,那么“暴力攻击”是什么。
$ \ endgroup $
–艾拉·罗斯(Ella Rose)
18年9月12日在22:20

$ \ begingroup $
@EllaRose对不起,是的,我很着急。编辑!
$ \ endgroup $
– Ben Leggiero
18年9月13日在0:40

#6 楼

否,如果您将AES与不同的KEY / IV一起使用。