欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

浅尝https

程序员文章站 2023-08-23 11:34:47
HTTPS http超文本传输协议,所以的东西都是明文传输,容易被拦截,被攻击,我们希望能对通话内容进行加密,那么因此而生,出现了https https:在http的基础上新增加了SSL层 先放图 // http 超文本传输协议// https 加密的超文本传输协议 // 对称加密浏览器生成一个秘钥 ......

https

  http超文本传输协议,所以的东西都是明文传输,容易被拦截,被攻击,我们希望能对通话内容进行加密,那么因此而生,出现了https

  https:在http的基础上新增加了ssl层

  先放图

  浅尝https

// http 超文本传输协议
// https 加密的超文本传输协议

// 对称加密
浏览器生成一个秘钥,然后将秘钥传输给服务器,之后每次传输浏览器都使用该秘钥加数据加密传输给服务器
服务器使用得到的秘钥解密加密的数据,因为使用的是同一个秘钥所以称为对称加密
缺点 秘钥容易被截取,难么也相当于裸奔了

// 非对称加密算法 rsa
秘钥分成公钥和私钥 公钥是大家都知道的,私钥是要保存好,谁都不能告诉的。 经过公钥加密的数据,只有通过对应的私钥才能解密
浏览器有自己的公钥和私钥,服务器也有自己的公钥和私钥
1浏览器拿到服务器的公钥,将数据加密,传送给服务器,服务器用自己的私钥解密,拿到传输数据
2服务器也可以拿到浏览器的公钥,加数据加密,传输给浏览器,浏览器通过自己的私钥,将私钥解密,拿到服务器返回的数据
这样一来秘钥就不会被截取了,所以的信息也都加密了

缺点 rsa加密,比较慢,比对称加密慢个几百倍,所以需要改进

// 非对称加密和 对称加密结合
浏览器生成一个秘钥,将其作为数据,通过非对称加密传输给服务器,服务器通过自己的私钥,拿到这个对称加密的秘钥
之后数据传输我们就用对称加密,对称加密的秘钥也有了

完美了解决了,数据加密,也防止了秘钥被拦截 ,good

// 中间人攻击

中间人截取服务器给客户端发送的公钥,将中间人的公钥发给客户端,那么客户端用中间人的公钥加密的数据,就能被中间人解密,
中间人拿到服务器的公钥,加密数据传输给服务器,服务器也能拿到客户端的数据,并且毫无察觉,数据其实已经被截取了。

// 解决中间人攻击,也就是要确认对方身份信息

// ca 有信度的公正中心

服务器将自己的公钥,认证信息,其他消息,用hash算法生成 消息摘要
服务器将消息摘要找ca ,用ca的私钥对齐进行加密 生成数字签名
然后服务器将 公钥,认证信息,其他消息组合的混合消息和数字签名组合成数字证书,发送给客户端
然后客户端拿到该数字证书
客户端用相同的hash算法将混合消息生成消息摘要,
客户端拿到ca的公钥,将数字签名进行解密,得到服务器生成的消息摘要,进行对比,就知道有没有被串改
这要就完美的防止了中间人攻击

总结一下,https的整个过程

客户端像服务器发送请求
1.客户端想服务器请求公钥
2.服务器将数字证书,包括公钥key,数字签证(数字签证是通过ca私钥加密的)等信息 返回客户端
3.客户端验证服务器信息,通过ca的公钥解密数字签字,验证公钥key是否是服务器的,
4.客户端生成对称加密秘钥,通过服务器的公钥加密传输给服务器
5.服务器得到信息,通过自己的私钥,解密数据,得到对称加密的秘钥
6.双发都知道秘钥了,可以开始加密传输数据了