ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

网络原理HTTPS

网络原理HTTPS 1. HTTPS是什么HTTPS也是应用层的协议在HTTP基础上引入了加密层。HTTP协议是按照文本的明文方式传输的就会导致在过程中出现被篡改的情况例如“运营商劫持”。如果进行明文传输不仅用户隐私信息甚至用户的账户余额及支付密码都会暴露。2. “加密”是什么加密就是把明文传输的信息经过一系列转换生成密文。明文: h e l l o 想发送的真实内容 3 3 3 3 3 规则每个字母后移 3 位 密文: k h o o r 信道上实际传输的内容解密就是把密文进行一系列变换还原成明文。密文: k h o o r -3 -3 -3 -3 -3 拿同一把钥匙反着移回来 明文: h e l l o ✅ 还原成功3. HTTPS的工作过程3.1 对称加密就是通过同一个密钥可以把明文加密成密文也可以把密文解成明文。服务器同一时刻需要为多个用户提供服务需要维护不同用户的密钥每个人的密钥必须不同所以要想维护每个人的密钥非常麻烦。所以比较理想的办法是在双方建立连接的时候来商量密钥是什么但是呢如果把密钥进行明文传输那么黑客也能获取密钥所以密钥也需要加密传输但是“密钥的密钥”就成了一个新问题。所以需要引入非对称加密。3.2 非对称加密非对称加密需要两个密钥分别为“公钥”和“私钥”这两个是配对的缺点是运算速度慢比对称加密慢不少。通过公钥对明⽂加密变成密文通过私钥对密文解密变成明文两个钥也可以反着用。客户端在本地生成对称密钥再通过公钥加密发送给服务器。即便是中间有设备捕获这个密文在没有私钥的情况下无法得知里面的密钥。服务器通过自己的私钥对密文进行解析得到里面的对称密钥并使用这个对称密钥加密给客户端的响应数据。后续的通信使用对称密钥加密即可由于对称密钥只有客户端和服务器知道即使中间有设备拦截数据也无济于事。此时有了新问题客户端怎么获取的公钥客户端怎么确定获取的公钥不是黑客伪造的3.3 中间人攻击黑客通过攻击获取对称密钥。服务器有非对称加密算法的公钥S私钥S黑客有非对称加密算法的MM。客户端给服务器发送请求服务器明文返回公钥给客户端。中间人劫持数据获取公钥S并保存把被劫持的报文里的公钥换为自己的公钥M将伪造的报文发给客户端。然后客户端使用M将手里的对称密钥X进行加密再发出去黑客获取到这个报文利用手里的私钥M 解密获取密钥X黑客利用之前保存的S给X进行加密发送给服务器。服务器拿到报文后利用手里的私钥S 对报文解密获取里面的密钥X。之后客户端和服务器利用密钥X进行通信但是中间人已经知道了密钥所以可以获取通信数据甚至修改。3.4 引入证书服务端使用HTTPS之前需要向CA机构申请数字证书数字证书含有申请者、公钥信息等。服务器把证书传给浏览器浏览器从里面获取公钥。证书包含信息证书发布机构证书有效期、公钥、证书所有者、签名等。申请证书会生成密钥对公钥和私钥公钥写进证书私钥服务器藏好不公开。3.5 数字签名当服务端申请CA证书的时候CA机构会对服务端进行审核并为该网站形成数字签名过程如下CA机构有非对称加密算法的公钥A和私钥ACA机构对服务端生成的证书明文进行hash形成数据摘要然后对数据摘要需要用CA的私钥A进行加密得到数字签名S服务端申请的证书明文和数字签名S组合成数字证书发给服务端3.6 使用证书解决中间人攻击客户端建立连接的时候服务端给客户端返回了证书证书包含了公钥和网站身份信息。客户端获取证书后会对这个证书进行校验判断证书是否过期判断证书发送是否信任操作系统已内置受信任的发送机构客户端取出证书的明文使用相同hash的方法计算一遍摘要得到摘要1使用内置的CA公钥A解开数字签名S得到摘要2如果摘要1和摘要2相同则证明是正确的证书反之证书可能被人篡改3.7 中间人有无可能篡改该证书中间人篡改了证书中间人没有CA的私钥无法hash后对私钥加密形成签名也没法对篡改后的证书形成匹配的签名如果强行篡改客户端发现 hash后证书的明文 和 解析数字签名的值 对不上说明证书已被篡改停止向服务器发送信息3.8 中间人掉包整个证书中间人没有CA的私钥没办法造假证书。中间人只能向CA申请证书然后进行掉包。但是证书里是包含服务器域名等相关信息的客户端依旧会察觉。记住一点中间人没有CA的私钥无法对任何证书进行修改。4. 常见问题1为什么摘要内容在网络传输中一定加密形成签名只发明文 哈希能验完整性但哈希是明文传输的 → 黑客改hello为hella顺手重算 MD5 一起换掉 → 客户端对比通过被骗。所以哈希必须加密用CA 私钥加密摘要 签名 → 黑客没有 CA 私钥改了明文也造不出能通过验证的签名客户端验证用内置的 CA 公钥解签名还原出 CA 当初的摘要再和自己重算的摘要比对——一致则证书可信。2为什么签名不直接加密而是先形成hash摘要非对称加密很慢证书是很长的先用hash把正文转换成定长的内容这样加快了验证签名的速度。流程数据 → Hash → 摘要 → 私钥加密 → 签名。3完整流程5. 总结HTTPS 工作过程中涉及到的密钥有三组。第一组非对称加密用于校验证书是否被篡改。服务器持有私钥私钥在注册证书时获得客户端持有公钥操作系统包含了可信任的 CA 认证机构有哪些同时持有对应的公钥。服务器使用这个私钥对证书的签名进行加密。客户端通过这个公钥解密获取到证书的签名从而校验证书内容是否是被篡改过。第二组非对称加密用于协商生成对称加密的密钥。服务器生成这组私钥-公钥对然后通过证书把公钥传递给客户端。然后客户端用这个公钥给生成的对称加密的密钥加密传输给服务器服务器通过私钥解密获取到对称加密密钥。第三组对称加密客户端和服务器后续传输的数据都通过这个对称密钥加密解密。其实一切的关键都是围绕这个对称加密的密钥。其他的机制都是辅助这个密钥工作的。第二组非对称加密的密钥是为了让客户端把这个对称密钥传给服务器。第一组非对称加密的密钥是为了让客户端拿到第二组非对称加密的公钥。
返回列表