【问题标题】:Identifying your own message RSA识别您自己的消息 RSA
【发布时间】:2012-02-08 08:14:45
【问题描述】:

我有一个使用 AES 加密消息的软件,随机生成的 AES 密钥由接收者的公共 RSA 密钥加密。现在当我将消息发送给多个用户时...

发送方:

  1. 消息由随机散列 (sha256) AES KEY 加密

  2. AES 密钥随后被多次加密,并使用每个接收者的公钥附加到加密消息中。

  3. 消息具有 [接收者数量、[加密密钥列表]、加密消息]

接收方:

  1. 获取接收者的数量

  2. 遍历附加的加密密钥并使用您的私有 RSA 解密。直到你找到适合你的那个。这样当他/她解密密钥时,他们就会得到 AES 密钥。

3.使用 AES 密钥解密消息。

知道密钥是 base 64 字符串,这意味着它以 '=' 结尾,并且长度为 256,因为 sha

问题是: 我怎么知道(如果我是接收者)使用我的私有 RSA 的解密密钥是自动正确的?

提前谢谢你。

【问题讨论】:

  • 如果您想获得有用的回复,您必须编辑问题并使其更清晰。正确的问题尚不清楚。当您将消息发送给收件人时,收件人如何知道您的 AES 密钥?如果从未使用您的公共 RSA 密钥加密密钥,您如何使用您的私有 RSA 密钥解密密钥?
  • 感谢您的注意,我已经编辑了 Q 希望它现在清楚了
  • The AES key is then Encrypted many time and appended to the encrypted message using each receiver's public key. - 我们应该如何解释这个?如果有三个收件人的公钥分别为 P_1、P_2 和 P_3,你是追加 ENC(ENC(ENC(aes_key, P_1), P_2), P_3) 还是追加 ENC(aes_key, P_1), ENC(aes_key, P_2) 和 ENC(aes_key, P_3)?
  • ENC(aes_key, P_1), ENC(aes_key, P_2) and ENC(aes_key, P_3)

标签: cryptography rsa aes sha256


【解决方案1】:

两个问题:您描述的协议是固定的,还是可以以任何方式修改?如果它是固定的,您对 RSA 使用哪种填充方案? PKCS#1 v1.5、OAEP 还是根本没有?

  1. 如果协议可能被修改,您可以使用带有身份验证的密码模式,例如 EAX、CCM 或 GCM。如果 RSA 密钥传输解密静默失败,经过身份验证的 AES 解密也会失败。

  2. 将 RSA-OAEP 的变体用于提供“纯文本感知”的密钥传输,如下所述:http://www.rsa.com/rsalabs/node.asp?id=2346

【讨论】:

  • 此外,RSA 加密的密钥结构应该包含类似密钥 id 的内容(例如 64 位的公钥散列),以便轻松识别适合您的 RSA 加密密钥。跨度>
  • 我可以使用PKCS#1 v1.5OAEP你在这里建议什么?\\你说的听起来很有趣,但是我的应用程序可以在本地机器上运行,我们仍然不想使其通过任何类型的网络工作。当我阅读时,如果我完全理解;在这种情况下不能使用 CCM。[暂时]
  • 如果您只是使用解密的返回值来查找适合您的加密密钥,那么常规 RSA-OAEP 可能没问题。但是,如果您可以更详细地描述您的确切安全要求和威胁场景,它可能会有所帮助。您只需要机密性,还是还需要身份验证和完整性?
  • 顺便说一句,GregS 绝对正确,RSA 加密的密钥应该与密钥 id 配对,以使接收者更容易找到正确的加密密钥。您可能还应该做其他一些事情,但这取决于您的确切安全要求。例如,您确定您使用的发送机制确实需要机密性(AES 加密),但不需要身份验证或不可否认性(例如证明消息来自特定发件人的数字签名)?
【解决方案2】:

无法找到这条加密消息属于哪个接收者。

但是你可以做的是尝试解密消息,如果解密成功那么那就是接收者

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-13
    • 1970-01-01
    相关资源
    最近更新 更多