HTTPS整套加密机制是如何实现的?(数字证书 = 网站信息 + 数字签名)
发布时间:2022-09-28 15:25:13 所属栏目:安全 来源:
导读: HTTP是属于应用层的协议,它是基于TCP/IP的,所以它只是规定一些要传输的内容,以及头部信息,然后通过TCP协议进行传输,依靠IP协议进行寻址,通过一幅最简单的图来描述:
客户端发出请求,服务端进行响
客户端发出请求,服务端进行响
HTTP是属于应用层的协议,它是基于TCP/IP的,所以它只是规定一些要传输的内容,以及头部信息,然后通过TCP协议进行传输,依靠IP协议进行寻址,通过一幅最简单的图来描述: 客户端发出请求,服务端进行响应,就是这么简单。在整个过程中,没有任何加密的东西,所以它是不安全的,中间人可以进行拦截,获取传输和响应的数据,造成数据泄露。 加个密呢? 因为上图中数据是明文传输的,我们能想到最简单的提高安全性的方法就是在传输前对数据进行加密,如下图: 这种加密方式叫做:对称加密。 加密和解密用同一个秘钥的加密方式叫做对称加密。 好了,我们对数据进行加密了,问题解决了吗? 多个客户端怎么办? 这是一个客户端,但是在WWW上,是成千上万的客户端,情况会怎样呢? 为所有的客户端都应用同一个秘钥A,这种方式很显然是不合理的,破解了一个用户,所有的用户信息都会被盗取。 想一想,是不是还有别的办法呢? 相信大家都可以想到,如果对每一个客户端都用不同的秘钥进行传输是不是就解决这个问题了: 对称加密秘钥如何传输? 我们对每个客户端应用不同的对称加密秘钥,那么这个秘钥客户端或者服务端是如何知道的呢,只能是在一端生成一个秘钥,然后通过HTTP传输给另一端: 那么这个传输秘钥的过程,又如何保证加密?如果被中间人拦截,秘钥也会被获取。也许你会说,对秘钥再进行加密,那又如何保证对秘钥加密的过程,是加密的呢? 好像我们走入了 while(1),出不来了。 非对称加密 在对称加密的路上走不通了,我们换个思路,还有一种加密方式叫非对称加密,比如RSA。 非对称加密会有一对秘钥:公钥和私钥。 公钥加密的内容,只有私钥可以解开服务器内容加密,私钥加密的内容,所有的公钥都可以解开(当然是指和秘钥是一对的公钥)。 私钥只保存在服务器端,公钥可以发送给所有的客户端。 在传输公钥的过程中,肯定也会有被中间人获取的风险,但在目前的情况下,至少可以保证客户端通过公钥加密的内容,中间人是无法破解的,因为私钥只保存在服务器端,只有私钥可以破解公钥加密的内容。 现在我们还存在一个问题,如果公钥被中间人拿到篡改呢: MITM:Man-in-the-MiddleAttack 客户端拿到的公钥是假的,如何解决这个问题? 第三方认证 公钥被掉包,是因为客户端无法分辨传回公钥的到底是中间人,还是服务器,这也是密码学中的身份验证问题。 (编辑:开发网_新乡站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
站长推荐