数字签名是附加在报文上的特殊加密校验和。
有以下两个用处
签名可以证明作者是编写了这条报文。只有作者才有这个私有密钥,因此,只有作者才能计算出这些校验和。校验和就像来自作者的签名一样。
签名可以防止报文被篡改,如果有恶意攻击者在报文传输过程中对其进行修改。校验和就不再匹配了。由于校验和只有作者保密的私有密钥才能产生,所以攻击者无法为篡改了的报文伪造出正确的校验和
数字签名通常是用非对称公开密钥技术产生的。应为只有所有这才知道私有密钥,所以可以将作者的私有密钥当做一种指纹使用。
节点A将边长的报文提取为定长的摘要。
节点A对定长的摘要应用一了一个签名函数,这个函数会将用户的私有密钥作为参数。应为只有用户才知道私有密钥,所以正确的签名函数会说明签名者就是其所有者。
一旦计算出签名,节点A将其附加在报文的尾端,并将报文和签名都发送给B
在接受端,如果节点B需要确定报文确实是节点A写的,而且没有被篡改过,节点B就可以对签名进行检查。节点B接受经过私有密钥加密的签名,并应用了使用公开密钥的反函数,如果拆包的摘要月节点B自己的摘要版本匹配就没有被篡改过。