hash函数和消息认证

消息认证

主要功能:确保收到的消息确实和发送的一样
确保消息的来源真实有效

认证码和校错码:

现代密码学中的消息认证码与通信学的消息检错码有密切的联系,并由其演变而来,但其根源和目的是不同的,采用的技术手段有本质的差别。
消息认证的基础是生成认证码,用来检查消息是否被恶意修改。

区别:
检错码是检测由于通信的缺陷而导致消息发生错误的方法。(客观环境造成的)
认证码是用来检查由于恶意或有目的等方式修改消息的技术。(人为原因造成的)

hash函数

哈希函数在数据完整性和数字签名等领域有广泛的应用。
hash函数简介
也称散列函数、杂凑函数等,是一种单向密码体制,即它是一个从明文到密文的不可逆映射,即只有“加密”过程,不存在“解密”过程。同时,Hash函数可以将“任意”长度的输入经过变换以后得到固定长度的输出。Hash函数的这种单向特征和输出数据长度固定的特征使得它可以生成消息或数据块的“数据指纹”(也称消息摘要、哈希值或散列值)

hash函数的表示
对不同长度的输入消息,产生固定长度的输出。这个固定长度的输出称为原输入消息的“哈希值”或“消息摘要”(Message Digest)。

公式表示形式: h=H(M)
M:任意长度的消息
H:哈希(Hash)函数或杂凑函数或散列函数
h:固定长度的哈希值

hash函数的特点:
1.单向性:对于给定的哈希值h,要找到M使得H(M)=h在计算上是不可行的。(逆向不可行)
2.抗弱碰撞性:对于给定的消息M1,要发现另一个消息M2,满足H(M1)=H(M2)在计算上是不可行的。
3.抗强碰撞性:找任意一对不同的消息M1,M2 ,使H(M1)=H(M2 )在计算上是不可行的。
4.随机性:当一个输入位发生变化时,输出位将发生很大变化。(雪崩效应)

hash函数的技术核心:
设计无碰撞的Hash函数f,而攻击者对算法的攻击重点是Hash函数f 的内部结构,由于Hash函数f 和分组密码一样是由若干轮处理过程组成,所以对Hash函数f 的攻击需通过对各轮之间位模式的分析来进行,分析过程常常需要先找出Hash函数f 的碰撞。由于Hash函数f是压缩函数,其碰撞是不可避免的。
因此,在设计Hash函数f时就应保证找出其碰撞在计算上是不可行的。
常用的散列函数:
MD5
SHA系列:
SHA系列包括多个散列算法标准,其中,SHA-1是数字签名标准中要求使用的算法。

  • SHA-0 :正式地称作SHA,这个版本在发行后不久被指出存在弱点。
  • SHA-1:NIST于1994年发布的,它与MD4和MD5散列算法非常相似,被认为是MD4和 MD5的后继者。(160位)
  • SHA-2:实际上分为SHA-224、SHA-256、SHA-384和SHA- 512算法。
  • SHA-3: 2012年10月2日,Keccak被选为NIST散列函数竞赛的胜利者。SHA-3并不是要取代SHA-2,因为SHA-2目前并没有出现明显的弱点。由于对MD5、SHA-0和SHA-1出现成功的破解,NIST感觉需要一个与之前算法不同的,可替换的加密散列算法,也就是现在的SHA-3。

SHA-1简介:
SHA-1接受任何有限长度的输入消息,并产生长度为160比特的Hash值(MD5仅仅生成128位的摘要),因此抗穷举攻击的能力更强。SHA-1 设计时基于和MD4相同原理,它有5个参与运算的32位寄存器字,消息分组和填充方式与MD5相同,主循环也同样是4轮,但每轮进行20次操作,非线性运算、移位和加法运算也与MD5类似,但非线性函数、加法常数和循环左移操作的设计有一些区别。

hash函数的攻击
攻击者的主要目标不是恢复原始的明文,而是寻找与合法消息哈希值相同的非法消息,然后用非法消息替代合法消息进行伪造和欺骗,所以,对哈希函数的攻击也是寻找碰撞的过程。

生日攻击和中途相遇攻击

生日问题:
问题:假定每个人的生日是等概率的,每年有365天(不考虑闰年)。在k个人中至少有两个人的生日相同的概率大于0.5,问k的最小值是多少?
把每个人的生日看作在[1,365]中的随机变量。由组合数学基本知识得知k个人的生日不重复的概率为
在这里插入图片描述
在这里插入图片描述
目前安全的哈希值位数是多少?
假设哈希值位数为k,其信息集合大小为2的k次方,那么,这集合中多少个消息时使得出现碰撞的概率大于50%。

结论:
在这里插入图片描述
SHA系列相关参数总结:
在这里插入图片描述

消息认证

hash函数的攻击
网络系统安全一般要考虑两个方面:一方面,加密保护传送的信息,使其可以抵抗被动攻击;另一方面,就是要能防止对手对系统进行主动攻击,如伪造、篡改信息等。认证是对抗主动攻击的主要手段,它对于开放的网络中的各种信息系统的安全性有重要作用。
认证分为身份认证和消息认证。

消息认证的目的:

  • 验证信息的来源是真实的,而不是冒充的,此为消息源认证。
  • 验证消息的完整性,即验证信息在传送或存储过程中是否被修改

hash函数的分类

  1. 改动检测码MDC(Manipulation Detection Code)

• 不带密钥的哈希函数
• 主要用于消息完整性

  1. 消息认证码MAC(Message Authentication Code)

• 带密钥的哈希函数
• 主要用于消息源认证和消息完整性。

消息认证码(MAC,Messages Authentication Codes),是与密钥相关的的单向散列函数,也称为消息鉴别码或是消息校验和。此时需要通信双方A和B共享一密钥K。
在这里插入图片描述
HMAC简介:
在这里插入图片描述
HMAC的结构:
在这里插入图片描述
消息验证码的功能:

1.接收方相信发送方发来的消息未被篡改。这是因为攻击者不知道密钥,所以不能够在篡改消息后相应地篡改MAC,而如果仅篡改消息,则接收方计算的新MAC将与收到的MAC一定是不同的。

2.接收方相信发送方不是冒充的。这是因为除收发双方外再无其他人知道密钥,因此其他人不可能对发送方发送的消息计算出正确的MAC。

杂凑密码算法应用:
1.消息完整性检测
2.基于口令的身份认证
3.口令认证(例如:采用hash函数,银行工作者无法获取用户的密码)

哈希函数的好处

  • 口令信息实现安全传输。
  • 管理员不知道用户的口令
发布了81 篇原创文章 · 获赞 25 · 访问量 3万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 技术黑板 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览