当前位置:文档之家› 信息安全概论 段云所 课件 第五章

信息安全概论 段云所 课件 第五章


什么
前面谈到对称密码体制的加密能够提供认证 为
还要使用独立的消息认证码呢 主要理由如下
行广
1 一些应用要求将相同的消息对许多终端进
证 这种方
播 仅使用一个终端负责消息的认
相应的密
法既经济又实用 负责认证的终端有
确 其它
钥 并执行认证操作 如果认证不正
终端将收到它发来的告警
2 接收方有繁重的任务 无法负担大量的解
攻击者无法在不修改散列值的情况下替换消息而不被察觉
第5个性质比第4个性质更强 保证了一种被称为生日攻
击的方法无法奏效 散列码不同的使用方式可以提供不同要求的消息认证
这里列出如下四种
6
使用对称密码体制对附加了散列码的消息进行加密 这种方式与用对称密码体制加密附加检错码的消息在 结构上是一致的 认证的原理也相同 而且这种方式 也提供保密性 使用对称密码体制仅对附加的散列码进行加密 在这 种方式中 如果将散列函数与加密函数合并为一个整 体函数实际上就是一个MAC函数 使用公钥密码体制用发方的私有密钥仅对散列码进行 加密 这种方式与第二种方式一样提供认证 而且还 提供数字签名 发送者将消息 M与通信各方共享的一个秘密值S 串接
4
活性
5.2
3 有一些应用 只关心信息的完整性而不需要保 密性
4 认证与保密的分离能够提供结构上的灵
5 有些应用场合期望在超过接收时间后继续延长 保护期限 同时允许处理消息的内容 如果使 用加密 解密后保护就失效了 这样 消息只 能在传输过程中得到完整性保护 但在目标系 统中却办不到
散列 Hash 函数
5
5.2.1 散列函数的性质
散列函数的目的是为文件 消息或其他的分组 数据产生 指纹 要用于消息认证 散列函数H必须具有 如下性质
1. H能用于任何大小的数据分组 能产生定长的输出 2. 对于任何给定的x H(x)要相对易于计算 3. 对任何给定的散列码h 寻找x使得H(x)=h在计算上
不可行 单向性 4. 对任何给定的分组x 寻找不等于x的y 使得H(x)=
收者将接受任何输入X并产生输出
如果
X是合法信息M的密文 则Y是信息M的明文 否则 Y将是
毫无意义的二进制比特序列 接收方需要某些自动化措
施 以确定Y是否是合法的明文
假定信息M 的明文可以是任意比特的组合 在这种情 况下 接收方将没有自动的方法来确定收到的 X 是否是合 法信息的密文 因此 需要从所有可能的比特模式的一个 子集中来考虑合法的信息 任何可疑的密文不可能产生合 法的明文 如考虑在106的组合中只有一种是合法的 则从 中随机选择一个比特组合作 为密文能够产生合法的明文的 概率为10 6
然后计算出散列值 并将散列值附在消息M后发 送
出去 由于秘密值S 并不发送 攻击者无法产生 假消

5.2.2 散列函数的结构
为了对不定长的输入产生定长的输出 并且最后的结 果要与所有的字节相关 大多数安全的散列函数都采用了 分块填充链接的模式 其结构是迭代型的 这种散列函数 模型最早由 Merkle于1989年提出 在Ron Rivest于1990提 出 的MD4中也采用了这种模型 下面介绍这种模型的一般结 构
L 512比特=N 32比特 K比特 消息
消息长度
100 0
512比特 Y0
512比特 Y1
512
512
160
HSHA
160
HSHA
CV0=VI
CV1
512比特

Yq
512
160
HSHA
CVq
图5.2 SHA-1的框图
512比特

YL-1
512
160
HSHA
CVL-1
消息摘要 (160比特)
z SHA-1描述
为了实现用自动的方法来确定收到的 Y 是否是合 法信息的密文 可以采用的一种方法是强制明文有某种结 构 这种结构易于识别但不能复制并且不求助于加密 例 如 可以在加密以前对消息附加检错码
2
z公钥密码体制加密认证
使用公开密钥加密信息的明文只能提供保密而不能提
供认证 因为任何人都可以得到公钥 为了提供认证 发 送者 A用私钥对信息的明文进行加密 任意接收者都可以 用 A的公钥解密 这种方式提供的认证措施与对称密码体
第五章 消息认证与数字签名
公钥密码体制的一种最重要的应用是数字签名 数字签名通常需要与散列函数结合起来使用 本章先简要 介绍信息认证 然后介绍散列函数 最后介绍数字签名
5.1 信息认证
前面所介绍的对称密码和公钥密码体制 都是围 绕着信息的保密性 即防止第三方获取明文消息而展开 但信息的完整性和抗否认性也是信息安全的重要内容 保 证信息的完整性和抗否认性主要通过信息认证和数字签名 来实现
安全散列算法 SHA Secure Hash Algorithm 由 美国国 家标准和技术协会 NIST 提出 并作为联邦信息处理标 准 FIPS PUB 180 在1993年公布 1995年又发布了一个 修订版FIPS PUB 180-1 通常称为SHA-1 SHA是基于MD4 算
9
1到512比特的填充
中接
收者通过重新计算MAC来对消息进行认证 如果收到的M
AC与计算得出的MAC相同 则接收者可以认为
3
–消息未被更改过 因为任意更改消息而没有更改 MAC的行为 都将导致收到的MAC与用更改过的消息 计算出的MAC不相同 而且 由于使用的密
–钥只有收发双方知道 其它方无法更改MAC与更改 后的消息对应
A
B
C
D
E
f2, K, W[20,┅,39] 20个步骤
A
B
C
D
E
f3, K, W[40,┅,59] 20个步骤
A
B
C
D
E
f4, K, W[60,┅,79] 20个步骤
32
+
+
+
+
+
160
CVq+1
图5.3 SHA-1的一个512比特分组处理过程
11
注意这些值以高位字节优先的方式存储 因而初
始化的值 十六进制表示 存储如 下
4 填充是必须的 求
即使消息长度已满足要
仍然需要填充 如消息长度为448比特 则需要 填
充512比特 使其长度变为960 因此 填充 的比
10
2. 附加消息的长度 将原始消息的长度用64比特的 二进制数表示后所得的 64 比特数据附加在第1 步所得的数据后面 高位字节优先
3. 初始化MD缓存 使用一个160比特的缓存来存放
一般说来 产生认证符的方法可以分为以下三 类
信息加密 将明文加密后以密文作为认证符
公开函
消息认证码 MAC 用一个密钥控制的
为密码校
数作用后产生的固定长度的数值 也称
验和
散列函数 一个将任意长度的消息映射为定长的
散列值的函数 以散列值作为认证符
5.1.1 加密认证
信息加密能够提供一种认证措施 这里分对称密码 体制加密和公钥密码体制加密来介绍
h = H ( M ) = CV L
Y0 ,Y1 ,/ ,YL−1
这里M是由分组

成 如图5. 1所示
Y0
n
Y1
b
n
fn f n
V1=CV0
CV1
CV2
YL-1
b
n
f
CVL-1
n
CVL
图5. 1 迭代型散列函数的结构
8
已经证明如果压缩函数是无碰撞的 则上述方法得到 的Hash函数也是无碰撞的 因此 Hash函数的核心技术是 设计无碰撞的压缩函数 同样 敌手对算法的攻击重点也 是对f 的内部结构的分析 与分组密码一样 f也是由若 干轮处理过程组成 因而对f 的分析需要通过对各轮之 间的比特模式的分析来进行 常常需要先找出f的碰撞
该散列函数的中间及最终结果 该缓存可以表示
为 5个32比特的寄存器(A,B,C,D,E)

些寄存器被初始化为以下32比特长的整数(十六
进制表示 :
A=67452301
B=EFCDAB89
C=98BADCFE
D=10325476
E=C3D2E1F0
Yq
512
CVq 160
A
B
C
D
E 32
f1, K, W[0,┅,19] 20个步骤
散列函数 (又称杂凑函数)是对不定长的输入产生 定长 输出的一种特殊函h数= H ( M )
其中M是变长的消息 h=H M 是定长的散列值 或称 为消息摘要 散列函数H 是公开的 散列值在信源处被 附加在消息上 接收方通过重新计算散列值来保证消息未 被窜改 由于函数本身公开 传送过程中对散列值需要另 外的加密保护 如果没有对散列值的保护 窜改者可以在 修改消息的同时修改散列值 从而使散列值的认证功能失 效
5.1.2 消息认证码
消息认证码 MAC 或称密码检验和 是在一
个密钥的控制下将任意长的消息映射到一个简短的定长数
据分组 并将它附加在消息后 设M 是变长的消息 K是
仅由收发双方共享的密钥 则M的MAC由如下的函数C生

CK(M)
这里
MAC = C K ( M )
是定长的 发送者每次将MAC附加到消息
7
散列算法中重复使用一个压缩函数f f产生一
个比特的输出 F 有两个输入 一个是前一步的比特输
出 称为链接变量 另一个是比特的分组 算法开始时
链接变量要指定一个初始值VI 最终的链接变量值便是散
列值 通常有 因此称f为压缩函数 该散列算法可以表
达如下
CV 0 = V I
CVi = f (CVi−1,Yi−1) 1≤ i ≤ L
相关主题