我们通常不会把自己的用户名和密码写在明信片上然后寄出去让众人皆知,但在网络世界中,我们却常常在做类似的事情。每次登录使用 HTTP 连接的服务时,基本就等同于这么做了。
然而,还有一种更好、更安全的 HTTP 方式,那就是 HTTPS。网址中多出来的这个 “S” 代表着连接是安全的,能让其他人更难窥探我们在网上的活动。既然 HTTPS 更加安全,那为何整个网络不实现大一统,全面使用 HTTPS 呢?
HTTPS 几乎与网络同时诞生,但主要被那些涉及钱财交易的网站(如银行网站或需要信用卡数据的购物车页面)所使用。甚至很多使用 HTTPS 连接的网站,也仅仅在需要 HTTPS 连接的部分(比如购物车或用户账户页面)才使用它。
去年,FireSheep 网络嗅探工具的出现,使得任何人都有可能捕捉到在不安全网络(如本地咖啡店的热点或图书馆的公共无线网络)中的当前会话。这一事件引发了公众对网络安全的热烈讨论。
谷歌也为公司的 API 添加 HTTPS 选项。FireFox 用户则更进一步,可以使用 HTTPS Everywhere 插件,让几十个提供 HTTPS 但未将其设为默认设置的网站实现 HTTPS 连接。
很明显,网络正在朝着 HTTPS 连接逐渐普及的方向发展,那为何不更进一步,全面采用 HTTPS 呢?
这就是我向 W3C 的 HTTP (s) 资深专家 Yves Lafon 提出的问题。有一些实际问题是大多数 Web 开发人员可能都知道的,比如安全证书成本高,但对于价值数百万美元的网络服务来说,这显然不是问题。
在 Lafon 看来,真正的问题是 HTTPS 无法实现缓存。“如果服务器和客户端在同一个区域,比如在同一块大陆上,这可能不是问题,”Lafon 在发给 Webmonkey 的邮件中写道,“但对于居住在澳大利亚的人来说(仅举个例子),他们喜欢缓存和使用网络服务,不希望响应时间过长。”
Lafon 还补充道,使用 HTTPS 时还有一个不太明显的性能问题,因为 “SSL 最初的密钥交换会增加延时”。换句话说,以目前的技术,单纯为了强调安全而全面采用 HTTPS,会使整个网络变得更慢。
对于不需要对任何数据进行加密的网站 —— 也就是说,不需要用户登录,所以也没有什么需要保护的 ——HTTPS 带来的开销和缓存能力的丧失毫无意义。但是,像 Facebook、Google Apps 或 Twitter 这样的大型网站,许多用户可能愿意牺牲一点性能来换取更安全的连接。事实上,越来越多的网站正在增加 HTTPS 连接,这表明用户确实更注重安全(只要速度差异可以接受)。
对网站而言,提供 HTTPS 连接的另一个问题是运营成本增加。“尽管服务器速度更快,SSL 实现更优化,但运营成本仍然高于普通的 HTTP 连接服务。”Lafon 在邮件中写道。
大部分网站不使用 HTTPS 提供服务,主要是因为它无法与虚拟主机协同工作。作为网站托管服务商提供的最便宜的服务,虚拟主机能让 Web 主机在同一台物理服务器上为多个网站提供服务 —— 数百个网站使用同一个 IP 地址。对于常规的 HTTP 连接,这样做很高效,但对于 HTTPS 目前根本行不通。
有一种方法可以让虚拟主机服务和 HTTPS “和谐相处”,即 TLS Extensions 协议,但 Lafon 也指出,迄今为止,这也只能说是部分实现。当然,这对大型网站来说不是问题,它们往往有大规模的服务器场。但在相关细则或类似规范普及之前,HTTPS 仍然不适合小型且依赖虚拟主机服务的网站使用。
归根结底,整个网络不全面采用 HTTPS 并没有真正的根本原因。目前确实有一些现实情况阻碍其全面普及,但最终这些障碍都会消失。带宽会进一步提升,缓解人们对缓存能力的担忧,新型服务器也将为安全连接做进一步优化。
在未来的网络中,人们主要关注的将不再仅仅是网站载入速度有多快,而是在网站载入数据的过程中,如何更好地保障我们个人的安全以及数据的安全。