B 通过算法生成一对密钥 : 公钥(Pub_B) 和 私钥(Pri_B) ; 并且 B 将Pub_B 公开(如上传到密钥服务器或邮件发送) , Pri_B 严格保密
A 获取 B 的 Pub_B , 用其对明文 M 加密为密文 C ; 并将密文 C 通过网络发送给 B
B 接收密文 C 之后 , 用 Pri_B 解密 , 还原为明文 C
③ 中间人攻击
上述流程都存在着大量的安全隐患 , 比如中间人攻击 ; 中间人攻击是 HTTPS 需抵御的核心威胁
对称加密场景下的中间人攻击 :
A 和 B 未通过安全渠道共享密钥 , 选择在公开网络传输对称密钥 K
攻击者M 在信道中拦截 A 发送给 B的密钥 K ; 并且围在一个虚假的密钥 K` , 将 K` 发送给 B 同时保留真实的密钥 K
A 以为已经将 K 传给了 B , 实际 B 收到的是 K` ; 但 A 用 K 加密明文发送给 B 时 , 攻击者拦截密文 , 用 K 解密获取密文 , 再用 K` 加密后发送给 B ; B 用 **K`**解密 , 以为通信正常 , 实则所有内容已经被攻击者窃取了
最终结果 : 通信双方的密钥被截获 , 所有明文数据都能被攻击者解密篡改 , 对称加密完全失效
对称加密场景下的中间人攻击 :
B 将公钥 Pub_B 发布到未认证的公钥服务器上 , 未对其进行数字签名
攻击者 M 拦截 B 发布的真实公钥 Pub_B , 阻止其上传到公钥服务器 ; 并且攻击者生成自己的密钥对 ( Pub_M, Pri_M ) , 将 Pub_M 伪装成 B 的公钥上传的公钥服务器
A 从公钥服务器获取到 "虚假的 B 的公钥"(实际上是 M 伪造的) , 用 Pub_M 加密明文传输给 B ; 攻击者拦截密文 , 用自己的私钥 Pri_M 解密获取明文 , 再用 B 的真实公钥 Pub_B 加密后发送给 B ; B 用自己的私钥 Pri_B 解密 , 以为通信正常 , 实则明文已经被攻击者窃取
最终结果 : 发送方用伪造的公钥解密 , 攻击者可解析所有内容 , 非对称加密的安全性被突破
④ 数字证书
数字证书是防御中间人攻击的关键
核心逻辑 :
证书包含服务器真实公钥 , 域名 , CA 签名等信息 , 中间人无法伪造合法证书
客户端校验证书时 , 会通过一下两点识别伪造/篡改的证书 :
证书完整性校验 : CA 用私钥对证书明文哈希后的照耀加密形成签名 , 客户端用 CA 公钥解密签名得到摘要 hash1 , 再计算证书明文摘要 hash2 , 若不一致则证书被篡改