前面简单讲了安全加密体系,安全加密体系链接
在结合了对称加密,非对称加密,定向散列这三种加密算法后,通信效率的提高了,通信地安全性的增强了。可是还是有一个致命地漏洞,也就是在使用非对称加密的过程中,需要用到对方的公钥对数据进行加密,那么如何得到对方的公钥呢,通过网络传输得到对方的公钥可信吗?显然是不可信的。为何不可信,先来了解下“中间人攻击”。
假设A请求B的公钥,此时有X发动了中间人攻击,情况描述如下:
A请求B的公钥,请求被X截取,X代替A向B去请求公钥。B收到请求后,会给请求者分发他的公钥。结果B的公钥被X截取,X冒充B将自己的公钥给A。此时各人的状态是:X获得了B的公钥,而A获得的是X的公钥。这一系列过程对于A是浑然不知的,A以为自己刚才获得的就是B的公钥,结果拿着这个假公钥对数据进行加密后发送给B,数据被X截获,用X的私钥解密后,就可以为所欲为了,(窃取信息,篡改数据等),之后将"脏数据"用真实的B的公钥加密,把结果发送给B,B收到了信息,用自己的私钥解密,可是这个数据已经"脏"了。
以此原理,用户在用密码登陆某网站的时候,客户端是要发送密码到服务端验证的。假设客户端获得了假公钥,用假公钥加密数据,那密码岂不是泄露了!
因此这个通信的关键是否能验证对方的公钥是否是真实的,这就需要引入第三方权威机构–CA
再拿刚才A请求B的公钥的情况来说:从宏观上来说,CA是一个权威机构,他会颁布一个叫做"数字证书"的东西给B,这个数字证书上有B的公钥。而B收到公钥请求以后,不再直接分发自己的公钥,分发的而是自己的数字证书。这个数字证书是不能被中间人X篡改的,A收到B的数字证书以后,验证这个数字证书的真实性,如果确实是自己所信任的CA颁布的,就可以使用数字证书上的公钥加密继续通信了。
我们访问的某些网站,协议是https,这样的就是可信任的网站,因为它拥有权威CA颁布的数字证书;而某些网站协议http在chrome上就会提醒用户这个网站不可信任,有安全风险。
先来看下流程图:
B倘若需要申请一个数字证书,需要通过某种安全的方式将自己的公钥给到CA,CA使用自己的私钥加密B的公钥,之后将数字证书发送给B,B的数字证书颁发完成。当A向B申请公钥的时候,B向A分发的是B的数字证书。A自带CA的公钥,y因为每个操作系统出厂的时候会自带权威CA的公钥,这样就可以用CA的公钥解密CA的私钥,得到B的公钥。
这一流程的意思就是说:该证书确实是CA颁发的,可以信任B给的公钥
为什么数字证书在发送过程中不能被篡改?
假设X将证书拦截篡改,但是他没有CA的私钥可以签名,A拿着CA的公钥解不开私钥,就说明这个证书有问题。
本文地址:https://blog.csdn.net/weixin_41248237/article/details/108987939