加密的 RSA 私钥 - 这是什么?

加密的 RSA 私钥 - 这是什么?

我是密码学的新手,在理解很多东西时遇到了很多困难。在我的屏幕上,我使用 Openssl 生成 RSA 私钥,并使用 DES3 加密此私钥。然后,我输入我的密码短语,如果我理解加密我的私钥,该密码短语将用作“密钥”。我对此有多个疑问:

  1. 在我的屏幕上,最后一行“60DB8...”的十六进制代码是什么?它有什么用处?它是如何“创建”的?

  2. 用于避免相同密码给出相同密钥的机制是什么?我猜这就像我的密码首先被加密,然后我们向其中添加盐,然后对其进行哈希处理?

  3. 如果我想使用我的私钥,我必须先用我的密码(这是我的密钥?)解密它。它如何将我的密码与我的私钥匹配?

在此处输入图片描述

非常感谢你的帮助,对我的错误深表歉意

答案1

最后一行“60DB8...”的十六进制代码是什么?它有什么用途?如何“创建”?

这是一个随机值,用作初始化向量用于私钥加密。显示它不是 的重点grep DEK,重点是显示DES-EDE3-CBC,即用于私钥加密的算法。有关 DEK-Info 的更多信息,请参阅RFC 1421 第 4.6.1.3 节

用于避免相同密码给出相同密钥的机制是什么?

问题中的猜测是不准确的。实际上,私钥(用于公钥加密和签名)是​​随机生成的;密码用于派生使用对称密钥加密法加密私钥的密钥。

通过这种安排,密码和私钥不再相关。可以单独更改其中一个。

如果我想使用我的私钥,我必须先用我的密码(这是我的密钥?)解密它。它如何将我的密码与我的私钥匹配?

事情的安排使得使用错误的密码很可能会生成错误消息。

在理想情况下,它将使用盐(IV 就可以)和故意缓慢、充分参数化的密码哈希算法/按键拉伸函数(例如氩2)将密码转换为秘密加密密钥,然后私钥的解密将使用一些现代认证加密。这将使测试常用密码短语字典的成本尽可能高,以便在每次合法使用时都能承受延迟/成本。但 OpenSSL 的密钥拉伸已经过时且薄弱。底线是密码短语应该很复杂,以抵御密码搜索。

OpenSSL 对私钥的认证加密可能相当临时,尤其是在使用 DES-EDE3-CBC 时;也许,这取决于对加密私钥解密结果中某个常量字段的检查。这不会造成任何严重后果,因为在这种情况下,我们只想防止意外使用错误的密码。我还没有挖掘细节。

相关内容