繁体   English   中英

是否可以从 Rust-openssl 中的密码生成 RSA 密钥对?

[英]Is it possible to generate a RSA key-pair from a password in Rust-openssl?

客户端将其私钥存储在本地并用于对发送到服务器的消息进行签名,服务器将用户的公钥存储在数据库中以验证来自客户端的消息。

这是我的问题,如果客户端由于某些意外(例如硬盘被损坏)丢失了私钥,它将永远无法连接到服务器(除非致电服务器管理员重置其密钥)。

所以我在想,如果有一种算法可以从密码(可以保存在客户端的人脑中)生成确定性的 RSA 密钥对,那么上面提到的问题将被消除。

可以使用 Rust-openssl 实现这样的算法吗?

这样做基本上归结为使用密码作为输入来播种伪随机数生成器。 相同的种子将产生相同的伪随机数。 可以在此处找到确定性地生成素数(将用于最终生成 RSA 密钥)的示例。 如果这是一个单一用途的独立可执行文件,那么您可以执行RSA_generate_key_ex ,否则编写一个 RSA 密钥生成器(使用 BN 函数)并导入密钥。

查看 dOpenSSL: https : //github.com/bernardoaraujor/dopenssl.rs

它由一些 OpenSSL 功能的确定性实现组成,即:

  • 确定性大数生成
  • 确定性伪随机数生成
  • 确定性 RSA 密钥对生成

我开始这个存储库作为练习。 我也在维护https://github.com/bernardoaraujor/dopenssl (fork),它是用 C 编写的。

我在 dopenssl.rs 中的目标是使用bindgen自动生成 Rust Wrappers。 dOpenSSL 功能稳定,但 Rust Wrappers 仍在开发中。

欢迎投稿。

暂无
暂无

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

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