网络安全 — HTTPS

自蒂姆.博纳斯-李于 1989 年 3 月 12 日发明万维网以来,HTTP 也伴随其共同走过了整整 30 周年。随着网络的发展,今天的互联网早已不再是早期的“田园牧歌”时代。

互联网生态的“恶化”,对于现在非常普遍的网络购物,网上银行等需要高度信任的应用场景来说是非常致命的,然而即便是对于安全性不那么高的新闻、视频以及搜索等网站来说,由于互联网上的恶意用户、恶意代理,劫持等场景,导致各种利益损失。

然而这些仅凭 HTTP 自身的发展是无力解决的,需要引入新的机制/协议来解决这些问题,这就是 HTTPS。


HTTPS 的由来

由于 HTTP 天生“明文”的特点,整个传输过程完全透明,任何人都能够在链路中截获、修改或者伪造请求/响应报文,数据不具有可信性。简单点回答就是“因为 HTTP 不安全”。

  • 数据的明文传送和消息完整性检测的缺乏,恰好是现代网络支付,网络交易等新兴应用中安全方面最需要关注的。

什么是安全

既然 HTTP “不安全”,那什么样的通信过程才是安全的呢?通常认为,如果通信过程具备了如下四个特性,都可以认为是“安全的”。

一说到数据安全,大家首先想到的肯定是加密,的确加密可以让数据成为“秘密”,这便是机密性;但是它并不能防止黑客对数据的替换或篡改,而完整性却可以保证这一点;然而缺少身份验证,即使数据保证了机密性和完整性,但是最后却发送给了“假冒者”。

通过前三个特性,为 Web 通信构建了一个安全的环境。可以解决安全通信的大部分问题,但如果缺少了不可否认,那通信事务的真实性就得不到保障,容易出现生活中人们口中的“老赖”。

所以,只有同时具备了机密性、完整性、身份认证和不可否认这四个特性,通信双方的利益才能有保障,才能算的上是真正的安全。


什么是 HTTPS

HTTPS(超文本传输安全协议,HyperText Transfer Protocol Secure)是利用 SSL/TLS 来加密数据包,进行网络安全通信的传输协议。所以又称为 HTTP over SSL/TLS。

1. 与 HTTP 的区别

HTTPS 的 RFC 规定了新的协议名为 “https”,默认端口号 443。其他的与 HTTP 在语法、语义上完全一样,优缺点也“照单全收”(当然要除去“明文”和“不安全”)。即除了协议名 “http” 和端口号 80 两点不同之外,其他没有任何区别。

2. 实现原理

那 HTTPS 是如何做到安全传输的呢?秘密就在于 HTTPS 名字里的 “S”,HTTPS 把下层的传输协议由 TCP/IP 换成了 SSL/TLS,由“HTTP over TCP/IP” 变成了 “HTTP over SSL/TLS”,让 HTTP 运行在了安全的 SSL/TLS 协议上,收发报文不再使用 Socket API,而是调用专门的安全接口。

HTTPS 本身并没有做什么“惊世骇俗”的事情,全是靠着下层的 SSL/TLS 来“撑腰”。所以只要理解了 SSL/TLS,HTTPS 自然就搞懂了。


SSL/TLS

SSL(Secure Sockets Layer)即安全套接层,最初于 1994 年由网景公司为了保障网上交易安全而开发的。在 OSI 参考模型的第 5 层(会话层), 这样在不影响上层协议情况下,能够保证上层协议的网络通信安全。

SSL 共发布 v2 和 v3 两个版本(因为 v1 存在严重的缺陷从未公开过),由于 v2 存在很多安全缺陷很快就被 v3 所取代,而 v3 也已经证明其自身是一个非常好的安全通信协议。

鉴于 SSL 协议是网景公司专有,于是 1999 年 IETF(互联网工程组)成立了一个小组专门负责将该协议标准化,改名为 TLS(传输层安全,Transport Layer Security)。

  • 第一个标准化的 SSL 即 TLS 1.0,也就是 SSL 3.0 的升级版,该协议与 SSL 3.0 的区别并不特别明显,但是仅有的区别也严重妨碍了 TLS 1.0 与 SSL 3.0 之间的互操作性。

TLS 1.0 自 1999 年 1 月发布后,IETF 为解决发现的安全缺陷同时扩展协议的功能,截止目前又发布过三个新版本:2006 年 4 月发布了 TLS 1.1,2008 年 8 月发布了 TLS 1.2,和去年(2018)的 TLS 1.3。每个版本都紧跟密码学的发展和互联网的现状,持续强化安全和性能,已经成为信息安全领域中的权威标准。

  • TLS 设计的初衷是在可靠的传输协议(TCP)之上运行。但是,有实现把它放到数据报协议(如 UDP)之上。例如 Google 在 2013 年实现的 QUIC 协议,也就是未来的 HTTP/3。

目前应用最广泛的仍然是 TLS 1.2,而之前的协议都已经被证实是不安全的。虽然 TLS 为网络通信带来安全,但是带来的代价也是不小的,它需要 2-RTT 的协商成本,在弱网下,网络连接的建立将会被进一步放大,同时后台服务解密的成本也十分高昂,在大型企业中需要单独的集群来做这个事情。

TLS 1.3

而在 2018 年发布的 TLS 1.3 在兼顾性能与安全的前提下,大幅度简化密码套件,把握手时间减少到 1-RTT,效率提高了一倍。不仅如此,TLS 1.3 还引入了 0-RTT 协商,在 TCP 连接后就可以立即建立安全连接并发送机密消息。


OpenSSL

说道 TLS,就不能不谈到 OpenSSL,它是一个著名的开源密码学程序库和工具包。几乎支持所有公开加密算法和协议,已经成为事实上的标准,许多应用软件都会使用它作为底层来实现 TLS 功能,包括常用的 Web 服务器 Apache、Nginx 等。

OpenSSL 计划开始于 1998 年,目标是发明一套自由的加密工具,在互联网上使用。最初基于另外一个开源库 SSLeay。目前主要依靠赞助来完善和发展。

  • OpenSSL 曾经考虑命名为 OpenTLS,但当时 TLS 还未正式确立,而 SSL 早已广为人知,所以最终使用了 OpenSSL 的名字。

小结
  1. HTTP 是明文传输,所以不安全,容易被拦截或篡改;

  2. 通信安全必须同时具备机密性、完整性、身份验证和不可否认这四个特性;

  3. HTTPS 在语法和语义上仍然是 HTTP,但把下层的协议由 TCP/IP 换成了 SSL/TLS;

  4. SSL 最初于 1994 年网景公司开发,并率先应用于自家的网景导航者浏览器中,TLS 是它的标准化版本;

  5. OpenSSL 是著名的开源密码学工具包,是 SSL/TLS 的具体实现。

小贴士

  1. 当前所有 TLS 的 RFC 的文档末尾数字都是 “46”(2246、4346、5246、8846)。

  2. 除了 HTTP,SSL/TLS 也可以承载其他的应用协议,例如 FTP => FTPS、LDAP => LDAPS。

  3. 关于 OpenSSL 有一个著名的“心脏出血”(Heart Bleed)漏洞,出现在 1.0.1 版本。

  4. 另一个比较著名的开源密码库是 NSS(Network Security Services),由 Mozilla 开发。


本文只是简要介绍了 HTTPS 涉及的相关内容,有关它们的更详细讲解,例如 TLS 的连接过程、数字签名与证书以及 HTTPS 优化等相关内容,将会在后续文章中再详细介绍。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,271评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,275评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,151评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,550评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,553评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,559评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,924评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,580评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,826评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,578评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,661评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,363评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,940评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,926评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,156评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,872评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,391评论 2 342

推荐阅读更多精彩内容

  • HTTP 缺点 1. 通信使用明文(不加密),内容可能会被窃听 由于HTTP 本身不具备加密的功能,所以也无法做到...
    郑嘉成_阅读 2,782评论 1 9
  • HTTP 缺点 1. 通信使用明文(不加密),内容可能会被窃听 由于HTTP 本身不具备加密的功能,所以也无法做到...
    luonaerduo阅读 474评论 1 3
  • SSL/TLS    ————为了更安全的通信 什么是SSL/TLS  SSL/TLS综合运用了前面提到的对称密码...
    Invincibled阅读 1,527评论 0 2
  • 前言 HTTPS是什么相信大家都知道,如果你不知道。。。请关闭此文!!!HTTP的数据是明文传输的,没有安全性可言...
    MxlZlh阅读 6,423评论 0 9
  • 原文地址 http://blog.csdn.net/u012409247/article/details/4985...
    0fbf551ff6fb阅读 3,510评论 0 13