对称加密,非对称加密,混合加密以及数字签名
一、对称加密解密方式
我们的数据传输对称加密过程如下:
例如,现在A方要将一段数据发送给B方,如果不加密的话,直接用明文传输,很可能在传输的过程中被恶意的第三方拦截到,轻则是B方接收不到数据,重则恶意的第三方篡改数据,让B方接收到错误的数据,使得A、B双方蒙受损失。于是我们要在A方进行数据加密,并且要在B方进行解密操作让B方得到数据,那么就需要加密解密的规则,这个规则被我们称为“钥匙”。
但是这种加密方式会出现一个问题,就是在发送的途中,钥匙和数据一起被坏人窃取了,坏人可能破坏数据和钥匙让B方接收不到,也可能使用钥匙解密了数据,然后篡改了数据,再把钥匙原路发给B方,让B方在察觉不到的情况下接收了错误的数据。
为了解决这个问题,权宜之计是对钥匙加密,也就是用一把钥匙去解密另一把钥匙,然后再用解密出来的钥匙解密获取数据。可是坏人要是想解密依然是可以的,只不过麻烦一点,要一层一层地用钥匙解密,不过破解的难度还是不高的。针对这种问题,美国密码学家惠特菲尔德·迪菲和马丁·赫尔曼合作发明了“迪菲-赫尔曼”协议,针对性地解决了对称加密中钥匙的安全性问题。
Note* :Diffe-Hellman(迪菲-赫尔曼)算法也叫DH算法是Whitefield Diffie和Martin Hellman在1976年公布的一种密钥交换算法或者说是一种密钥交换协议,它是一种建立密钥的方法,而不是加密方法,所以密钥必须和其他一种加密算法结合使用。这种密钥交换技术的目的在于使双方在不泄露密钥的情况下协商出一个密钥来方便之后的数据加解密。
Diffie-Hellman密钥交换算法的有效性依赖于计算离散对数的难度。
优点
通讯双方事先不需要有共享的秘密。
用该算法协商密码,即使协商过程中被别人全程偷窥(比如“网络嗅探”),偷窥者也无法知道协商得出的密钥是什么。
缺点
DH 算法本身也有缺点——它不支持认证。也就是说:它虽然可以对抗“偷窥”,却无法对抗“篡改”,自然也就无法对抗“中间人攻击/MITM”,也就是缺乏身份认证,必定会遭到“中间人攻击/MITM”。
为了避免遭遇 MITM 攻击,DH 需要与其它签名算法(比如 RSA、DSA、ECDSA)配合——靠签名算法帮忙来进行身份认证。当 DH 与 RSA 配合使用,称之为“DH-RSA”,与 DSA 配合则称为“DH-DSA”,以此类推
反之,如果 DH没有配合某种签名算法,则称为“DH-ANON”(ANON 是英文“匿名”的简写)。此时会遭遇“中间人攻击/MITM”。
二、非对称加密
针对传统加密方式的弊端,我们想出了新的对策,就是非对称加密,非对称加密是一种使用不同钥匙加密解密的方法,原理是这样的:
接收方B方先创建一对钥匙,包括一个加密钥匙,一个解密钥匙,也就分别对应我们刚才说的公钥和私钥
A方使用加密钥匙对数据进行加密
A方将密文发送给B方
B方使用自己的解密钥匙进行解密
通过这样的方式进行加密之后,坏人即使拦截了A方发送的数据,但是因为没有解密钥匙的缘故,也无法进行解密
同时,使用非对称加密还有一个好处,就是方便进行多方的数据传输———因为B方发布的加密钥匙也就是公钥只被用来加密,因此即使被很多人掌握那么对B方来说也是安全的,那么,B方就可以把同一把加密钥匙公开给多个人,然后多个人就可以一起给B方发数据,而不用为每个人分别准备一把公钥。
但是,非对称加密存在两个问题:第一个是使用此种方式的性能比较不好,第二个是在公钥的交付过程中可能会被攻击人拦截到并且替换成自己的公钥,让甲方和乙方在自以为很安全的情况下就泄露了自己的信息。
速度慢
非对称加密的速度比较慢,因为它采用的算法强度比较高,因此不适合用来传输少量数据,不值得为少量数据浪费性能,完全可以采用别的加密方式,或者使用混合加密方式来加密(后文会详解)
非对称加密是否可靠?
从前面的讲解来看,非对称加密是一种比较安全的方式,安全的地方在于没有对应的钥匙几乎不可能破解加密后的数据,但是,非对称加密的问题往往是出现在交付钥匙的过程上,我们来看下面一种情况:
–>B方创建公钥私钥并将公钥交给A方
–>坏人拦截了公钥,自己创建了一对公钥私钥,这里称为“坏公钥”和“坏私钥”
–>将公钥替换为自己创建的“坏公钥”
–>将“坏公钥”提供给了A方
–>A方使用了坏公钥加密数据,发送回B方
–>在发送的途中被刚才的相同坏人拦截
–>坏人使用自己的坏私钥解密了A方使用坏私钥加密的数据
–>坏人偷看A方发送的数据,或者干脆篡改了A发送的数据
–>坏人使用B方的公钥加密已经被偷看或者被篡改的数据
–>将数据发回给B方
–>B方发现自己依然可以用自己的私钥解密,因此会认为自己的数据还是安全的,根本不知道数据已经被人窃取或篡改了
混合加密可以解决第一个问题。
三、混合加密
当我们使用对称加密解密的时候,存在对称加密钥匙被劫持的问题,但是速度较快;
当我们使用非对称加密解密的时候,存在速度较慢的问题,但是比较安全。那么,如果将两种方式结合一下呢?
那就是我们的混合加密方式了,下面是混合加密的流程:
A方想通过互联网向B方发送数据
A方需要对数据进行加密,因为使用的是对称加密,所以加密密钥也是解密密钥,A方需要将这把钥匙发送给B方
使用混合加密的目的是把对称加密的钥匙通过非对称加密的方式发送给B方,防止对称加密的钥匙半路被拦截,因此,B方先要创建自己的公钥和私钥
然后B方把自己的公钥发送给A方
A方使用B方的公钥对自己的对称钥匙进行加密
发送给B方之后,B方再用自己的私钥对A的对称加密钥匙进行解密
至此,B方通过安全的途径得到了A方的对称加密的钥匙,可以用来解密了(注意,安全只是相对之前单纯地传送对称加密钥匙而言,此处的安全相当于半裸之于全裸,因为我们还是需要数字签名来做到真正的安全,后面会做说明)
现在,A方可以使用对称加密钥匙加密数据,B方可以通过同一把钥匙解密数据了
但是,我们还是没有解决在公钥的传输过程中被攻击人替换成假公钥的问题,因此,攻击人可以使用中间人攻击方法让A方使用假公钥加密,然后自己通过假私钥解密,再使用B的真公钥加密,然后发回给B,以此做到窃取AB之间使用的对称加密钥匙的目的。
因此,我们还是需要数字证书
四、数字证书
(明天再写吧)
参考文章: 对称加密,非对称加密详解_英俊帅比林的博客-CSDN博客
本文作者:AAA建材王师傅
本文链接:https://www.cnblogs.com/zz-w/p/17228282.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~