SSL/TLS 素颜马尾好姑娘i 2022-11-20 10:53 198阅读 0赞 ### 文章目录 ### * * * * (一)介绍 * (二)客户端和服务端 * (三)SSL和TLS区别 * (四)使用SSL/TLS进行通信 * (五)TLS小结 * (六)对SSL/TLS的攻击 #### (一)介绍 #### SSL/TLS是世界上应用最广泛的密码通信方法。比如说,当在网上商城中输人信用卡号时,我们的Web浏览器就会使用SSL/TLS进行密码通信。使用SSL/TLS可以对通信对象进行认证,还可以确保通信内容的机密性。 SSL/TLS中综合运用了对称密码、消息认证码、公钥密码、数字签名、伪随机数生成器等密码技术。严格来说,SSL ( Secure Socket Layer )与TLS( Transport Layer Security )是不同的,TLS相当于是SSL 的后续版本。 #### (二)客户端和服务端 #### ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L09jdG9wdXMyMQ_size_16_color_FFFFFF_t_70_pic_center] Alice和 Bob书店之间的通信,实际上是Alice所使用的 Web浏览器和Bob书店的Web服务器之间的通信。Web浏览器是Alice的计算机上运行的一个程序,而Web服务器则是在Bob书店的计算机上运行的一个程序,它们都遵循一种叫作HTTP ( HyperText Transfer Protocol,超文本传输协议)的协议( protocol )来进行通信。其中,Web浏览器称为HTTP客户端,Web服务器称为HTTP服务器。 当Alice点击网页上的链接或者输人URL时,Web浏览器就会通过网络向Web服务器发送一个“我要浏览这个网页”的请求(request )。 Web服务器则将请求的网页内容发送给Web浏览器,以便对请求作出响应( response)。服务器和客户端之间所进行的处理就是请求和响应的往复。HTTP可以认为是在HTTP客户端与HTTP服务器之间进行请求和响应的规范。 Alice向 Bob书店发送信用卡号也是使用HTTP来完成的(图14-2)。Alice输入信用卡号之后按下提交按钮,这时客户端( Web浏览器)就会将信用卡号作为HTTP请求发送给服务器。服务器则会将“生成订单”的网页作为HTTP响应返回给客户端。 不过,如果直接发送请求的话,信用卡号就很可能被窃听。 当Web浏览器发送信用卡号时,信用卡号的数据会作为客户端请求发送给服务器。如果通信内容被窃听者Eve所窃取,Eve就会得到信用卡号。 于是,我们可以用SSL ( Secure Socket Layer )或者TLS (Transport Layer Security )作为对通信进行加密的协议,然后在此之上承载HTTP。通过将两种协议进行叠加,我们就可以对HTTP的通信(请求和响应)进行加密,从而防止窃听。通过SSL/TLS进行通信时.URL不是以http://开头,而是以 https:/开头。 以上就是SSL/TLS 的简单介绍。 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L09jdG9wdXMyMQ_size_16_color_FFFFFF_t_70_pic_center 1] 在大致了解了SSL/TLS之后,我们来整理一下SSL/TLS到底负责哪些工作。我们想要实现的是,通过本地的Web浏览器访问网络上的Web服务器,并进行安全的通信。用前面的例子来说就是,Alice希望通过Web浏览器向Bob书店发送信用卡号。 在这里,我们有几个必须要解决的问题。 (1) Alice的信用卡号和地址在发送到Bob书店的过程中不能被窃听。 (2) Alice的信用卡号和地址在发送到Bob书店的过程中不能被篡改。 (3)确认通信对方的Web服务器是真正的 Bob书店。 在这里, (1)是机密性的问题 (2)是完整性的问题 而(3)则是认证的问题 为了解决这些问题,让我们在密码学家的工具箱中找一找。 要确保机密性,可以使用对称密码。由于对称密码的密钥不能被攻击者预测,因此我们使用伪随机数生成器来生成密钥。若要将对称密码的密钥发送给通信对象,可以使用公钥密码或者Diffie-Hellman密钥交换。 要识别篡改,对数据进行认证,可以使用消息认证码。消息认证码是使用单向散列函数来实现的。 要对通信对象进行认证,可以使用对公钥加上数字签名所生成的证书。 好,工具已经找齐了,下面只要用一个“框架”( framework)将这些工具组合起来就可以了。SSL/TLS协议其实就扮演了这样一种框架的角色。 刚才我们提到用SSL/TLS承载HTTP通信,这是因为HTTP是一种很常用的协议。其实SSL/TLS上面不仅可以承载HTTP,还可以承载其他很多协议。例如,发送邮件时使用的SMTP( Simple Mail Transfer Protocol,简单邮件传输协议)和接收邮件时使用的POP3 ( Post OfficeProtocol,邮局协议)都可以用SSL/TLS进行承载。在这样的情况下,SSL/TLS就可以对收发的邮件进行保护。 用SSL/TLS承载HTTP、SMTP和 POP3的结构如下图所示。一般的电子邮件软件都可以完成发送和接收邮件这两种操作,其实是同时扮演了SMTP客户端和POP3客户端这两种角色。 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L09jdG9wdXMyMQ_size_16_color_FFFFFF_t_70_pic_center 2] SSL/TLS提供了一种密码通信的框架,这意味着SSL/TLS中使用的对称密码、公钥密码、数字签名、单向散列函数等技术,都是可以像零件一样进行替换的。也就是说,如果发现现在所使用的某个密码技术存在弱点,那么只要将这一部分进行替换就可以了。 尽管如此,也并不是说所有的组件都可以自由选择。由于实际进行对话的客户端和服务器必须使用相同的密码技术才能进行通信,因此如果选择过于自由,就难以确保整体的兼容性。为此,SSL/TLS就像事先搭配好的盒饭一样,规定了一些密码技术的“推荐套餐”,这种推荐套餐称为密码套件 #### (三)SSL和TLS区别 #### 前面我们是将SSL和TLS作为一个整体(SSL/TLS)来对待的。正如开头所提到的那样,SSL和TLS在大体上是相同的,但也存在微妙的差异,这里将不会特别涉及这些差异的部分。 SSL ( Secure Socket Layer,安全套接层)是1994年由网景( Netscape)公司设计的一种协议,并在该公司的Web浏览器Netscape Navigator 中进行了实现。随后,很多Web浏览器都采用了这一协议,使其成为了事实上的行业标准。SSL已经于1995年发布了3.0版本。 TLS ( Transport Layer Security,传输层安全)是IETF 在SSL 3.0的基础上设计的协议。在1999年作为RFC 2246发布的TLS 1.0,实际上相当于SSL 3.1。 2006年,TLS 1.1 以RFC 4346的形式发布R,这个版本中增加了针对CBC攻击的对策。此外,在TLS 1.1中,对称密码算法加入了AES #### (四)使用SSL/TLS进行通信 #### 备注:下面的内容是基于TLS 1.0,下面不使用SSL/TLS这一名称,而是直接写作TLS (1)层次化的协议 TLS协议是由“TLS记录协议”( TLS record protocol )和“TLS握手协议”( TLS handshakeprotocol)这两层协议叠加而成的。位于底层的TLS记录协议负责进行加密,而位于上层的TLS握手协议则负责除加密以外的其他各种操作。上层的TLS握手协议又可以分为4个子协议。 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L09jdG9wdXMyMQ_size_16_color_FFFFFF_t_70_pic_center 3] 1、TLS记录协议 TLS记录协议位于TLS握手协议的下层,是负责使用对称密码对消息进行加密通信的部分。 TLS记录协议中使用了对称密码和消息认证码,但是具体的算法和共享密钥则是通过后面将要介绍的握手协议在服务器和客户端之间协商决定的。 2、TLS握手协议 TLS握手协议分为下列4个子协议:握手协议、密码规格变更协议、警告协议和应用数据协议。 2.1握手协议 握手协议是TLS握手协议的一部分,负责在客户端和服务器之间协商决定密码算法和共享密钥。基于证书的认证操作也在这个协议中完成。它是4个子协议中最复杂的一个。 通信过程参考如下: 客户端:“你好。我能够理解的密码套件有RSA/3DES,或者DSS/AES,请问我们使用哪一种密码套件来通信呢?” 服务器:“你好。那么我们用RSA/3DES来进行通信吧,这是我的证书。” 在服务器和客户端之间通过握手协议协商一致之后,就会相互发出信号来切换密码。负责发出信号的就是密码规格变更协议。 2-2密码规格变更协议 密码规格变更协议是TLS握手协议的一部分,负责向通信对象传达变更密码方式的信号。简单地说,就跟向对方喊“1、2、3 !”差不多。 这个协议所发送的消息,大致相当于下面的对话: 客户端:“好,我们按照刚才的约定切换密码吧。1、2、3 !”当协议中途发生错误时,就会通过下面的警告协议传达给对方。 2-3警告协议 警告协议是TLS握手协议的一部分。警告协议负责在发生错误时将错误传达给对方。这个协议所发送的消息,大致相当于下面的对话: 服务器:“刚才的消息无法正确解密哦!” 如果没有发生错误,则会使用下面的应用数据协议来进行通信。 2-4应用数据协议 应用数据协议是TLS握手协议的一部分。应用数据协议是将TLS上面承载的应用数据传达给通信对象的协议。 #### (五)TLS小结 #### ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L09jdG9wdXMyMQ_size_16_color_FFFFFF_t_70_pic_center 4] #### (六)对SSL/TLS的攻击 #### 1、对各个密码技术的攻击 2、对伪随机数生成器的攻击 3、利用证书的时间差进行攻击 [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L09jdG9wdXMyMQ_size_16_color_FFFFFF_t_70_pic_center]: /images/20221120/879f06e9123e45e88ee490cd685d2cd7.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L09jdG9wdXMyMQ_size_16_color_FFFFFF_t_70_pic_center 1]: /images/20221120/b6adb6857aea4e31879240d707dda253.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L09jdG9wdXMyMQ_size_16_color_FFFFFF_t_70_pic_center 2]: /images/20221120/7624c8b7d7c843d588484a6c3705b109.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L09jdG9wdXMyMQ_size_16_color_FFFFFF_t_70_pic_center 3]: /images/20221120/d0e9338206904e0094d55351d0326cf6.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L09jdG9wdXMyMQ_size_16_color_FFFFFF_t_70_pic_center 4]: https://img-blog.csdnimg.cn/20201028161935371.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L09jdG9wdXMyMQ==,size_16,color_FFFFFF,t_70#pic_center
还没有评论,来说两句吧...