- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
最佳实践是使用独特的 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/
我在理解应该如何在 JWT 中使用 jti 声明时遇到一些问题。据我在其他 SO 问题和在线文档中看到的,想法是它们应该是独一无二的,但在什么范围内是独一无二的?每个站点/应用程序一个 jti?每个
我想知道cookie名称的最大值是多少?每个域和/或路径的 cookie 名称是否唯一? 最佳答案 所有这些信息均在RFC 2965 - HTTP State Management Mechanism
这基本上是问题 here 的扩展. 我正在处理一个旧的 MFC 应用程序,其中的 resource.h 文件似乎已被手动编辑并且变得困惑。我看到那里有冲突的 ID。 我只是想确认我们是否可以拥有两个具
1. codeigniter的上传库的encrypt_name选项检查是唯一的? 我知道overwrite选项很重要。如 overwrite是 TRUE ,它会覆盖,如果是 FALSE ,它将通过在名
我可以确定.Method.MethodHandle.GetFunctionPointer()每个匿名函数都是唯一的吗? 想做 public static T Get(Func getDataCallb
在时态表 (Oracle DBMS) 中强制键唯一性的最佳方法是什么。时态表是一个时间跨度记录所有历史状态的表。 例如,我们有一个这样的 Key --> Value 关联 ... create tab
对于某些测试,我需要生成一个可能很长的非随机整数序列,该序列具有预定义的唯一性。我将唯一性定义为一个 float ,等于“序列中唯一 数的数量”除以“序列总长度”。这个数字应该在(0, 1]半开区间内
我敢肯定这是一个愚蠢的问题,但谷歌搜索让我一无所获。 是否每个设备供应商都构建自己的 Android?更重要的是,每个设备供应商是否使用其(供应商的)自己的系统签名 key 对其构建进行签名,这样我们
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: Is a GUID unique 100% of the time? 看完Guid上的所有帖子后,我仍然不清
我有用户放置的链接和他们在数据库中将被保存 对于 facebook,url 可能是这样的 www.facebook.com http://facebook.com https://facebook.c
给定以下 key : int key = Guid.NewGuid().GetHashCode(); 这个key是否像Guid的唯一性一样唯一? 最佳答案 pigeonhole principle说不
在 C++11 中,我正在使用这个 typeid(T).name() 用于我自己的哈希计算。我不需要程序运行或编译之间的结果相同。我只需要它对于类型是唯一的。我知道,它可以为不同的类型返回相同的名称,
我有一个关于唯一性验证的问题。 来自:http://guides.rubyonrails.org/active_record_validations_callbacks.html#uniqueness
线程上下文的类加载器有多独特。每次启动线程时都会重置吗? 我们能否始终确保 2 个并行线程永远不会具有相同的上下文类加载器? 我看到像 Axis 这样的一些框架依赖于此来获取和设置运行时设置变量。 最
在 UITableViewCell 中,单元格中有多个 uitextfield 那么如何在 uitextfield 委托(delegate)方法中识别哪个文本字段生成操作而不是标记属性? 最佳答案 你
在 Rails 3.0.12 (Ruby 1.8.7) 中使用 UTF 字符时,我遇到了 Rails 唯一性验证器的问题。 这是我的小测试: 正确: name = "dave" count = Use
我正在编写一个用户系统,用户将在其中使用 Twitter 的 API 登录,然后我将信息连同我让用户输入的一些额外信息一起存储在数据库中。我希望用户能够登录后返回,而不必再次登录。我决定获取有关用户的
OPC UA规范(第3部分:地址空间模型)说 5.2.2 NodeId ... A Server shall persist the NodeId of a Node, that is, it sha
是否可以使用 XML 1.1 模式来验证文档中没有两个元素共享一个 id。例如,附加的 XML 文档应该失败,因为 id 的 0、1 和 3 不是唯一的。
在 SQL Server 中,我创建了一个带有 ID 列的表,我将其设为 IDENTITY COLUMN, EmployeeID int NOT NULL IDENTITY(100,10) PRIMA
我是一名优秀的程序员,十分优秀!