RSA能同时用于加密和签名吗?

7
抱歉,对于这个问题我的思维突然变得一片空白。
(情景编辑)
如果我想让信息绕过像“f ** k”之类的简单过滤器,使用公钥加密信息并由私钥签名是否可以?公钥可能已经被双方交换,而且获取公钥甚至很困难。
(第二次编辑)
信息本身可能并不那么重要。
加密和签名的重点在于绕过和完整性。
2个回答

22
RSA是两个算法:一个用于非对称加密,一个用于签名。恰好这两个算法都可以使用相同的私钥结构(这是混淆的来源:许多文档,包括RSA标准,试图将签名解释为“使用私钥加密”,这最多是不准确的)。
虽然可以将同一密钥用于两种用途,但并不建议这样做,因为这两种用途之间的交互尚未完全探索;此外,用于加密的密钥和用于签名的密钥通常具有不同的生命周期和不同的保护机制(例如,通常希望为加密保留私钥备份,以防止数据丢失:丢失私钥意味着丢失使用该密钥加密的所有数据;而不希望备份签名密钥)。
你的情景有点不清楚。非对称加密使用公钥,而生成签名使用私钥。如果A想要通过加密(保密性)和签名(完整性)向B发送消息,则A将使用B知道私钥的公钥加密数据;并且A将使用B知道公钥的私钥签署数据。这需要两对密钥:一对用于加密和解密(A加密,B解密,B知道私钥),另一对用于签名(A签名,B验证,A知道私钥)。如果A和B都知道私钥,则他们有一个共享密钥,使用对称加密(AES)和完整性检查(HMAC)会更简单(也更快)。
标准免责声明:您似乎正在设计自己的密码协议。不要这样做。这条路会导致与无数其他聪明人犯过的安全失败相同的结果。请使用经过验证的协议,例如SSL/TLSOpenPGP

-1

@Dante:你是指私钥吗?没错。 - davka
@Dante:具体来说,只有私钥持有者才能签名,每个人(拥有公钥的人)都可以验证。 - davka
@davka,如果加密密钥被泄露,最好使用公钥进行加密,以防止伪造。根据我的情况,信息只是被模糊处理以通过一些过滤器。 - Dante May Code
@Dante:我不太明白你的意思。如果 私钥 被泄露,就没有任何保护措施了 - 任何人都可以伪造签名并读取加密消息,因此在这种情况下没有所谓的“更好”。 - davka
@davka,在我的情况下,私钥仅仅由我拥有。风险要小得多。 - Dante May Code
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接