HTTPS 理解关键问题

Photo by stefan moertl on Unsplash

防止中间人攻击

为了防止中间人拦截攻击,对于采用证书机构来加密服务器端公钥。这样中间人假如拦截了 HTTPS 流量,并且使用自己生成公私钥对,使用自己的私钥加密数据发给客户端,那么客户端无法使用机构提供的服务器公钥对密文进行解密,从而导致协议出错。

防止中间人窥探

由于在握手阶段是协议出一个双方都可以对称密钥,客户端采用机构认证的服务器公钥对协商好的对称密钥进行加密。这样即使中间人劫持到,由于没有服务器私钥所以无法对这段密文进行解密。

证书防篡改

证书颁发机构将服务器公钥等一系列信息首先做摘要算法,然后使用 CA 机构的私钥(非服务器公钥)对服务器公钥信息进行加密,作为数字签名,在客户端需要使用机构的公钥对证书内容进行解密。

假如没有数字签名,证书内容被中间人篡改,客户端不知道内容发生变动。摘要算法可以防止篡改,但是没办法防止中间人进行篡改(中间人可以伪造一个然后自己生成摘要)。所以还需要证明这个摘要是机构做的。这就引入了非对称加密技术进行身份认证。因为非对称加密中的密钥是成对出现,机构提供的公钥解开的签名得到的摘要,和证书信息在做一次的摘要相等就可以知道这个证书是机构提供的。试想,假如第三方修改了明文并生成对应的摘要,那么假如要通过客户端使用的机构公钥认证,很显然需要机构的私钥,这显然拿不到,所以无法篡改。

发表评论

邮箱地址不会被公开。 必填项已用*标注