目录
用对称密码提高速度,用公钥密码保护会话密钥 用对称密码提高速度,用公钥密码保护会话密钥 用对称密码提高速度,用公钥密码保护会话密钥
一、本章学习内容
混合密码系统 用对称密码 来 加密明文,用 公钥密码 来加密对称密码中所使用的 密钥。通过
使用混合密码系统,就能够在通信中将对称密码和公钥密码的优势结合起来。
二、混合密码系统
1、对称密码与公钥密码
通过使用 对称密码,我们就能够在通信中确保 机密性。然而要在实际中运用对称密码,就必须解决 密钥配送问题。
而通过使用第5章中介绍的 公钥密码,就可以 避免解密密钥的配送,从而也就 解决了 对称密码所具有的 密钥配送问题。
但是公钥密码具有两个很大的问题:
- 公钥密码的处理速度远远低于对称密码
- 公钥密码难以抵御中间人攻击
本章中介绍的 混合密码系统 就是解决上述 问题1 的方法。而要解决 问题2, 则需要 对公钥进行认证。关于认证的方法,我们将在 第10章 进行介绍。
2、混合密码系统
混合密码系统中会 先用快速的对称密码来对消息进行加密,这样 消息就被转换为了密文,从而也就保证了 消息的机密性。然后我们只要保证 对称密码的密钥的机密性 就可以了。
这里就轮到 公钥密码 出场了,我们可以用 公钥密码 对加密消息时使用的 对称密码的密钥 进行加密。由于对称密码的密钥一般比消息本身要短,因此 公钥密码速度慢的问题就可以忽略了。
- 将 消息 通过 对称密码 来加密;
- 将加密消息时使用的 密钥 通过 公钥密码来加密。
接下来罗列一下混合密码系统的组成机制:
- 用对称密码加密消息
- 通过伪随机数生成器生成对称密码加密中使用的会话密钥
- 用公钥密码加密会话密钥
- 从混合密码系统外部赋予公钥密码加密时使用的密钥
混合密码系统使用了 伪随机数生成器、对称密码、公钥密码 这三种密码技术。
3、加密
混合密码系统的加密过程如 图6-2 所示:
3.1、明文、密钥、密文
混合系统的部分 | 对应的实际内容 |
---|---|
混合系统的明文 | 发送者要发送的消息 |
混合系统的密钥 | 接收者受到的公钥 |
混合系统的密文 | 用公钥加密的会话密钥+用对称密码加密的消息 |
3.2、加密消息 (虚线的右边)
消息的加密方法 和对称密码的一般加密方法相同,当消息很长时,则需要使用 第4章 中介绍的 分组密码的模式。即便是 非常长的消息,也可以通过 对称密码 快速完成加密。这就是右半部分所进行的处理。
3.3、加密会话密钥 (虚线的左边)
会话密钥 (session key) 是指为本次通信而生成的 临时密钥,它一般是通过 伪随机数生成器 产生的,作为 对称密码的密钥 使用。
接下来,通过 公钥密码 对 会话密钥 进行加密,公钥密码加密所使用的 密钥 是 接收者的公钥。
会话密钥 一般比消息本身要 短。以一封邮件的加密为例,消息就是邮件的正文,长度一般为几千个字节,而 会话密钥 最多也就是 十几个字节。因此即使公钥加密速度很慢,要 加密一个会话密钥 所花的时间是不长的。
3.4、组合
所谓组合,就是把 通过公钥加密的会话密钥 和 通过会话密钥加密的消息 按顺序拼在一起。
组合之后的数据就是 混合密码系统整体的 密文。
4、解密
理解了加密之后,解密也就不难理解了。混合密码系统的解密过程如 图6-3 所示。
4.1、分离
混合密码系统的密文是由 “用公钥密码加密的会话密钥” 和 “用对称密码加密的消息” 组合而成的,因此我们 首先需要将两者分离。
只要发送者和接收者事先约定好 密文的结构,将两者分离的操作就很容易完成。
4.2、解密会话密钥 (公钥密码部分)
接收者使用自己的 私钥 将 会话密钥 解密出来,解密后的 会话密钥 可以用来解密 密文中的消息。
4.3、解密消息 (对称密码部分)
用上一步得到的 会话密钥 解密消息即可。
5、混合密码系统的具体例子
著名的密码软件 PGP、以及网络上的密码通信所使用的 SSL/TLS 都运用了混合密码系统。
PGP 的处理除了这里介绍的混合密码系统之外,还包括数字签名、数字签名认证以及私钥管理等处理。PGP 处理的流程图比混合密码系统要复杂很多,但却非常有意思,具体内容在 第13章 进行探讨。
三、怎样才是高强度的混合密码系统
混合密码系统运用了 伪随机数生成器、 对称密码和公钥密码,因此其中 每一种技术要素的强度 都必须很 高。然而实际上还不仅如此,这些 技术要素之间的强度平衡 也非常重要。
1、伪随机数生成器
混合密码系统中,伪随机数生成器 被用于产生 会话密钥。如果伪随机数生成器的算法很差,生成的会话密钥就有可能被攻击者推测出来。
会话密钥 中哪怕只有 部分比特 被推测出来也是很危险的,因为 会话密钥的密钥空间不大,很容易通过 暴力破解 来发动攻击。关于针对伪随机数生成器的攻击方法,我们将在 第12章 详细讨论。
2、对称密码
混合密码系统中,对称密码被用于 加密消息。当然,我们需要使用 高强度的对称密码算法,并确保 密钥具有足够的长度。此外,我们还需要选择使用合适的 分组密码模式。
3、公钥密码
混合密码系统中,公钥密码被用于 加密会话密钥。我们需要使用 高强度的公钥密码算法,并确保 密钥具有足够的长度。
4、密钥长度的平衡 (强度平衡)
混合密码系统中运用了 对称密码 和 公钥密码 两种密码方式,无论其中任何一方的 密钥过短,都可能遭到 集中攻击,因此对称密码和公钥密码的 密钥长度 必须具备 同等的强度。
然而,考虑到 长期运用的情况,公钥密码的强度 应该要 高于 对称密码,因为 对称密码的会话密钥 被破译 只会影响本次通信的内容 (因为每次通信的会话密钥都不一样),而 公钥密码 一旦被破译,从 过去到未来的 (用相同公钥加密的) 所有通信内容就都能够被破译了。
四、密码技术的组合
密码技术的组合经常被用于构建一些实用的系统。
例如,第4章 中介绍的 分组密码模式,就是将 只能加密固定长度的数据的分组密码 进行组合,从而使其能够 对更长的明文进行加密 的方法。通过采用不同的分组密码组合方式,我们就可以构建出各种具有不同特点的分组密码模式。
三重DES 是将 3个 DES 组合在一起. 从而形成的一种 密钥 比 DES 更长的对称密码。通过 加密-解密-加密 这样的连接方式,不但可以维持和 DES 的兼容性,间时还能够选择性地使用 DES-EDE2 这种 密钥长度较短 的密码。
在本书剩下的章节中,还会出现一些 由多种技术组合而成 的技术,我们来做个简单的介绍:
- 数字签名 —— 由 单向散列函数 和 公钥密码 组合而成的
- 证书 —— 由 公钥 和 数字签名 组合而成
- 消息认证码 —— 由 单向散列函数 和 密钥 组合而成的,也可以通过 对称密码 来生成
- 伪随机数生成器 —— 可以使用 对称密码、单向散列函数 或者 公钥密码来构建
还有一些很神奇的系统,例如:
- 电子投票;
- 能够 在不知道内容的情况下签名 的 肓签名 (blind signature);
- 在 不将信息发送给对方的前提下 证明自己拥有该信息 的 零知识证明 (zero-knowledge proof)
它们都是以密码技术为基础进行组合而成的。作为其中的一个例子,我们将在 第15章 介绍 虚拟货币比恃币 的相关内容。