关闭

密码学基础知识(六)Hash函数与消息认证

标签: 信息安全密码学通信
1971人阅读 评论(0) 收藏 举报
分类:

Hash函数和消息认证

先说Hash

哈希函数,可以将任意长度的消息压缩为某一固定长度的消息摘要函数。一句话,Hash简直了。

当然有逆天的一面就有大缺点,过程不可逆。傻了吧,哈哈。

Hash的性质:

1.    (逆天特性)应用于任意长的消息,产生固定长的输出(散列值,消息摘要,数字指纹随便你叫什么了);

2.    (单向性)对于给定消息x,H(x)很容易得出。但是对于给定z,寻找H(x)=z是不可行的;

3.    (安全特性)抗弱碰撞性:有x,找一个y,使得H(x)=H(y)计算不可行;抗强碰撞性:寻找(x,y),使得使得H(x)=H(y)计算不可行。

4.    (雪崩性)雪崩效应,散列值的每一位都与消息的每一位有关,相近的消息,输出很大差别。

Hash:

       带密钥的Hash和不带密钥的Hash。区别在于前者一个输入,后者两个:消息+密钥。后者一般用于产生消息认证码MAC。

Hash应用:

1.数据完整性验证:由于雪崩性,稍有改动一对比就发现了;2.产生数字签名:计算H(m),然后私钥加密;3.密钥推导:天生单向性;4.伪随机数生成。

简单说下Hash函数的攻击方法:

       第一类生日攻击:

              就是说,n个输入,其中有一个输出H(x),那我要多少个y才能使H(y)=H(x)的概率达到0.5?

              答案是2/n个。假如输出为m位长,那么就有2m个输出。引出了第二类生日攻击

       第二类生日攻击:

              k~=2m/2,说明了散列值不能小于128位啊。

       模差分攻击:

              最有效的方法,也叫比特追踪法。这个假期研究研究。

 

再额外提下基于分组密码的Hash函数:

       可以用CBC和CFB。

由于这种基于加密体制的Hash函数经不起攻击,所以大多都用另一类,即构造复杂的非线性关系实现单向性。这就产生了那些著名的算法和那些著名的事。

 

MD5算法:

       输入消息:长度小于264,以512位一组。

       输出消息:128位

过程:

1.消息填充:将消息长度填充至差64位就是512的倍数。那64位是表示填充长度的,是先从低位表示填充长度的。

       2.填充后的消息是512的倍数,然后按512分组,每组又是16个32位长的字。

       3.初始化中间结果:128位的缓存区来存储中间结果,对其初始化4个32位长的寄存器分别存放四个固定的整数。

       4.迭代压缩:每个分组经压缩函数HMD5处理。

                     那就说说这个压缩函数,HMD5有四轮处理,四个轮函数结构相同但是逻辑函数不同。

5.    输出:最后一个HMD5的输出即为消息摘要。

 

HMD5

       四轮处理过程,每轮都对缓冲区16轮迭代运算。

 

SHA:

       与MD5一脉相承,来自MD4,真名SHA-1。

       输入消息:长度小于264,以512位一组。

       输出消息:160位

过程:

1.消息填充:(跟MD5一样)将消息长度填充至差64位就是512的倍数。那64位是表示填充长度的,是先从位表示填充长度的。

       2.填充后的消息是512的倍数,然后按512分组,每组又是16个32位长的字。

       3.初始化中间结果:160位的缓存区来存储中间结果,对其初始化5个32位长的寄存器分别存放五个固定的整数。

       4.迭代压缩:四轮处理,每轮20迭代,也是逻辑函数不同

5.  输出:最后一个分组的输出即为160位的消息摘要。

 

在压缩函数上看两者区别:

       MD5直接用分组的16个字作为迭代,SHA则将16字扩展为80字。

 

MD5和SHA算法必然相似,哥俩嘛,

 

 

消息认证码MAC:

       验证信息来源的真实性;验证消息的完整性。

 

很显然,Hash函数很适合设计MAC。所以有了HMAC:

       累了,休息一会。



0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

hash校验算法

在某些网站下载软件的时候,官方会提供该软件的MD5值、SHA1值或CRC32值,目的我们都知道,就是防止文件被篡改,准确地说,不叫防止,就是你下载回去的软件或程序通过Hash校验工具计算后,如果Has...
  • cws1214
  • cws1214
  • 2015-07-31 23:56
  • 2958

密码学之一(Hash函数)

定义 单向性 数据完整性 Hash冲突 常用的Hash算法 程序 Hash环问题 Hash应用场景定义Hash函数H将可变长度的数据M作为输入,产生固定长度的Hash值h。 Hash函数,哈希函数,...
  • matrix65537
  • matrix65537
  • 2016-12-21 18:07
  • 469

hash校验算法

在某些网站下载软件的时候,官方会提供该软件的MD5值、SHA1值或CRC32值,目的我们都知道,就是防止文件被篡改,准确地说,不叫防止,就是你下载回去的软件或程序通过Hash校验工具计算后,如果Has...
  • cws1214
  • cws1214
  • 2015-07-31 23:56
  • 2958

密码学之一(Hash函数)

定义 单向性 数据完整性 Hash冲突 常用的Hash算法 程序 Hash环问题 Hash应用场景定义Hash函数H将可变长度的数据M作为输入,产生固定长度的Hash值h。 Hash函数,哈希函数,...
  • matrix65537
  • matrix65537
  • 2016-12-21 18:07
  • 469

信息安全与密码学3-数字摘要和Hash函数(哈希函数)

信息安全与密码学3-数字摘要和Hash函数(哈希函数) 1、数字摘要 数字摘要是将任意长度的消息变成固定长度的短消息,它类似于一个自变量是消息的函数,也就是Hash函数。数字摘要就是采用单项H...
  • Nathan1987_
  • Nathan1987_
  • 2015-12-10 15:24
  • 1102

网络安全-安全散列函数,信息摘要SHA-1,MD5原理

本文绝大部分内容来自《网络安全基础——应用与标准》第五版——清华大学出版社。其中蓝色部门是自己添加 安全散列函数 单向散列函数或者安全散列函数之所以重要,不仅在于消息认证(消息摘要,数据指纹),还有数...
  • hherima
  • hherima
  • 2014-07-04 23:06
  • 3269

常用hash函数

常用的字符串Hash函数还有ELFHash,APHash等等,都是十分简单有效的方法。这些函数使用位运算使得每一个字符都对最后的函数值产生 影响。另外还有以MD5和SHA1为代表的杂凑函数,这些函数几...
  • houzengjiang
  • houzengjiang
  • 2014-12-17 16:30
  • 1611

散列函数(哈希函数,Hash Function)

说明          散列的概念属于查找,它不以关键字的比较为基本操作,采用直接寻址技术。在理想情况下,查找的期望时间为O(1)。 简单的说,hash函数就是把任意长的输入字符串变化成固定长的输...
  • ywok526
  • ywok526
  • 2014-08-13 18:41
  • 9527

经典字符串hash函数介绍及性能比较

各种字符串Hash函数 http://www.cnblogs.com/atlantis13579/archive/2010/02/06/1664792.html http://blog.csdn....
  • djinglan
  • djinglan
  • 2013-04-17 11:08
  • 22058

常见的hash函数算法

散列表,它是基于快速存取的角度设计的,也是一种典型的“空间换时间”的做法。顾名思义,该数据结构可以理解为一个线性表,但是其中的元素不是紧密排列的,而是可能存在空隙。 散列表(Hash table,也...
  • u011394362
  • u011394362
  • 2014-02-21 16:06
  • 2571
    个人资料
    • 访问:23770次
    • 积分:418
    • 等级:
    • 排名:千里之外
    • 原创:19篇
    • 转载:1篇
    • 译文:0篇
    • 评论:0条