互联网安全协议与HTTPS,TLS,SSL
 doctorrm      2019-05-16 13:18:16      134      0      

互联网安全协议

在互联网上混,没有做好安全措施,等同于将自己变成靶子。对于网络传输也是如此,我们熟悉的网络分层结构,无论是OSI标准还是TCP/IP标准,在不同层上都有不同的安全协议,这些协议在不同程度、不同层次上实现加密、认证、签名功能,从而保证安全的信息传输。

接下来,按照从下到上的顺序,分别介绍网络层、运输层和应用层上对应的安全协议。因为数据链路层、物理层涉及硬件方面较多,其安全分析受篇幅限制,这次先留个记号,以后再另写文章。当然,这只是一种分类方法,并不是唯一的,比如维基百科的分类

1.1 网络层安全协议

网络层就是IP协议族所在的层。这个层的安全协议有很多,但都隶属同一个协议族:IPSec (IP Security)。IPSec是一个协议族,支持IPv4和IPv6协议,其作用是对网络层的数据加密。该协议族中的协议分为三类:

1)IP安全数据报格式有关的两个协议:鉴别首部协议AH(Authentication Header)和封装安全有效载荷协议ESP(Encapsulation Security Payload)。AH协议提供源点鉴别和数据完整性,但不能加密;ESP协议比AH协议复杂的多,它能提供源点鉴别、数据完整性和加密。在IPv6中,AH和ESP都是扩展首部的一部分。由于ESP协议功能包含了AH协议,因此可以只使用前者即可。

2)有关加密算法的三个协议;

3)互联网密钥交换协议IKE(Internet Key Exchange)

1.2 运输层安全协议

运输层就是TCP/UDP协议族所在的层。在运输层,现在广泛使用的有两个安全协议:安全套接字层SSL(Secure Socket Layer)和运输层安全TLS(Transport Layer Security)。这两个协议是实现HTTPS的基础。其实TLS是SSL的升级版,后面我们也会更多地关注TLS。下文会具体阐述。当然,也有的说法将这两个协议放在应用层,理由是这两个协议和应用层协议耦合比较大(直接服务于应用层),虽然TLS中TL就代表了运输层(Transport Layer)。从中我们也可以看出,分类只是从某个特定的角度出发,没有绝对的正确错误,只要能描述问题和传达正确的信息即可。

1.3 应用层安全协议

应用层的安全协议比较多,大部分是电子邮件安全协议,比如PGP、DKIM、SPF、PCT等等。要注意的是,HTTPS不是应用层安全协议,更恰当的说,HTTPS只是一个组合协议。因为HTTPS=HTTP+TLS,其跨越了两个协议。

SSL和TLS协议

(图中的TLS/SSL协议被放在了应用层。)

应用层使用TLS最多的就是HTTP,但TLS并非仅用于HTTP,而是可用于任何应用层的协议。例如,TLS也可用于IMAP邮件存取的鉴别和数据加密。

2.1 版本变化

SSL 1.0
SSL最早是由1994年网景公司开发的,用于为互联网通信提供安全和数据完整性保障。早期设计者是网景公司的首席科学家Taher Elgamal,这个人是埃及的密码学家,他被称为”SSL之父”。
1.0 版本从来没有公开过,因为存在严重的安全漏洞。

SSL 2.0
SSL 2.0在1995年2月发布,但存在数个严重的安全漏洞。比如SSL 2.0仅支持RSA这一种算法;另外,SSL2.0没有考虑到“前向保密”(forward secrecy),因此会有”回溯性破解”的风险。(接连两个版本都撇脚,看来,SSL它爹水平实在令人不敢恭维。)

SSL3.0
鉴于SSL2.0的问题,网景工程师Paul Kocher、Phil Karlton和Alan Freier对其进行了重新设计,并于1996年发布了SSL3.0。而且这个协议还被IETF发表为RFC6101

这里提一下,重新设计SSL3.0的那些专家,为首的是一位斯坦福大学的Paul Kocher,这个人堪称密码学奇才,SSL3.0发布的那年(1996),他才23岁(回想自己23岁的时候,对密码学简直一窍不通)。就在同一年,他还发表了一篇论文,阐述了一种全新的密码学攻击方式——timing attack(基于时间因素的边信道攻击)。这种攻击手法的原理说起来并不复杂,但很有创意,之前从来没有人想过。

TLS1.0
TLS全称Transport Layer Security,即运输层安全。TLS1.0于1999年发布,技术规范是RFC2246

为什么从SSL3.0升级为TLS1.0呢?原因是网络安全越来越重要,需要对SSL标准化。于是IETF在SSL3.0的基础上设计了TLS协议,可以认为TLS协议是对SSL协议的替代。SSL3.0协议于2015年被弃用,自从,SSL系列协议已经成为历史了。

不过从技术上将,TLS1.0和SSL3.0的差别非常小,这也可以从协议的版本号看出——TLS1.0内部的协议版本号其实是3.1。

TLS1.1
TLS1.1于2006年发布,技术规范为RFC4346

该版本主要修补了与CBC(cipher-block chaining)相关的漏洞,以及支持IANA等级的参数。

TLS1.2
TLS1.2于2008年发表,技术规范是RFC5246。该版本对1.1进行了若干升级。

TLS1.3
TLS1.3于2018年8月发表,技术规范是RFC8446。这是目前最新的版本。此次发布距离TLS1.2发布有十年之久,该版本是一次大的升级。详情可参照其RFC规范。

以下是对版本变化的一个总结:

协议发布时间状态
SSL 1.0未公布未公布
SSL 2.01995年已于2011年弃用
SSL 3.01996年已于2015年弃用
TLS 1.01999年计划于2020年弃用
TLS 1.12006年计划于2020年弃用
TLS 1.22008年
TLS 1.32018年

2.2 SSL/TLS会话建立过程

1)协商加密算法。浏览器A向服务器B发送浏览器的SSL版本号和一些可选的加密算法。B从中选定自己所支持的算法(如RSA),并告知A。

2)服务器鉴别。服务器B向浏览器A发送包含其RSA公钥的数字证书。A使用该证书的认证机构CA公开发布的RSA公钥对该证书进行验证。

3)会话密钥计算。由浏览器A随机产生一个秘密数。用服务器B的RSA公钥进行加密后发送给B。双方根据协商的算法产生共享的对称会话密钥。

4)安全数据传输。双方用会话密钥加密和解密它们之间传送的数据并验证其完整性。

2.3 Record协议简析

SSL/TLS协议在通讯过程中会将数据分成一份一份,每一份就是一个record,record协议就是用来定义record格式的协议。虽然这个协议貌似很少听到,维基上也没有独立的篇章描述,因此这里一笔带过。待日后详细了解后再分享出来。

HTTPS

HTTPS全称超文本传输安全协议(HyperText Transfer Protocol Secure),也被称为HTTP over TLS,可以看出该协议是HTTP和TLS的组合。其实HTTPS这个概念早在1994年就由网景公司提出来了,但直到2010年左右才被广泛使用。原因也不难理解,回顾我们前面讲到的2008年TLS1.2版本发布,也直到这个时候,SSL/TLS协议才算是“靠谱”的,大家才会放心去使用它。

另外,还有一个叫S-HTTP(安全超文本传输协议)的HTTP安全传输实现,对应的RFC为RFC2660。但是HTTPS的流行导致其没有被广泛支持,我们不要被混淆到。

HTTPS所使用的端口号是443,而不是HTTP使用的端口80。在使用过程中,对于发送方,TLS套接字接收应用层的数据(如HTTP或IMAP报文),对数据进行加密,然后把加密后的数据送往TCP套接字;在接收放,TLS从TCP套接字读取数据,解密后,通过TLS套接字将数据交给应用层。

3.1 HTTPS与HTTP比较

1)HTTPS默认端口为443,HTTP默认端口为80;
2)HTTPS传输的是密文、安全的,HTTP传输的是明文且无状态、不安全的;

3.2 CA厂商与证书

证书由全球信任的CA(Certificate Authority,即证书认证中心)机构颁发,目前全球大约有50多家CA机构,但的大多数被DigiCert所收购。

目前全球主流的CA机构有Comodo、Symantec、GeoTrust、DigiCert、Thawte、GlobalSign、RapidSSL等,其中Symantec、GeoTrust都是DigiCert机构的子公司,目前市场上主流的ssl证书品牌是Comodo证书、Symantec证书、GeoTrust证书、Thawte证书和RapidSSL证书,还有一些不知名的证书机构也是可以颁发数字证书的。

证书要想安装到主流浏览器,必须通过WebTrust这个机构的审计认证,通过认证的证书被称为根证书,这种证书是合法的。对于企业服务器来说,只需要申请合法的根证书即可,具体来说,服务器证书的申请及颁发过程如下:

CA颁发机构根据申请的SSL证书类型可分为域名验证型DV证书、组织验证型OV证书、扩展增强型EV证书,认证机构在检验过程中,申请人提交的CSR文件必须符合CA的要求,否则申请人需要重新提交文件。

申请SSL证书,首先就是生成证书签名请求CSR,完成CSR生成过程后,CA机构将以密码形式向客户提供私钥。然后将CSR和私钥存储在服务器或本地驱动器上的安全位置。

CA机构在收到证书请求后,他们会对申请者进行验证。申请不同的SSL证书,其验证方式也不一样。其中提供的文件证明申请者的身份和商业注册取决于申请者的证书类型,如果客户提供的文件符合CA的要求,就会颁发证书。

近年来,部分CA机构为了推动ssl证书的使用,或者是为了牟利,推出免费的ssl证书,因为免费安全等级相对较低,某些CA机构并没有严格审核申请人的身份,导致部分钓鱼网站也可申请免费的ssl证书,为了避免类似事件再次发生,有些浏览器纷纷对相关CA机构作出不受信任的决策,国内比较著名的就是沃通了,由于滥发证书被取消CA资格,建议大家购买主流CA机构颁发的ssl证书。

3.3 局限

1)使用HTTPS协议会使页面的加载时间延长近50%,增加10%到20%的耗电,此外,HTTPS协议还会影响缓存,增加数据开销和功耗,甚至已有安全措施也会受到影响。
另外要注意的一点是,SSL证书的信用链体系并不安全,特别是在某些国家可以控制CA根证书的情况下,中间人攻击一样可行。

2)大部分TLS证书需要钱,功能越强大的证书费用越高。

去打赏

您的支持将鼓励我们继续创作!

[微信] 扫描二维码打赏

[支付宝] 扫描二维码打赏

正在跳转到PayPal...

发表评论