TLS概述

SSL/TLS协议是用于HTTPS的安全协议,提供数据加密、服务器及客户端身份验证、消息完整性保障。它包括握手层(握手协议、更改密码规范协议、告警协议)和记录层。虽然带来安全性和互操作性,但也增加了处理器负载和管理成本。SSL与TLS存在差异,不能互操作。常用加密类型包括对称密钥和非对称密钥,以及哈希算法确保数据完整性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Thank Zhihao Tao for your hard work. The document spent countless nights and weekends, using his hard work to make it convenient for everyone.
If you have any questions, please send a email to zhihao.tao@outlook.com


1. 概述

TLS (Transport Layer Security)即传输层安全性协议,及其前身SSL(Secure Sockets Layer)安全套接层协议是一种安全协议。

SSL/TLS用于HTTPS的协议,也可以用于其他应用程序级别的协议,例如FTPLDAPSMTPSSL/TLS通过网络启用服务器身份验证客户端身份验证数据加密数据完整性

1.1 SSL和TLS的差异

  • TLS 1.0应用了Keyed-Hashing消息认证代码(HMAC)算法,而SSL 3.0应用了消息认证代码(MAC)算法。HMAC提供与MAC一样的完整性校验值,但是其由散列函数构造,使得更难以破解。

注意:

尽管它们的区别很小,但TLS 1.0和SSL 3.0不能互操作。

1.2 SSL/TLS优势

SSL/TLS具备许多优势,包括:

  • 消息私密性SSL/TLS的主要功能是能够使用加密来保护传输的数据。

  • 身份验证SSL/TLS提供服务器身份验证以及(可选的)客户端身份验证,以证明参与安全通信的各方的身份。

  • 消息完整性SSL/TLS可以用于防止

    • 伪装攻击(masquerade attacks),
    • 中间人攻击(man-in-the-middle),
    • 斗链式攻击(bucket brigade attack),
    • 回滚攻击(rollback attacks)和重播攻击(replay attacks)。
  • 互操作性SSL/TLS适用于大多数Web浏览器,以及大多数操作系统和Web服务器。

  • 算法的灵活性SSL/TLS提供了在安全会话期间使用的身份验证机制,加密算法和哈希算法的选项。

  • 易于部署。多数应用程序都透明地使用SSL/TLS

  • 便于使用。由于SSL/TLS是在应用层下实现的,因此其大多数操作对于客户端是完全不可见的。这使客户端几乎不了解安全通信,甚至不了解安全通信,并且仍然可以免受攻击者的攻击。

1.3 SSL/TLS劣势

SSL/TLS具备一些劣势,包括:

  • 增加处理器负载。这是实现SSL/TLS的最大劣势。密码学,特别是公钥操作,占用大量CPU。结果,使用SSL时会降低性能。

  • 管理成本SSL/TLS环境很复杂,需要维护;系统管理员需要配置系统并管理证书。

1.4 资料

2. 协议概述

SSL/TLS位于应用层和TCP/IP层之间,可以在其中进行保护,然后将应用数据发送到传输层。因为它在应用层和TCP/IP层之间工作,所以SSL/TLS可以支持多种应用层协议。

SSL/TLS可以分为两层:

  • 第一层是握手层,它由三个子协议组成:
    • 握手协议(Handshake Protocol),
    • 更改密码规范协议(Change Cipher Spec Protocol),
    • 告警协议(Alert protocol)。
  • 第二层是记录层。

SSL/TLS

2.1 握手层

2.1.1 握手协议

握手协议用于协商客户端和服务器之间的会话信息。会话信息包括会话ID,对等证书,要使用的密码规范,要使用的压缩算法以及用于生成密钥的共享密钥。

2.1.2 更改密码规范协议

更改密码规范协议用于更改客户端和服务器之间用于加密的密钥材料。密钥材料是原始数据,用于创建用于加密的密钥。更改密码规范子协议包含一条消息,该消息告诉SSL/TLS会话中的另一方(也称为对等方),发件人希望更改为一组新的密钥。根据握手子协议交换的信息来计算密钥。

2.1.3 告警协议

告警协议用于向对等方指示状态更改或错误情况。有多种警报可将正常和错误情况通知给对等方。完整列表可以在RFC 2246[The TLS Protocol Version 1.0]中找到。当连接关闭,收到无效消息,消息无法解密或用户取消操作时,通常会发送告警。

2.2 记录层

记录层的协议从应用层接收并加密数据,并将其传递到传输层。记录协议获取数据,将其分段成适合密码算法的大小,然后选择压缩(或对于接收到的数据,将其解压缩),应用MACHMAC(仅TLS支持HMAC),然后加密(或使用在握手协议期间协商的信息来解密)数据。

3. 安全性

3.1 认证方式

为了进行身份验证,握手协议使用X.509证书向第二方提供有力的证据,以帮助证明持有证书和相应私钥的一方的身份。证书是一种数字形式的标识,通常由证书颁发机构(CA)颁发,其中包含标识信息有效期公钥序列号颁发者的数字签名

证书

CA是相互信任的第三方,用于确认证书请求者(通常是用户或计算机)的身份,然后向请求者颁发证书。证书将请求者的身份绑定到公共密钥。CA还根据需要续订和吊销证书。例如,如果为客户端提供了服务器的证书,则客户端计算机可能会尝试将服务器的CA与客户端的受信任CA列表进行匹配。如果颁发CA是受信任的,则客户端将验证证书是真实的并且未被篡改。最后,客户端将接受证书作为服务器身份的证明。

3.2 加密

加密有两种主要类型:

  • 对称密钥(也称为共享密钥)
  • 非对称密钥(也称为公共密钥或公共-私有密钥)。

SSL/TLS同时使用对称密钥和非对称密钥加密。

3.2.1 对称密钥

在对称密钥加密中,使用相同的密钥用于加密和解密消息。如果双方要安全地交换加密的消息,则它们都必须都拥有相同对称密钥的副本。对称密钥密码术通常用于加密大量数据,因为它的计算速度比非对称密码术快。典型的算法包括DES(数据加密标准),3-DES(三重DES),RC2,RC4和AES(高级加密标准)。

3.2.2 非对称密钥

非对称或公共密钥加密使用通过复杂的数学过程一起导出的一对密钥。通常通过要求CA向证书持有者在证书中发布公钥来公开其中一个密钥。
证书持有者将私钥保密,并且永远不会透露给任何人。密钥协同工作,一个用于执行另一个的相反操作:

  • 如果使用公共密钥加密数据,则只有对应的私有密钥可以解密它;
  • 如果使用私有密钥进行加密,则必须使用其公共密钥进行解密。

这种关系使公钥加密方案可以做两项重要的事情:

  • 首先,任何人都可以获取证书持有者的公钥,并使用它来加密只有拥有私钥的用户才能解密的数据。
  • 第二,如果证书持有者使用其私有密钥加密数据,则任何人都可以使用相应的公共密钥解密数据。这是数字签名的基础。最常见的算法是RSA (Rivest, Shamir & Adleman)。

3.2.3 其他

SSL/TLS使用公共密钥加密来向客户端验证服务器,也可以向服务器验证客户端(可选)。公钥加密也用于建立会话密钥。会话密钥在对称算法中用于加密大量数据。这将用于身份验证的非对称加密的好处与用于批量数据的更快,处理器占用更少的对称密钥加密相结合。

3.3 哈希算法

在握手过程中,哈希算法也已达成共识。散列用于建立传输期间的数据完整性。两种常见的哈希算法是消息摘要5(MD5)和标准哈希算法1(SHA-1)。MD5产生128位哈希值,而SHA-1产生160位哈希值。

哈希算法包括用于检查所传输数据的完整性的值。此值是使用MAC或HMAC建立的。MAC使用映射功能将消息数据表示为固定长度(最好是较小的值),然后对消息进行哈希处理。MAC确保数据在传输过程中没有被修改。MAC和数字签名之间的区别在于,数字签名也是一种身份验证方法。SSL使用MAC。

HMAC与MAC相似,但结合使用哈希算法和共享密钥。共享密钥被附加到要散列的数据上。这使散列更加安全,因为双方必须具有相同的共享密钥才能证明数据是真实的。TLS使用HMAC。有关HMAC的更多信息,请参见RFC 1024,“用于消息身份验证的键哈希”。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

phantasms

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值