【问题标题】:Securely generate RSA keys for a user为用户安全地生成 RSA 密钥
【发布时间】:2012-12-19 02:52:29
【问题描述】:

我有一个用户系统来管理用户属性、散列加盐密码、一个 RSA 公钥和一个加密的 RSA 私钥(通过实际加盐 + 密码)。

RSA 密钥是在用户注册期间生成的,或者如果密码被重置(由用户 admin 或忘记密码),因为没有密码,私钥基本上会丢失。

目前,RSA 密钥是在客户端计算机上生成的,使用密码加密(安全地存储在浏览器内存中),然后发送回服务器以存储数据。

但是现在,我想为 RSA 密钥生成创建另外两个选项。这两个都将在消息队列系统上工作,该系统将在本地系统(通过 cron)上处理,或者系统将消息发送到另一个服务器(通过对称加密通道),该服务器创建密钥并将其发送回存储系统。

虽然这些方法是进行 RSA 生成困难的有效安全方法,但我目前的难题是如何保护该用户的计算私钥。拥有由密码保护的私钥意味着需要密码,并且任何其他机制都需要密钥可供代码使用,或者临时存储可供双方(用户和系统)使用的加密密钥.

我最初认为使用系统 RSA 密钥对存储用户密码会很好,当生成新密钥时,会获取用户密码(并从存储中删除)并用于加密新的私钥并将其与用户一起存储。但这要求系统可以访问其私钥,这将使黑客可以访问用户密码。

如果将命令发送到单独的安全服务器(甚至是物理服务器),上述方法可能会起作用,因为如果这是唯一存储内部私钥的服务器,那么只有在该服务器被黑客入侵时才能访问它。

是否有人对我如何处理和保护即使黑客可以访问完整源和数据库也无法破解的用户私钥有任何建议?

【问题讨论】:

    标签: php encryption key rsa


    【解决方案1】:

    我不会评论您系统的任何安全方面。但是,在阅读您的私钥存储想法时,我想起了我不久前在 server-side private key storage 上读过的一篇论文,作者是 Charlie Kaufmann 和 Radia Perlman。摘要注释“......我们提出了即使 Alice 的密码是可猜到的也安全的协议......”。

    请注意,这篇论文写于 1999 年,这意味着您应该四处寻找有关该概念的最新分析和改进。

    【讨论】:

    • 干杯,现在阅读。不评论安全?是好还是坏?上周我一直在考虑这个过程,据我所知,它可以保证数据的安全,即使黑客可以访问代码和数据库。其中最薄弱的部分是密钥的初始创建
    • 我从不评论安全问题。在我看来,它不能以关于 SO 的简短问答形式负责任地完成。不过我并不羡慕其他的cmet,这里有很多聪明的人,有很多见解。
    • 这是一个非常好的和务实的政策,但在您看来,系统的安全性似乎还可以,超过顶部,还是严重不足?
    • @cgoddard:从不意味着永远。对不起(:
    • 不,很公平。无论如何感谢您的帮助:)
    猜你喜欢
    • 2022-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-07
    • 2020-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多