其他分享
首页 > 其他分享> > 密码学101:应用技术

密码学101:应用技术

作者:互联网

4.1 PGP——密码技术的完美组合

本章以密码软件PGP(Pretty Good Privary)为题材,思考一下将前面章节所学习的密码技术进行组合的方法。

OpenGPG是对密文和数字签名进行定义的标准规格。

GNU Privacy Guard是一款基于OpenPGP标准开发的密码学软件,支持加密、数字签名、密钥管理、S/MIME、ssh等多种功能。它本身是一个命令行工具,但也经常被集成到其他应用软件中。

小结:本章以PGP为例讲解了多种密码技术的组合。

4.2 SSL/TLS

SSL/TLS是世界上应用最广泛的密码通信方法。首先介绍运用场景,然后再介绍使用SSL/TLS的通信步骤和攻击方法。严格来说,TLS相当于是SSL的后续版本。SSL/TLS是一种在Web服务器中广泛使用的协议。

4.2.1 SSL/TLS的工作

在一个网店支付场景中,我们有几个问题必须要解决:

  1. 信用卡号和地址在发送到书店的过程中不能被窃听(机密性)
  2. 信用卡号和地址在发送到书店的过程中不能被篡改(完整性)
  3. 确认通信对方的Web服务器是真正的书店(认证)

要确保机密性,可以使用对称密码。使用伪随机数生成器生成密钥。密钥配送可以使用公钥密码Diffie-Hellman密钥交换。要识别篡改,对数据进行认证,可以使用消息认证码。要对通信对象进行认证,可以使用对公钥加上数字签名所生成的证书。

工具已经备齐,只要用一个“框架”把工具都组合起来就可以了。SSL/TLS协议其实就扮演了这样一种框架的角色。

4.2.2 使用SSL/TLS进行通信

4.2.2.1 层次化的协议

基于TLS1.2。TLS协议由TLTS记录协议和TLS握手协议这两层协议叠加而成。位于底层的记录协议负责进行加密,位于上层的握手协议负责加密以外的其他各种操作。TLS握手协议又可以分成4个子协议。

4.2.2.2 记录协议过程

TLS记录协议负责消息的压缩、加密以及数据的认证。

  1. 首先,消息被分割为多个较短的片段;然后对每个片段进行压缩,压缩算法需要协商。
  2. 被压缩的片段被加上消息认证码。为了防止重放攻击,计算消息认证码时还加上了片段的编号。单向散列函数的算法、消息认证码所使用的密钥都需要与通信对象协商。
  3. 压缩片段和消息认证码回通过对称密码加密。使用CBC模式。
  4. 经过加密的数据再加上由数据类型、版本号、压缩后的长度组成的报头就是最终的报文数据。其中数据类型是TLS记录协议所承载的4个字协议的其中之一。

4.2.2.3 握手过程

  1. 客户端➡️服务器:提供客户端可用的密码套件清单、压缩方式清单,询问使用哪一个。
  2. 客户端⬅️服务端:选择使用的密码套件、压缩方式。
  3. 客户端⬅️服务端:发送Certificate消息(证书清单)。匿名通信时不发送证书。
  4. 客户端⬅️服务端:发送ServerKeyExchange消息。当certificate消息不足以满足需求时,会发送,否则不会。
  5. 客户端⬅️服务端:发送CertificateRequest消息(服务器能理解的证书类型清单、认证机构名称清单)。当不使用客户端认证时,不会发送。
  6. 客户端⬅️服务端:发送ServerHelloDone消息。
  7. 客户端➡️服务器:发送Certificate消息(证书)。步骤5发生时会发送,否则不会。
  8. 客户端➡️服务器:发送ClientKeyExchange消息。若使用RSA,会发送加密的预备主密钥;若使用Diffie-Hellman密钥交换,发送Diffie-Hellman公开值。根据预备主密钥,服务端和客户端会计算出相同的主密码,然后再根据主密码生成下列比特序列:对称密码的密钥、消息认证码的密钥、对称密码的CBC模式中使用的初始化向量。
  9. 客户端➡️服务器:发送CertificateVerify消息。步骤5发生时会发送,否则不会。客户端计算“主密码”和“握手协议中传送的信息”的散列值,并加上自己的数字签名后发送给服务器。
  10. 客户端➡️服务器:发送ChangeCipherSpec消息。密码规格变更协议的消息,发送之后,TLS记录协议开始使用双方协定决定的密码通信方式。
  11. 客户端➡️服务端:客户端发送Finished消息。使用切换后的密码套件发送,实际加密操作由TLS记录协议负责。
  12. 客户端⬅️服务端:服务器发送ChangeCipherSpec消息。
  13. 客户端⬅️服务端:服务器发送Finished消息。
  14. 切换至应用数据协议。在此之后,客户端和服务器都会使用应用数据协议和TLS记录协议进行密码通信。

4.2.2.4 密码规格变更协议

即使密码通信开始之后,客户端和服务器也可以通过重新握手来再次改变密码套件。

4.2.2.5 主密码

主密码是TLS客户端和服务器之间协商出来的一个秘密的数值。这个数值非常重要,TLS密码通信的机密性和数据的认证全部依靠这个数值。主密码是一个48字节(394比特)的数值。

主密码是客户端和服务器根据以下信息计算出来的:

当根据预备主密码计算主密码时,需要使用基于密码套件中定义的单向散列函数来实现的伪随机函数。主密码主要用于生成6种信息:对称密码密钥、消息认证码密钥、对称密码CBC模式所使用的初始化向量(客户端➡️服务器、客户端⬅️服务器)。

4.2.3 攻击

小结:本章总结了SSL/TLS相关知识,了解了客户端和服务器通过交换一些必要信息来实现密码通信的过程。SSL/TLS是将对称密码、公钥密码、单向散列函数、消息认证码、伪随机数生成器、数字签名等技术相结合来实现通信安全的。此外,SSL/TLS还可以通过切换密码套件来使用强度更高的密码算法。

标签:TLS,协议,数字签名,密码,密钥,应用,101,密码学,客户端
来源: https://blog.csdn.net/po4kee/article/details/121636429