【学懂区块链】09:怎么证明我是我?

微信公号:辉光日新i ( hgrx2017 );

已进行数字签名版权保护;

转载请保留以上声明。



书接上回。

气急败坏的小霸王虽然没能破解出密文,但很快想到一个主意:冒充秀才用龙姑娘公钥加密一份伪造的信件,发送给龙姑娘。


这样一来就危险了,万一解密出原文的龙姑娘相信并上当了呢?

而对于秀才,怎么证明自己发出的信息是自己发出的,简单说就是:怎么证明我是我?长久以来,这是个让对方头疼也让自己尴尬的问题。


幸好,“非对称加密”的出现完美地解决了这个问题。

和签名的目的一样,数字签名是用数字的手段来确认是否本人。

简单来说,发送人只需要生成一个独有的数字签名,发送给接收人验证,核对一致后可证明是本人。


数字签名在非对称加密中的运用


还记得吗?

龙姑娘和秀才各有一对公私钥,公私钥就像是一对亲父子的关系。在传递信息之前,他们互相交换了公钥。

现在,他们互相持有对方的公钥且留有自己的私钥。小霸王则潜伏在一旁。

自从昨天龙姑娘回复“明晚七点,对面餐厅“之后,秀才就开心地预定到餐厅的6号餐桌。

现在,他想告诉龙姑娘:“6号餐桌,不见不散”。


于是秀才用龙姑娘的公钥把原文“6号餐桌,不见不散”加密为密文;

接着,秀才把原文“6号餐桌,不见不散”哈希一次(相当于给原文做个X光扫描),得到原文的哈希值。


然后用秀才自己的私钥对这个哈希值进行加密,相当于用私钥把这个X光片给锁了起来,因此得到数字签名。


秀才将密文和数字签名一起发送给了龙姑娘。

在传送过程中,龙姑娘和秀才的公钥、传送的文件都有可能被第三方获取,比如一直潜伏着的小霸王。

收到文件的龙姑娘用自己的私钥对密文进行解密,得到原文内容:“6号餐桌,不见不散“,并对原文进行哈希得到哈希值。

但这是不是秀才发来的呢?假如有人冒充怎么办?


这时候龙姑娘用秀才的公钥对数字签名进行解密,发现解密后的哈希值和自己刚才哈希的哈希值一致。就好像用秀才的公钥打开了锁着X光片的盒子,经核对与自己所扫描的X光片一致。


于是便确认是秀才本人无疑,因为只有秀才的公钥才能解密且得到正确的哈希值。

假如无法解密数字签名、或原文的哈希值不一致,那当然就不是本人了。



我们再来看小霸王,没错,他在网络上截获了龙姑娘和秀才的公钥,以及秀才发送给龙姑娘的秘密文件。


接下来,他发现秀才公钥可以“将原文加密为密文“对自己没有意义,虽然还可以解密数字签名但也没啥用,他想看的是内容、内容!


那龙姑娘的公钥呢?抱歉,这个只能加密,但无法解密哈亲。唯一能解密的私钥在龙姑娘手里。

这……

泄气的小霸王突然灵光一闪:既然龙姑娘的公钥在我手里,那干脆伪造个信息好了!


心中窃喜的小霸王写下:“秀才不才,霸王可托”,之后用龙姑娘的公钥将原文加密为密文;接着对原文哈希得到哈希值,用小霸王自己的私钥加密哈希值,便生成了数字签名。


然后,将伪造的密文和自己的数字签名一并发送给龙姑娘。


收到信息的龙姑娘用自己的私钥对密文进行解密,得到原文内容:“秀才不才,霸王可托“;

再对原文进行哈希,得到哈希值;


然后,龙姑娘自然是用秀才的公钥对实际上是小霸王的私钥生成的数字签名进行验证啦,但不是同一对的公私钥无法互相加解密,就像自己的儿子不会认别人家的爸爸一样,所以数字签名验证失败!


龙姑娘由此识别出伪造的信息。


容易混淆的地方


很多人,其实也包括我,很容易对非对称加密的公私钥机制产生误解:


既然公私钥可以互相加解密,即我的公钥可以解开私钥加密的文件,而自己的公钥又会被第三方获取,那别人岂不是一样能解密文件?


其实这是把公私钥各自可加密和解密的对应部分给混淆了,而很多文章又往往没有解释清楚。


实际情况是:

A用B的公钥将原文加密为密文,用A的私钥生成数字签名;B收到文件用B的私钥将密文解密,用A的公钥验证数字签名。如此完成A对原文加密、数字签名生成,B对密文解密、数字签名验证的过程。


公钥和私钥,各自有两大功用。同时又在发送方和接收方之间交叉加解密及数字签名的生成与验证。这是最容易被误解的地方,但又是非对称加密的精妙之处。


大家可以配合图2、图3再推演一遍,加强理解记忆。


话说这画图、图示还真是好东西,很多难以理解的抽象概念和问题在纸上一番涂鸦,就清晰明了起来。绝对是学习和记忆的好帮手!


非对称加密中数字签名的价值


数字签名的三大特性:不可伪造、轻松识别且无法抵赖,使人们在网络上可以便捷的验证对方身份,让安全无处不在。


我们似乎看到屏幕前的小霸王气得嗷嗷叫:汪汪,汪汪汪!



参考资料:

汤强:未曾相见,为何能深信不疑?

你可能感兴趣的:(【学懂区块链】09:怎么证明我是我?)