其实HTTPS就是在HTTP进行了加密处理,HTTP协议的传输都是明文传输的,这导致传输的过程被黑客截取,进行信息的篡改,造成损失。一般HTTPS=HTTP+TSL/SSL
所以明文传输很危险,容易被不法分子利用。 以前还要运行商通过中间截获,然后更换下载连接,让用户下载自己的应用。
加密就是对传输的信息进行一系列加密,变成密文。 解密就是根据密文(密钥)进行一系列的操作,最终还原成明文
加密一共又两种方式:对称加密,非对称加密。 对称加密:加密和解密用的密钥是相同的。特点是效率高。 非对称加密:公钥加密,私钥解密。私钥加密,公钥解密。公钥加密公钥是不能解密的,私钥加密私钥是不能解密的。这种方式效率低。
每个客户端生成一个密钥,第一次连接服务端时候把密文和密钥一块发给服务端。服务端来保存和维护这个密钥。
这种方式是不安全,黑客和运营商是可以在第一次建立连接的时候截取密钥是什么从而实现解密。
还存在另一个问题,服务器维护客户端的密钥对于服务器也是个很麻烦的事情
我们为了防止黑客获得密钥,也为了减少服务器压力,我们对密钥进行非对称加密。我们服务器自己持有一个特定的私钥,所有客户端持有一个特定的公钥。我们进行传输数据时候,第一次建立连接后服务器会想客户端发送一个公钥(明文传输),客户端生成一个密钥对明文加密,然后用用公钥对密钥加密,传送给服务器后用私钥对密钥解密,再对密文解密,这时候客户端和服务端都知道密钥是什么了。服务端返回数据时候,只用密钥加密,然后返回给客户端,然后客户端直接用自己的密钥解密就可以了。之后传输数据都用这个密钥进行明文加密,当客户端和服务端断开连接时候,这个密钥也就失效了。也不用服务端维护
图形过程,网图
你以为上面的加密就安全了嘛!!!不不不,这里要上演一场无间道。还记得第一次连接时候,服务器会给客户端以明文形式传送一个公钥吗?这时候,黑客截取公钥,黑客自己伪造一把公钥和私钥,黑客把自己的公钥传输给客户端,客户端进行传输数据时候,用黑客的公钥进行密钥加密,黑客截取信息,用自己的私钥进行解密,再用截取服务端的公钥进行加密,发送给服务端,这样黑客酒吧密钥掌握了。服务端和客户端都没有反应过来,中间出了一个无间道。
所有为了防止这种情况我们引入了证书,来证明这个公钥是服务器的,而不是黑客伪造的。
证书一般是第三方机构来颁发的,服务端在使⽤HTTPS前,需要向CA机构申领⼀份数字证书,数字证书⾥含有证书申请者信息、公钥信 息等。服务器把证书传输给浏览器,浏览器从证书⾥获取公钥就⾏了,证书就如⾝份证,证明服务端公钥的权威性。
这个证书主要是有两大部分组成,一大部分是申请证书机构的信息,和申请人的各种信息,一部分是根据这些信息加密产生后的数字签名。证书的信息是很好理解的,上面就是记录着一些明文信息,数字签名把证书明文信息hash后得到数据摘要,然后机构创建一套私钥和公钥,用自己的私钥对数据摘要进行加密后形成数字签名,最后把证书和机构的公钥一块发给申请的服务器厂商。 客户端和服务器第一次建立连接时候,服务器会给把证书和服务器的公钥一块发给客户端,客户端需要对证书进行校验,校验证书是否过期,校验是否是正规的颁发机构(操作系统中已内置的受信任的证书发布机构),通过证书中的公钥进行解密数字签名验证证书信息是否被篡改。如果这些校验都通过,证明就是服务器发送的证书和公钥,就可以进行上面的加密工作了。
其实这里也有疑问,难道这样就可以防止中间人了吗?中间人如果篡改或者掉包证书呢?
其实中间人可以篡改证书信息,但是中间人因为没有获得机构的私钥,是无法对数字签名进行篡改的。客户端再进行校验证书信息,发现数字签名解密后和证书信息不一样,就会终止请求。 中间人可以申请证书,然后再发给客户端,但是证书信息上面都有域名等服务器公司等信息,客户端是可以识别到的,发现信息和服务端不匹配,也会终止请求的。
第一对客户端的密钥(对称加密):对称加密的密钥,其实只是为了加密明文的 第二对服务端的私钥和公钥:这对密钥其实为了防止客户端的密钥被黑客截获,然后对密钥进行加密 第三对机构的私钥和公钥:这对公钥私钥是作用于数字签名上面的,数字签名而是为了验证证书的真伪,防止证书被篡改,掉包,证书的作用是为了确认是服务端发来的信息,不是黑客伪造的。
其实第二第三对密钥都是辅助于第一对密钥,确保第一对密钥的安全性。
缩⼩签名密⽂的⻓度,加快数字签名的验证签名的运算速度
常见的摘要算法,有MD5个和SHA系列 以MD5为例,无乱要加密的明文有多长,通过MD5加密出来的值都是固定的,16字节过着32字节版本,而且具有很强的防伪性,只要原来的明文改变一点点,计算出来的MD5值就会发生很大的改变,通过MD5计算得出一个MD5值很简单,但是要通过一个MD5值还原为原有的明文,几乎是不可能的。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有