openssl 是否需要熵用于生成证书和密钥以外的其他目的?
Does openssl need entropy for other purposes than generating the certificate and key?
环境:程序是用 C/C++ 编写的,适用于 ubuntu 16.04 - 不需要跨平台解决方案。
我正在编写一个http网络守护进程,并且chroot中没有/dev/urandom,或者chroot中的任何其他熵系统。
我知道为了生成密钥/证书,openssl 肯定需要熵。但是一旦它们被生成,并且您只使用密钥/证书来加密与服务器的客户端通信 - 服务器守护程序是否仍然需要熵源?
是的。
它需要熵来生成随机数,以及一些非对称签名方案。
有可能在没有熵源的情况下安全地保护客户端通信 - 但我会非常紧张,因为人们错过了协议中需要那一点熵的关键部分。
此外,如果你想要完全的前向保密,你将需要熵来生成临时 [EC]DH 密钥。
您的选择是:
- 咨询专业密码学家,设计一个不需要熵(超出初始密钥)的协议。 确保他们可以构造/指向协议安全的证据。
- 在你的肚子里
/dev/urandom
。 - 正如James K Polk在评论中建议的那样:在用户空间中实现一个熵收集守护进程。 但是,您可能需要咨询专家以确定您是否有足够的熵。
旁白:当您说"加密客户端通信"时,我认为您实际上正在使用某种经过身份验证的加密方案(例如AES + HMAC或AES-GCM)。 如果没有,你可能会遇到比缺乏熵更大的问题。
如果您对通信协议是否需要额外的熵有具体问题,https//crypto.stackexchange.com 充满了愿意讨论如何做到这一点的细节的人。
相关文章:
- SSH通过/sbin/SSH无法读取RSA密钥文件(从控制台运行)
- 允许从 std::map 的密钥窃取资源?
- TMap::Emplace() 在应用现有密钥时会覆盖吗?
- 在没有密钥的情况下读取密文的剩余噪声预算
- 如何修复无效的API密钥,IP或操作权限错误?
- 所有可能的链接生成器与64位密钥
- 如何在unordered_map中更改密钥?
- 获取当前密钥状态?
- curl_easy_perform() 失败:SSL 对等证书或 SSH 远程密钥不正常
- 将密钥发送到非前台的游戏窗口
- 有哪些方法可以对基于 256 位密钥的矩阵进行加扰?
- 如何在精灵表上的两个不同部分之间来回切换,同时用户仍使用 SFML 持有密钥
- 如何将CNG密钥转换为OpenSSL EVP_PKEY(反之亦然)?
- 运行密钥密码解密知道密钥?
- openssl 是否需要熵用于生成证书和密钥以外的其他目的?
- C++键盘挂钩-退出程序,但也防止密钥在其他地方被处理
- 如何防止注册热键阻止其他应用程序的密钥
- 如何在没有Openssl或其他库的情况下加载RSA密钥对
- tbb::concurrent_hash_map-如果密钥条目被其他线程阻止,如何返回
- 在其他计算机上导入RSA密钥的问题