SSL和TLS协议如何提供身份验证、机密性和完整性

简介: SSL 和 TLS 协议使两方能够相互识别和验证,并以机密性和数据完整性进行通信。

SSL 和 TLS 协议使两方能够相互识别和验证,并以机密性和数据完整性进行通信。SSL 和 TLS 协议通过 Internet 提供通信安全性,并允许客户端/服务器应用程序以保密和可靠的方式进行通信。这些协议有两层:记录协议和握手协议,它们位于 TCP/IP 等传输协议之上。它们都使用非对称和对称加密技术。

 

SSL 或 TLS 连接由成为 SSL 或 TLS 客户端的应用程序启动。接收连接的应用程序成为 SSL 或 TLS 服务器。正如 SSL 或 TLS 协议所定义的,每个新会话都以握手开始。SSL 或 TLS 握手使 SSL 或 TLS 客户端和服务器能够建立与之通信的密钥。了解更多SSL技术最新信息,请访问沃通CA官网

 

在客户端和服务器身份验证期间,有一个步骤要求使用非对称密钥对中的一个密钥对数据进行加密,并使用该对中的另一个密钥对其进行解密,消息摘要用于提供完整性。详情请参阅SSL工作原理

130-1.gif

SSL 和 TLS 如何提供身份验证

对于服务器身份验证,客户端使用服务器的公钥来加密用于计算密钥的数据。只有当服务器可以使用正确的私钥解密该数据时,它才能生成密钥。

对于客户端身份验证,服务器使用客户端证书中的公钥解密客户端在第5步握手期间发送的数据。使用密钥加密的已完成消息的交换(概述中的步骤7和8 )确认身份验证已完成。

如果任何身份验证步骤失败,则握手失败并且会话终止。

SSL 或 TLS 握手期间的SSL证书交换是身份验证过程的一部分。SSL证书需由全球信任的CA机构颁发,受浏览器、操作系统和移动端信任。所需证书如下,其中CAx向客户端颁发证书,CAy向SSL 或 TLS 服务器颁发证书:

仅对于服务器身份验证,SSL 或 TLS 服务器需要:

  • CA颁发给服务器证书Y
  • 服务器的私钥

SSL 或 TLS 客户端需要:

  • CA 的 CA 证书Y

如果 SSL 或 TLS 服务器需要客户端身份验证,则服务器通过使用向客户端颁发个人证书的 CA(在本例中为 CA )的公钥验证客户端的数字证书来验证客户端的身份X。对于服务器和客户端身份验证,服务器需要:

  • CA颁发给服务器的个人证书Y
  • 服务器的私钥
  • CA 的 CA 证书X

和客户端需要:

  • CA颁发给客户的个人证书X
  • 客户的私钥
  • CA 的 CA 证书Y

SSL 或 TLS 服务器和客户端都可能需要其他 CA 证书来形成根 CA 证书的证书链。详情请参阅如何补全SSL证书链

 

证书验证期间会发生什么

如概述的第3步和第 6步所述,SSL 或 TLS 客户端验证服务器的证书,而 SSL 或 TLS 服务器验证客户端的证书。这个验证有四个方面:

Ÿ   检查数字签名

Ÿ   检查证书链;您应该拥有中间 CA 证书

Ÿ   检查到期和激活日期以及有效期

Ÿ   检查证书的吊销状态

 

密钥重置

在 SSL 或 TLS 握手期间,会生成一个密钥来加密 SSL 或 TLS 客户端和服务器之间的数据。密钥用于数学公式中,该公式应用于数据以将明文转换为不可读的密文,并将密文转换为明文。

密钥是从作为握手的一部分发送的随机文本生成的,用于将明文加密为密文。密钥还用于 MAC(消息验证码)算法,用于确定消息是否已被更改。

如果发现密钥,则可以从密文中破译消息的明文,或者可以计算消息摘要,从而允许在不被发现的情况下更改消息。即使对于复杂的算法,明文最终也可以通过对密文应用所有可能的数学变换来发现。如果密钥被破坏,为了最大限度地减少可以解密或更改的数据量,可以定期重新协商密钥。当密钥重新协商后,以前的密钥不能再用于解密用新密钥加密的数据。

SSL 和 TLS 如何提供机密性

SSL 和 TLS 结合使用对称和非对称加密来确保消息隐私。在 SSL 或 TLS 握手期间,SSL 或 TLS 客户端和服务器同意仅用于一个会话的加密算法和共享密钥。SSL 或 TLS 客户端和服务器之间传输的所有消息都使用该算法和密钥进行加密,确保消息即使被截获也保持私密。SSL 支持范围广泛的加密算法。因为 SSL 和 TLS 在传输共享密钥时使用非对称加密,所以不存在密钥分配问题。

SSL 和 TLS 如何提供完整性

SSL 和 TLS 通过计算消息摘要来提供数据完整性。使用 SSL 或 TLS 确实可以确保数据完整性,前提是您的通道定义中的 CipherSpec 使用指定 CipherSpecs中的表中描述的哈希算法。

特别是,如果数据完整性是一个问题,您应该避免选择散列算法被列为“无”的 CipherSpec。强烈建议不要使用 MD5,因为它现在已经很老了,对于大多数实际用途来说不再安全。


了解更多SSL技术最新信息,请访问沃通CA官网

相关文章
|
21天前
|
监控 安全 Linux
在Linux中,如何管理SSL/TLS证书?
在Linux中,如何管理SSL/TLS证书?
|
17天前
|
存储 Linux 网络安全
【Azure App Service】.NET代码实验App Service应用中获取TLS/SSL 证书 (App Service Linux/Linux Container)
【Azure App Service】.NET代码实验App Service应用中获取TLS/SSL 证书 (App Service Linux/Linux Container)
|
17天前
|
网络安全 API 数据安全/隐私保护
【Azure App Service】.NET代码实验App Service应用中获取TLS/SSL 证书 (App Service Windows)
【Azure App Service】.NET代码实验App Service应用中获取TLS/SSL 证书 (App Service Windows)
|
22天前
|
安全 Linux 应用服务中间件
在Linux中,SSL/TLS证书的作用以及如何在Linux中管理它们?
在Linux中,SSL/TLS证书的作用以及如何在Linux中管理它们?
|
23天前
|
安全 网络安全 数据安全/隐私保护
|
28天前
|
存储 安全 Linux
如何在 CentOS VPS 上配置 vsftpd 使用 SSL/TLS
如何在 CentOS VPS 上配置 vsftpd 使用 SSL/TLS
17 0
|
2月前
|
Linux 网络安全 开发者
【Python】已解决:WARNING: pip is configured with locations that require TLS/SSL, however the ssl module i
【Python】已解决:WARNING: pip is configured with locations that require TLS/SSL, however the ssl module i
209 3
|
2月前
|
安全 网络协议 网络安全
SSL(Secure Sockets Layer)是一种安全协议,用于在客户端和服务器之间建立加密的通信通道。
SSL(Secure Sockets Layer)是一种安全协议,用于在客户端和服务器之间建立加密的通信通道。
|
3月前
|
网络安全 安全 Java
Java一分钟之-SSL/TLS:安全套接字层与传输层安全
【6月更文挑战第2天】本文介绍了SSL/TLS协议在保护数据传输中的作用,以及Java中使用JSSE实现SSL/TLS的基础。内容涵盖SSL/TLS工作流程、版本、常见问题及解决办法。通过`SSLSocket`和`SSLServerSocket`示例展示了服务器和客户端的实现,并强调证书管理、配置检查和依赖更新的最佳实践,以确保安全的通信。
235 4
|
3月前
|
前端开发 Java 网络安全
基于Java Socket实现的SMTP邮件客户端 - 全面支持SSL, TLS
基于Java Socket实现的SMTP邮件客户端 - 全面支持SSL, TLS
37 0

热门文章

最新文章