小明给小红传了张纸条

来源:互联网 发布:大数据与网络安全 编辑:程序博客网 时间:2024/04/28 05:48

需求是这样的,小明要跟小红传个纸条,但是纸条里的信息比较机密,不想让别人看见,在传递过程中也不能被篡改


要完成这个过程,我们先要知道几个大概的点


RSA加密算法,中文名叫非对称加密算法,原理大概就是通信方有两个钥匙,一个是公钥一个是私钥,私钥是保密的只有自己知道,公钥是公开的谁都可以得到,最关键的点是,公钥加密的东西私钥可以解密,说白了就是我把信息所在一个盒子里面,用公钥把盒子锁上了,拿到我这个盒子的人如果持有我的公钥,那么他用这把钥匙可以打开这个盒子获得信息,至于RSA加密的实现原理,文章后面有介绍。


首先,看上面的图,一开始是明文,什么是明文?废话,小明写的肯定叫明文啊,首先将明文通过散列算法来加密,其实这里叫加密不是很合适,md5这些只是散列算法,算不上加密,只需要知道经过md5加密过的东西是回不去的,这个过程是不可逆的,经过散列后的东西叫信息摘要,下一步我们通过RSA来加密,用小明的私钥来加密生成的东西叫做数字签名,有人也许会问为什么不直接对明文进行RSA加密呢,原因是因为非对称加密的效率相对于对称加密来说要差,明文很长的话可能会影响效率,这个后面RSA的原理会讲



接着,小明开始整理要发送的东西,首先我们先想下需要发送的东西有哪些,上面加密完的数字签名肯定要发送,小明的公钥也要发送,因为要用它来解密数字签名,等下为什么要发送明文?原因很简单,数字签名解密后的是信息摘要,而信息摘要到明文这一步是不可逆的,所以你不发送明文的话,鬼知道小明到底发的是什么,因为小红不是鬼,所以发送的时候需要发送明文,所以我们确定下来,需要发送的是上图左边的那三项;

    当然那三项肯定不能就这样暴漏着发出去,不然狗仔偷窥怎么办,如上图所示,我们将上面的三个信息打包起来用一把对称密钥来加密,对称加密的意思很好理解,就是信息通过一把钥匙加密起来,也需要同样一把钥匙来进行解密,解密后信息被还原。

    既然是对称加密,解密的钥匙就一把,小明用的这把秘钥也得发给小红才行,不然你让小红撬开吗?当然这把对称秘钥肯定不是明文发出去,不然还加密毛线,如何发呢?见下图:


从图上可以看出来,我们用小红的公钥对刚才的那把对称密钥进行RSA加密,小明怎么会有小红的公钥,他俩同居了吗?上面已经说了,公钥是公开的,所以跟小红打过交道的人都可以有小红的公钥;

    加密完的东西叫做数字信封,小明真正发给小红的是上图中右边的东西,包含密文和数字信封两部分。

    经过层层传递后,纸条终于传到小红这边了,小红瞥了一眼道:死鬼,又发些什么肉麻东西,然后开始拆纸条,过程如下图:



首先我们的小红用自己的私钥先将数字信封进行解密,解密完了之后拿到一把对称秘钥,然后小红用这把对称秘钥对密文进行解密,解密完了之后还原出数字签名、明文、小明的公钥这三样东西,此时此刻小红已经可以看见小明发的明文了,但是如何确认一下信息有没有被篡改过呢?小红嘴里喃喃道:死鬼,整这么机密,然后继续拆,如下图:


小红用小明的公钥将数字签名进行解密,解密得到信息摘要,通过信息摘要是回不去的,所以只能将现有明文通过实现约定好的散列算法进行hash,同样得到信息摘要,然后将这两个信息摘要进行比对,如果信息摘要相同那么就没问题了,如果信息摘要比对起来不相等,那么说明消息在中间传送的过程中被篡改过。


RSA的详解可以看下这个链接:

http://www.ruanyifeng.com/blog/2013/06/rsa_algorithm_part_one.html



0 0
原创粉丝点击