我们在互联网上的一切活动都可以归结为,向服务器发送消息和从服务器接收消息。例如,当用户在浏览器的地址栏中输入 URL 后,按下回车键,就可以看到对应的 Web 页面。
Web 使用了一种名为 HTTP(超文本传输协议)的协议作为规范,以完成从客户端到服务器端等一系列运作流程。也就是说,Web 是建立在 HTTP 协议上进行通信的。
那么 HTTPS 又是什么?
HTTPS(超文本传输安全协议)经由 HTTP 进行通信,利用某些方法,达到保护交换数据的隐私与完整性,对窃听和中间人攻击提供合理的防护。
也许这么说有些抽象,我们可以把客户端与服务器端之间传输的消息,想象成是由信鸽作为载体传递的。传说汉高祖刘邦被楚霸王项羽所围时,就是以信鸽传书,引来援兵脱险的。不过这里并不是要说刘邦和项羽的故事,而是要讲一讲 Alice(爱丽丝)、Bob(鲍伯)以及第三者 Mallory(马洛里)之间的故事。
爱的信件
两地相隔的 Alice 与 Bob 心生情愫,如果 Alice 想要给 Bob 写信说说自己的近况,她会将信件绑在信鸽的腿上,并发送给 Bob。当 Bob 收到信件后,打开信件,得知 Alice 的近况。这一切都显得非常顺利。
但是,故事情节总是跌宕起伏。如果心怀不轨的 Mallory 拦截了 Alice 的信鸽,篡改了信件内容呢?Bob 无法知道 Alice 的信件在传送过程中是否被篡改过。
这就是为什么要使用 HTTPS。
信件加密
Alice 和 Bob 为了防止原始信件内容(明文)被歹人看到,他们商量使用一种加密方法对原始信件内容进行加密。他们将每个字母都在字母表上向后循环偏移 3 个位置,替换成密文。此时,所有的字母 A 将被替换成 D,B 变成 E,以此类推。
例如,原始信件内容中的 “Everything Is Gonna Be Okay”,将被替换为密文 “Hyhubwklqj Lv Jrqqd Eh Rndb”。而 Bob 收到密文后,在字母表中循环移位 3 个字母,就可以将密文解密回原来的明文。
这就是利用了密码学中的对称密钥加密技术,如果你知道如何加密消息,也就会知道如何解密它。
Alice 和 Bob 所用的加密算法被称为 Caesar 密码,是一种简单且广为人知的加密算法,通常被用作更复杂的加密方法中的一个步骤。
如何决定密钥
如果除了发送方和接收方之外,没有人知道他们使用了什么密钥,那么对称密钥加密是非常安全的。在 Caesar 密码中,密钥就是每个字母移动的偏移量。在上述例子中,使用了 3 作为偏移量。
如果 Alice 和 Bob 在开始使用信鸽传送信件前并没有见过面,他们将无法安全的商定一个密钥。如果他们使用信件来传送密钥,Mallory 会拦截并发现信件中的密钥。这样以来,Mollory 就可以解密读取或篡改信件内容。
这就是中间人攻击的典型示例,避免它的唯一办法是使用更为可靠的加密方案。
让鸽子携带盒子
Alice 和 Bob 想出了一个更好的加密方式,当 Bob 想要给 Alice 发送信件时,他将按照以下步骤进行操作:
- Bob 先让不携带任何信件的鸽子飞到 Alice 那里。
- Alice 让鸽子带回去一个打开锁的盒子,自己保留了开锁的钥匙。
- Bob 将信件放在盒子中,关闭锁,让鸽子把锁上的盒子带给 Alice。
- Alice 收到盒子后,用钥匙打开它并查看信件。
这样,Mallory 就无法通过拦截鸽子来破解或篡改信件内容,因为他没有钥匙。当 Alice 想向 Bob 传递信件时,遵循上述相同的过程即可。
Alice 和 Bob 使用的是非对称密钥加密技术,之所以称为非对称,是因为即使你可以加密一条消息(锁上盒子),你也无法解密它(打开一个被锁上的盒子)。
从密码学的角度,这里的“盒子”被称为“公钥”,而打开它的“钥匙”称为“私钥”。
是否可以相信这个盒子?
你可能注意到了,这里仍然有一个问题。当 Bob 收到了鸽子带回来的被打开的盒子时,他该如何确定这个盒子是来自于 Alice,并且 Mallory 没有调包过这个盒子?
Alice 会在盒子上签名,这样当 Bob 收到盒子后,检查该盒子是否由 Alice 签署。
新的问题又来了,如果在这之前,Bob 没有见过 Alice 的签名,那么他如何能够辨认出 Alice 的签名?
Alice 和 Bob 也为此事而苦恼,所以他们决定让 Ted 来替代 Alice 在盒子上签名。
Ted 是谁?Ted 是一位非常著名且值得信赖的人。Ted 会给每个确认过身份的人签名,就像政府会发行予公民身份证一样。
如果 Ted 确定要求签名的人是 Alice,Ted 将只会为她签署一个盒子。因为 Ted 只会为确认过身份的人签署盒子,所以 Ted 不会为 Mallory 签署一个 Alice 的盒子。Mallory 也无法伪造一个 Alice 的盒子,因为 Bob 会到 Ted 那里去验证,知道这个盒子是假的。
通常,Ted 被称为证书颁发机构,它是负责发放和管理数字证书的权威机构。作用是检查证书持有者身份的合法性,并签发证书,以防证书被伪造或篡改。
盒子很重
Alice 和 Bob 现在拥有了一个可靠的通信系统,但是他们意识到携带盒子的鸽子比只携带信件的鸽子飞的慢。
他们决定只使用盒子(非对称加密)来传递使用对称密码加密消息的密钥。
对于加密消息而言,使用非对称加密技术,要比使用对称加密技术慢,所以我们只使用它来交换加密密钥。
使用这种方式,既有非对称加密技术的可靠性,又有对称加密技术的效率。
现在你知道 HTTPS 是如何工作的了吧。