数字签名是什么?数字签名的流程

  数字签名是什么?数字签名是对发送的消息进行签名,不会更改消息。数字签名是使用发送方私钥加密的短段数据,使用发送方的公钥解密签名数据证明数据是由发送方或有权访问发件人私钥的人员加密的。如今被广泛应用,代码签名证书使用的就是这一技术。

数字签名的流程

数字签名是使用公钥签名算法生成的。私钥生成签名,并且必须使用相应的公钥来验证签名,如下图所示

验证签名

在消息中创建数字签名涉及到两个步骤。第一步涉及从消息创建哈希值 (也称为消息摘要) 。 然后使用签名者的私钥对此哈希值进行签名。下面是创建数字签名所涉及的步骤的图示

创建数字签名的步骤

若要验证签名,需要消息和签名。 首先,必须按照创建签名的方式从消息创建哈希值。 然后,使用签名者的公钥验证此哈希值。 如果哈希值和签名匹配,可以确信消息确实是签名者最初签名且未被篡改的消息。 下图演示了验证数字签名所涉及的过程

验证数字签名

哈希值由少量的二进制数据组成,通常约为 160 位。 这是使用 哈希算法生成的。

 无论使用的算法如何,所有哈希值都共享以下属性

1)哈希值的长度由所使用的算法类型确定,其长度与消息的大小不同。 最常见的哈希值长度为 128 或 160 位。

2)每个非相同消息配对都转换为完全不同的哈希值,即使这两条消息仅因一位而异。 使用当今的技术,在不破坏哈希算法的情况下发现转换为相同哈希值的消息配对是不可行的。

3)每次使用同一算法对特定消息进行哈希处理时,都会生成相同的哈希值。

4)所有哈希算法都是单向算法。 给定哈希值后,无法恢复原始消息。 事实上,对于仅给定哈希值,无法确定原始消息的属性。

相关文章