wordpress 结构,seo com,网站模板 可做采集站,wordpress搜索框下拉文章目录 HTTPS加密 常见加密方式对称加密非对称加密非对称对称数据指纹 证书CA认证数字签名非对称证书对称 中间人 HTTPS
这也是一个应用层协议#xff0c;是在HTTP协议的基础上引入了一个加密层
为什么要加密呢#xff0c;这主要是因为如果不对传输主体加密#xff0c;当… 文章目录 HTTPS加密 常见加密方式对称加密非对称加密非对称对称数据指纹 证书CA认证数字签名非对称证书对称 中间人 HTTPS
这也是一个应用层协议是在HTTP协议的基础上引入了一个加密层
为什么要加密呢这主要是因为如果不对传输主体加密当中间人拿到数据后可以对其中的关键内容进行保存甚至篡改
例如说把服务器ip改成自己的假装自己是服务器跟你通信
加密
加密就是把明文转换成暗文解密则相反
在加密和解密的过程中可能需要某些数据进行辅助这些数据称为密钥
例如说我们双方通信规定和把数据对114514按位异或
我要传输5201314这个数据异或之后就是5169904
然后这个数据在网络上传输
你收到5169904之后再对114514按位异或就能得到5201314了
这样我们其实就完成了一次加密通信但是实际情况远比这个复杂
常见加密方式
对称加密
刚刚我们传输的这个过程其实就是对称加密我们使用了同一个密钥114514也称之为单密钥加密
常见的由DES 3DES AES TDEA Blowfish RC2
这种加密的方式好处就是计算量小当然是对于计算机来说
速度快算法公开加密效率高
但是有一个问题我要怎么让你知道我使用的是什么方式加密呢
直接写在明文里吗那这样别人拿到不也能解密
除此之外服务器也不能记住所有客户端的密钥那也太二了
因此这个方式是有很大问题的
非对称加密
这个方式就是说一个密钥不够用了那我们设置两个吧
一个是公开密钥另一个是私有密钥
公开密钥谁都能拿到谁都能用但是私有密钥只有我自己用
信息用公钥进行加密编程密钥用私钥进行解密变成明文
但是私钥公钥的加解密非常复杂而且涉及到数论的知识实际上运算速度也很慢
非对称对称
因为如果双方都只使用非对称加密这样做效率十分低下而且也是有安全问题的
因此还是需要对称加密的
流程是这样的当客户端和服务器第一次交流时客户端获取到服务器中生成的公钥S而服务器自身有私钥S’
而客户端在本地也生成一个对称加密的密钥C用公钥S加密之后传递给服务器
之后他俩传递信息就用的是这个对称加密的密钥C
但是这样安全吗
也不安全如果中间人就盯着你们俩
中间人也准备了公钥M私钥M’
当客户端给服务器发送请求时服务器需要把自己的公钥S返还给客户端
这个时候中间人就拿到报文偷偷存了一份公钥S然后进行替换把服务器的公钥S换成自己的公钥M然后传给客户端
此时客户端也不道啊蒙在鼓里自己的C用M加密再发回去
中间人用M’解密得到C再用S加密传给服务器
这样做双方的交流过程其实是完全在中间人的眼里的
数据指纹
数据指纹本身并不是加密的机制而是一种思想
将数据或者数据的一部分通过哈希算法生成一串固定的内容
我们可以使用这种思想来存储或者查找数据因为一旦数据的内容不同了哈希生成的结果就不同了
证书
既然上面说的非对称加密都不安全了还有解决方案吗
实际上产生这些问题的原因就是无法确定收到的那个公钥是服务器的还是中间人的
因此我们只需要让服务器的公钥有一个特别显眼的标识
CA认证
服务器在使用HTTPS之前需要像CA机构申请一份数字证书里面包含了证书申请者的各种信息签发信息、域名、申请者、有效时间、最重要的是公钥
就像开锁师傅一定都是在公安局备案过的一样
CA认证也就是权威认证机构颁发的证书平台也会特定审查这个认证过程都挺繁琐的一般也都是找第三方平台帮忙解决
数字签名
数字签名其实就是对数据指纹进行加密主要是用于验证的防止数据被篡改
当我们生成了认证证书之后如何防止证书被篡改呢
CA机构把证书的内容进行数据指纹的提取然后用CA机构私钥加密得到一个数字签名
跟随着证书一起发去当对方收到这些之后用公钥对数据签名进行解密然后和证书进行比对一旦出现差错就说明证书有问题
这样做即便是服务器自身想要修改公钥都是不行的只能向CA机构申请因为数字签名是由CA私钥生成的一旦篡改就会被认为不安全
非对称证书对称
当客户端访问服务器时服务器会给客户端返回这个证书
客户端会对证书进行校验防止证书伪造
判断证书的有效期颁发机构是否信任证书是否篡改
这样就能确认公钥一定是服务器的而非中间人的了后面的对称也都是安全的了
中间人
这时候中间人如果想要篡改证书几乎是不可能的了
如果说是要掉包证书不能只改公钥因为哈希值不一样他没有服务器的私钥算不出来正确的哈希值
只能向CA机构申请真的证书来掉包
但是真证书里面是有服务器的域名认证信息的客户端收到之后就一脸蒙蔽
再其次这个申请确实麻烦需要成本