您现在的位置是:首页 >技术杂谈 >HTTPS的加密技术——中间人攻击网站首页技术杂谈
HTTPS的加密技术——中间人攻击
HTTPS的加密技术
http
和
https
之间相差一个字母,两者之间有什么区别呢?
http
的出现要早于
https
,使用
http
在网络中传输数据时,数据在网络上相当于是明文传输的,就意味着数据可以被随意篡改,比如说一些常见的,病毒携带,信息劫持,运营商劫持,存在一定的风险,为了改善这些问题,需要引入一些加密操作,保护数据的安全性。
https
便应运而生!
认识HTTPS
https
是基于http
协议和TCP
之间添加一个TLS/SSL
层来加密传输的数据,以确保传输过程中的隐私和安全。加密和解密数据是一种什么操作呢?
加密:明文-》密文
解密:密文-》明文
加密的由来——认识图灵鼻祖
计算机之父除了冯诺依曼,还有英国的图灵也是计算机之父,不过图灵鼻祖是构思计算机的鼻祖,而冯诺依曼是制造计算机的鼻祖,两个人在计算机发展的路程上有着不可抹灭的影响。在二战时期,赢得二战的胜利离不开图灵对密码的研究成果,也因此有了密码学的基础,所以说图灵是密码开山鼻祖与冯诺依曼,开启了一个新的时代,这里就不在赘述,有兴趣的小伙伴可以自行查询相关文献。
对称加密和非对称加密
对称加密:只有一个密钥key
,也就是说数据可以靠这个密钥对明文进行加密和解密。对资源消耗也相对比较少,是最普遍使用的一种加密方式。
优点:
使用同一个
密钥
,加密解密速度快,效率高计算速度快,不需要额外复杂的计算
适合大量数据的传输,加密效率高,传输速度快
缺点:
密钥
的管理相对难一些,需要保证密钥的安全性无法进行
密钥
的安全共享,因为密钥
是相同的,无法传输到对方使用并解密密钥的泄漏会造成非常大的风险,安全性难以保障
非对称加密:有两个密钥pub
和pri
两个密钥相互制约,使用pul
加密的数据,只能使用pri
进行解密操作,反之,使用pri
加密的数据,只能使用pul
进行解密操作。
优点:
- 安全性能高,
密钥
是私钥(pri)
和公钥(pul)
的结合体,可以保证数据的安全性和完整性。- 可以大规模对
公钥
进行传播和共享,并且不容易被恶意攻击者盗取- 在数字签名和验证方面具有优势,数字签名验证发送方的身份,可以确保信息的真实性和完整性
缺点:
- 使用两个
密钥
值,操作较为复杂,加密和解密效率慢- 算法复杂,需要自行生成
公钥
和私钥
,也需要大量的计算资源和时间- 适用于少量数据传输,传输效率较低
对称加密和非对称加密有各自的优点和缺点,可以根据具体场景来使用不同的加密算法。
针对https
的加密部分主要是header
和body
部分的数据内容。
一个https
报文:
橙色框是:header
部分
红色框为:空白行,是body
是开始
绿色框:body
部分
接下来我们针对使用不同的加密算法进行分析:
①只使用对称加密方式
客户端和服务器各自生成一个key
:
客户机发送的数据都是由key2
加密的,服务器无法解析,而服务器发送数据都是由key1
加密的,客户机无法解析,如果单纯使用明文传播,那么加密就没有意义,相当于在大街上裸奔?!!!
②只使用非对称加密
客户机服务器各自生成非对称密钥,分别使用对方的公钥
进行加密操作:
可以发现双方数据传输成功!不过需要注意的是,非对称密钥不适合大量数据传输。而且计算相当复杂,传输效率低。虽然数据安全可以得到有效保障,不过对于效率来说,的确没有优势可言。既然你需要效率,而对称密钥算法效率高,将两者结合又会出现什么情况呢?
③两种加密算法联合使用
服务器负责生成非对称密钥,客户端生成对称密钥,只需要使用一次非对称密钥传输客户端的对称密钥即可,具体步骤:
两个端口使用两种加密方式传输数据的确大大提升数据传输的效率。而黑客
也无法将数据进行解密操作,对于安全性也大大提升了,服务器和客户端之间的数据也可以得到保障,这就是双重密钥加密过程。
?♂️中间人攻击
在基于双重加密的数据传输过程中,也存在不安全的因素!中间人攻击
是对这种方式的一大打击对象,使用中间人攻击
可以有效获取对方生成的key
从而达到劫持数据的目的。
基于双重加密的基础上:
好一招“偷梁换柱”,基于黑客这样处理数据的情况下,服务器和客户机的数据被一览无遗,这就是中间人攻击
,利用自身生成的pul2
换掉服务器的pul
,此时此刻的客户机并不知情,使用黑客的pul2
对自己的key
值加密,此刻的黑客
只需要使用pri2
来解密就可以得到客户机的key
。以后来往两者之间的数据即可被黑客获取。
?引入证书
中间人攻击对通信又是一大打击,不过对于数据传输的安全性,还是有办法可以得到解决——引入证书
。证书可以保障服务器与客户机通信不受任何外界因素影响,极大的保障网络通信的安全性和双方的身份和信息安全。
证书的特点有一下几点:
身份验证:证书可以证明通信的服务器身份。
保密性:证书使用公钥和私钥对通信内容进行加密和解密,保障了通信过程中的数据保密性,避免敏感信息被中间人获取或篡改。
完整性:证书可以保证数据的完整性,在证书有一个校验证明,使用这个数值与收到的数字签名进行匹配,避免通信工程中数据被篡改。
接下来画图来分析这个证书如何保障数据安全和完整性:
证书中的关键信息:
服务器域名 :为了验证服务器信息
公钥 :让客户机得到公钥,对数据使用公钥加密
证书机构
签名:验证服务器身份的关键。
客户端使用证书签名的过程。
首先,是客户端向服务端发起一个请求连接,服务器收到请求,返回一个数字证书。
第二步,客户端收到证书,使用预先内置在浏览器或操作系统中的CA根证书列表进行证书认证。CA根证书列表中存放的是可信的证书颁发机构,用于验证服务器发送的证书可信度。
第三步,客户端检查证书的可行度,如果证书是由可信的证书颁发机构颁发,证书中的数字签名将被验证。如果验证成功,客户端就可以确认服务器的身份,公钥和其他证书信息,并且将其公钥作为后续通信加密数据。
第三步如果失败,跳到第四步,验证失败或者证书不安全,客户端就会出现安全警告或者拒绝连接,这就是为什么有时候在浏览器中可以看到“连接不安全”等字样的原因。
总结https加密技术??
https
是基于http
的一层加密技术,有两种加密方式
,针对不同的数据传输可以使用不同加密算法结合使用,最常用也最安全的是双重加密技术
,不过单独使用还是会有风险,对于中间人攻击
这个算法也会被偷梁换柱,于是需要引入证书
对症下药,以此来保障数据的安全性和完整性
。