第08章 报文鉴别与散列函数

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

3. 报文鉴别码
MAC,也称为密码检验和,由如下形式的函数C生成 MAC=CK(M) 其中M是变长的报文,K是仅由收发双方共享的密钥,CK(M) 是定长的鉴别符。当报文确信或已知是正确时,终点 每次将MAC附加到报文中。接收者通过重新计算MAC来 对报文进行鉴别。
3. 报文鉴别码
• 对MAC的攻击——方法1(确定加密密钥)
(d) A→B:EK[M||EKRa[H(M)]]
–提供鉴别和数字鉴别 –提供保密——仅A和B共享K
(b) A→B:M||EK[H(M)] – 提供鉴别——加密保护H(M)
(e) A→B:M||H(M||S)
–提供鉴别——仅A和B共享S
(c) A→B:M||EKRa[H(M)]
–提供鉴别和数字鉴别
•加密保护H(M) •仅A能生成EKRa[H(M)]

报文加密鉴别——示例(TCP报文)
比特:0 4 源端口 10 16 目的端口 序号 确认号
数据偏移
31
20 个八位组
保留 检验和
标志 选项 + 填充 应用数据
窗口 紧急指针
2. 鉴别函数
• 报文鉴别码——方案
使用一个密钥产生一个短小的定长数据分组,即所谓的密码检验(MAC),并 将它附加在报文中。该技术假定通信双方,A和B,共享一个共有的密钥 K。当A有要发往B的报文时,它将计算MAC,MAC作为报文和密钥K的一个 函数值:MAC = CK(M),然后将加上MAC报文发往预定的接收者。使用相 同的密钥,接收者对收到的报文执行相同的计算并得出新的MAC。将收 到的MAC与计算得出的MAC进行比较。如果假定只有收方和发方知道密钥, 同时如果收到的MAC与计算得出的MAC匹配,那么: 1. 接收者确信报文未被更改过。如果一个攻击者更改报文而未更改MAC, 那么接收者计算出的MAC将不同于接收到的MAC。因为假定攻击者不 知道该密钥,因此攻击者不可能更改MAC来对应更改后的报文。 2. 接收者确信报文来自所谓的发送者。因为没有其他人知道该密钥, 因此没有人能够为一个报文准备合适的MAC。 3. 如果报文包括一个序号(如用于HDLC,X.25和TCP),那么接收者确 信该序号的正确性,因为攻击者无法成功地更改该序列号。 MAC函数类似于加密。一个区别是MAC函数无需是可逆的,而对解密则必须是 可逆的。结果由于鉴别函数的这个数学性质使得它比加密函数更不易被 破解。
(f) A→B:EK[M||H(M)||S]
–提供鉴别和数字鉴别——仅A和B 共享S –提供保密——仅A和B共享K
2. 鉴别函数
• 散列函数——研究重点
当不需保密时,方法(b)和(c)在降低计算量上要优于那些需对整个 报文加密的方法。然而,目前对避免加密的方法 (e)越来越重 视。对这种重视,其原因为: 1. 加密软件很慢。即使每个报文中需加密的数据量很小,也可 能有稳定的报文流进和流出一个系统。 2. 加密硬件的开销是不可忽略的。尽管已有费用低廉的实现 DES算法的芯片,但如果网络中的所有结点都必须拥有这种 加密能力,累加的开销就会很大。 3. 加密硬件是针对大长度数据进行优化的。对于小数据分组加 密,初始化工作要在整加密时间中占很大比例。 4. 加密算法可能受专利的保护。某些加密算法如 RSA公开密钥 算法受的保护必须获得许可,这将增加开销。 5. 加密算法易遭到美国政府的出口限制。
2. 鉴别函数
• 报文鉴别码——实施
源点 M || M C K 比较 终点 K C CK(M) (a)报文鉴别 C D K2 EK2[M||CK1(M)] (b)报文鉴别与保密,鉴别与明文连接 EK2[M] E M K2 K1 C CK1(EK2[M]) || C K1 比较 K2 D M CK1(M) M K1 比较
源点 终点 F M || M F(M) F K EK[M || F(M)] K E D M F(M) 比较
(a)内部差错控制 EK[M] M E || F 比较 K F F(EK[M]) (b)外部差错控制 K
D M
2. 鉴别函数
• 报文加密鉴别——可行性
应注意的是,FCS和加密函数执行的顺序是至关重要的。使用内部差 错控制能够提供鉴别,因为敌方难于产生在解密后差错控制码仍 然有效的密文。如果相反,FCS是外部的代码,敌方就能使用有 效的差错控制码来伪造报文。尽管对手不能知道解密的明文将是 什么,但仍希望制造混乱,破坏正常工作。
M
K1 C
||
E
K2
(c)报文鉴别与保密,鉴别与密文连接
2. 鉴别函数
• 报文鉴别码——使用范围
1. 有许多应用要求将相同的报文对许多终点进行广播,这样的例子如通知用户 目前网络不通或军用控制中心发出告警信息。仅使用一个终点负责报文的真 实性这一方法既经济又可靠。这样,报文必须以明文加对应报文鉴别码的形 式广播。负责鉴别的系统拥有相应的密钥,并执行鉴别操作。如果鉴别不正 确,其他终点将收到一个一般的告警。 一方有繁重的处理任务,无法负担对所有收到报文进行解密的工作量。仅进 行有选择地鉴别,对报文进行随机检查。 对明文形式的计算机程序进行鉴别是一项吸引人的服务。计算机程序每次执 行时无需进行耗费处理机资源的解密。如果将报文鉴别码附加到该程序上, 通过检查能随时确信该程序的完整性。 对某些应用,也许不关心报文的保密而更看重鉴别报文的真实性。一个例子 是简单网络管理协议第3版(SNMPv3),它将保密函数与鉴别函数分离。对 于这种应用,通常鉴别收到的SNMP报文的真实性对被管系统更为重要,特 别是如果该报文中包含改变被管系统命令时更是如此。在另一方面,它没有 必要取消SNMP通信。 鉴别函数与保密函数的分离能提供结构上的灵活性。例如,可以在应用层完 成鉴别而在更低层(如运输层)来实现保密功能。 用户也许期望在超过接收时间后继续延长保护期限,同时允许处理报文的内 容。使用报文加密,当报文被解密后保护就失效了,因此报文仅能在传输过 程中防止欺诈性的篡改,但在目标系统中却办不到。
1. 2. 3. 报文加密:以整个报文的密文作为它的鉴别符。 报文鉴别码(MAC):以一个报文的公共函数和用于产生一 个定长值的密钥作为鉴别符。 散列函数:一个将任意长度的报文映射为定长的散列值的公 共函数,以散列值作为鉴别符。
2. 鉴别函数
• 报文加密鉴别——方案
源点 M E K EK(M) (a)常规加密:报密和鉴别 D K 终点 M
3.
4. 5. 6.
7.
解决头两种攻击的措施是加强报文的保密性(见前)。对付第3到第6种 攻击方法一般称为报文鉴别。处理表中第7项的机制称为数字签名。
2. 鉴别函数
报文鉴别是一个证实收到的报文来自可信的源点且未被篡 改的过程。报文鉴别也可证实序列编号和及时性。数 字签名是一种包括防止源点或终点抵赖的鉴别技术。 • 常见的鉴别方法分类:
源点 M || E D K EK[M||H(M)] H(M)
终点 H M 比较
2. 鉴别函数
• 散列函数— —实施
H (a)
K
M
K H E
|| M
H K D 比较
(b)
EK[H(M)]
M
KRa H E
|| M
H KUa D 比较
(c)
EKRa[H(M)]
M
KRa H E
||
E
D K EK[M||EKRa[H(M)]] EKRa[H(M)]
• 第1轮
– – – 给定:M1,MAC1 =CK(M1) 计算MACi = CK1(M1)对所有2k个密钥 匹配数≈2(k-n) 给定:M2,MAC2 = CK(M2) 计算MACi = Cki(M2)对剩余的2(k-n)个密钥 匹配数≈2(k-2n)
第八章 报文鉴别与散列函数
1. 2. 3. 4. 5. 鉴别的需求 鉴别函数 报文鉴别码 散列函数 散列函数和MAC的安全性
1. 鉴别的需求
• 信息安全的威胁
1. 2. 泄露:将报文内容透露给没有拥有合法密钥的任何人或相关过程。 通信量分析:发现通信双方的通信方式。在面向连接的应用中,连接 的频率和连接持续时间就能确定下来。在面向连接或无连接的环境中, 通信双方的报文数量和长度也能确定下来。 伪装:以假的源点身份将报文插入网络中。这包括由敌方伪造一条报 文却声称它源自已授权的实体。另外,还包括由假的报文接收者对收 到报文发回假确认,或者不予接受。 内容篡改:篡改报文的内容,包括插入、删除、调换及修改。 序号篡改:对通信双方报文序号的任何修改,包括插入、删除和重排 序。 计时篡改:报文延迟或回放。在面向连接的应用中,一个完整的会话 或报文的序列可以是在之前某些有效会话的回放,或者序列中的单个 报文能被延迟或回放。在无连接环境中,单个报文(如数据报)能被 延迟或回放。 抵赖:终点否认收到某报文或源点否认发过某报文。
H M KUa D 比较
K
(d)
M
|| M S || H H(M||S)
S
||
H
比较
(e)
M
||
E
D K M S
||
ቤተ መጻሕፍቲ ባይዱ
H
S (f)
||
H
K EK[M||H(M||S)] H(M||S)
比较
2. 鉴别函数
• 散列函数——实施总结
(a) A→B:EK[M||H(M)]
–提供保密——仅A和B共享K –提供鉴别——加密保护H(M)
M
E KUb EKUb(M) (b)公开密钥加密:保密性
D KRb
M
M
E KRa EKRa(M) (c)公开密钥加密:鉴别和签名
D KUa
M
M
E KRa EKRa(M)
E KUb EKUb[EKRa(M)]
D KRb EKRa(M)
D KUa
M
(d)公开密钥加密:报密、鉴别和签名
2. 鉴别函数
• 报文加密鉴别——可行性
由于MAC函数一般是一个多对一的函数,因此对于长度为n比特 的MAC,如果密钥的长度为k比特(k>n),那么如果已知M1和 MAC1,MAC1 = CK1(M1),密码分析者必须对所有可能的密 钥值Ki执行MACi = CKi(M1)。当MACi = MAC1时,则至少找 到一个密钥。注意,总共将产生2k个MAC,但只有2n<2k个 不同的MAC值。因此,许多密钥能产生这个正确的MAC,但 对手却无法确认真正的正确密钥。平均说来,总共2k/2n = 2(k-n) 个密钥将产生一个匹配。因此,对手必须重复这样的攻击:
2.
3.
4.
5. 6.
2. 鉴别函数
• 散列函数——方案
这是单向散列函数报文鉴别码的一个变种。就像报文鉴别码,一 个散列函数以一个变长的报文M作为输入,并产生一个定长 的散列码H(M),有时也称为报文摘要,作为输出。散列码是 报文所有比特的函数值,井有差错检测能力:报文中任意一 比特或若干比特发生改变都将导致散列码发生改变。
2. 鉴别函数
• 报文加密鉴别——可行性
要自动确定是否对收到的密文能解密为可懂的明文的一种方法是强制明文有某种结构, 这种结构是易于识别但又不能复制且无需求助加密的。例如,可以在加密以前对 每个报文附加检错码,即所谓的帧检验序列号或检验和FCS。这个FCS被加到M上 ,然后作为一个整分组被加密。在终点,B对进来的报文分组进行解密,并将结 果看作附加FCS的报文。B使用相同的函数F来试图重新生成这个FCS。若被计算 出来的FCS等于收到的FCS,那么确信报文是可信的。任何的比特随机序列是不 可能拥有这种所期望的关系的。
这一切都在B方发生。给定解密函数D和密钥K,终点将接受任何输入X并 产生输出Y = DK(X)。如果X是对应的加密函数产生的合法报文M的密 文,那么Y是报文M的明文,否则,Y将是毫无意义的二进制比特序列。 在B方需要某些自动化的手段以确定Y是否是合法的明文,因此肯定 来自A。 假定报文M能是任何任意的比特组合。在这种情况下,在终点没有自动的 方法来确定收到的报文是否是合法的报文的密文。此结论无可辩驳: 如果M能是任何比特组合,则与X的值无关,而Y = DK(X)是一些比特 组合,因此必须作为真的明文被接受下来。 一般来说,仅需要从所有可能的比特模式中的一个小子集中来考虑合法 的明文。在这种情况下,任何可疑的密文不可能产生合法的明文。 例如,假定在106里仅仅有一种组合是合法的明文。那么从中随机选 中一个比特组合看作密文来能产生合法明文报文的概率仅仅是10-6。 要自动确定是否对收到的密文能解密为可懂的明文也许是难于办到的。 这样,敌方就能简单地通过发出声称来自合法用户的报文来造成一 定程度的破坏,而报文的内容是随机的。
相关文档
最新文档