2016-08-21 117 views
0

我想将公钥和私钥安全地存储在数据库中。将公钥/私钥安全地存储在数据库中

我的问题是如何安全地将私钥存储在数据库中。 (公钥不需要那么安全)。

我目前有两种方法。

  • 一个密码(即用户的主密码)添加到私钥和存储在数据库中的字符串
  • 加密使用对称算法的私人密钥,并将其存储在数据库中的
  • 字符串

这些方法是否足够?

哪个更好或者他们是同一个东西?

有没有更好的方法?

更新 你们中的一些人可能会困惑我为什么要这样做。我的用例是一个基于团队的密码管理系统。公钥用于加密密码(团队中的每个用户都使用一个密码),使用通过密码的私钥用于解密密码。

+1

第一个只是对称加密工作方式与第二个不同。它们基本上是等价的,但第二个可以自己选择对称加密算法。两者都有优点和缺点。既然你没有提出要求,这将基于意见。 –

+0

我唯一的要求是私钥是安全存储的(即如果黑客掌握了密钥,他们就无法解密)。根据你的说法,他们基本上是同一件事,但第二种方法给了我更多的控制权。我对吗?有没有更好的方法?你还希望了解什么样的要求? –

+0

是的,但第二种方法也有缺点,因为每个人,甚至是密码学家,都不能正确地实施加密。虽然没有太多的错误空间,但可以使其不安全。正如我所说,这是基于意见的。 –

回答

1

第一个选项可能会更好,因为它更容易搞乱你自己的对称加密实现,而不是正确使用现有的加密实现。私钥上的密码通常意味着某种形式的对称加密。

PS。我不确定你为什么在这里使用私钥/公钥。如果证明谁上传了密钥 - 太棒了。如果是加密本身 - 为什么不直接使用存储的密码的对称加密呢?如果所有有权阅读的人都知道私钥的密码,那么没有太大的区别。您似乎获得的唯一一件事就是能够在不改变每个人都知道的密码的情况下循环使用密钥。

+0

我的猜测是为什么私人/公共密钥在不需要/不适当的情况下经常使用的原因是开发人员不理解对称与非对称加密,而RSA是一个真正知道的热门词, – zaph

+0

私钥和公钥对于我的用例甚至被我研究过的许多团队密码管理系统使用 –

+0

Symetric加密也不够,因为我们想与其他用户共享它。请参阅http://security.stackexchange.com/questions/134465/how-to-securely-store-passwords-for-an-online-team-based-password-manager/134492#134492 –