使用私钥

时间:2017-09-13 15:47:39

标签: encryption key digital-signature

我的理解是

  1. 用于加密:我使用收件人的PUBLIC KEY加密我的邮件。他将使用他的私钥来阅读我的信息(只有他能做到这一点)=>好吧

  2. 用于签名:我使用我的私钥(因为没有人拥有它,它证明了我的身份)。但如果我的收件人使用我的PUBLIC KEY,每个人都可以这样做并阅读我的信息!谁能解释一下呢?

  3. 然后,我认为我应该做的是

    1. 我用我的私人密码签署我的留言=>它证明了我的身份

    2. 我使用我的收件人PUBLIC KEY =>加密步骤1的结果。为了避免任何人阅读它

    3. 用他的PRIVATE KEY =>解密只有他能做到这一点

    4. 他用我的PUBLIC KEY

    5. 检查我的身份

      这是对的吗?

1 个答案:

答案 0 :(得分:0)

你的第二个猜测还不错。

通常签名(非加密)的方式如下:

  1. 计算必须签名的邮件的哈希值(例如SHA256)。
  2. 签署此哈希值(即使用您的私钥进行RSA加密)
  3. 那就是它。将纯文本消息和签名的哈希传递给任何人。邮件未加密,因此对所有收件人都可读。在你的公钥的帮助下,每个人都可以解密哈希,计算他或她自己的消息哈希值,只要两个哈希值(自我计算的和签名和解密的哈希值)相等,签名就有效,并且消息有签字后没有改变。

    如果您的消息也必须加密,您通常不使用RSA,因为它对于较大的消息来说是缓慢且不灵活的(这意味着大于私钥的模数,例如2048位)。

    使用AES CBC等对称算法来加密消息。可以使用收件人的公钥加密巧合生成的加密密钥,然后进行转移。

    总结使用带有SHA256(签名)和AES CBC(加密)的RSA进行签名和加密: 1.计算消息M的SHA256哈希H. 2.使用您的公钥对H进行签名,即使用您的RSA私钥加密H.那是你的签名S. 3.生成随机密钥K. 4.使用AES CBC加密M以获取加密消息M'。 5.使用收件人的公钥加密K以获得K'。 6.发送K',您的签名S和M'给你的收件人。

    只有收件人才能撤消所有步骤:

    1. 解密K'使用收件人的私钥来获得K(RSA)。
    2. 解密M'用K(AES CBC)来获取消息M.
    3. 使用您的公钥(RSA)解密S以获得H.
    4. 计算M的SHA256哈希。
    5. 将步骤4的计算散列与H(来自步骤3)进行比较。如果两者相等,则验证签名成功。