数字签名(一)

非对称密钥算法的第二个用途就是实现数字签名,为什么要签名呢?签名的目的无非是对某一份文件进行确认。

    例如,欠条。张三欠李四 10000 元钱,欠款人张三在欠条上签名确认。签名的主要作用就是张三对这张欠条进行确认,事后不能抵赖(不可否认性)。到底最后谁会看这个签名呢?李四很明显没必要反复去确认签名。一般都是在出现纠纷后,例如,张三抵赖不还的时候,李四就可以把欠条拿出来,给法官这些有权威的第三方来进行验证,如果他们确认此欠条上的签名确实来自张三无疑,张三就不能再否认欠李四钱这一既定事实了。

    我们来看看数字签名是如何工作的。

步骤 1:重要明文信息通过散列函数计算得到散列值(明文)。

步骤 2:“用户一”(发起者)使用自己的私钥对步骤1计算的明文散列值进行加密,加密后的散列值就叫做数字签名(密文)

步骤3:把重要明文信息和数字签名一起打包发送给“用户二”(接收方)。

步骤4:“用户二”从打包文件中提取出重要明文信息。

步骤5:“用户二”使用和“用户一”相同的散列函数对步骤4提取出来的重要明文信息计算散列值,得到的结果简称“散列值 1(明文)”。

步骤6:“用户二”从打包文件中提取出数字签名(密文)。

步骤7:“用户二”使用预先获取的“用户一”的公钥,对步骤6提取出的密文的数字签名进行解密,得到明文的“散列值 2”。

步骤8:比较“散列值 1”和“散列值2”是否相等。如果相等,数字签名校验成功。

1. 红红有两把钥匙,一把是公钥,另一把是私钥。

2. 红红把公钥送给他的朋友们——帕蒂、道格、苏珊——每人一把。

3. 苏珊要给红红写一封保密的信。她写完后用红红的公钥加密,就可以达到保密的效果。

4. 红红收信后,用私钥解密,就看到了信件内容。这里要强调的是,只要红红的私钥不泄露,这封信就是安全的,即使落在别人手里,也无法解密。

5. 红红给苏珊回信,决定采用“数字签名”。他写完后先用Hash函数,生成信件的散列值(digest)

6. 然后,红红使用私钥,再对这个散列值(digest)加密,生成“数字签名”(signature)

7. 红红将这个签名,附在信件下面,一起发给苏珊。

8. 苏珊收信后,取下“数字签名”(signature),用红红的公钥解密,得到信件的散列值1(digest 1)。由此证明,这封信确实是红红发出的。

9. 苏珊再对信件本身使用Hash函数,将得到的散列值2(digest 2),与上一步得到的散列值1(digest 1)进行对比。如果两者一致,就证明这封信未被修改过。

10. 复杂的情况出现了。道格想欺骗苏珊,他偷偷使用了苏珊的电脑,用自己的公钥换走了红红的公钥。此时,苏珊实际拥有的是道格的公钥,但是还以为这是红红的公钥。因此,道格就可以冒充红红,用自己的私钥做成“数字签名”,写信给苏珊,让苏珊用假的红红公钥进行解密。

11. 后来,苏珊感觉不对劲,发现自己无法确定公钥是否真的属于红红。她想到了一个办法,要求红红去找“证书中心”(certificate authority,简称CA),为公钥做认证。证书中心用自己的私钥,对红红的公钥和一些相关信息一起加密,生成“数字证书”(Digital Certificate)

12. 红红拿到数字证书以后,就可以放心了。以后再给苏珊写信,只要在签名的同时,再附上数字证书就行了。

13. 苏珊收信后,用CA的公钥解开数字证书,就可以拿到红红真实的公钥了,然后就能证明“数字签名”是否真的是红红签的。

非对称密钥算法的主流协议:

RSA (数字签名和数字证书的主流协议)

DH (IPSec 产生密钥资源的主要协议)

ECC (椭圆曲线算法)

巧妙的加密解决方案

步骤1:“用户一”(发起方)使用本地随机数产生器,产生用于对称密钥算法的随机密钥,用于加密数据。

步骤2:使用步骤1产生的随机密钥,对重要的明文信息通过对称密算法进行加密,并得到密文。

步骤3:“用户一”(发送方)需要预先获取“用户二”(接收方)的公钥,并且使用“用户二”的公钥对步骤1产生的随机密钥进行加密,得到加密的密钥包。

步骤4:对步骤2和步骤3产生的密文和密钥包一起发送给“用户二(接收方)。

步骤5:“用户二”首先提取出密钥包,并且使用自己的私钥对它进行解密,并得到明文的随机密钥。

步骤6:“用户二”提取出密文,并且使用步骤5解密得到的随机密钥进行解密,得到明文的重要信息。

  • 29
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值