使用RSA加密,我应该使用相同的证书来签名和加密邮件吗?

时间:2010-05-20 18:02:54

标签: encryption rsa signing

如果我想使用X509证书对邮件进行签名和加密,是否有任何理由不使用相同的证书进行加密和签名?

更新:回顾过去,我认为这一定是我曾经问过的最棘手问题。对不起。

2 个答案:

答案 0 :(得分:5)

发件人使用自己的私钥对邮件进行签名。邮件使用收件人公钥加密。证书包含公钥。据推测,发件人公钥(对应于用于签名邮件的发件人私钥)也在证书中表示。

收件人使用自己的私钥(对应于其证书中的公钥)来解密传入的邮件。收件人使用发件人公钥(来自发件人证书)来验证签名。

话虽如此,您可以设想一个通用的场景,每个人都可以发送和接收电子邮件。因此,每个人都有一个密钥对(证书中有公共部分),用于加密和解密电子邮件(Bob的公钥用于加密发送给Bob的电子邮件,Bob使用相应的私钥解密它们,即读取电子邮件)。 同样,每个人都有一个用于签名的密钥对(Bob使用他的私钥来签署他发送的消息,Alice使用Bob的公钥来验证据称由Bob计算的签名)。 那么问题是:Bob会有两个密钥对(一个用于加密/解密,一个用于签名/验证),还是只有一个密钥对用于这两个工作岗位?

RSA公共加密算法和RSA签名算法可以使用相同类型的密钥,称为(相当逻辑上)“RSA密钥”。所以这是可行的,实际上它经常发生。

但是,一般来说,签名密钥和加密密钥具有不同的生命周期和管理程序。在业务环境中,方向保存所有用于加密的私钥的安全副本,因为丢失加密密钥意味着丢失数据。员工可能变得“无法”(员工被解雇,员工退休,员工被公共汽车击中......)。相反,当签名密钥丢失时,先前发出的签名仍然有效且可验证,因此只需创建新密钥对即可生成其他签名。此外,只有在安全的地方有 no 密钥副本时,数字签名才可能获得强大的合法身份。因此,一般建议是将加密和签名密钥分开。对两者使用相同的密钥是近似值,其可能具有不希望的副作用(例如数据丢失或缺乏合法值)。根据具体情况,这可能是也可能不是问题。

答案 1 :(得分:1)

X509证书包含公钥。要加密,请使用可能从其证书中获取的收件人的公钥。要签名,您可以使用私钥,大概来自安全商店。收件人使用您的公钥验证签名,可能来自您的证书。这些是基础知识。