数字签名定义
数字签名就是对数字信息进行签名,以防止他人对信息进行伪造和篡改,也可以用于身份识别
数字签名的特性
- 签名是可信的
- 签名的信息是不可篡改的
- 签名是不可复制的
- 签名是不可伪造的
- 签名是不可抵赖的
简而言之,某人对某信息进行签名可以证明:这个信息是这个人写的,且无其他人进行修改。
数字签名的原理
背景环境:小明对信息M进行签名,并发送给小红,小红校验信息以确保该信息是小明发送的,且未被篡改
小明对信息进行处理
- 小明用hash函数对信息 M 进行 hash处理 ,得到信息摘要 M’(hash值)
- 小明使用自己的 私钥 对摘要值 M’ 进行加密,得到签名文本 S (签名,证书次hash值由小明创建)
- 小明使用小红的 公钥 对S进行加密,得到加密的签名文本 S’ (加密,防止他人修改hash值)
- 小明将M和**S’**发送给小红
小红收到信息后,验证信息M使用小红发出的和信息M未被篡改
- 小红用自己的 私钥 对 S’ 进行解密,得到签名文本 S
- 小红用小明的公钥 对 S 进行解密,得到信息摘要 M’
- 小红用同样的hash函数对信息 M 进行hash处理,得到信息摘要 M’'
- 将 M’ 和 M’’ 进行比较,若相同,则信息M由小明撰写发送,且未被篡改
数字签名原理的论证
首先,对于任意信息M,有且只有一个hash值(对于同一个hash函数),且很难找到2个有相同hash值的 信息M,故信息M与其hash值在很大程度上有这一 一对应的特点。
其次,小明使用了自己的私钥对信息摘要 M’ 进行加密签名,故他人无法在不破坏签名的基础上对信息摘要M’进行修改,故无法同时随意修改信息M
再其次,对小明用小红的私钥对签名文本S进行了加密,故他人并不知道真实的hash值,故无法找到拥有相同hash值的另一个信息对信息M做替换篡改。
综上所述,攻击者既无法将篡改后的信息的hash值替换原hash值,也无法通过已知hash值找到另一个拥有相同hash值的信息对M进行替换,所以在理论上很难伪造数字签名和篡改签名后的信息
一家之言,请多指教