密码学 第10章 消息认证和杂凑函数(2课时)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3. for j 0 to 15 do X [ j ] M [16i j ] 4. 将 4 个寄存器 A, B, C, D 中的数组存放到另外 4 个寄存器
AA, BB, CC, DD 中。
AA A, BB B, CC C, DD D
5. 执行第一轮(见后面) 。 6. 执行第二轮(见后面) 。 7. 执行第三轮(见后面) 。 8. A A AA, B B BB, C C CC, D D DD
数据认证算法
O1 EK ( D1 ) O2 EK ( D2 O1 ) O3 EK ( D3 O2 ) ON EK ( DN ON 1 )
其中E为DES加密算法,K为密钥。 最后的数据认证码可取为ON,或者取为ON的最左 M个比特,其中16≤M≤64。
消息认证与数字签名的联系和区别
基于分组密码的杂凑函数
回忆 DES 的工作模式 CBC 和 CFB 中,一个明文 块的改变,将引起相应的密文块及其后的所有密文块的 改变,因此可将消息 x 作为明文进行加密,得到最后一 块密文作为 x 的杂凑值。
E 设 k 为密钥, k 为长度为 n 的分组密码 (DES、AES)加密算法。对于任意的消息 x,先对 x 进行适当的填充,使其长度恰好 为 n 的倍数;再将 x 分为长度为 n 的 l 块, 即有
如果仅收发双方知道 K,且 B 计算得到的 MAC 与接收 到的 MAC 一致,则这一系统就实现了以下功能: 接收方相信发送方发来的消息未被篡改,这是因为 攻击者不知道密钥,所以不能够在篡改消息后相应 地篡改 MAC,而如果仅篡改消息,则接收方计算 的新 MAC 将与收到的 MAC 不同。 接收方相信发送方不是冒充的,这是因为除收发双 方外再无其他人知道密钥,因此其他人不可能对自 己发送的消息计算出正确的 MAC。
算法的核心技术是设计难以找到碰撞的压缩函数 f,而 敌手对算法的攻击重点是 f 的内部结构 f 和分组密码一样是由若干轮处理过程组成 对 f 的分析需要找出 f 的碰撞。由于 f 是压缩函数, 其碰撞是不可避免的, 因此在设计 f 时就应保证找出其 碰撞在计算上是不可行的 下面介绍两个重要的迭代型杂凑函数: MD4 和 SHA
MAC 函数与加密算法类似,不同之处为 MAC 函数 不必是可逆的(一般为多到一的映射) ,因此与加密 算法相比更不易被攻破。 上述过程中,由于消息本身在发送过程中是明文形 式,所以这一过程只提供认证性而未提供保密性。 为提供保密性可在 MAC 函数之后或之前进行一次加 密,而且加密密钥也需被收发双方共享。 通常希望直接对明文进行认证,因此先 MAC 再加密 的使用方式更为常用。
杂凑函数 MD4
MD4 是 R.L.Rivest 于 1990 年提出的, 由于其构造方法 独特,具有很高的效率,因此受到人们的广泛青睐。 MD4 可以将任意长的消息 x 0,1* 杂凑为 128 比特长 的消息摘要。
首先由 x 构造一个数组序列 M:
M M [0]M [1] M [ N 1] ,
若 M’是 M 的某个变换, M’=f(M), 即 例如 f 为插入一 个或多个比特,那么 Pr[CK(M)=CK(M’)]= 2-n。 目的:要求函数 C 不应在消息的某个部分或某些比特 弱于其他部分或其他比特,否则敌手获得 M 和 MAC 后就有可能修改 M 中弱的部分, 从而伪造出一个与原 MAC 相匹配的新消息。
消息认证机制和数字签名机制都需有产生认证符 的基本功能。 认证符是用于认证消息的数值, 它的产生方法又分 为 消 息 认 证 码 MAC ( Message Authentication Code)和杂凑函数(Hash Function)两大类。
消息认证码
消息认证码的定义与使用方式
消息认证码是指消息被一个由密钥控制的公开函 数作用后产生的、 用作认证符的、 固定长度的数值, 也称为密码校验和。 此时需要通信双方 A 和 B 共享一密钥 K。 设 A 欲发送给 B 的消息是 M,A 首先计算 MAC=CK(M),其中 CK(· )是密钥控制的公开函数, 然后向 B 发送 M‖MAC B 收到后做与 A 相同的计算,求得一新 MAC,并 与收到的 MAC 做比较。
x x1 x2 xl ,其中 xi {0,1}n ,1 i l
基于分组密码的 CBC 工作模式杂凑函数 H:
定义 yl H ( x)
基于分组密码的 CFB 工作模式杂凑函数 H:
定义 yl H ( x)
上述两种基于分组密码的杂凑函数中,K 可以公开, 称为不带密钥的 Hash 函数;K 也可以不公开,称为 带密钥的 Hash 函数(MAC) 。 在 K 公开的情况下,上述两种构造杂凑函数的方法 是不安全的,即容易找到碰撞。 (思考题)
两者都是确保数据真实性的安全措施 认证一般是基于收发双方共享的保密数据,以证实被鉴别 对象的真实性;而数字签名中用于验证的数据是公开的 认证允许收发双方互相验证其真实性,数字签名则允许第 三者验证 对于数字签名来说,发送方不能抵赖、接收方不能伪造, 并且可由仲裁进行调解,而认证却不一定具备这些特点。 认证技术的实现可能需要使用数字签名技术
杂凑函数的用途
主要应用于数字签名。具有以下优点: 提高数字签名的速度; 不泄露签名所对应的消息; 将对消息的签名变换与加密变换分开处理。 应用于消息的完整性验证。例如 消息的存储; 消息的传输。
带密钥的杂凑函数计算出的消息摘要可作为 MAC
杂凑函数的性质
定义 1:设 H 是一个杂凑函数,对于任意可能的杂 凑函数值 y,求消息 x,使得 H(x)=y 在计算上是不可行 的,则称 H 为单向的(one-way) 。 定义 2:设 H 是一个杂凑函数,给定一个消息 x, 如果寻找另外一个与之不同的消息 x’, 使得 H(x)= H(x’) 是计算上不可行的,则称关于消息 x 是弱无碰撞的 (weakly collision-free) 。
迭代型杂凑函数的wenku.baidu.com般结构
算法中重复使用一个压缩函数 f f 的输入有两项, 一项是上一轮输出的 n 比特值 CVi-1, 称为链接变量, 另一项是算法在本轮的 b 比特输入分组 Yi-1 f 的输出为 n 比特值 CVi,CVi 又作为下一轮的输入 算法开始时还需对链接变量指定一个初值 IV,最后一 轮输出的链接变量 CVL 即为最终产生的杂凑值。 通常有 b>n,因此称函数 f 为压缩函数。 算法可表达如下: CV0=IV= n 比特长的初值; H(M)=CVL CVi=f(CVi-1,Yi-1);1≤i≤L;
算法的输出 h( x) A, B, C, D , 即为 4 个寄存器 A, B, C, D 中的 4 个 32 比特数组的连接,得到 128 比特的消息摘要 h(x) 。 算法从第 2 步开始每个循环处理 M 中的 16 个 32 比特数组, 从第 3 步到第 8 步为一个循环, 直到最后一个循环 (第 N / 16 个循环)结束后输出 h(x) 。 下面再对算法中涉及的运算及三个轮函数作进一步说明。
数据认证算法
数据认证算法是最为广泛使用的消息认证码中的一 个,已作为 FIPS Publication(FIPS PUB 113)并被 ANSI 作为 X9.17 标准。 算法基于 CBC 模式的 DES 算法。 需被认证的数据(消息、记录、文件或程序)被分为 64 比特长的分组 D1,D2,…,DN,其中最后一个分 组不够 64 比特的话,可在其右边填充一些 0,然后按 以下过程计算数据认证码:
杂凑(Hash)函数
概述
杂凑函数 H 是一公开函数, 用于将任意长的消息 M 映射为较短的、固定长度的一个值 H(M),作为认 证符,称函数值 H(M)为杂凑值、杂凑码或消息摘 要。 杂凑值是消息中所有比特的函数,因此提供了一种 错误检测能力,即改变消息中任何一个比特或几个 比特都会使杂凑值发生改变。
第10章 消息认证和杂凑函数
消息认证码
杂凑函数 MD5杂凑算法 安全杂凑算法SHA 习题
消息认证
消息认证用以验证接收消息的真实性(的确是由 它所声称的实体发来的)和完整性(未被篡改、 插入、删除) ,同时还用于验证消息的顺序性和 时间性(未重排、重放、延迟) 。 除此之外,在考虑信息安全时还需考虑业务的不 可否认性。 (实现消息的不可否认性可通过数字 签名,数字签名也是一种认证技术)
由 M 构造杂凑函数 h(x) 的杂凑算法如下: 1. 给 4 个 32 位寄存器 A, B, C, D 赋初值
A 67452301 , B efcdab89
C 98badcfe, D 10325476
其中 0123456789 abcdef 中的每个数字或字母都表示 4 位 二进数。故一个寄存器可存放或表示一个 32 比特数组。 2. for i 0 to N / 16 1 do(执行 3-8 步)(也就是说,执 。 行次数等于若把 M 以 512 比特分组时的组数,即每个分组 为 512 比特,执行 3-8 步直到将每个这样的分组处理完。 )
定义 3:设 H 是一个杂凑函数,如果寻找两个不同 的消息 x 和 x’,使得 H(x)= H(x’)在计算上是不可行的, 则称 H 是强无碰撞的(strongly collision-free) 。
密码学上安全的杂凑函数 H 应具有以下性质: (1)对于任意的消息 x,计算 H(x)是容易的; (2)H 是单向的; (3)H 是强无碰撞的。 注:单向性主要是防止签名消息的泄漏,而无碰撞 性则是为了防止伪造攻击。
MAC的基本使用方式
产生 MAC 的函数应满足的要求
考虑到 MAC 所存在的常见攻击类型, 它应满足以下要求 (其 中假定敌手知道函数 C,但不知道密钥 K) : 如果敌手得到 M 和 CK(M), 则构造一满足 CK(M’)=CK(M) 的新消息 M’在计算上是不可行的。 目的:要求敌手不需要找出密钥 K 而伪造一个与截获的 MAC 相匹配的新消息在计算上是不可行的。 CK(M)在以下意义下是均匀分布的: 随机选取两个消息 M、 M’, r[CK(M)=CK(M’)]=2-n, P 其中 n 为 MAC 的长度。 目的:要求敌手如果截获一个 MAC,则伪造一个相匹配 的消息的概率为最小。
其中每个 M [i ] 为 32 比特长(0,1)序列, N 0(mod 16) 。 由 x 构造 M 的算法如下: 1. 求 d (447 x ) mod 512 , x 表示 x 的长度;
x (mod 2 64 ) 的二进数表示, l 64 ; 2. 置 l 为
3. M x10 d l , 其中 0d 表示连续 d 个 0
迭代型杂凑函数的一般结构
目前使用的大多数杂凑函数如 MD5、SHA,其结构都 是迭代型的。 其中函数的输入 M 被分为 L 个分组 Y0,Y1,…,YL-1, 每一 个分组的长度为 b 比特,最后一个分组的长度不够的 话,需对其做填充。 最后一个分组中还包括整个函数输入的长度值, 这样一 来,将使得敌手的攻击更为困难, 即敌手若想成功地产 生假冒的消息, 就必须保证假冒消息的杂凑值与原消息 的杂凑值相同, 而且假冒消息的长度也要与原消息的长 度相等。
在 M 的构造中,先在 x 后面加一个 1,再加 0 d ,使得
x10 d (mod 512 ) 448 ,故所得 M 的长为 512 的倍数,因此可将
M 分成 32 比特长数组 M [0]M [1]M [ N 1] ,其个数 N 为 16 的倍数。 注: 填充是必需的,即使消息长度已满足要求,仍需填 充。例如,消息长为 448 比特,则需填充 512 比特,使其长 度变为 960, 因此填充的比特数大于等于 1 而小于等于 512。 填充方式是固定的,即第 1 位为 1,其后各位皆为 0。