2017-09-13 178 views
0

我的理解是签名用私钥

  1. 加密:我用我的接收者的公钥来加密我的信息。他将使用他的私人密钥来阅读我的消息(只有他可以这样做)=>确定那个

  2. 签名︰我使用我的私人密钥(因为没有人拥有它,它证明了我的身份)。但是如果我的收件人使用我的公钥,每个人都可以做同样的事情并阅读我的信息!任何人都可以解释吗?

然后,我还以为是我应该做的是

  1. 我签我的消息,我的私人密钥=>这证明我的身份

  2. 我ENCRYPT步骤1的结果使用我收件人的PUBLIC KEY =>以避免任何人阅读它

  3. HE用他的私钥解密=>只有他可以这样做

  4. HE检查我的身份与我的公钥

是正确的吗?

回答

0

你的第二个猜测并不坏。

通常的方式是签名(不加密)以下:

  1. 计算哈希的消息(如SHA256),有要签名。
  2. 签署本哈希值(即使用RSA加密私钥)

就是这样。将简单消息和签名散列传送给任何人。该邮件未加密,因此可供所有收件人阅读。在公钥的帮助下,每个人都可以解密哈希,计算他或她自己的哈希散列,只要哈希(自己计算的和签名和解密的哈希)相等,签名就是有效的,并且消息具有签名后不会改变。

如果您的消息还需要加密以及您通常不使用RSA,因为它对于较大的消息(这意味着比私钥的模数大,例如2048位)要慢并且不灵活。

使用像AES CBC这样的对称算法来加密消息。巧合生成的加密密钥可以使用收件人的公钥进行加密,然后进行传输。

综上所述使用RSA与SHA256(签名)签名和加密和AES CBC(加密): 1.计算SHA256哈希M. 和你的公钥2.标记H您的留言H,即加密^ h用你的RSA私钥。这是您的签名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. 解密S采用你的公钥(RSA)获得H.
  4. 计算M的SHA256哈希
  5. 比较计算步骤4与H的散列(来自步骤3)。如果两者相同,则签名被成功验证。