![加密的 RSA 私钥 - 这是什么?](https://linux22.com/image/1634815/%E5%8A%A0%E5%AF%86%E7%9A%84%20RSA%20%E7%A7%81%E9%92%A5%20-%20%E8%BF%99%E6%98%AF%E4%BB%80%E4%B9%88%EF%BC%9F.png)
答案1
最后一行“60DB8...”的十六进制代码是什么?它有什么用途?如何“创建”?
这是一个随机值,用作初始化向量用于私钥加密。显示它不是 的重点grep DEK
,重点是显示DES-EDE3-CBC
,即用于私钥加密的算法。有关 DEK-Info 的更多信息,请参阅RFC 1421 第 4.6.1.3 节。
用于避免相同密码给出相同密钥的机制是什么?
问题中的猜测是不准确的。实际上,私钥(用于公钥加密和签名)是随机生成的;密码用于派生使用对称密钥加密法加密私钥的密钥。
通过这种安排,密码和私钥不再相关。可以单独更改其中一个。
如果我想使用我的私钥,我必须先用我的密码(这是我的密钥?)解密它。它如何将我的密码与我的私钥匹配?
事情的安排使得使用错误的密码很可能会生成错误消息。
在理想情况下,它将使用盐(IV 就可以)和故意缓慢、充分参数化的密码哈希算法/按键拉伸函数(例如氩2)将密码转换为秘密加密密钥,然后私钥的解密将使用一些现代认证加密。这将使测试常用密码短语字典的成本尽可能高,以便在每次合法使用时都能承受延迟/成本。但 OpenSSL 的密钥拉伸已经过时且薄弱。底线是密码短语应该很复杂,以抵御密码搜索。
OpenSSL 对私钥的认证加密可能相当临时,尤其是在使用 DES-EDE3-CBC 时;也许,这取决于对加密私钥解密结果中某个常量字段的检查。这不会造成任何严重后果,因为在这种情况下,我们只想防止意外使用错误的密码。我还没有挖掘细节。