联系hashgameCONTACT hashgame
地址:广东省广州市
手机:13988889999
电话:020-88889999
邮箱:admin@qq.com
查看更多
Rhashgamehashgame
你的位置: 首页 > hashgame

HASH GAME - Online Skill Game ET 300九、散列函数和消息鉴别pdf

发布时间:2025-11-16 21:57:58  点击量:

  HASH GAME - Online Skill Game GET 300

HASH GAME - Online Skill Game GET 300九、散列函数和消息鉴别pdf

  散列函数 主要内容 • 概述 散列函数针对的 类型、散列函数的定义、 性质、分类和应用 • 散列函数的构造与设计 • MD算法 • SHA • 消息鉴别 概述 • 散列函数概述 ✓散列函数又称为哈希 (Hash )函数、杂凑函数、消 息 函数、单向函数、压缩函数、缩短函数等 ✓是一种压缩函数:将任意长的输入消息 (message ) 压缩为某一个固定长度的 (message digest,MD ) 的函数。 又称为散列码。 只有加密过程,不能 。 用于生成文件或数据块的 “数字 ”。 • 散列函数通常应用于消息鉴别中对抗主动 。 概述 • 的类型 和主动 示意图: 概述 • 的类型 概述 • 的类型 ➢ :包括 和内容 。冒充是指冒充接收者或 发送者,实际是 。 ➢ 篡改:将消息的 、内容、属性、接受者和始发者等信 息进行修改。 ➢ :在消息中 新的消息 ➢ 删除:删除原消息或其部分 ➢ 重排:将原消息的顺序变换后发送 ➢ 重放:将窃取的整条合法信息保存,在适当的时机再次发 送。 ➢ 延迟:将原消息延迟发送。 概述 • 的类型 ➢ 业务 :通过正常的方式 耗尽系统资源。 ➢ 参与方抵赖:发送方否认发送过消息,接收方否认接收过 消息。 ➢ 获取消息内容 (窃取):通过电磁辐射侦收或在信息 和处理过程中窃取等。 ➢ 业务流分析 (推断):将窃取到的信息进行统计分析,通 过了解信息流大小的变化、信息交换频繁的程序,再结合 其他方面的信息,推断出有价值的内容。 概述 • 的防范 ✓通过加密技术可抵抗 。 ✓通过消息鉴别可抵抗 分类中的大部分主动攻 击,具体介绍如下: 概述 • 消息鉴别的具体功能 1. 验证消息来源的真实性:的确是有它所声称的实 体发来的,无冒充 2. 验证消息的完整性:未被篡改、 、删除 3. 验证消息的实际顺序和时间性: 重排、重放、 延迟 4. 验证消息的抗抵赖性:防止通信双方对所传输的 消息的否认,通过数字签名实现,数字签名也是 一种认证。 概述 • 消息鉴别的具体技术 1. 基于散列函数(Hash) 2. 基于消息认证码 (MAC ) 3. 基于加密技术 消息鉴别在有的资料上称为消息认证或报文鉴别。 下面先介绍Hash函数。 散列函数的定义 • 定义: ➢将一个任意长的二进制串 为一个定长的二进 制串 (长为k),即 h:{0,1}* →{0,1} k 。 * 给定m ∈{0,1} ,计算h(m)容易。 散列函数的性质 • 散列函数h(m),具有以下特性 1 具有单向性。 给定h(m),要得到m在计算上不可行。 2 具有弱抗碰撞性。 对任何给定的消息m,寻找与m不同的消息m’,使得 他们的散列值相同,即h(m)=h(m’),在计算上不可 行。 3 具有强抗碰撞性。 寻找任意两个不同的消息m和m’,使得h(m)=h(m’), 在计算上不可行。 散列函数的性质 • 散列函数h(m),具有以下特性 4 严格雪崩准则 (strict avalanche criteria,SAC ):当 一个输入位发生改变时,要求输出位中将有至少一 半发生改变。 5 Hash率:对于基于分组 E构建的Hash函数,如 果处理每个消息分组需要进行s次E操作,那么 Hash率就为1/s。显然,Hash率越高,算法运行越快 。 散列函数的性质 • 散列函数h(m),具有以下特性 碰撞的不可避免性:散列函数输出的散列值的长度 是固定的,如假设散列值长度为160位,显然可能 的散列值的总数为2160 ,但由于输入的消息是任意 的,所以不同的消息就有可能会产生相同的散列 值,即散列函数具有碰撞的不可避免性。因此要 求找到一个碰撞在计算上不可行。 ➢很多情况下弱抗碰撞已经可以满足安全要求,但 有些情况需要强抗碰撞。 散列函数的分类 散列函数主要有两类: 带密钥的散列函数和不带密钥的散列函数。 ➢不带密钥的散列函数任何人都可以用来计算散列 值,它仅仅是输入串的函数; ➢带密钥的散列函数是输入串和密钥的散列函数, 只有持有密钥的人才能计算出散列码。 散列函数的构造与设计 迭代型散列函数的一般构造 散列函数要求将任意长度的输入值压缩为一个定长的 输出值,由于很难直接构造出一个这样的函数,实 际设计的散列函数都是通过迭代处理固定长度 的 压缩函数来构造的,通常称为MD方法。 迭代型散列函数的一般构造 MD方法如图: 对消息进行分组,最后部分按需要进行填充。 F为压缩函数,接收r位的输入,产生n位的输出 (通常rn )。 迭代型散列函数的一般构造 目前使用的大多数散列函数,如MD5、SHA等的结构都是迭 代型的。 输入消息M,将M分成t个分组 (m ,m ,…,m ),每组b位。如 1 2 t 果最后一个分组的长度不够,需要对其他进行填充。 迭代型散列函数的一般构造 函数f 的输入有两项,一项是上一轮的输出CVi-1 ,另一项是本 轮分组m 。 i CVi-1称为 变量。 函数f 的输出为n位的CV 。 i 最后一轮输出的 变量CV 即为最终产生的散列值。通常分 i 组长度b大于散列值长度n,f称为压缩函数。 散列函数的设计方法 散列函数不要求求逆,设计的空间比较大。有基于 公开密钥 算法的设计、基于对称分组 算 法的设计以及直接设计三种方式。 散列函数的设计方法 1.基于公开密钥 算法设计散列函数 CBC模式: 分组 模式 散列函数的设计方法 1.基于公开密钥 算法设计散列函数 散列函数的逻辑关系表示为 c0 IV ; c E (m c ),1 i  t; i PK i i−1 h(M ) ct 如果丢弃用户的私钥SK,产生的散列函数无法 , 满足单向性要求。 散列函数的设计方法 2.基于对称分组 算法设计散列函数 基于分组 的压缩函数早前很少被采用,一方面 是效率不高,另一方面是分组长度对Hash函数应 用来说太短。AES 的出现改变了现状,它有足够的 分组长度,没有弱密钥,能抵抗差分 。 基于分组 的Hash函数体制,简称PGV体制。 散列函数的设计方法 2.基于对称分组 算法设计散列函数 n n n 压缩函数f :{0,1} ×{0,1} →{0,1} ,一般表达如下: f(h,x)=E (b) ⊕c a 其中a,b,c ∈{h,x,h ⊕x,v} ,v是一个固定的n位常量, h=x=n。 如图所示 散列函数的设计方法 2.基于对称分组 算法设计散列函数 针对f(h,x)=E (b) ⊕c,a,b,c ∈{h,x,h ⊕x,v} ,有 a 4 ×4 ×4=64种方案,其中有12种方案被证明具有 足够的安全性。 散列函数的设计方法 2.基于对称分组 算法设计散列函数 前5种方案: 散列函数的设计方法 2.基于对称分组 前5种方案: 散列函数的设计方法 3.直接设计散列函数 不基于任何假设和 体制,通过直接构造复杂的 非线性关系达到单向性要求来设计单向性散列函 数。 典型的有:MD2,MD4,MD5,SHA系列等算法。 下面介绍MD和SHA系列算法。 消息 (MD) 概述 • MD(Message Digest,消息 )算法是由Ron Rivest (Rivest是RSA公司的科学家,MIT博士)在1990 年10月提出,通常称之为MD4。 • MD4是一种单独设计的散列算法,不基于任何密 码体制和已知的单向函数,产生128位的消息 。 • 针对MD4可能存在的安全性问题,Ron Rivest对 MD4进行改进,在1991提出MD5。 •1992年提出SHA ,1993年5月采纳作为标准。 MD 系列和SHA系列都源于同一思想,下面介绍MD4 和MD5。 MD4 • MD4算法中涉及的基本运算: 1 X ∧Y :逻辑与运算 2 X ∨Y :逻辑或运算 3 X ⊕Y :逻辑异或运算 4 ¬X :逻辑非运算 5 X+Y :模232加法运算 6 Xs :X循环左移s位,0≤s≤31 MD4 • MD4算法的具体过程: 预处理:首先对输入消息x分组,每个分组M长为 512位,再将M分成长为32位的16块: M=M[0]M[1]…M[n-1] 其中,M[i]=32,0≤i≤n-1,n≡0 mod 16。按需要对 最后一组进行填充。 MD4 •MD4算法的具体过程: 散列函数h(x)构造如下: (1)给定4个32位寄存器A,B,C,D ,赋初值(十六进 制): A B=efcdab89 C=98badcfe D MD4 • MD4算法的具体过程: 2 将x 的各个分组M的值装入到X : X[j]=M[16i+j] 其中,i为分组的序号,j为分组中块的序号, 0≤i≤(n/16)-1,0≤j≤15,X[j]共512位。 3 将已有的4个寄存器A,B,C,D 中的数组分别存放到 另外4个寄存器AA,BB,CC,DD 中。 MD4 • MD4算法的具体过程: (4 )执行第一 作,每次处理4个块,16个块4次 处理完,具体内容包括: A=(A+F(B,C,D)+X[4k])3 D=(D+F(A,B,C)+X[4k+1])7 C=(C+F(D,A,B)+X[4k+2])11 B=(B+F(C,D,A)+X[4k+3])19 其中,0≤k≤3 ,F(X,Y,Z)=(X∧Y) ∨(¬X ∧Z) MD4 • MD4算法的具体过程: (5 )执行第二 作,具体内容包括: A=(A+G(B,C,D)+X[k]+5a827999)3 D=(D+G(A,B,C)+X[4+k]+5a827999)5 C=(C+G(D,A,B)+X[8+k]+5a827999)9 B=(B+ ,A)+X[12+k]+5a827999)13 其中,0≤k≤3,G(X,Y,Z)=(X ∧Y) ∨(X∧Z) ∨(Y∧Z) MD4 • MD4算法的具体过程: (6 )执行第三 作,具体内容包括: A=(A+H(B,C,D)+X[0]+6ed9ebal)3 D=(D+H(A,B,C)+X[8]+6ed9ebal)9 C=(C+H(D,A,B)+X[4]+6ed9ebal)11 B=(B+H(C,D,A)+X[12]+6ed9ebal)15 A=(A+H(B,C,D)+X[2]+6ed9ebal)3 D=(D+H(A,B,C)+X[10]+6ed9ebal)9 C=(C+H(D,A,B)+X[6]+6ed9ebal)11 B=(B+H(C,D,A)+X[14]+6ed9ebal)15 MD4 • MD4算法的具体过程: (6 )执行第三 作,具体内容包括: A=(A+H(B,C,D)+X[1]+6ed9ebal)3 D=(D+H(A,B,C)+X[9]+6ed9ebal)9 C=(C+H(D,A,B)+X[5]+6ed9ebal)11 B=(B+H(C,D,A)+X[13]+6ed9ebal)15 A=(A+H(B,C,D)+X[3]+6ed9ebal)3 D=(D+H(A,B,C)+X[11]+6ed9ebal)9 C=(C+H(D,A,B)+X[7]+6ed9ebal)11 B=(B+H(C,D,A)+X[15]+6ed9ebal)15 其中,H(X,Y,Z)=XYZ MD4 • MD4算法的具体过程: 7 A=A+AA ,B=B+BB,C=C+CC,D=D+DD 8 输出h(x)=ABCD得到128位的消息 。 MD5 与MD4相同,MD5算法的分组长度也是512位,每个 分组再被划分成16个32位的块。输出的散列值也 为128位。 • 预处理: 对消息x进行预处理,按需要进行填充后使得长度是 512位的整数倍。另外,最后一个512位分组的后 64位用于存放消息x 的长度length(x),如果消息x 的 长度值不足64位,在长度前填充0 。 MD5 • MD5算法的具体过程: (1)给定4个寄存器A,B,C,D ,赋初值(十六进制): A B=89abcdef C=fedcba98 D MD5 • MD5算法的具体过程: (2 )循环中的4 作 将以上的寄存器A,B,C,D 的值赋给变量AA,BB,CC,DD 。 然后对所有的512位的分组中的每个块循环进行4 作 (MD4 中只有3轮)。 4 作中的4个非线性函数分别定义为: F(X,Y,Z)=(X∧Y) ∨((¬X) ∧Z) G(X,Y,Z)=(X ∧Z) ∨(Y∧(¬Z)) H(X,Y,Z)=XYZ I(X,Y,Z)=Y(X∨(¬Z)) MD5 • MD5算法的具体过程: (2 )循环中的4 作 另外定义FF、GG、HH、II函数: AA=FF(AA,BB,CC,DD,M ,s,t )=BB+((AA+F(BB,CC,DD)+M +t )S) j j j j AA=GG(AA,BB,CC,DD,M ,s,t )=BB+((AA+G(BB,CC,DD)+M +t )S) j j j j AA=HH(AA,BB,CC,DD,M ,s,t )=BB+((AA+H(BB,CC,DD)+M +t )S) j j j j AA=II(AA,BB,CC,DD,M ,s,t )=BB+((AA+I(BB,CC,DD)+M +t )S) j j j j 其中,t 是常数。 j MD5 • MD5算法的具体过程: (2 )循环中的4 作 四 作具体如下。 第一轮(16次操作): FF(AA,BB,CC,DD,M ,7,d76aa478) 0 FF(DD,AA,BB,CC,M ,12,e8c7b756) 1 … FF(BB,CC,DD,AA,M15,22,49b40821) MD5 • MD5算法的具体过程: (2 )循环中的4 作 四 作具体如下。 第二轮(16次操作): GG(AA,BB,CC,DD,M ,5,f61e2562) 1 GG(DD,AA,BB,CC,M ,9,c040b340) 6 … GG(BB,CC,DD,AA,M12,20,8d2a4c8a) MD5 • MD5算法的具体过程: (2 )循环中的4 作 四 作具体如下。 第三轮(16次操作): HH(AA,BB,CC,DD,M ,4,fffa3942) 5 HH(DD,AA,BB,CC,M ,11,8771f681) 8 … HH(BB,CC,DD,AA,M ,23,c4ac5665) 2 MD5 • MD5算法的具体过程: (2 )循环中的4 作 四 作具体如下。 第四轮(16次操作): II(AA,BB,CC,DD,M ,6,f4292244) 0 II(DD,AA,BB,CC,M ,10,432aff97) 7 … II(BB,CC,DD,AA,M ,21,eb86d391) 9 MD5 • MD5算法的具体过程: 3 A=A+AA ,B=B+BB,C=C+CC,D=D+DD 4 输出h(x)=ABCD得到128位的消息 MD5 • MD5与MD4进行比较,MD5的改进如下: 1 增加主循环中的操作次数,由三轮改为四轮 2 操作的每一步都有唯一的加法常数 3 为了减弱函数G 的对称性,函数定义由 (X ∧Y) ∨(X ∧Z) ∨(Y ∧Z)改为(X∧Z) ∨(Y∧(¬Z)) 。 4 改变第二轮和第三轮中消息分组 的次序,使得形式 的不相似程度更大 5 每一轮中的循环移位量各不相同,进行了优化。 对MD5的 对散列函数的 是指 者找到一对产生碰撞的 消息的过程。 • , 加州圣巴巴拉的国际 学 会议 (Crypto’2004 ),山东大学的 教授做 了破译MD5、HAVAL-128、MD4和RIPEMD算法的报 告。 • 在会场上,当她 MD系列算法的 方法和结 果之后,报告被激动的掌声打断。 教授的 报告轰动了全场,得到了与会 的赞叹。 • 并证明了160位的SHA-1只需要计算大约269次就能 找到碰撞,而理论值是280次。 对MD5的 • Rivest说:“MD5函数十几年来经受住了众多 学 的 ,而 教授却成功 ,这实 在是一种令人印象极深的卓越成就,是高水平的 世界级研究成果。” 安全散列算法SHA 概述 • SHA

【返回列表页】

顶部

地址:广东省广州市  电话:020-88889999 手机:13988889999
Copyright © 2018-2025 哈希游戏(hash game)官方网站 版权所有 非商用版本 ICP备案编: