鉴别和密钥分配
主要内容
-
鉴别协议
- Needham-Schroeder双向鉴别协议
- 改进的Needham-Schroeder协议
- 单向鉴别协议
-
密钥分配协议
- 对称密钥的分配
- 公开密钥的分配
- 使用公开加密算法分配对称密钥
鉴别和密钥分配的作用:
-
鉴别能正确识别信息发送方身份,且检测信息内容的任何修改。
-
对加密明文的保密主要依赖于密钥的保密:
- 密钥管理涉及密钥生成、分配、使用、存储、备份、恢复以及销毁;
- 如何分配已生成密钥是密码学领域的难点问题;
7.1 鉴别协议
鉴别:实体之间建立身份认证的过程,包括通信实体鉴别和通信内容鉴别。
鉴别易受重放攻击:攻击者发送一个目的主机已接收的包,来达到欺骗目的主机目的。
• 最坏情况下:冒充合法方;
• 其他情况下:扰乱正常操作。
对付重放攻击的现时(Nonce)
鉴别消息中增加一项:现时(仅使用一次):
- 随机数:不可猜测,性质最好,但不适合无连接应用。
- 时间戳:需要时钟同步,协议必须能容错。
- 序列号:每一方都要记住其它各方与其通信时的最后一个序列号,难以实现;还要求系统抗毁。
- 生存期
7.1.1 Needham-Schroeder双向鉴别协议
双向鉴别:能够正确鉴别出通信对方的身份,同时可以交换会话密钥,用于保证信息的安全传输。
Needham-Schroeder协议实现双向鉴别和密钥分配:
- 采用对称加密体制和密钥分配中心KDC技术
- 后来很多鉴别协议(如Kerberos)都基于N-S协议
两层对称加密结构:需要使用一个可信任的密钥分配中心KDC
N-S协议的双向鉴别和密钥分配过程:
N-S 协议的实现过程:
步骤2:A 安全获得新会话密钥 Ks,N1说明不是重放。
步骤3:消息只能被 B 解密,A 证实对方是 B,解密后报文中的IDA使得 B 证实对方是 A。
步骤4 说明 B 已知道 Ks,步骤5 使 B 确信 A 也知道 Ks,现时f(N2)使B确信这是一条新的消息。
增加步骤4 和5 可防止攻击者截获步骤3 中的报文并直接重放。
较难实现的重放攻击
- 假设攻击者 X 已获得一个旧的会话密钥 Ks。
- X 假冒 A 重放步骤3 的消息诱使 B 使用旧的会话密钥进行通信。
- 若 X 可截获步骤4 中的握手消息,就可模仿步骤5 中 A 的应答。
- X 可发送伪造的消息给 B,而 B 以为这是 A 使用才分发的会话密钥加密发送过来的消息。
7.1.2 改进的Needham-Schroeder协议
Denning 对 N-S 协议进行改进,加入了一个时间戳
时间戳 T 使 A 和 B 确信该会话密钥 Ks 刚刚产生
一个可抗重放的鉴别协议
同时解决了重放攻击和 “禁止-重放攻击”
使 A 拥有一个可向 B 进行后续认证的 “证明书”
老师总结
我们重点讲的是3。
7.1.3 单向鉴别协议
一、使用对称加密算法
修改N-S协议就能用于电子邮件的单向鉴别(不能要求发送方A和接收方B同时在线):
不能抗重放攻击,且加入时间戳的作用非常有限。
二、使用公开加密算法
- 保证消息的机密性
A → B : E(PUB, Ks) || E(Ks, M) - 实现鉴别(数字签名)
A → B : M || E(PRA, H(M)) (并不能真正实现) - 同时实现鉴别和机密性
A → B : E(PUB, [M || E(PRA, H(M))]) - 提高加密效率还需使用数字信封
A → B : E(PUB, Ks) || E(Ks, [M || E(PRA, H(M))]) (PGP加密系统)
7.2 密钥分配协议
-
加密算法公开且是国际标准,安全算法可依靠大量学术研究。
-
明文保密依赖于密钥保密,密钥保密更加困难。
如何安全可靠、迅速高效地分配和管理密钥是密码学领域的重要研究课题。
不同性质密钥的管理问题:
- 要使对称加密有效进行,通信双方必须共享一个密钥,这个密钥还要防止被他人获得;
- 要使公开加密有效进行,通信各方必须发布其公开密钥,并防止其私钥被其他人获得。
密钥还需经常更换,以便攻击者知道密钥的情况下使得泄漏的数据量最小。
密钥分配的四种方法:
前两种方法不适用于大量连接的现代通信
- A 选定密钥,通过物理方法安全传递给 B。
- 可信任第三方 C 选定密钥,通过物理方法安全传递给 A 和 B。
- 若 A 和 B 都有到第三方 C 的加密连接,C 通过该连接将密钥传递给 A 和 B
—— 密钥分配中心KDC,常用于对称密钥的分配。 - 若第三方 C 发布 A 和 B 的公钥,它们可用彼此的公钥来加密通信
—— 认证中心CA,常用于公开密钥的分配。
7.2.1 对称密钥的分配
一、集中式密钥分配方案
N-S协议存在的问题:
- 通信量大,需要较好的鉴别功能以鉴别 KDC 和通信方。
- 主密钥多,单个 KDC 易形成瓶颈,无法支持大型网络。
解决方案:
- 多个 KDC 之间存在层次关系。
- 某个 KDC 既不会形成瓶颈,也不会单点失效。
二、分散式密钥分配方案
使用 KDC 进行密钥分配要求 KDC 是可信任的并且应该保护它免于被破坏。
解决方案:
- 把单个 KDC 分散成几个 KDC 会降低这种风险。
- 更进一步把 KDC 分散到所有通信方,即通信方同时也是 KDC,自己保存同其他所有通信方的主密钥。
n 个通信方的网络要保存 [n(n一1)/2] 个主密钥。对于小型网络或大型网络的局部范围,该方案可行。
7.2.2 公开密钥的分配
获取公开密钥的四种途径:
-
公开密钥的公开宣布
PGP 用户可将自己公钥附加到消息上发送出去
—— 公钥很容易被冒充。 -
公开可用目录
由可信任组织维护一个公开目录,为每个参与者维护一个目录项{用户名,用户的公开密钥}
—— 公钥很容易被冒充。 -
公开密钥管理机构
CA 对通信双方进行认证,每个通信方都有 CA 公钥并通过 CA 获得其他任何通信方的公钥
—— 每一用户想与他人联系需求助 CA,CA 易成瓶颈。 -
公开密钥证书
CA 事先为用户颁发数字证书,用户通信时只需下载并验证对方证书得到对方公钥,无需再联系 CA。
数字证书的概念
-
作为可信第三方,CA需检验用户公钥的合法性。
-
CA为每个用户发放数字证书(经CA私钥签名的包含公钥拥有者信息及其公钥的遵循X.509标准的文件)。CA的签名使得攻击者不能伪造和篡改证书。
-
数字证书的作用:证明证书中列出的用户合法地拥有对应的公钥。
利用数字证书分配公开密钥 :
7.2.3 使用公开加密算法分配对称密钥
使用公开加密算法分配对称密钥的原理
假定通信双方A和B已通过某种方法得到对方公钥