繁体   English   中英

安全地为用户生成RSA密钥

[英]Securely generate RSA keys for a user

我有一个用户系统,该系统管理用户属性,盐腌哈希密码,RSA公钥和RSA私钥(通过实际的salt +密码加密)进行加密。

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

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

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

尽管这些方法是执行RSA生成过程中比较困难的有效安全方法,但是我目前的难题是如何为该用户保护计算出的私钥。 通过密码保护私钥意味着需要密码,并且任何其他机制都需要使密钥对代码可用,或者临时存储对双方(用户和系统)都可用的加密密钥。 。

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

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

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

我不会在系统的任何安全性方面发表评论。 但是,在阅读您的私钥存储思想时,让我想起了我前一段时间读过的一篇由Charlie Kaufmann和Radia Perlman撰写的有关服务器端私钥存储的论文。 摘要指出:“ ...我们提出了即使Alice的密码是可猜中的安全协议...”。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM