加密密钥生成和应用程序性能

时间:2014-02-09 11:35:18

标签: encryption aes

加密专家的问题。想象一下,我们有一个概念 Notes.app

  • 有注释(标题|内容)存储为AES-256加密字符串
  • 应用程序必须在其主窗口的列表中显示所有注释(标题)的列表
  • 每个标题|内容都使用密钥加密,密码和盐生成
  • 让我们假设密钥生成算法在移动设备上花费大约80毫秒来生成密钥

在以下条件下,解密10个音符标题几乎需要 1秒。但如果有很多笔记怎么办?

我对这个问题的2便士:使用不同的初始化向量加密所有音符,但也使用相同的盐加密。这将允许我只生成一次解密密钥并快速解密许多笔记。

问题是:这样做我们会得到许多不同的笔记,用相同的密钥加密。这会以某种方式损害AES加密的安全性吗?是否有可能知道有一堆文件不仅具有相同的密码,而且相同的盐以某种方式可以破解加密?

感谢您的想法

1 个答案:

答案 0 :(得分:1)

AES-256 不使用盐。但我猜你在PBE算法中使用salt和密码来生成密钥。通常这种PBE算法的构造计算成本很高 - 因此您在移动设备上看到的时间为80毫秒。

在加密不同的消息时,您可以使用不同的初始化向量(IV),而不是使用不同的盐来创建不同的密钥。不同的 IV 可确保以相同块开头的邮件加密到不同的邮件。