【问题标题】:Can RSA be both used as encryption and signature?RSA可以同时用作加密和签名吗?
【发布时间】:2011-07-22 05:20:54
【问题描述】:

我很抱歉,但我的大脑突然因为这个问题而一片空白......

编辑(场景)

如果我想让信息绕过f-ck这样的简单过滤器,可以用公钥加密信息,用私钥签名吗?

公钥可能已经被双方交换过,甚至很难拿到公钥。

编辑 2

信息本身可能没有那么多凭据。

加密和签名的目的是为了绕过和完整性。

【问题讨论】:

    标签: encryption rsa signature


    【解决方案1】:

    RSA 是两种算法:一种用于非对称加密,一种用于签名。碰巧两种算法都可以使用相同的私钥结构(这是混淆的根源:许多文档,包括RSA standard,试图将签名解释为“使用私钥加密”,充其量是,不准确)。

    对两种用法使用相同的密钥是可能的,但不建议这样做,因为尚未充分探索两种用法之间的交互;此外,加密密钥和签名密钥通常具有不同的生命周期,具有不同的保护机制(例如,您通常希望保留私钥的备份以进行加密,以防止数据丢失:丢失私钥意味着丢失所有数据已使用该密钥加密;而您想要签名密钥的备份)。

    您的情况有点不清楚。非对称​​加密使用公钥,而生成签名使用私钥。如果 A 想向 B 发送带有加密(保密性)和签名(完整性)的消息,则 A 将使用 B 知道私钥的公钥加密数据; A 将使用 B 知道公钥的私钥对数据进行签名。这需要 对密钥:一对用于加密和解密(A 加密,B 解密,B 知道私钥),另一对用于签名(A 签名,B验证,A 知道私钥)。如果 A 和 B 都知道私钥,那么他们就有一个共享密钥,并且使用 对称 加密 (AES) 和完整性检查 (HMAC) 会更简单(也更快) .

    标准免责声明:您看起来像是在设计自己的加密协议。不要这样做。这条道路会导致无数其他聪明人偶然发现的相同安全故障。使用经过验证的协议,例如 SSL/TLSOpenPGP

    【讨论】:

      【解决方案2】:

      是的:

      • 加密:你用公共加密 密钥,用私人解密(显然)
      • 签名:你用私钥加密内容摘要(哈希),用公钥验证

      http://en.wikipedia.org/wiki/RSA#Signing_messages

      【讨论】:

      • 如果我同时做这两个,只有那些拥有钥匙的人才能透露信息。对吗?
      • @Dante:私钥,你是说?对。
      • @Dante:详细说明-只有私钥持有者可以签名,每个人(拥有公钥)都可以验证
      • @davka,所以万一加密密钥泄露,最好使用公钥加密,防止伪造。根据我的情况,信息只是通过一些过滤器被掩盖。
      • @Dante:我不太明白你的意思。如果 private 密钥被泄露,那么任何人都可以伪造签名并读取加密消息,因此在这种情况下没有“更好”
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-02-14
      • 1970-01-01
      • 2021-04-03
      • 2011-05-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多