区块链科普篇——【非对称加密】
对称加密
在进行网络通信的时候,通信安全是一定要考虑的,也就要对信息进行加密与解密处理。
A对信息m用密钥进行了加密处理得到密文c,这个过程中,密文是可以放心的在互联网上传播的,被窃听了也没人能看懂。
B收到后用同样的方式进行解密(-e)就可得到A发送的信息m。这个e就可以理解为密钥。
因为加密和解密使用的方式是一样的,用的都是e,所以又叫对称加密。
这种方式本身没问题,但是核心问题点是:A如何只让B知道秘钥e,而不让其他人知道?有两种方法
1:私下找到B亲口悄悄的告诉他,并嘱咐他:千万不要对别人说哟。
这种方法能保证绝对的安全,但是在高速发展的互联网时代,明显是不现实的。
问题点在于,如何安全的把秘钥e传给B,安全不让第三者知道,这是最大的前提。那又怎么可能安全的传递密钥呢?因此非对称加密被发明出来,就是为了解决对称加密的这个最为致命的痛点。
非对称加密
接收方B利用RSA算法,产生一对儿密钥,用来放在网络上传输的我们叫公钥,自己保管的叫私钥。
加密的密文再传递给B【传输过程中密文即使被捕获了也无法破解,因为只能用私钥破解,而私钥无法获得】
数字签名
在解决了加密通信问题之后,又会出现个问题:就是B接收到了A发送的信息,可如何证明这信息就是A发出的呢?又如何证明这个信息没有被别人篡改呢?这时候就用到了数字签名。类比到现在生活中,就像我们在一个文件上签名了就证明这个文件是你发出来的,数字签名逻辑也是一样。
A自己利用RSA算法产生一对儿密钥(公钥和私钥)。
为了防止信息被篡改,A对传递的信息m进行散列算法处理(Hash哈希处理),产生一个固定长度的字符串。【一旦原文内容有变化,那么散列算法处理后的结果会完全不一样的】
随后A利用自己的私钥对这个散列后的字符串进行加密就得到了数字签名。
B接收后,先对原文信息解密,随后对解密的信息也进行散列化处理并得到散列字符串。
B利用A给的公钥对A传递的数字签名进行解密就得到了原信息的散列值。
B将自己散列化处理的字符串和对数字签名解密后的字符串进行对比,如果一样就能证明两件事:第一、信息没有被篡改【因为信息散列值一样(哈希一样)】第二、信息确实是A发送的【因为你能用A的公钥解密她加密的数字签名】
相信详细看完本文,一定会对加密通信全过程有个非常清晰的认识。
标签: