|
|
1
5
我不久前开始回答,但遭遇了一次崩溃,失去了我输入的内容。我所说的大致是: 这取决于。。。 关键的一点是,如果你曾经重用过一个IV,那么你将面临比每次使用不同的IV更容易执行的加密攻击。因此,对于需要再次开始加密的每个序列,都需要一个新的、唯一的IV。 cryptographic modes -维基百科很好地说明了为什么不应该使用ECB。CTR模式可能非常有益。 如果要单独加密每条记录,则需要为该记录创建并记录一个IV。如果要单独加密每个字段,则需要为每个字段创建并记录一个IV。存储IVs可能会带来很大的开销,尤其是在进行字段级加密时。
如果您可以在页面级别而不是行级别(假设行小于一页)进行加密,那么您可以从每页使用一个IV中获益。
克里斯评论道: 我想补充一点:
|
|
|
2
5
再一次 appendix C of NIST pub 800-38 可能会有帮助。例如,根据这个 只需使用加密密钥加密唯一的nonce,即可为CBC模式生成IV。更简单的是,如果你想使用OFB,那么IV只需要是唯一的。
让我们先回顾一下为什么静脉注射是必要的。IVs使密文随机化。如果相同的消息使用相同的密钥加密两次(但不同的IVs),则密文是不同的。获得两个(长度相等)密文的攻击者应无法确定这两个密文是加密相同的明文还是加密两个不同的明文。此属性通常称为 ciphertext indistinguishablility . 显然,这是加密数据库的一个重要属性,其中许多短消息都是加密的。 接下来,让我们看看如果IVs是可预测的,会出现什么问题。让我们举个例子 这是不安全的。为简单起见,假设用户Alice有一条记录,其中 对于字段F,只有两个可能的值m1或m2。设Ra为用于加密Alice记录的随机值。那么字段F的密文将是
随机Ra也存储在记录中,因为否则就不可能解密。想要了解Alice记录值的攻击者Eve可以按如下方式进行操作:首先,她找到一个现有记录,可以在其中添加她选择的值。 让Re为该记录使用的随机值,让F'为Eve可以提交其自身值v的字段。由于记录已经存在,因此可以预测字段F'的IV,即 Eve可以通过选择她的值v作为 让数据库加密此值,即
然后将结果与Alice的记录进行比较。如果两个结果匹配,那么她知道m1是存储在Alice记录中的值,否则它将是m2。 this paper ).甚至有一种变体对TLS有效。 攻击是可以预防的。可能是在使用前对随机数进行加密,然后将其放入记录中,通过加密结果得出IV。但是,也许最简单的方法就是NIST已经提出的建议。为加密的每个字段生成唯一的nonce(这可能只是一个计数器)使用加密密钥加密nonce,并将结果用作IV。
|
|
|
3
2
IV唯一性的要求取决于使用密码的“模式”。 对于CBC,对于给定的消息,IV应该是不可预测的。 对于CTR,IV必须是唯一的,周期。 当然,对于ECB,没有IV。如果一个字段是短的、随机的、适合单个块的标识符,您可以安全地使用ECB。 我认为一个好的方法是在字段中存储一个结构,该结构收集算法标识符、该算法的必要参数(如IV)和密文。这可以存储为一个小的二进制数据包,或者编码成一些文本,比如Base-85或Base-64。 |
|
|
Michael · 某些Windows客户端上的命名管道安全问题 1 年前 |
|
|
adamency · 是否可以从Go二进制文件的源代码中检索字符串? 2 年前 |
|
|
AlboSimo · PayPal Api密钥安全 2 年前 |