当前位置:
文档之家› 第三章 数据的完整性保护(last1)
第三章 数据的完整性保护(last1)
个X,将X进行填充,使其成为一个512比特的倍数 串M=M[0]M[1]……M[N-1] ,这里每个M[i] (0 ≤i ≤N-1) 是长为 32比特的串,N≡0(mod16)(即N是16的倍数。)我们将每个 M[i]称为一个字(32位),由X产生M的算法如下: ⑴ d=447-(│x│mod512) (当d<0时,按模512处理) ⑵ l表示x的长度,即│x│。│l│=64(即用64比特表示x 的长度) ⑶ M=x‖1‖0d‖l 初始信息(x) 100……0 初始信息的 比特数(l)
二、消息摘录技术的应用
1、 用于计算消息完整码
发送者 消息
产生附件 所期望的附件
接收者 传输的消息
消息 附件
消息 产生附件
比较
如果两者 一样,则 认为消息 是完整的
附件
实际受到的附件
一般的封装机制
发方A
消息m 密匙K AB
收方B
消息m
传输的消息
MD(m|K AB)
重新根据m, 由m|K AB计算附件F´
B=C+((B+f(C,D,A)+m[7]+fd469501)<<22) A=B+((A+f(B,C,D)+m[8]+698098db)<<7) D=A+((D+f(A,B,C)+m[9]+8b44f7af)<<12) C=D+((C+f(D,A,B)+m[10]+ffff5bb1)<<17) B=C+((B+f(C,D,A)+m[11]+895cd7be)<<22) A=B+((A+f(B,C,D)+m[12]+6b901122)<<7) D=A+((D+f(A,B,C)+m[13]+fd987193)<<12) C=D+((C+f(D,A,B)+m[14]+a679438e)<<17) B=C+((B+f(C,D,A)+m[15]+49b40821)<<22)
5) A= (A+g(B,C,D)+ m[1] +5a827999) << 3 ;
(6) (7) (8) (9) (10) (11) (12) (13) (14) (15) (16)
D=(D+g(A,B,C)+ m[5] +5a827999) << 5 ; C=(C+g(D,A,B)+ m[9] +5a827999) << 9 ; B=(B+g(C,D,A)+ m[13] +5a827999)<< 13 ; A=(A+g(B,C,D)+ m[2] +5a827999) << 3 ; D=(D+g(A,B,C)+ m[6] +5a827999) << 5 ; C=(C+g(D,A,B)+ m[10] +5a827999)<< 9; B=(B+g(C,D,A)+ B= B+g C D A + m[14] +5a827999 << 13 ; +5a827999)<< A=(A+g(B,C,D)+ m[3] +5a827999)<< 3 ; D=(D+g(A,B,C)+ m[7] +5a827999) << 5; C=(C+g(D,A,B)+ m[11] +5a827999)<< 9; B=(B+g(C,D,A)+ m[15] +5a827999)<< 13 ;
消息m
附件F 将F′与收到的附 件F进行比较 如果F′=F则认为消息是 完整的,否则不是完整的
消息m
附件F
2、使用MD进行双向鉴别
A rA
MD(KAB│rA)
B
MD(KAB│rA)
rB
基于的双向MD鉴别机制
3.1.1、 3.1.1、
一、概 述 、
MD4
MD4的设计是面向32比特字的,更适合于32位 计算机,效率比MD2高。 MD4计算出的消息摘录长度为128比特,用4个字 表示,分别记为A,B,C,D,在计算开始时被分别 初始化为常数。输入信息被分成512比特的等长块,逐 块 处 理 。 每 块 包 含 16 个 字 , 分 别 记 为 m0 , m1,……m15。 每块的处理分三遍扫描,每遍对A,B,C,D使 用不同的扰乱函数。在处理前需将当前的消息摘录备 份,在处理后将这个备份加到新产生的消息摘录上, 并将其作为下一块处理时消息摘录的当前值。最后一 块信息处理之后的消息摘录当前值,即为最终的消息 摘录值。
2、第二轮
第二轮使用一个如下定义的函数: g(x,y,z)=(x∧y)∨(x∧z)∨(y∧z) 取常数C2=[2 ]=5a827999H
注意:在第二轮中m[i]不是顺序处理的。
1) 2) 3) 4) A=(A+g(B,C,D)+ m[0] +5a827999)<< 3 ; D=(D+g(A,B,C)+ m[4] +5a827999)<< 5 ; C= (C+g(D,A,B)+ m[8] +5a827999) << 9 ; B= (B+g(C,D,A)+ m[12] +5a827999)<< 13 ;
第三轮
第三轮定义扰乱函数如下: h(X,y,Z)=x ⊕ y ⊕ z 取常数 C3 =[2 30 2 ]=6edgebalH 30 2 与第二遍扫描类似,第三遍扫描时对Mi 的处理也不是顺序的,具体为:
(1) A=(A+h(B,C,D)+ m[0] +C3) << 3 ; (2) D=(D+h(A,B,C)+ m[8] +C3)<< 9 ; (3) C=(C+h(D,A,B)+ m[4] +C3) <<11 ; (4) B=(B+h(C,D,A)+ m[12] +C3)<< 15 ; (5) A=(A+h(B,C,D)+ m[2] +C3) << 3 ;
一个强碰撞自由的Hash函数是满足下 列条件的一个函数h:
(1) h的输入可以是任意长度的任何消息 或文件M; (2) h输出的长度是固定的(该长度必须足 够长,以抵抗所谓的生日攻击,根据今天的计算 技术和能力,至少应为128比特长); (3) 给定h和m,计算 h(M)是容易的;
(4) 给定h的描述,找 两 个不同的消息(信息) M1 和 M2,使得 h(M1)=h(M2)是计算上不可行 的。 (如果这两个消息M1,M2,M1≠M2,使得 h (M1)=h(M2),则称这两个消息是碰撞消息 碰撞消息或称 碰撞消息 这两个消息碰撞。) 这两个消息碰撞 一个弱碰撞自由的Hash函数与一个强碰撞自由 的Hash函数的前三个条件(1)-(3)完全一样,不同 的只是第(4)个条件。在一个弱碰撞自由的Hash函 数中。 (5) 给定h的描述和一个随机选择的消息M1,找另 一个消息M2,M2≠M1,使得h(M1)=h(M2)是计 算上不可行的。
D=A+((D+g(A,B,C)+m[14]+c33707d6)<<9) C=D+((C+g(D,A,B)+m[3]+f4d5od87)<<14) B=C+((B+g(C,D,A)+m[8]+455a14ed)<<20) A=B+((A+g(B,C,D)+m[13]+a9e3e9o5)<<5) D=A+((D+g(A,B,C)+m[2]+fcefa3f8)<<9) C=D+((C+g(D,A,B)+m[7]+676fo2d9)<<14) B=C+((B+g(C,D,A)+m[12]+8d2a4c8a)<<20)
MD5
x 第一轮 F(x,y,z)=(x Λ y)V( Λz) A=B+((A+f(B,C,D)+m[0]+d7aa78)<<7) D=A+((D+f(A,B,C)+m[1]+e8c7b756)<<12) C=D+((C+f(D,A,B)+m[2]+242070db)<<17) B=C+((B+f(C,D,A)+m[3]+c1bdceee)<<22) A=B+((A+f(B,C,D)+m[4]+f57c0faf)<<7) D=A+((D+f(A,B,C)+m[5]+4787c62a)<<12) C=D+((C+f(D,A,B)+m[6]+a8304613)<<17)
(4) 将四个寄存器A、B、C、D的值存储到另外 四个寄存器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