gpt4 book ai didi

security - 初始化向量唯一性

转载 作者:行者123 更新时间:2023-12-05 01:34:28 26 4
gpt4 key购买 nike

最佳实践是使用独特的 ivs,但什么是独特的?每条记录都是唯一的吗?还是绝对独一无二(每个领域也是独一无二的)?

如果是每个字段,这听起来很复杂,如果每条记录中有 60 个字段,您如何管理这么多 iv 的存储。

最佳答案

我刚才开始回答,但遇到了崩溃,丢失了我输入的内容。我所说的是:

这取决于...

关键是,如果您重复使用 IV,您就会面临加密攻击,这种攻击比每次使用不同 IV 时更容易执行。因此,对于需要重新开始加密的每个序列,您都需要一个新的、唯一的 IV。

您还需要查找cryptographic modes - 维基百科很好地说明了为什么不应该使用 ECB。 CTR 模式可能非常有益。

如果您要分别加密每条记录,那么您需要为该记录创建并记录一个 IV。如果您单独加密每个字段,则需要为每个字段创建并记录一个 IV。存储 IV 可能会成为一项巨大的开销,尤其是当您进行字段级加密时。

但是,您必须决定是否需要字段级加密的灵 active 。您可能 - 这不太可能,但使用单个 key 但对不同字段使用不同的 IV 可能会有优势。 OTOH,我强烈怀疑这是矫枉过正,更不用说强调你的 IV 生成器(加密随机数生成器)了。

如果您有能力在页面级别而不是行级别进行加密(假设行小于页面),那么您可能会受益于每页使用一个 IV。


埃里克森写道:

You could do something clever like generating one random value in each record, and using a hash of the field name and the random value to produce an IV for that field.

However, I think a better approach is to store a structure in the field that collects an algorithm identifier, necessary parameters (like IV) for that parameter, and the ciphertext. This could be stored as a little binary packet, or encoded into some text like Base-85 or Base-64.

Chris 评论道:

I am indeed using CBC mode. I thought about an algorithm to do a 1:many so I can store only 1 IV per record. But now I'm considering your idea of storing the IV with the ciphertext. Can you give me more some more advice: I'm using PHP + MySQL, and many of the fields are either varchar or text. I don't have much experience with binary in the database, I thought binary was database-unfriendly so I always base64_encoded when storing binary (like the IV for example).

我要补充的是:

  • IBM DB2 LUW 和 Informix Dynamic Server 的 ENCRYPT_AES() 和相关函数的字符输出都使用 Base-64 编码方案,存储加密方案、IV 和其他信息以及加​​密数据。

  • 我认为您应该仔细研究 CTR 模式 - 正如我之前所说。例如,您可以从 48 位随机数据​​加上一个 16 位计数器创建 64 位 IV。您可以使用计数器部分作为记录的索引(可能在 16 字节 block 中 - 一个用于 AES 的加密 block )。

  • 我不熟悉 MySQL 如何在磁盘级别存储数据。但是,完全有可能加密整个记录,包括 NULL(缺少)值的表示。

  • 如果您对一条记录使用单个 IV,但对每个字段使用单独的 CBC 加密,那么每个字段都必须填充到 16 个字节,您肯定是在沉迷于“IV 重用”。我认为这在密码学上是不可靠的。您最好对整个记录使用单个 IV,对记录和 CBC 模式使用一个填充单元,或者不使用填充和 CTR 模式(因为 CTR 不需要填充 - 它的优点之一;另一个是您只使用密码的加密模式对数据进行加密和解密)。

关于security - 初始化向量唯一性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1634875/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com