散列函数和MAC函数1

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
– – – 用3轮每轮16步,用了三个非线性函数, 没有T[i]常量加 每轮没有叠加上轮的结果;
RSA 实验室将 MD5 描述为“系有安全带的 MD4”,虽然比 MD4 慢, 但却被认为是安全的,对大数在前的系统性能较好。 SHA也是以MD4以基础设计的。
第11章 消息认证和散列函数 11章
安全散列函数(SHA) 安全散列函数
第11章 消息认证和散列函数 11章
第11章 消息认证和散列函数 章
第11章 消息认证和散列函数 11章
在网络环境中,存在下述的攻击: 1. 泄密 2. 传输分析 3. 伪装 4. 内容修改 5. 顺序修改 6. 计时修改 7. 发送方否认 8. 接收方否认 消息认证 数字签名
第11章 消息认证和散列函数 11章
第11章 消息认证和散列函数 11章
还要求:
能用于任何大小的消息; 能产生定长输出; 寻找任意 任意的M和M’,会满足H(M)=H(M’)很难。 任意
实现:
单向散列函数是建立Leabharlann Baidu压缩函数之上的:
消消消消1
消消消消2

消消消消n
填填填
IV
压压 非非
压压 非非

压压 非非
非非函
第11章 消息认证和散列函数 11章
第11章 消息认证和散列函数 11章
单向散列函数Hash 单向散列函数
(1)单向散列函数是消息认证的一种变形。 (2)与MAC不同的是,散列码并不使用密钥, 它仅是输入消息的函数。 (3)散列码是所有消息位的函数,它具有错 误检测能力,即改变消息的任何一位或者多位, 都会导致散列码的改变。
第11章 消息认证和散列函数 11章
(1) 把Mi分为16个字W0、W1、…、W15,其中,W0为最左边的字。 (2) for t =16 to 79 do let Wt =(Wt−3 Wt−8 Wt−14 ⊕ Wt−16)<<<1 ⊕ ⊕ (3) Let A =H0,B =H1,C =H2,D =H3,E =H4 (4) for t =0 to 79 do TEMP = (A<<<5)+ft (B, C, D)+E +Wt +Kt ; E =D; D =C; C =(B<<<30); B = A; A = TEMP; (5) Let H0 =H0 +A, H1 =H1 +B, H2 =H2 +C, H3 =H3 +D, H4 =H4 +E
100…0
512 bit Y 0 512 IV 160 H SHA CV 1 160
512 bit Y 1 512 HSHA … CV -1 L 160 …
512 bit Y -1 L 512 H SHA 160填消消位位
图3-5 SHA–1算法
第11章 消息认证和散列函数 11章
1) 填充消息
将消息填充为512位的整数倍,填充方法和MD5完全相同。
第11章 消息认证和散列函数 11章
Ron Rivest的贡献 的贡献
MD2、MD4 和 MD5 都是由 Ron Rivest开发的: MD2 是为 8 位计算机系统设计的; MD4 开始是为 32 位计算机系统开发的,适合小数在前的系统(80x86 和pentium),1990 开发,简单易于编程,现在被认为是不安全的:
512 bit Y1 512 HMD5 … CV -1 L 128 …
512 bit YL-1 512 HMD5
1) 附加填充位 2) 附加长度 3) 初始化MD缓冲区 4) 按512位的分组处理 5) 输出
128填消消位位
第11章 消息认证和散列函数 11章 1) 附加填充位 填充消息,使其长度为一个比512的倍数小64位的数。 填充方法:在消息后面填充一位1,然后填充所需数量的0。填 充位的位数从1~512。
第11章 消息认证和散列函数 11章
5) 输出 由A、B、C、D四个寄存器的输出按低位字节在前 的顺序(即以A的低字节开始、D的高字节结束)得到128 位的消息摘要。
特点: MD5算法的运算均为基本运算,比较容易实现且 速度很快。
第11章 消息认证和散列函数 11章
3.1.2 举例 求字符串‘’abc‘’的MD5散列值: ''abc''的二进制表示为01100001 01100010 01100011。 (1) 填充消息:消息长l=24,先填充1位1,然后填充 423位0,再用消息长24,即0x00000000 00000018填充, 则:
SHA是美国NIST和NSA共同设计的安全散列算法 (Secure Hash Algorithm) , 用 于 数 字 签 名 标 准 DSS(Digital Signature Standard)。 修改版SHA–1于1995年作为美国联邦信息处理标 准公告发布。
第11章 消息认证和散列函数 11章
2) 初始化缓冲区
SHA要用到两个缓冲区,均有五个32位的寄存器。 第一个缓冲区:A、B、C、D、E; 第二个缓冲区:H0、H1、H2、H3、H4。 运算过程中还用到一个标记为W0、W1、…、W79的80个32位字序 列和一个单字的缓冲区TEMP。 在运算之前,初始化{Hj}: H0 = 0x67452301 H1 = 0xEFCDAB89 H2 = 0x98BADCFE H3 = 0x10325476 H4 = 0xC3D2E1F0
四轮操作的不同之处在于每轮使用的非线性函数不同,分别 为(其输入/输出均为32位字): 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)) 其中,^表示按位与; ˇ表示按位或; ~表示按位反; +表示按位异或。
安全散列函数(SHA) 安全散列函数
SHA算法 SHA–1的输入: 长度小于264位的消息 输出: 160位的消息摘要。 NIST协会隶属于美国商务部,负责发放密码规程 的标准。
第11章 消息认证和散列函数 11章
填填填 L×512 bit=N×32 bit K bit 消消
消消消消(K mod64) 2
M[0]=61626380 M[1]=00000000 M[2]=00000000 M[3]=00000000 M[4]=00000000 M[5]=00000000 M[6]=00000000 M[7]=00000000 M[8]=00000000 M[9]=00000000 M[10]=00000000 M[11]=00000000 M[12]=00000000 M[13]=00000000 M[14]=00000000 M[15]=00000018
A B C D CV q+1
第11章 消息认证和散列函数 11章
四轮的操作类似,每轮16次:
用 到 一 个 有 64 个 元 素 的 表 T[1..64] , T[i]=232×abs(sin(i)),i的单位为弧度。
16次
a b c d
a M j T[i] b
非非非非非



<<<s

c d
第11章 消息认证和散列函数 11章
为什么?
对称加密既可提供认证,又可以提供保密性, 但是这不是绝对的。 从认证的角度看,如果消息M可以是任意的 位模式,那么接收方无法确定接收到的消息 是合法的明文。 对接收到的密文解密所得明文得可读性进行 自动判别,是一件困难的事情。
第11章 消息认证和散列函数 11章
11.2.2 消息认证码 消息认证码(MAC)
还用到常数字序列K0、K1、…、K79: Kt = 0x5A827999 Kt = 0x6ED9EBA1 Kt = 0x8F1BBCDC Kt = 0xCA62C1D6 (0≤t≤19) (20≤t≤39) (40≤t≤59) (60≤t≤79)
第11章 消息认证和散列函数 11章
SHA算法按如下步骤处理每个字块Mi:
第11章 消息认证和散列函数 11章
(2) 初始化: A: 01 B: 89 C: fe D: 76 23 ab dc 54 45 cd ba 32 67 ef 98 10
(3) 主循环:经过4轮,每轮16次的处理。 (4) 输出: 消息摘要=
90015098 3cd24fb0 d6963f7d 28e17f72
2) 附加长度 将原消息长度的64位表示附加在填充后的消息后面。 当原消息长度大于264时,用消息长度mod 264填充。 (512=32×16)
第11章 消息认证和散列函数 11章
3) 初始化MD缓冲区 初始化用于计算消息摘要的128位缓冲区,由四个32 位寄存器A、B、C、D表示: A: 01 B: 89 C: fe D: 76 23 ab dc 54 45 cd ba 32 67 ef 98 10
散列函数要具有单向性,则必须满足如下特性: ● 给定M,很容易计算h,便于软硬件实现。 ● 给定h,根据H(M)=h反推M很难。 (单向性) ● 给定M,找到另一M’满足H(M)=H(M’)很难。 (弱抗攻击性) 在某些应用中,单向散列函数还需要满足抗碰撞 (Collision)的条件:要找到两个随机的消息M和M’,使 H(M)=H(M’)满足很难。 (强抗攻击性)
第11章 消息认证和散列函数 11章 3) 按512位的分组处理输入消息 SHA运算主循环包括四轮,每轮20次操作。 逻辑函数序列f0 、f1 、…、f79 ,每个逻辑函数的输入为三个 32位字,输出为一个32位字:
ft (B,C,D) = (B^C) ˇ(~B^D) ft (B,C,D) = B+C+D ft (B,C,D) = (B^C) ˇ(B^D) ˇ(C^D) ft (B,C,D) = B+C+D (0≤t≤19) (20≤t≤39) (40≤t≤59) (60≤t≤79)
(按低位字节在前的顺序存放)
第11章 消息认证和散列函数 11章 4) 按512位的分组处理输入消息 MD5的主循环,包括四轮,每个循环都以当前的正在处理的512比 特分组Yq和128比特缓冲值ABCD为输入,然后更新缓冲内容。
Y q A B CV q C D
第 一 轮 第 二 轮 第 三 轮 第 四 轮 + + + +
第11章 消息认证和散列函数 11章
源源A M K Ⅱ
目目源B M C 比比 K CK(M)
C
图11.4 MAC应用于消息认证
第11章 消息认证和散列函数 11章
第11章 消息认证和散列函数 11章
单向散列函数
单向散列函数: Hash Function,哈希函数、杂凑函数 将任意长度的消息M映射成一个固定长度散列值h的函数: h=H(M) 其中,h的长度为m。 用途: 消息认证、数字签名。 MESSAGE πασσωορδ 哈希算法
第11章 消息认证和散列函数 11章
MD5算法 MD5对输入的任意长度消息产生128位散列值:
填填填 消消消消(K mod64) 2
L×512 bit=N×32 bit K bit
消消
100…0
MD5算法五个步骤: 算法五个步骤: 算法五个步骤
512 bit Y0 512 IV 128 HMD5 CV 1 128
第11章 消息认证和散列函数 11章
第11章 消息认证和散列函数 11章
一个简单的散列函数
每个分组按比特异或(简单奇偶校验):
Ci = bi1 ⊕ bi2 ⊕ ... ⊕ bim
改进: 针对可预测数据,每次循环左移一位将数据和散列值 再异或。 结果: 随机化、去格式化
第11章 消息认证和散列函数 11章
与密钥相关的单向散列函数通常称为MAC(消息认证码): MAC=CK(M) 其中:
M为可变长的消息;K为通信双方共享的密钥;C为单向函数。
用途: 为拥有共享密钥的双方在通信中验证消息的完整性; 被单个用户用来验证他的文件是否被改动。
第11章 消息认证和散列函数 11章
MAC函数与加密类似,其区别之一是: MAC算法不要求可逆性而加密算法必 须是可逆的。
MD5 算 法
MD表示消息摘要(Message Digest),单向散列函数输入: 给定一任意长度的消息 输出: 长为m的散列值。 压缩函数的输入: 消息分组和前一分组的输出(对第一个函数需初始化向量IV); 输出: 到该点的所有分组的散列,即分组Mi的散列为 hi=f (Mi, hi−1) 循环: 该散列值和下一轮的消息分组一起作为压缩函数下一轮的输入,最 后一分组的散列就是整个消息的散列。
相关文档
最新文档