📜  RSA和数字签名

📅  最后修改于: 2021-08-27 07:02:22             🧑  作者: Mango

电子签名 :
听起来像是数字签名文档的新选择。它确保了消息是由目标用户发送的,而没有任何第三方(攻击者)的篡改。简而言之,数字签名用于验证以电子方式发送的消息的真实性。

RSA:
它是最流行的非对称密码算法。它主要用于对消息进行加密,但也可以用于对消息执行数字签名。

让我们了解如何将RSA逐步用于执行数字签名。
假设有一个发送方(A)和一个接收方(B)。 A希望将消息(M)以及通过该消息计算出的数字签名(DS)发送给B。

步骤1 :
发件人A使用SHA-1消息摘要算法来计算原始消息M上的消息摘要(MD1)。

消息摘要计算

第2步 :
现在,A使用其私钥对消息摘要进行加密。此过程的输出称为A的数字签名(DS)。

数字签名创建

第三步:
现在,发送方A将数字签名(DS)和原始消息(M)发送到B。

同时传输原始消息和数字签名

第四步 :
当B从A接收原始消息(M)和数字签名(DS)时,它首先使用与A相同的消息摘要算法,并为M计算自己的消息摘要(MD2)。

接收方计算自己的消息摘要

步骤5:
现在,B使用A的公钥来解密数字签名,因为它是由A的私钥加密的。此过程的结果是由A计算的原始消息摘要(MD1)。

接收者检索发送者的消息摘要

步骤6:
如果MD1 == MD2,则建立以下事实。

  • B接受原始消息M作为来自A的正确,未更改的消息。
  • 它还可以确保邮件来自A,而不是冒充A的人。

数字签名验证

使用A的私钥对消息摘要(MD1)进行加密,以生成数字签名。因此,可以使用A的公钥对数字签名进行解密(由于RSA的非对称形式)。如果接收方B能够使用A的公钥解密数字签名,则意味着该消息是从A本身接收到的,现在A无法否认他/她没有发送该消息。

它也证明原始消息没有被篡改,因为当接收方B尝试找到自己的消息摘要MD2时,它与A的MD1匹配。

假设恶意用户试图访问原始消息并执行一些更改。现在,他/她将根据更改后的消息计算一个新的消息摘要。它可能与您有关数据完整性和机密性有关,但这是要注意的问题。攻击者必须使用A的私钥对更改后的消息进行签名,才能将其伪装成接收方B的A。但是,攻击者无法使用A的私钥对消息进行签名,因为该消息只有A知道。因此,RSA签名非常强大,安全和可靠。

对RSA签名的攻击:
攻击者可能会尝试对RSA数字签名进行某些攻击。下面给出了其中的一些。

  1. 选择消息攻击–
    在选择消息的攻击中,攻击者创建两个不同的消息M1和M2,并设法以某种方式说服真正的用户使用RSA数字签名方案对这两个消息进行签名。让我们考虑消息M1和消息M2。因此,攻击者计算出一条新消息M = M1 x M2,然后声称真正的用户已经对消息M进行了签名。
  2. 仅密钥攻击–
    在此攻击中,假设是攻击者有权访问真正的用户公共密钥,并尝试获取消息和数字签名。然后,仅攻击者尝试创建另一个消息MM,以使相同的签名S在MM上看起来是有效的。但是,由于其数学复杂度很高,因此发动攻击并非易事。
  3. 已知消息攻击–
    在已知消息攻击中,攻击者尝试使用RSA的功能,从而可以将具有两个不同签名的两条不同消息组合在一起,以便它们的签名也可以组合在一起。举个例子,假设我们有两个不同的消息M1和M2,分别带有数字签名,分别为S1和S2。然后,如果M =(M1 x M2)mod n,则数学上S =(S1¥S2)mod n。因此,攻击者可以计算M =(M1 x M2)mod n,然后计算S =(S1 x S2)mod n来伪造签名。