【问题标题】:Does openssl need entropy for other purposes than generating the certificate and key?除了生成证书和密钥之外,openssl 是否需要熵?
【发布时间】:2018-03-20 08:37:07
【问题描述】:

环境:ubuntu 16.04 用 c/c++ 编写程序 - 无需跨平台解决方案。

我正在编写一个 http 网络守护程序,并且我在 chroot 中没有 /dev/urandom,或者在 chroot 中没有任何其他熵系统。

我知道,为了生成密钥/证书,openssl 肯定需要熵。但是一旦生成它们,并且您仅使用密钥/证书来加密客户端与服务器的通信 - 服务器守护程序是否仍然需要熵源?

【问题讨论】:

  • 我无法权威地回答,但从 OpenSSL 1.1.1 开始,this person 似乎在没有/dev/urandom 的情况下在 chroot 中遇到了问题。

标签: c++ encryption openssl


【解决方案1】:

是的。

它需要熵来生成随机数,以及一些非对称签名方案。

在没有熵源的情况下安全地保护客户端通信可能是可能的 - 但我会非常紧张,因为有人错过了协议中需要那一点熵的关键部分。

此外,如果您想要完美的前向保密,您将需要熵来生成临时 [EC]DH 密钥。

您的选择是:

  • 请咨询专家密码学家以设计不需要熵(除了初始密钥)的协议。确保他们可以构建/指向协议安全的证明。
  • 在您的 chroot 中获取 /dev/urandom
  • 正如James K Polk 在评论中建议的那样:在用户空间中实现一个熵收集守护进程。但是,您可能需要咨询专家以确定您是否有足够的熵。

旁白:当您说“加密客户端通信”时,我认为您实际上是在使用某种经过身份验证的加密方案(例如 AES+HMAC 或 AES-GCM)。如果不是,那么您可能遇到的问题比熵不足更大。

如果您对您的通信协议是否需要额外的熵有具体问题,https//crypto.stackexchange.com 充满了乐于讨论如何做的细节的人。

【讨论】:

  • @mur:对不起。我不明白你的意思是什么。你有一个证书 - 太棒了。您将如何选择 IV 来使用 AES-GCM 加密数据包?您的选择是“随机选择”或“仔细选择以确保唯一性” - 安全地做到后者很难。
  • 这一切不都取决于加密方案吗?对于 RSA 和 ECC,生成密钥后不需要熵……但对于 Elgamal,需要熵,因为掩码一直在变化。我弄错了吗?
  • @TheQuantumPhysicist 您不使用 RSA/ECC 来保护服务器和客户端之间的通信。您使用 RSA/ECC(或 [EC]DH)来保护用于保护通信的对称密钥。我知道的所有模式都需要 IV 或 nonce。
  • 还有第三种选择,在用户空间实现一个熵收集守护进程。然而,这不是灵丹妙药,就像第一选择一样,可能需要咨询专家来分析可用的熵。
  • @TheQuantumPhysicist:见padding schemes
猜你喜欢
  • 2017-07-01
  • 1970-01-01
  • 2018-12-04
  • 1970-01-01
  • 1970-01-01
  • 2023-03-23
  • 2018-08-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多