1.网络传输的安全隐患
从客户端到服务器,中间要经过很多的节点。如平常在家使用网络。从我们的电脑---路由器---猫---小区的---区---市........一直到目标服务器。那么在这个中间,这么多节点都可以获取到传输的数据。如果不对数据进行加密的话,就可能被某一个节点盗取或者伪造等。
2.对称加密
对称加密是指客户端和服务器端都拥有相同的密码,一端加密,一端解密。但是,密码怎么从一端传输到另一端呢,这同样存在安全问题
3.非对称加密
非对称加密的关键是公钥-私钥。公钥是通过私钥获取的。
公钥加密的私钥可解,私钥加密的公钥也能解,但是公钥加密的公钥不能解。
客户端先和服务器进行三次握手,建立稳定连接。第四次握手"hello",确定数据的加密算法(1),并且服务器把公钥传输给客户端。客户端使用加密算法(1)对数据进行加密。再把密码使用公钥进行加密(2)。注意这里有两套加密算法,一套是加密数据的算法-对称加密算法,一套是加密密码的算法-私钥-非对称加密。然后把加密后的数据和密码传给服务器,服务器获取后,使用私钥解密获取密码,再通过密码解密获取数据。
1.三次握手建立稳定连接
2.第四次握手,确定对称加密算法,并且服务器把服务器.公钥发送给客户端。在这个过程中,所有在建节点都获取了这个公钥
3.客户端对数据使用对称加密算法进行加密,会有一个解密密码,并且使用服务器.公钥对解密密码进行加密,把对称加密后的数据和非对称加密后的解密密码传输出去
4.中间节点可以获取这些信息。它手上拿有服务器.公钥,但是服务器.公钥加密过的解密密码是无法通过公钥解密的,所以无法获取对称加密的密码
5.服务器获取后,通过私钥解密获取对称加密的密码,在通过密码解密获取数据
但是,在这个过程中,还是可能存在问题。中间的节点可以伪造服务器公钥。在步骤2,它可以使用自己的私钥创建公钥返回给客户端,这样子客户端使用,的是中间节点提供的公钥加密密码,中间节点就可以解开。
可能还有一个疑问:为什么不直接使用非对称算法加密要传输的数据呢?因为效率问题,非对称加密的效率要远远低于对称加密。所以使用非对称加密一个密码采用对称加密加密数据,远比直接非对称加密传输的数据来的高效
4.证书
为了解决上面的中间节点伪造的问题,加入了一个中间人-证书颁发者。
证书颁发者:收到信任的中间人。比如阿里是证书颁发者,可以颁发证书
需要证书时,需要向证书颁发单位提供公钥(服务器.公钥)、营业执照、域名等信息
证书颁发者通过自己的私钥-证书颁发者.私钥对(服务器.公钥、营业执照、域名等信息)进行加密,生成证书,把证书颁发给服务器端。证书颁发者的公钥会内嵌在在计算机的操作系统里面,这一点非常重要。
这样子第2步服务器端返回给客户端的就不是自己的公钥,而是证书了
1.三次握手建立稳定连接
2.第四次握手,确定对称加密算法,并且服务器把服务器信息-证书发送给客户端。在这个过程中,所有中间节点都获取了这个证书
3.客户端获取系统内置的颁发者-公钥,使用公钥解密,获取服务器.公钥,服务器域名等信息。客户端对数据使用对称加密算法进行加密,会有一个解密密码,并且使用服务器.公钥对解密密码进行加密,把对称加密后的数据和非对称加密后的解密密码传输出去
4.中间节点可以获取这些信息。它手上也有证书,也可以获取颁发者.公钥解密,获取服务器.公钥,但是服务器.公钥加密过的解密密码是无法通过公钥解密的,所以无法获取对称加密的密码
5.服务器获取后,通过私钥解密获取对称加密的密码,再通过密码解密获取数据
在这个过程中,加入了证书,中间节点无法伪造公钥。
第二步,服务器传输证书,经过中间节点,中间节点可以解开证书,获取服务器.公钥等信息。但是它没有颁发者.私钥,把服务器.公钥替换成自己的公钥后,无法使用私钥加密,也就是不能伪造证书。也就是说,中间节点只能返回使用颁发者颁发的证书,如果他自己去申请证书,把中间节点.证书返回,但是证书是包含了域名信息的,域名信息对应不上,替换也是失败的。
为什么有了非对称加密,不直接使用非对称加密对数据进行加密,而是先使用对称加密对数据进行加密,再通过非对称加密对对称加密的密码进行加密呢?
因为,对称加密的效率远远高于非对称加密
还可能存在下面这种情况:
客户端加密好数据,发现服务端,经过中间节点的时候
中间人不去解密数据,而是造假数据,使用证书颁发者的公钥对证书进行解密,获取到服务器公钥
使用伪造的密码m1通过对称算法对伪造的数据d1进行加密获得 s2,再使用服务器的公钥对伪造的密码m1进行加密 s1
再把s1、s2都交给服务器
服务器通过服务器私钥对s1进行解密获得m1,通过m1对s2进行解密,获得d1
那么服务器获取的就是假数据了
服务器是否是通过数据里面的标识来判断数据的真伪的呢?比如说cookie?
5.证书颁发者信任问题
在上述中,加入了中间颁发者,如果证件颁发者造假,那就没有办法了。所以只有被广大用户任性的格式颁发的证书才被认可。
而银行等对安全要求极高的单位,对任何中间颁发者都不信任。
所有银行一般对于大客户,通常开通网上银行,会给他们一个物理的密码狗。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?