第3章-第1讲 伪随机数发生器与单向散列函数

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

5)输出 ) 在处理完Yn后,128位的消息摘要为A、B、C、D级联的结果。
(二)安全散列函数(SHA) 安全散列函数
1 算法 SHA 是 美 国 NIST 和 NSA 共 同 设 计 的 安 全 散 列 算 法 (Secure Hash Algorithm) , 用 于 数 字 签名 标 准 DSS(Digital Signature Standard)。 修改版SHA–1于1995年作为美国联邦信息处理标准公告发 布。 SHA–1的输入: 度小于264位的消息 输出: 160位的消息摘要。
单向散列函数: 单向散列函数:Hash Function,哈希函数、杂凑函数 将任意长度的消息M映射成一个固定长度散列值h的函数: h=H(M), 其中,h的长度为m。 用途: 消息认证、数字签名。
散列函数要具有单向性,则必须满足如下特性: 散列函数要具有单向性,则必须满足如下特性: (1)有效性 ) 给定M,很容易计算h,便于软硬件实现。 (2)单向性 ) 给定h 根据H(M)=h反推M很难。 给定h,根据H(M)=h反推M很难。 H(M)=h反推 (3)弱抗碰撞性(弱攻击性) )弱抗碰撞性(弱攻击性) 给定M,找到另一M’满足H(M)=H(M’)很难。 在某些应用中,单向散列函数还需要满足抗碰撞(Collision) 在某些应用中 , 单向散列函数还需要满足抗碰撞 的条件: 的条件 :要找到两个随机的消息M和M’,使H(M)=H(M’)满足很难。 。 抗强抗攻击性) (抗强抗攻击性)
a b c d
a M j T[i] b
非非非非非



<<<s

c d
四轮操作的不同之处在于每轮使用的非线性函数不同,分别 为(其输入/输出均为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)) 其中,^表示按位与; ˇ表示按位或; ~表示按位反; +表示按位异或。
优点: 优点: (1)该发生器有一特殊性质,为了得到第i位不用去迭 代前面的i-1位 (2)对左右都是不可预测的。 缺点: 缺点: 速度比较慢。 使用
加速方法 :
xi
n 的更多低位,可以使用 log 2 位
注意:不使用于序列密码加密,适用于对安全性要求高的应用 注意 程序,例如密钥产生 。
第二部分 单向散列函数
2) 附加长度 将原消息长度的64位表示附加在填充后的消息后面。 将原消息长度的 位表示附加在填充后的消息后面。 位表示附加在填充后的消息后面 用消息长度 填充。 当原消息长度大于264时,用消息长度mod 264填充。 当原消息长度大于 (512=32×16) = × )Βιβλιοθήκη Baidu
3) 初始化 初始化MD缓冲区 缓冲区 初始化用于计算消息摘要的128位缓冲区, 由四个 位缓冲区, 初始化用于计算消息摘要的 位缓冲区 32位寄存器 、B、C、D表示: 位寄存器A、 、 、 表示 表示: 位寄存器 A: 01 B: 89 C: fe D: 76 23 ab dc 54 45 cd ba 32 67 ef 98 10
填填填 L×512 bit=N×32 bit K bit 消消
消消消消(K mod64) 2
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填消消位位
1、线性反馈移位寄存器 、 最简单的反馈移位寄存器是线性反馈移位寄存器 线性反馈移位寄存器 (LFSR),反馈函数 反馈函数是寄存器中某些位的异或运算,即是 反馈函数 上的一个多项式 一个多项式,为了能达到最大周期(m序列 序列)应该是上 一个多项式 序列 的一个本原多项式 本原多项式
例子: 级线性反馈移位寄存器 例子:3级线性反馈移位寄存器
优点:随机统计特性好,速度快 优点 缺点:线性复杂度低,容易受攻击 缺点 使用:作为其它生成器的驱动,即生成种子密钥 使用
第0时刻 0 0 1
产生序列为:1001110……和一个全零序列
2、基于密码算法的随机数产生器 ANSIX9.17伪随机数产生器
每个阶段使用的DES密钥 密钥 每个阶段使用的 第i阶段的日期 阶段的日期 DTi EDE + EDE Vi+1 K1K2 下一阶段的种子
二、伪随机数生成器
1、线性反馈移位寄存器 、
一个反馈移位寄存器(FSR)由两个部分组成:移位寄存器和 移位寄存器和 反馈函数(feed back function)。移位寄存器是一个位序列,其长 反馈函数 度用位表示,每次需要一个位,移位寄存器中所有的位右移一个位, 新的最左端的位根据寄存器中的其它位计算得到,输出位一般是寄 存器的最低有效位。移位寄存器的周期是指输出序列从开始到重复 的长度
图 SHA–1算法
1) 填充消息
将消息填充为512位的整数倍,填充方法和MD5完全相同。幻灯片 16 位的整数倍,填充方法和 完全相同。 将消息填充为 位的整数倍 完全相同
2) 初始化缓冲区
SHA要用到两个缓冲区,均有五个32位的寄存器。 要用到两个缓冲区,均有五个 位的寄存器 位的寄存器。 要用到两个缓冲区 第一个缓冲区: 、 、 、 、 ; 第一个缓冲区:A、B、C、D、E; 第二个缓冲区:H0、H1、H2、H3、H4。 第二个缓冲区: 运算过程中还用到一个标记为W 运算过程中还用到一个标记为 0、W1、…、W79的80个32位字序列和一个 、 个 位字序列和一个 单字的缓冲区TEMP。在运算之前,初始化 j}: 单字的缓冲区 。在运算之前,初始化{H : H0 = 0x67452301 H2 = 0x98BADCFE H4 = 0xC3D2E1F0 H1 = 0xEFCDAB89 H3 = 0x10325476
Vi 第i阶段开始的种子 阶段开始的种子

EDE
Ri 输出的随机数
Ri = EDEK [Vi ⊕ EDEK [ DTi ]] Vi +1 = EDEK [ Ri ⊕ EDEK [ DTi ]]
3、基于大数因子分解的发生器——BBS产生器 、基于大数因子分解的发生器 产生器
密码强度最强,基于大整数分解困难性 选择p,q,满足p=q=3 mod 4, n=p×q。选随机数s,s和n 互素 X0=s2 mod n For i=1 to ∞ do { Xi=Xi-12 mod n; Bi=Xi mod 2} Bi为产生的随机数序列
512 bit Y1 512 HMD5 … CV -1 L 128 …
512 bit YL-1 512 HMD5
MD5算法五个步骤: 算法五个步骤: 算法五个步骤 1) 附加填充位 2) 附加长度 3) 初始化MD缓冲区 4) 按512位的分组处理 5) 输出
128填消消位位
1) 附加填充位 填充消息,使其长度为一个比 的倍数小于64位的数 填充消息,使其长度为一个比512的倍数小于 位的数。幻灯片 25 的倍数小于 位的数。 填充方法:在消息后面填充一位1,然后填充所需数量的0。 填充方法:在消息后面填充一位 ,然后填充所需数量的 。填充位 的位数从1~ 的位数从 ~512。 。
MD5对每 对每512bit按照下列算法进行处理 对每 按照下列算法进行处理
(1) 把Yi分为16个32比特分组M0、M1、…、M15,其中,M0为最左边的 32bit。 (2) Let AA =A,BB =B,CC =C,DD =D (3) for i =0 to 15 do (第一轮) Temp=B + ((A + F(B,C,D) + M[j] + T[j]) <<< s[j] ; A =D; B =temp; C =B; D = C; end for j =16 to 31 do (第二轮) Temp= B + ((A + G(B,C,D) + M[(1+(j-16)*5)%16] + T[j]) <<< s[j] ; A =D; B =temp; C =B; D = C; End
1、算法 、 MD5对输入的任意长度消息产生 对输入的任意长度消息产生128位散列值: 位散列值: 对输入的任意长度消息产生 位散列值
填填填 消消消消(K mod64) 2
L×512 bit=N×32 bit K bit
消消
100…0
512 bit Y0 512 IV 128 HMD5 CV 1 128
第三章 安全业务及其实现方法
第一讲 伪随机数发生器与单向散列函数
第一部分 伪随机序列发生器
随机数在网络安全算法中的应用
(1)鉴别方案:序列号,临时密钥
(2)会话密钥的产生:种子密钥的生成,会话密钥的生成 (3)公钥密钥的产生 (4)用于生成序列密码(流密码)的密钥流 密码算法上对随机数的要求?
一、基本概念
密码学上安全的伪随机数生成器必须满足下面( )( )(2) 密码学上安全的伪随机数生成器必须满足下面(1)( )条件 (1)它是满足伪随机性,这表明它通过了我们所能找到 的所有 随机性统计检验。 (2)它是不可预测的。即使给出产生序列的算法或硬 件和所有以前产生的比特流的全部知识,也不可能通过计 算来预测下一个随机比特应是什么。 如果一个随机序列产生器具有下面的第三条性质, 它就是真正随机 真正随机的: 真正随机 (3)它不能可靠地重复产生。如果你用完全同样的输 入对序列产生器操作两次(至少与人所能做到的最精确的 一样),你将得到两个不相关的随机序列。
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 + + 还用到常数字序列K 还用到常数字序列 0、K1、…、K79: 、 , Kt = 0x5A827999 (0≤t≤19), Kt = 0x6ED9EBA1 (20≤t≤39) (60≤t≤79) (0≤t≤19) (20≤t≤39) (40≤t≤59) (60≤t≤79)
for j =32 to 47 do (第三轮) Temp= B + ((A + H(B,C,D) + M[(5+(i-32))*3%16] + T[j]) <<< s[j] ; A =D; B =temp; C =B; D = C; end for j =48 to 63 do (第四轮) Temp= B + ((A + I(B,C,D) + M[(0+(i-48))*7%16] + T[j]) <<< s[j] ; A =D; B =temp; C =B; D = C; end (4) Let A = A + AA ,B = B + BB,C = C + CC,D = D + DD
还要求:
能用于任何大小的消息; 能用于任何大小的消息; 能产生定长输出; 能产生定长输出;
实现: 实现:
单向散列函数是建立在压缩函数之上的: 单向散列函数是建立在压缩函数之上的:
消消消消1
消消消消2

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

压压 非非
非非函
(一) MD5 算 法 一
MD表示消息摘要(Message Digest),单向散列函数 输入: 给定一任意长度的消息 输出: 长为m的散列值。 压缩函数的输入: 消息分组和前一分组的输出(对第一个函数需初始化向量IV); 输出: 到该点的所有分组的散列,即分组Mi的散列为 hi=f (Mi, hi−1) 循环: 该散列值和下一轮的消息分组一起作为压缩函数下一轮的输入,最 后一分组的散列就是整个消息的散列。
(按低位字节在前的顺序存放 按低位字节在前的顺序存放) 按低位字节在前的顺序存放
4) 按512位的分组处理输入消息 位的分组处理输入消息
MD5的主循环,包括四轮,每个循环都以当前的正在处 理的512比特分组Yq和128比特缓冲值ABCD为输入,然后更 新缓冲内容。
压缩函数
四轮的操作类似,每轮 次 四轮的操作类似,每轮16次: MD5的一次操作 的一次操作
相关文档
最新文档