目录
HTTPS是什么
HTTPS也是一个应用层协议,是在HTTP协议的基础上引入了一个加密层(SSL/TSL)
HTTP是使用明文传输的,这就导致在传输过程中出现一些被篡改的情况
最典型的就是运营商劫持,点这个下载那个,因为我们的网络都是经过四大运营商的网络设备(路由器,交换机...),这时候运营商就可以篡改服务器返回给浏览器的数据
HTTPS就是在HTTP的基础上对明文进行加密,进一步的保证用户的安全
HTTPS的工作过程
加密
谈到加密先来拜拜图灵祖师爷,也是密码学之父
加密就是把 明文(传输的信息) 进行变换,转换成密文
解密就是把 密文 ,进行一系列的变换还原成明文
密钥就是辅助加密和解密的工具
我们平时看到的藏头诗本质上就是加密,比如你问我你喜欢听谁的歌,我就会说:
林间鸟声喧
俊出声铮铮
杰阁坐褫带
明文 : 林俊杰
密文: 这首诗
秘钥: 告诉你这是一首藏头诗
加密的方式可以分为 对称加密 和 非对称加密
对称加密
在对称密钥加密中,加密算法使用相同的密钥对数据进行加密和解密。发送方使用密钥将明文数据加密成密文,并将其发送给接收方。接收方使用相同的密钥对密文进行解密,以恢复原始的明文数据。
它具有高效性能,但需要注意密钥的安全性和分发的问题。
可以对一串字符进行对称加密
明文 -> 密文: 123abc -> cba321
密文 -> 明文: cba321 -> 124abc
秘钥:反转字符串
使用反转字符串这个密钥可以实现 明文变密文 和 密文变明文,这就是对称加密
对称加密的工作过程
这时候黑客来了, 马上拿到key对数据进行了篡改,还是不安全,这时候就引出了相比之下更安全的非对称加密
上述对称密钥是发送key的时候key被截获了所以非对称密钥是对key进行加密,保证在建立连接中,客户端向服务器发送key的时候,不会被黑客截获key,这时候后面的传输就安全了
非对称加密
非对称加密用到的是两个密钥,分别是 "公钥" 和 "私钥"
在非对称密钥加密中,公钥用于加密数据,而私钥用于解密数据。发送方使用接收方的公钥对数据进行加密,并将加密后的数据发送给接收方。接收方使用自己的私钥对密文进行解密,以获取原始的明文数据。
非对称密钥加密具有较高的安全性,广泛应用于安全通信、数字签名和身份验证等领域。
(自己留着的就是私钥,发出去的就是公钥)
非对称加密工作过程
这样就完事了吗,当然没有,黑客使用乾坤大挪移,自己也生成了一对密钥,把服务器的公钥换成了自己的,这样,客户端传输的key又被黑客骗走了,请看下图
中间人攻击:
上述的为所欲为和为非作歹都可以理解为解析和篡改数据之类的...
这样就完事了吗,黑客笑的太早了
鉴于黑客太狂了,我们在密钥之上再加一个证书
证书:
证书可以理解为结构化的字符串,里面包含了以下信息:
- 证书发布机构
- 证书有效期
- 公钥
- 证书所有者
- 签名
- ....
当客户端获取到证书的时候,会对证书进行校验(方式黑客伪造证书)
- 判定证书是否过期
- 判定证书的发布机构是否受信任(操作系统中已内置的受信任的证书发布机构)
- 验证证书是否被篡改: 从系统中拿到该证书发布机构的公钥, 对签名解密, 得到一个 hash 值(称为数据摘要), 设为 hash1. 然后计算整个证书的 hash 值, 设为 hash2. 对比 hash1 和 hash2 是否相等.如果相等, 则说明证书是没有被篡改过的.
数据摘要/签名:
不同的数据,生成的签名差距是非常大的,这样的签名,就可以区分不同的数据
常见的生成签名的算法: MD5 和 SHA系列
设计过算法的证书只要被改了一点点,签名就会有非常大的区别
综合而言,对称密钥适用于大量数据的加密和解密,但在密钥分发和管理方面存在挑战;非对称密钥提供了更高的安全性,但速度较慢,适用于密钥交换和数字签名等场景。在实际应用中,通常使用混合加密方案,结合对称密钥和非对称密钥的优点,非对称密钥辅助堆成密钥,以达到安全性和效率的平衡。