网站发给你电脑的网页、你发给网站的数据(图片、文字、密码等)都在完全公开的互联网上传输,在技术上是可被截取的。
然而你却不用担心,在某大型404网站搜索不存在的什么东西时,或搜索某信息被别人发现,之后被查水表——即使这个人 / 组织截取到了你和网站的通信,他们仍然无法破解这些信息。而且,这样的安全保护丝毫不影响你和网站之前的高速信息往来,你的浏览体验会丝般顺滑,就像……什么保护都没有一样。
又快又安全,惊不惊喜?神不神奇?这样的神奇就由自动化的规则来实现——TLS握手(Transport Layer Security Handshake,不要纠结他的名字,记不住它也丝毫不影响阅读)——可以将它理解为“你的电脑和服务器商讨怎样针对当前通信进行信息加密”的过程。它为你的电脑和网站的每一次通信,个性化地准备唯一且一次性的高效加密。而加密本身的安全性,则通过现代密码学由数学提供保障——这样的保障往往在一个时期内非常安全。
在开始讲解这个规则前,我们需要明确几个概念:
(1) 加解密系统:由进行明文、密文转换的算法(即加解密算法,一般是公开的),和用于加密、解密的密钥组成。加密是使用加密密钥和明文生成密文,解密是使用解密密钥和密文生成明文。若没有正确的密钥则无法进行正确的加解密。
(2) 对称加密:加解密算法的一种。其用于加密和解密的密钥相同,被称为公共密钥。它的加解密速度很快,但有天生的缺点——通信双方必须先共享公共密钥才能通信,而这往往是不安全的——线上传递的信息任何人都可以截取;线下传递成本高且未必安全——毕竟人是可以被逮到的。
(3) 非对称加密:另一种加解密算法。参加通信的每个人都有两个密钥——公钥(和公共密钥不同)和私钥——公钥是公开的,任何人都可以获取;私钥是私有的,自己保护。公钥用于加密,私钥用于解密。但它的运行要比对称加密慢百倍到数千倍。
(4) 混合加密机制:就是组合使用对称加密与非对称加密。这综合了两者的优点——既有非对称加密奇妙的安全保障,又有非对称加密的丝般顺滑、畅快淋漓。
讲解开始了!先放一张图,看一遍有个印象,再配合下面的详细解释即可愉快食用
这就是TLS握手的全过程,更详细描述如下:
一、用户端(就是你的电脑)和服务器(就是运营你在看的网站的那台远方的机器)确认要进行通信后,用户端生成随机数 R1(R1是RandomNumber_1的简写,没有其他含义。后面的R2、R3同理。),这个R1将成为未来生成对称加密密钥的“材料”。然后,用户端根据自己的情况,向服务器以明文发送对于加密方法的建议,和刚刚生成的R1。“加密方法的建议”包括用户端支持的协议版本、建议的加密类型和建议的加密算法等。
二、服务器生成随机数R2,R2和R1一样,将成为未来生成对称密钥的“材料”。然后,服务器根据用户端发来的信息和建议选定加密技术,并把选定的技术和随机数R2以明文发给用户端。
三、用户端为了避免一些危险(如正在通信的服务器是个假冒的坏蛋服务器等),需要通过权威第三方(通常是业界大佬/巨佬/超佬级别的企业/组织)检查服务器用来证明身份的证书,确保安全(若不安全将立即终止通信)。若通过安全检查,则用户端会生成一个随机数R3,用服务器的公钥(由服务器公开,任何人都可以下载)进行加密。注意,由于加密后的密文只有服务器能用自己的私钥解密,所以这段密文可以安全地在谜一样的互联网上公开传递。
当这一步完成时,双方都有了相同的R1、R2、R3了。现在,双方通过相同的算法,根据R1、R2、R3的值,即可算得相同的新值,这个新的数值就是双方确定好的接下来要用的公共密钥。由于公共密钥是基于临时生成的R1、R2和同样临时生成并保密传输、不可破解的R3即时算出来的,所以在网页浏览时间内,安全强度非常高。
四、五步,用户端和服务器通过刚刚计算好的公共密钥,和之前选定的对称算法发送加密信息,进行商定完成的确认通信,告知对方已经准备好使用新的加密方法进行通信了。
至此,TLS握手完成。用户端和服务器双方开始使用对称加密进行高速信息交互。
注:本文为力求语言平实易懂,尽可能地减少了术语、缩写、英文名称等,且模糊化处理(或避开)了一些不影响理解主干的内容,如:中间人、加解密算法、证书、签名(签章)、完整性验证、身份验证等。未来会考虑再介绍一下这些内容。笔者水平有限,若文中出现谬误,欢迎各路高人指出。也欢迎各位提出意见和建议。