【考研—密码学】消息认证与杂凑函数

Part 1. 消息认证

一、定义

目的

加密的目的是为了让消息内容不被其他人知道。
认证的目的:为了保证消息内容完整性、消息内容真实性、消息来源的真实性、实体身份的真实性。因而需要认证。

真实性的反例

  1. 双钥的反例
    B公开公钥,A希望给B发送信息,因而可用公钥加密,且只有B可以知道消息内容。
    但是,任何人都可以假冒A,用B的公钥对消息m加密。
  2. 单钥的反例
    根据五种分组密码工作模式,攻击者可以更改某一片段,或者将某两个片段的内容进行前后置换来达到更改内容信息的效果。

二、 分类

对称认证

双方互相信任(企业内部)
如:检查文件是否被更改过。

非对称认证

双方互相不信任(商业伙伴)
如:查验对方的文件是否真实

三、消息认证码(MAC) 与篡改检测码(MDC)

消息认证码:通过共享密钥进行。

M= 输入消息
Hash() 生成消息认证码的哈希函数
K=共享密钥
MAC=消息认证码
则 MAC= Hash ( K , m ),
即通过 杂凑函数,基于信息内容 和 共享密钥,生成MAC码。
校验: 将 明文 m 和 MAC (m) 一起发送给对方。
作用 同时实现了加密和认证 两个效果。

篡改检测码:不需要共享密钥

M= 输入消息
Hash() 生成消息认证码的哈希函数
MDC = 篡改检测码
MDC = hash(m)
即通过 杂凑函数,仅基于信息内容,生成MDC码。
校验: 检测方需要与发送方进行其他方式的信息互通,以告知正确的MDC码是什么,检测方接受信息后,比较MDC码是否正确。
作用 实现了认证 效果。

四、消息认证函数

1. 利用分组密码

利用AES等强分组密码,按CBC工作模式进行加密,生成MAC。

2. 利用Hash函数

利用共享密钥+明文 共同Hash
分为 加密 明文+Hash , 和 加密Hash 不加密明文,两种模式

3. 利用数字签名

私钥签名,公钥加密。

五、MAC安全性【待填】

(应该就是生日悖论的问题)

生日悖论
任找23人,从中选取两人具有相同生日的成功概率至少为 0.5 。
⇒ 模数较小(域空间较小)时,碰撞可能性较大。(强碰撞下,杂凑函数的防御性很大程度降低( 2n/2 复杂度下 可以成功碰撞 )。

六、HMAC

大概意思是讲:
做个算法(代码) 框架,用来使用任意的杂凑函数。
在这个算法框架中,留一个位置用于嵌入任意杂凑函数,这样只需更换杂凑函数即可。
需要保证的事情是:这个框架的杂凑强度等价于 内嵌的杂凑函数的强度。
在这里插入图片描述

性质: HMAC的安全性取决于向前的杂凑函数的安全性。

七、认证加密CCM/GCM

CCM: CBC-CTR-MAC

基于CBC密文分组链接模式和CTR计数器模式实现的MAC算法。随便链个博客

CCM是Cipher Block Chaining Message Authentication Code (CBC-MAC)和Counter模式(CTR)的组合。可以同时实现认证信息对数据加密

GCM:CTR-GMAC

基于CTR计数器模式和GMAC原理实现的MAC算法。其中GMAC是一种长得很像CBC模式的MAC。随便链个博客


Part 2. 杂凑函数(Hash Function)

一、Definition

(即哈希,但与算法上的哈希有细节区分。)
是将任意长度的数字串M映射成一个较短的定长输出数字串H的函数,该函数用 hash()表示。
注:Hash映射一般都是多对1的,所以难以求逆。
称 H = h( M ) 为 M的杂凑值。
两个效果:压缩、纠错。压缩:源自于定长输出;纠错:源自于杂凑函数灵敏度。

二、基于安全性对杂凑函数的定义

1. 单向杂凑函数

如果杂凑函数h()为单向函数,则称为单向杂凑函数。

2. 杂凑函数的强弱

弱杂凑函数

如果 给定 M,并已知H = h(M),在此前提下,难以找到 M’ 使得 h(M’) = H,则称h为弱单向杂凑函数。

强杂凑函数

如果任意输入 M1 ≠ M2, 都无法使得 h(M1) = h(M2) ,则称h为强单向杂凑函数。

补充说明(个人理解)
上述对于强弱的定义源自于课本原文,本人认为该定义的原文措辞逻辑不够完整,可能造成误解,所以作出下列补充:
下记录
A条件: “如果 给定M,并已知H = h(M),难以找到 M’ 使得 h(M’) = H ”
B条件: “如果任意输入 M1 ≠ M2, 都无法使得 h(M1) = h(M2) ”

理解1: 条件A 和 条件B 都是在描述,不会发生哈希冲突的程度。
理解2: B是一个比A更苛刻的条件,即 A ∈ B。 也就是说,满足B的哈希函数,一定也满足A;但满足A的哈希函数不一定满足B。

重新理解: 弱杂凑即指:满足A 但不满足B,所以是弱。强杂凑指:满足B(也满足A)。
武汉大学密码学公开课对这部分的描述 : “扛弱碰撞杂凑函数” && “扛强碰撞杂凑函数”

3. 根据安全性对杂凑函数的要求:单向性、低碰撞性。

三、常用杂凑函数

1> MD5 系列杂凑函数 [已破]

输入: 512bit / 组
输出: 每轮128b
轮运算: 四轮运算,每轮16步迭代,每轮所使用的逻辑函数不同。

2> SHA-1、SHA-3系列杂凑函数 (美)

SHA系列

Step 1. 将输入信息M,进行分组,分为 L * b 组。[ 对残缺组进行附加和填充 ]
Step 2. 类似于CBC 模式,对 每组信息进行 h[i] = hash( h[i-1] , m[i] )。 [ 与 CBC不同的是,过程中产生的 C[i] 可以直接丢弃,因为只需要最后的压缩值 ]
核心: 类似于 CBC 分组链接模式
h[i] = hash ( h[i-1] , m[i] ), 取 h[L] 为最终 Hash值。

SHA-1: “压缩函数”

输入: 512位/组,162位链值;
输出: 160位链值;
轮运算: 四轮运算,每轮20次迭代,每轮运算使用的逻辑函数和加法不同。
缺点:逻辑函数都是线性函数。

SHA-3: “海绵结构”

吸水: 将明文M分组,每一组与上一组进行按位异或,然后作等长置换
挤压逆置换 + 按位异或

3> SM3 中国商用杂凑函数

压缩函数, 类似SHA-1
输入: 512位/组,162位链值;
输出: 256 bit

四、杂凑函数应用的基本方式

加密+认证:先哈希,再一同加密并发送

发送:将 Hash(m) 与 m 一同加密,为 ( C(hash), C(m) )
接受:解密 得 ( hash , m’ ) ,比较 Hash(m’) == hash?: True, False
在这里插入图片描述

仅提供认证:哈希并加密,信息不加密。

在这里插入图片描述
应用:密码保护、完整性校验、数字签名、云盘秒传。

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GoesM

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值