《应用密码学》课件第6章 Hash函数(2).ppt
《《应用密码学》课件第6章 Hash函数(2).ppt》由会员分享,可在线阅读,更多相关《《应用密码学》课件第6章 Hash函数(2).ppt(56页珍藏版)》请在文库网上搜索。
1、12024/3/192024/3/1912024/3/192024/3/1912024/3/192024/3/191 16.3.2 SHA-1散列算法散列算法NIST在1993年发布了一个哈希算法称为安全HASH算法,1995年修改,修改后的版本是SHA-1,这个版本是当前使用最广泛的哈希算法。SHA-1接受输输入消息入消息的最大长度为264-1 bits,生成生成160 bits的消息摘要的消息摘要。SHA-1算法操作首先对输入消息划分消息划分为512-bit块,若最后一个数据块不满足长度要求,按照一定规则进行填充填充为512-bit块。然后每个512-bit块重复使用分重复使用分块处块处理
2、函数理函数,最终输出160 bits哈希值。22024/3/192024/3/1922024/3/192024/3/19232024/3/192024/3/1932024/3/192024/3/193 1)SHA-1算法算法预处理预处理42024/3/192024/3/1942024/3/192024/3/19452024/3/192024/3/1952024/3/192024/3/1953/19/20245(1)消息由704位二进制组成。先划分第一个分组:704-512=192第二个分组填充:先填充一个“1”,填充“0”的个数位:448-1-192=255最后64个比特填充消息的二进制长度。
3、(2)消息由448位二进制组成。已经448bits了,又必须填充1,故填充后消息为2个分组。故先填充一个“1”,然后用“0”把第1个分组填满。再把第2个分组的前448比特然后用“0”填充,剩下最后64比特填充消息的二进制长度。62024/3/192024/3/1962024/3/192024/3/196如果消息长度为480bits呢?72024/3/192024/3/1972024/3/192024/3/1973/19/20247实际上,在编程的时候应当分为2种情况:(1)消息的最后分组小于448比特,即56个字节,这种情况的填充方式容易理解;(2)消息的最后分组长度大于等于448比特,这种情
4、况会增加一个分组。另外,按照现在计算机的编码方式,消息的长度总是8的整数倍。编程时,先分组再算消息摘要,还是读一组计算一组?文件很大呢?多线程?-内存映射文件的方式82024/3/192024/3/1982024/3/192024/3/19892024/3/192024/3/1992024/3/192024/3/199102024/3/192024/3/19102024/3/192024/3/1910数据扩展112024/3/192024/3/19112024/3/192024/3/1911122024/3/192024/3/19122024/3/192024/3/1912132024/3/1
5、92024/3/19132024/3/192024/3/19132)SHA-1算法算法512-bit分块处理过程分块处理过程SHA-1算法以512-bit分块为单位进行循环处理,处理过程为:第一个512-bit分块与160-bit初始IV变量作为输入,通过分块处理压缩函数,输出160bits数据块;然后,第二512-bit分块和第一个分块处理最后输出160-bit数据块作为输入,通过分块处理处理压缩函数,输出160bits数据块;依次,直到最后一个512-bit子块处理完成,最后输出160 bits数据块为输入原始消息的哈希值,如图所示142024/3/192024/3/19142024/3/
6、192024/3/1914152024/3/192024/3/19152024/3/192024/3/1915162024/3/192024/3/19162024/3/192024/3/1916(1)逻辑函数(?)分块处理中需要使用结构相似的四个基本逻辑函数:f1,f2,f3,f4,每个回合使用不同的逻辑函数,f1,f2,f3,f4逻辑函数的定义如下所示:172024/3/192024/3/19172024/3/192024/3/1917(4)压缩函数寄存器A、B、C、D,E数据通过压缩函数变换182024/3/192024/3/19182024/3/192024/3/1918回合回合步骤步骤
7、输入常数输入常数取值方式取值方式(整数整数)1Kt=5A827992Kt=6ED9EBA13Kt=8F1BBCDC4Kt=CA62C1D6192024/3/192024/3/19192024/3/192024/3/19193)SHA-1算法伪代码算法伪代码202024/3/192024/3/19202024/3/192024/3/1920212024/3/192024/3/19212024/3/192024/3/19214.5Fort=0to79T=ROTL5(A)+f1(B,C,D)+E+Wt+KtE=D;D=C;C=ROTL30(B);B=A;A=TEnd;222024/3/192024/
8、3/19222024/3/192024/3/1922EndFor5.return哈希值(H0|H1|H2|H3|H4)备注:伪代码中+表示模加232024/3/192024/3/19232024/3/192024/3/19232024/3/192024/3/192323例例:对字符串对字符串”abc”,运用,运用SHA-1求散列值求散列值首先首先”abc”二进制表示为:二进制表示为:01100001 01100010 01100011,共,共24位长度位长度SHA-1算法:算法:第一步:第一步:按照按照SHA-1要求,填充数据要求,填充数据 5126424424(填充(填充1位位“1”,423
9、位位“0”,及,及 1000000)512位的输入数据为位的输入数据为(十六进制表示十六进制表示):):61626380 00000000,,00000018故故 W0=61626380,W1=W2=W14=00000000,W15=00000018第二步第二步:初始化初始化 A、B、C 与与 D 缓缓存器,如下:存器,如下:A:67 45 23 01 B:EF CD AB 89 C:98 BA DC FE D:10 32 54 76 E:C3 D2 E1 F0-实例实例242024/3/192024/3/19242024/3/192024/3/19242024/3/192024/3/1924
10、24第三步第三步:进入进入第一第一轮次运算轮次运算,执行执行 2020 回合回合:A A,B,C,D,E,B,C,D,E(E+fE+f1 1(t,B,C,D(t,B,C,D)+)+S S5 5(A)+W(A)+Wt t+K Kt t),A,S,A,S3030(B),C,D(B),C,D)求求A A,B,C,D,B,C,D的值。的值。SHA-1散列算法后面的与步骤散列算法后面的与步骤3类似计算。类似计算。由标准可知,若输入字符串由标准可知,若输入字符串”abc”,SHA-1算法算法160 bits哈希值为:哈希值为:a9993e36 4706816aba3e2571 7850c26c 9cd0d
11、89d252024/3/192024/3/19252024/3/192024/3/19256.3.3 SHA-256、SHA-384和和SHA-512*在2002年,相继对SHA系列算法进行扩展,提出SHA-256、SHA-384、SHA-512,并称为SHA-2。SHA-256与SHA-1算法一样,以512-bit分块为基本处理单位,每分块又划分为16个32-bit字进入哈希函数中处理操作。而SHA-384、SHA-512与SHA-1算法不同,是以1024-bit分块为基本处理单位,每分块是划分为16个64-bit字进入哈希函数中处理操作。262024/3/192024/3/19262024
12、/3/192024/3/1926-SHA-SHA参数比较:参数比较:参数比较:参数比较:272024/3/192024/3/19272024/3/192024/3/19276.3.4 SHA-3 算法算法自2007年,NIST发起了SHA-3竞赛以征集新的Hash算法以来,截止到 2010 年 10 月,第二轮遴选结束,共有五种算法进入最终轮遴选,入选的五个算法是:BLAKE、Grstl、JH、Keccak、Skein,到2012年,NIST最终选择Keccak算法作为SHA-3标准(即美国的FIPS PUB 202)。SHA-3为了与SHA-2完全兼容,SHA-3中也提出了4个Hash算法S
13、HA3-224,SHA3-256,SHA3-384,SHA3-512,可完全替换SHA-2。282024/3/192024/3/19282024/3/192024/3/1928Keccak算法是由 Guido Bertoni,Joan Daemen,Michal Peeters,以及Gilles Van Assche设计的。作为SHA家族最新的算法,其采用了不同于传统MD结构,而选择了海绵构造(sponge结构)。通过采用这种结构,常用于MD结构的攻击方法难以进行,增加了其算法安全性。292024/3/192024/3/19292024/3/192024/3/19292024/3/192024
14、/3/1929296.3.5 Hash散列算法的应用(略)散列算法的应用(略)Hash算算列列函函数数由由于于其其单单向向性性和和随随机机性性的的特特点点,主主要要运运用用于于提提供供数数据据完完整整性性(包包括括数数字字签签名名、以以及及与与数数字字签签名名联联系系起起来来的的数数字字指指纹纹的的应应用用)知知识识证证明明、密密钥钥推推导导、伪伪随随机机数生成等方面。数生成等方面。1生成程序或文档的生成程序或文档的“数字指纹数字指纹”-完整性验证完整性验证302024/3/192024/3/19302024/3/192024/3/19302024/3/192024/3/1930302用于安全
15、存储口令用于安全存储口令http:/ 散列算法的攻击现状(略)散列算法的攻击现状(略)散列函数主要用于数据完整性验证,确定消息是否被修改,因此对散列函数攻击因此对散列函数攻击的目标是生成这样的修改后的消息:的目标是生成这样的修改后的消息:其散列值与原有消息的散列值相等其散列值与原有消息的散列值相等。对散列函数的攻击可以分为如下几类:对散列函数的攻击可以分为如下几类:对散列函数的攻击可以分为如下几类:对散列函数的攻击可以分为如下几类:2024/3/192024/3/193131322024/3/192024/3/19322024/3/192024/3/19322024/3/192024/3/19
16、3232 目前,对散列函数的碰撞攻击最重要的平凡攻击是生日攻击。生日攻击的名字起源于所谓的生日悖论,严格来说,它它并并不不是是一一个个真真正正的的悖悖论论,只只是是一一个个令令人人吃吃惊的概率问题惊的概率问题。生日攻击方法没有利用Hash函数的结构和任何代数弱性质,它只依赖于消息摘要的长度,即HashHash值值值值的的的的长长长长度度度度。这种攻击对Hash函数提出了一个必要的安全条件,即消息摘要必须足够的长。6.4.1 生日悖论问题生日悖论问题 生日悖论是这样一个问题:在在k k个个人人中中至至少少有有两两个个人人的的生生日日相相同同的的概概率率大大于于0.50.5时时,k k至少多大?至
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 应用密码学 应用密码学课件第6章 Hash函数2 应用 密码学 课件 Hash 函数