关于我们

质量为本、客户为根、勇于拼搏、务实创新

< 返回新闻公共列表

网络服务器与客户端加密通信的实现原理及发展历史

发布时间:2021-04-19 16:16:35

前言


加密通信是网络安全领域的关键技术之一,也广泛应用于现代网络服务器和客户端之间的通信。web技术诞生之初,服务器和客户端的通信是基于明文的,也就是HTTP 1.0。随着技术的发展,HTTPS逐渐取代了HTTP,HTTPS协议可以保证数据不会被泄露或篡改。所谓HTTPS就是HTTP+TLS/SSL。本文采取图片交谈的形式,向大家展示加密通信的发展史和原理。最后,总结了现代网络技术中采用的加密通信机制。


古代-明文


杰克和罗斯这对夫妇直接用纯文本交流。一是技术原因,二是隐私保护意识可能不明显。


详细说明Web服务器和客户端加密通信的实现原理和演进历史

明文通信


古代——对称加密


一天,杰克和罗斯发现他们的悄悄话被别人偷听了。于是,他们讨论了一个办法:商定一套只有他们两个人知道的规则,并对通信内容进行加密。这样,即使通信内容被劫持,没有密钥也看不到原来的通信内容。这种方法也称为对称加密。


详细说明Web服务器和客户端加密通信的实现原理和演进历史

一个密钥,对称加密


中世纪-不对称加密1.0


很久以后,人们发现对称加密有一个问题,就是双方必须知道公共密钥,必须见面才能完成加密通信。有什么方法可以实现不见面的加密通信?数学家给出了答案。


详细说明Web服务器和客户端加密通信的实现原理和演进历史

不对称加密1.0


杰克和罗斯在本地生成一对密钥,分别是公钥和私钥。在通信开始之前,双方交换自己的公钥。交换后,杰克知道公钥2,罗斯知道公钥1。


详细说明Web服务器和客户端加密通信的实现原理和演进历史

不对称加密1.0-交换各自的公钥


为什么要用一对钥匙?


让我们看看杰克是如何加密数据的:


详细说明Web服务器和客户端加密通信的实现原理和演进历史

不对称加密1.0-发送方加密数据


发送方根据信件的内容,使用哈希算法生成一个Digest,然后用自己的私钥1加密生成数字签名(汉学),然后与信件一起发送数字签名。


罗斯如何处理收到的加密邮件:


详细说明Web服务器和客户端加密通信的实现原理和演进历史

不对称加密1.0-接收方解密数据


罗斯收到杰克的加密信件后,使用与杰克相同的哈希算法对信件内容进行哈希运算,得到摘要a,然后用之前收到的杰克的公钥(即公钥1)对汉学文件进行解密,得到摘要B..比较摘要A和摘要B,如果摘要A和摘要B相等,说明信的内容没有被篡改。


虽然非对称加密比对称加密方便得多,但是双方都可以实现加密通信,不需要见面。但是还有一个问题:在交换公钥的过程中,很容易被第三方黑客劫持。黑客截获双方的公钥后,伪造了两个公钥分别发送给杰克和罗斯,然后通信内容被完全泄露。


详细说明Web服务器和客户端加密通信的实现原理和演进历史

不对称加密1.0-公钥被劫持


现代-不对称加密2.0


为了解决非对称加密的弊端,科学家们想出了一个办法,就是引入CA(证书颁发机构)。CA的意义在于保证公钥的真实性。


CA有两个功能:一是颁发CA证书;二是制作数字证书。具体怎么做?


详细说明Web服务器和客户端加密通信的实现原理和演进历史

非对称加密2.0——ca的作用


CA自己生成一对公钥和私钥(私钥是绝对保密的,不能泄露)。CA证书是客户端使用的(这里对应Rose),简单来说就是CA的公钥。CA证书通常内置于客户端的浏览器或操作系统中。


详细说明Web服务器和客户端加密通信的实现原理和演进历史

不对称加密2.0-数字证书的生成


数字证书的目的是用CA的私钥对web服务器的公钥(这里对应Jack)进行加密,如上图所示。杰克拿到CA的数字证书后,把信内容和数字Sinature(汉学)打包发给Rose。


详细说明Web服务器和客户端加密通信的实现原理和演进历史

非对称加密2.0-解密过程


Rose在获得加密数据后,用ca certificate中的CA公钥对数字证书进行解密,然后用Jack的公钥1对汉学进行解密,获得Digest B..以下过程与非对称加密1.0时代相同。


现代网络技术中的加密通信机制综述


以上宏观介绍了加密通信的实现原理和演化历史,其中哈希算法、公钥和私钥生成方法有多种实现形式,有兴趣的同学可以进一步研究。值得注意的是,虽然非对称加密是最理想的加密方式,但其实现复杂度较高,浪费系统资源。因此,在现代web加密通信中,数据传输采用对称加密,对称加密中使用的密钥是基于非对称加密2.0技术传输的。具体流程如下:


客户端向网络服务器发起安全连接请求

服务器返回一个由CA认证的数字证书,其中包含服务器的公钥(注意:服务器的公钥是可以的,而不是CA的公钥)

客户端获取数字证书,并使用内置在其浏览器中的证书颁发机构证书(包括证书颁发机构公钥)对其进行解密,以获取服务器的公钥

客户端使用服务器的公钥为下一个对称加密算法加密一个密钥,并将其发送给web服务器(因为只有服务器有私钥要解密,所以不需要担心中间人拦截这个加密的密钥)

服务器获取加密的密钥,解密得到密钥,然后使用对称加密算法完成与用户的下一次网络通信



/template/Home/Zkeys/PC/Static