首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用相同的密码对许多私钥进行加密的最佳方法

用相同的密码对许多私钥进行加密的最佳方法
EN

Cryptography用户
提问于 2018-03-01 12:44:11
回答 3查看 1.4K关注 0票数 6

我正在开发处理大量(数百万) RSA私钥的软件。密钥大小是2048。

我必须将它们存储在数据库中,我希望对它们进行加密,以减少恶意访问数据库所带来的危害。当然,使用PKCS #8的密码短语也会出现在脑海中。

我不能对每个密钥都有单独的密码,因为我不能安全地存储它们。我只能把几个密码储存在一个安全的金库里。

但现在我怀疑,用PKCS #8对数百万个私钥应用相同的密码是不安全的。

请您:

  1. 确认或反驳我的假设,即使用相同的密码来用PKCS #8加密数百万个密钥,大大削弱了加密的强度。如果夏娃得到了足够多的加密密钥,她能在使用相同密码的情况下解密这些密钥吗?一种“无数次”的攻击?
  2. 建议一种更好的加密方法,使用相同的密码(或有限数量的密码)。
EN

回答 3

Cryptography用户

回答已采纳

发布于 2018-03-01 13:38:25

确认或反驳我的假设,即使用相同的密码来用PKCS #8加密数百万个密钥,大大削弱了加密的强度。如果夏娃得到了足够多的加密密钥,她就能知道同样的密码被应用了吗?“很多次”攻击?

那得看情况。

如果使用来自PKCS#8 v1.5的方法(而不是>v2.0)使用PKCS#5加密,则使用密钥长度非常短的密码,如DES。这显然是不好的,因为我们可以合理地蛮力-强制键(感兴趣的)。

然而,PKCS#5 (即PKCS#8指定的加密)应该为每个容器生成一个新的随机盐,并使用基于密码的密钥派生和一些合理的迭代参数来达到密钥/ IV对的加密。也就是说,所有私钥都将使用来自不同盐类和相同密码的不同密钥加密。

因此,总的来说,加密并不是因为加密了大量数据,而是因为您使用了弱加密方法(如果使用旧的v1 PKCS#5标准)。

建议一种更好的加密方法,使用相同的密码(或数量有限)。

假设密码是强的,并且没有泄漏,PKCS#5 v2.X应该确实做到了这一点。您可能会考虑添加额外的间接,即使用密码派生一个主机密(例如256位),然后输入到PKCS#5调用,这样您就可以很容易地更改密码时,它是泄漏或人们去,但他们没有采取派生参数/密钥。

票数 6
EN

Cryptography用户

发布于 2018-03-01 17:48:36

从密码学的角度来看,你会想到一个HSM。

在这里使用基于HSM的解决方案的主要原因是您获得了防范攻击的保证。毕竟,HSM是为安全性而设计的,并且显式地构建使其无法访问HSM中存储的密钥数据。

使用HSM,您可以:

  • 将键存储在HSM本身,或
  • 在HSM上创建一个加密密钥,并使用该密钥(存储在HSM中)对存储在数据库中的密钥进行加密。

这似乎提供了许多可用和安全的方法来处理您描述的场景。

票数 4
EN

Cryptography用户

发布于 2018-03-01 14:48:39

我至少会使用不同的阶段,例如使用一个强的PBKDF (PBKDF2、bcrypt、scrypt、Argon2)来加密一个单独的私钥,然后使用一个带有认证密码的混合密码系统来加密每个私钥。这具有效率优势,并且允许您在不需要密码访问的情况下加密私钥。如果系统需要脱机,也可以将加密的私钥移出系统。拥有一个PIN保护智能卡与私人加密密钥将有很大的意义。

然而,要真正保护这样的系统,您不应该仅仅依靠加密技术;这需要一个具有指定访问条件和系统边界的安全系统。它超出了这个问题和本站点设计这样一个系统的范围;它将取决于您的特定用例、线程模型和域/系统参数。在以下问题的评论中,我提出了一些建议,以避免出现这种情况。

票数 3
EN
页面原文内容由Cryptography提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://crypto.stackexchange.com/questions/56064

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档