HTTPS协议
**
**
https就是应用层添加了一层加密层,基于http进行加密解密。
运营商劫持
由于我们通过⽹络传输的任何的数据包都会经过运营商的⽹络设备(路由器, 交换机等), 那么运营商的⽹
络设备就可以解析出你传输的数据内容, 并进⾏篡改.
点击 "下载按钮", 其实就是在给服务器发送了⼀个 HTTP 请求, 获取到的 HTTP 响应其实就包含了该
APP 的下载链接. 运营商劫持之后, 就发现这个请求是要下载天天动听, 那么就⾃动的把交给⽤⼾的响应
给篡改成 "QQ浏览器" 的下载地址了.
所以:因为http的内容是明⽂传输的,明⽂数据会经过路由器、wifi热点、通信服务运营商、代理服务
器等多个物理节点,如果信息在传输过程中被劫持,传输的内容就完全暴露了。劫持者还可以篡改传
输的信息且不被双⽅察觉,这就是 中间⼈攻击 ,所以我们才需要对信息进⾏加密
加密方式
对称加密
采⽤单钥密码系统的加密⽅法,同⼀个密钥可以同时⽤作信息的加密和解密,这种加密⽅法称为对
称加密,也称为单密钥加密,特征:加密和解密所⽤的密钥是相同的
对称加密其实就是通过同⼀个 "密钥" , 把明⽂加密成密⽂, 并且也能把密⽂解密成明⽂.
非对称加密
公钥加密,私钥解密:
- 发送方使用接收方的公钥加密信息。
- 接收方使用自己的私钥解密信息。
- 由于只有私钥才能解密公钥加密的内容,其他人即使知道公钥也无法解密消息,确保了数据安全。
数据摘要
是一种通过特定的哈希算法,将任意长度的输入数据压缩为固定长度的输出值的过程。它是数据的唯一指纹,确保数据的完整性。
中间人攻击
中间人攻击(Man-in-the-Middle Attack, MITM)是一种网络攻击方式,攻击者通过截获、篡改或伪造客户端和服务器之间的数据包,充当"中间人"进行信息窃取或数据篡改。受害者通常并不知道攻击者的存在,仍认为自己在安全地与对方通信。
中间人攻击的步骤
-
监听通信 :
攻击者通过伪装成双方通信的一方或通过网络嗅探,获取客户端和服务器之间传输的数据。攻击者可以在公共 Wi-Fi、被劫持的路由器、恶意代理服务器等场景下进行监听。
-
截获数据 :
攻击者截获客户端与服务器之间的数据包,并能读取、篡改或重新发送这些数据。未经加密的数据如用户名、密码等敏感信息,可能会被窃取。
-
伪装身份 :
攻击者可以伪装成合法的服务器或客户端,与另一方继续通信,进行身份欺骗。例如,攻击者可以伪造银行网站的界面,诱骗用户输入登录信息。
-
数据篡改 :
攻击者不仅可以监听,还可以篡改通信内容。比如在用户提交某个表单时,攻击者篡改表单的内容,改变用户提交的数据。
中间人攻击的类型
-
Wi-Fi 中间人攻击 :
在公共 Wi-Fi 网络中,攻击者可以通过伪造接入点或利用未加密的网络截获用户的通信数据。
-
DNS 劫持 :
攻击者通过篡改 DNS 解析,将用户访问的网站域名指向恶意服务器,伪装成合法网站,窃取用户信息。
-
HTTPS 劫持 :
攻击者通过伪造 SSL/TLS 证书,冒充合法网站,用户在不知情的情况下与攻击者建立连接。受害者以为自己与安全的 HTTPS 网站通信,但实际上数据被中间人解密和篡改。
-
SSL 剥离攻击 :
攻击者将 HTTPS 通信降级为 HTTP 明文传输,从而窃取用户与网站之间的未加密信息。
CA证书
因为客⼾端⽆法确定收到的含有公钥的数据报⽂是⽬标服务器发送过来的所以引入了CA证书的概念
服务端在使⽤HTTPS前,需要向CA机构申领⼀份数字证书,数字证书⾥含有证书申请者信息、公钥信
息等。服务器把证书传输给浏览器,浏览器从证书⾥获取公钥就⾏了,证书就如⾝份证,证明服务端
公钥的权威性
客户端要先拿到证书,验证证书的合法性。
如何保证证书的权威性呢?证书公钥是否被改过?
证书中有一个签名,通过验证与数据进行验证,一致则表示内容没有被篡改。
客户端会将证书的明文与签名拆分,客户端会内置权威CA机构的公钥
客户端将会用CA机构的公钥对签名进行解密,明文形成的数据摘要进行对比,内容一致则说明了服务器公钥的合法性。
CA机构有自己的公钥和私钥 --和上面的公钥和私钥并无关系。
HTTPS加密的全过程:
HTTPS(HyperText Transfer Protocol Secure)是基于HTTP和SSL/TLS的安全通信协议,确保客户端(如浏览器)与服务器之间的通信是加密的、完整的,并且身份是经过验证的。HTTPS的加密过程主要是通过SSL/TLS协议实现。以下是
1. 客户端发起HTTPS请求
客户端(通常是浏览器)向服务器发出HTTPS请求,告知服务器希望建立安全连接,并发起SSL/TLS握手。这一步中,客户端还会发送一个包含它支持的加密算法、SSL/TLS协议版本等信息的列表。
2. 服务器返回证书
服务器接收到请求后,会返回自己的SSL/TLS证书 ,也称为CA证书。这个证书由权威的证书颁发机构(CA)签署,内容包括服务器的公钥、服务器域名、证书有效期、CA的签名等信息。
3. 客户端验证服务器证书
客户端使用内置的受信任的根证书列表来验证服务器返回的证书。验证主要包括:
- 证书是否由受信任的CA签发。
- 证书的域名与实际访问的域名是否匹配。
- 证书是否在有效期内。
- 证书是否被吊销(通过CRL或OCSP进行验证)。
如果证书验证失败,客户端会向用户显示安全警告;验证通过后,客户端将继续与服务器进行通信。
4. 客户端生成随机密钥
客户端在验证服务器证书后,生成一个随机的对称加密密钥 ,称为会话密钥,用于后续的加密通信。这一步是非常关键的,因为对称加密算法的计算效率较高,适合大规模数据的加密。
5. 客户端用服务器公钥加密会话密钥
客户端使用服务器证书中的公钥 来加密生成的会话密钥。由于非对称加密的特性,只有服务器拥有与公钥对应的私钥,因此只有服务器能够解密这个会话密钥。
6. 服务器使用私钥解密会话密钥
服务器接收到客户端加密的会话密钥后,使用自己的私钥将其解密,从而得到客户端生成的会话密钥。
7. 建立对称加密的安全通信
客户端和服务器都持有相同的会话密钥,接下来双方使用这个会话密钥进行对称加密的通信。对称加密算法(如AES、ChaCha20等)可以快速加密和解密大规模数据,确保通信的保密性。
8. 发送加密数据
此时,客户端和服务器之间的所有通信数据,包括HTTP请求和响应,都会使用会话密钥进行加密传输。这确保了第三方无法窃听、篡改或伪造通信内容。
9. 结束连接
当通信结束时,客户端和服务器可以关闭连接。在关闭连接时,双方会清除当前会话的加密密钥,以防止会话被劫持或重用。
HTTPS的安全性机制
- 加密:通过对称加密(使用会话密钥)和非对称加密(公钥和私钥)保证通信内容的保密性。
- 身份验证:通过CA签发的证书,确保服务器的身份是可信的,防止中间人冒充合法服务器。
- 数据完整性:通过消息摘要算法(如SHA-256)和消息认证码(MAC)来保证数据在传输过程中未被篡改。
HTTPS防御中间人攻击
由于HTTPS在建立连接时通过服务器的数字证书验证服务器的身份,攻击者无法伪造合法的证书,因此有效防止了中间人攻击。即便攻击者截获了通信数据,由于缺少私钥,也无法解密加密的数据。
消息认证码(MAC)来保证数据在传输过程中未被篡改。