一、什么是SSL/TLS
1.客户端与服务器端
Web浏览器是发送者的计算机上运行的一个程序,而Web服务器则是在响应端计算机上运行的一个程序,它们都遵循―种叫作HTTP的协议来进行通信。其中,Web浏览器称为HTTP客户端,Web服务器称为HTTP服务器。

2.用SSL/TLS承载HTTP
于是,我们可以用SSL 或者TLS作为对通信进行加密的协议,然后在此之上承载HTTP,如下图所示。通过将两种协议进行叠加,我们就可以对HTTP的通信(请求和响应)进行加密,从而防止窃听。通过SSL/TLS进行通信时,URL不是以http://开头,而是以https:/开头。

3.SSL/TLS的工作
(1)机密性
要确保机密性,可以使用对称密码。由于对称密码的密钥不能被攻击者预测,因此我们使用伪随机数生成器来生成密钥。若要将对称密码的密钥发送给通信对象,可以使用公钥密码或者Diffie-Hellman密钥交换。
(2)完整性
要识别篡改,对数据进行认证,可以使用消息认证码。消息认证码是使用单向散列函数来实现。
(3)认证
要对通信对象进行认证,可以使用对公钥加上数字签名所生成的证书。
4.密码套件
SSL/TLS提供了一种密码通信的框架,这意味着SSL/TLS中使用的对称密码、公钥密码、数字签名、单向散列函数等技术,都是可以像零件一样进行替换的。也就是说,如果发现现在所使用的某个密码技术存在弱点,那么只要将这一部分进行替换就可以了。SSL/TLS 就像事先搭配好的盒饭一样,规定了一些密码技术的“推荐套餐”,这种推荐套餐称为密码套件。
二、使用SSL/TLS进行通信
1.层次化协议
TLS 协议是由TLS记录协议和TLS握手协议这两层协议叠加而成的。位于底层的TLS记录协议负责进行加密,而位于上层的TLS握手协议则负责除加密以外的其他各种操作。上层的TLS握手协议又可以分为4个子协议,分别是握手协议、密码规格变更协议、警告协议和应用数据协议。
(1)TLS记录协议
TLS记录协议位于TLS握手协议的下层,是负责使用对称密码对消息进行加密通信的部分。TLS记录协议中使用了对称密码和消息认证码,但是具体的算法和共享密钥则是通过后面将要介绍的握手协议在服务器和客户端之间协商决定的。
(2)TLS握手协议又可以分为4个子协议,分别是握手协议、密码规格变更协议、警告协议和应用数据协议。握手协议是TLS握手协议的一部分,负责在客户端和服务器之间协商决定密码算法和共享密钥,基于证书的认证操作也在这个协议中完成。密码规格变更协议是TLS握手协议的一部分,负责向通信对象传达变更密码方式的信号。警告协议负责在发生错误时将错误传达给对方。应用数据协议是将TLS上面承载的应用数据传达给通信对象的协议。
2.主密码
主密码是TLS客户端和服务器之间协商出来的一个秘密的数值。这个数值非常重要,TLS密码通信的机密性和数据的认证全部依靠这个数值。主密码主要用于生成以下信息:对称密码的密钥、对称密码的密钥、消息认证码的密钥、消息认证码的密钥、对称密码的CBC模式所使用的初始化向量、对称密码的CBC模式所使用的初始化向量。
3.对SSL/TLS的攻击
(1)对于其中的各个密码技术进行攻击
(2)OpenSSL 的心脏出血漏洞
(3)sSL 3.0的漏洞与POODLE攻击
(4)FREAK攻击与密码产品出口管制
(5)对伪随机数生成器的攻击
(6)利用证书的时间差进行攻击
三、小测验
1.基础知识
下列说法中,请在正确的旁边画○,在错误的旁边画×。
(1)使用 SSLTLS可以确保通信的机密性。
(2)在SSL/TLS中,使用数字签名技术来认证通信双方的身份。
(3)在SSL/TLS中,由于使用了公钥密码或者密钥交换技术,因此伪随机数生成器的品质低一点也没有关系。
(4)在SSL/TLS中,由于公钥是服务器发送的,因此客户端无需持有任何公钥就可以对服务器进行认证。
(5)使用SSL/TLS的公司是可信的,因此可以放心地发送信用卡号。
我的回答:(1)○;(2)○;(3)×;(4)×;(5)×;
(3)在SSL/TLS中,由于使用了公钥密码或者密钥交换技术,但是如果伪随机数品质较低,生成的共享密钥就有可能被预测出来,造成安全隐患。
(4)为了对公钥进行验证,客户需要持有该认证机构的合法公钥。
(5)没有什么密码算法是绝对安全的,因此,使用SSL/TLS的公司也不能完全放心的发送信号。