【发布时间】:2010-05-20 18:02:54
【问题描述】:
如果我想使用 X509 证书对消息进行签名和加密,是否有任何理由不使用相同的证书进行加密和签名?
更新:回首往事,我认为这一定是我在 SO 上问过的最愚蠢的问题。对不起。
【问题讨论】:
标签: encryption rsa signing
如果我想使用 X509 证书对消息进行签名和加密,是否有任何理由不使用相同的证书进行加密和签名?
更新:回首往事,我认为这一定是我在 SO 上问过的最愚蠢的问题。对不起。
【问题讨论】:
标签: encryption rsa signing
发件人使用他自己的私钥对消息进行签名。消息使用 recipient 公钥加密。证书包含公钥。据推测,发件人的公钥(对应于用于签署消息的发件人私钥)也在证书中表示。
收件人使用他自己的私钥(对应于他证书中的公钥)来解密传入的消息。收件人使用发件人公钥(来自发件人证书)来验证签名。
话虽如此,您可以设想一个通用场景,每个人都可以发送和接收电子邮件。因此,每个人都有一个密钥对(在证书中包含公共部分),用于加密和解密电子邮件(Bob 的公钥用于加密发送给 Bob 的电子邮件,Bob 使用相应的私钥解密它们,即阅读电子邮件)。 另外,每个人都有一个用于签名的密钥对(Bob 使用他的私钥对他发送的消息进行签名,Alice 使用 Bob 的公钥来验证据称由 Bob 计算的签名)。 那么问题来了:Bob 是否有两对密钥(一对用于加密/解密,一对用于签名/验证),还是只有一对用于这两项工作的密钥对?
碰巧 RSA 公共加密算法和 RSA 签名算法可以使用同一种密钥,称为(从逻辑上讲)“RSA 密钥”。所以这是可行的,实际上它经常发生。
但是,一般来说,签名密钥和加密密钥具有不同的生命周期和管理程序。在业务环境中,该方向将用于加密的所有私钥的副本保存在安全中,因为丢失加密密钥意味着丢失数据。员工可能会变得“不可用”(员工被解雇,员工退休,员工被公共汽车撞到......)。相反,当签名密钥丢失时,之前发出的签名仍然有效且可验证,因此只需创建一个新的密钥对即可生成其他签名。此外,只有在某处保险箱中没有密钥副本的情况下,数字签名才能获得强大的法律地位。因此,一般建议是将加密密钥和签名密钥分开。对两者使用相同的密钥是一种近似值,可能会产生不必要的副作用(例如数据丢失或缺乏法律价值)。根据具体情况,这可能是也可能不是问题。
【讨论】:
X509 证书包含公钥。要进行加密,您可以使用可能从他们的证书中获得的收件人的公钥。要签名,您使用您的私钥,可能来自安全商店。收件人使用您的公钥验证签名,可能来自您的证书。这些是基础。
【讨论】: