斯坦福密码课程Online Cryptography Course(第三周)1.Message Integrity

这个章节不要再去考虑加密,只考虑消息的完整性(integrity);

一、Message integrity

1.1 MAC(Message Authentication Codes)

用处
1.可以用来保护完整性,比如操作系统是不加密的,但是要保证你的操作系统不会被病毒或者是恶意用户篡改;
2.可以保护网站内的广告,不关心是否有人复制,只关心是否有人篡改;
定义如下
在这里插入图片描述
Alice要发送message给bob,要求消息不能被篡改,alice通过一个signing algorithm输入(k,m),产生一个标签tag,消息可以是很长的(可以是几个G),tag可能只有80bits长(很短),然后bob,会收到消息(m,tag),使用验证算法V(k,m,tag)来判断是都发生了篡改;
算法需要满足一致性的要求
在这里插入图片描述
完整性需要一个密钥:
假如使用CRC,CRC designed to detect random, not malicious errors(校验码),攻击者可以更改信息,并且重新计算tag,这样验证者也不能发现消息被篡改了;
在这里插入图片描述

1.2 Secure MACs

攻击者的能力:选择明文攻击
在这里插入图片描述
攻击者发送消息m,可以得到对应的标签,这种情况很常见,例如还是email, attacker 发邮件给Alice,Alice为了安全就可能会加上tag,然后就被attacker拿到。
攻击者的目标:存在性伪造
在这里插入图片描述

  • 攻击者不能为新消息产生有效的tag
  • given (m,t) attacker cannot even produce (m,t’) for t ≠ t ′ ;
    更精确的定义:
    在这里插入图片描述
    在这里插入图片描述
    no efficient adversary can win this game with non negligible probability;
    举个例子来说
    在这里插入图片描述
    这个MAC是不安全的,因为攻击者可以伪造密文,adv[A,i]=1/2;
    在这里插入图片描述
    5bits长,可以在32次尝试破解,adv[A,i]=1/32;说明MAC码的长度不能太短
    在系统电脑中保护文件中的应用:
    在这里插入图片描述
    很简单,就是从用户手中获取密钥,然后生成tags,检测文件生成的tags和原来的tags是否相同,不相同就是被篡改了;

1.3 MACs based on PRFs

使用PRF构建MACS:
在这里插入图片描述
一个不好的例子:
在这里插入图片描述
这不是一个安全的MAC,因为tag的长度太短了,10bits很容易破解,adv[A,i]=1/1024;
安全性定理:
在这里插入图片描述
PRF是安全的,并且1/|Y|是忽略不计的,也就是tags的长度很长,这个MAC就是安全的;
定理的证明
在这里插入图片描述
假设f是真随机的函数,那么攻击者伪造的tag,相当于从Y的空间中随机选取一个,就是1/|Y|;
使用的例子

  • AES就是一个16个字节明文的MAC,tag就是加密输出的结果;
  • 明文的长度远大于16字节,怎么让一个小的MAC拓展称为大的MAC呢?

两种构造的方法:
1.CBC-MAC(已经不再安全)
2.HMAC(Internet protocols: SSL, IPsec , SSH)
两者都是将小的PRF转换成一个大的PRF;

Truncating(截断) MACs based on PRFs

在这里插入图片描述
将函数F的输出阶段t-bits作为tag;
在这里插入图片描述

1.4CBC-MAC and NMAC

目标:given a PRF for short messages(AES) construct a PRF for long messages;
在这里插入图片描述
总共有两个步骤:
步骤1:F(k,.)有很多轮,输入分组的消息m[i]和密钥k,输出一个函数映射的结果**,与下一轮消息异或再进行函数映射,整个串行部分叫做RAW CBC,**并且只有这一部分是不安全的;
步骤2:F(k1,.):k1密钥独立于k,是两个不同的密钥;对RAW CBC输出的结果进行计算,输出一个N-bits长度的tag,当然也可以进行截断;这一步是使CBC-MAC安全的关键;
在这里插入图片描述
级联:将K给F,对消息分组m[0]进行加密,然后将加密的结果作为k给下一级;最终输出一个t;
然后将t链接一个fpad,用k1再进行加密得到tag;

Why the last encryption step in ECBC-MAC and NMAC?

在这里插入图片描述
在这里插入图片描述

ECBC-MAC and NMAC analysis

在这里插入图片描述
我也不清楚为啥加的那个差值就是那个,只知道会用这个定理,举个例子:
在这里插入图片描述
用上面那个定理来说,AES中|X|是128bits,所以空间就是2的128次方;算出来q小于一个值,也就是说再经历很多次查询后,要更换密钥;

The security bounds are tight: an attack

在这里插入图片描述
在这里插入图片描述
基于这个额外的额属性,可以使用生日悖论进行攻击:
在这里插入图片描述

Better security: a rand. construction

在这里插入图片描述
两者的对比:
在这里插入图片描述
NMAC的每轮的密钥都不一样,需要额外的计算密钥拓展,这样会浪费时间;

1.4 MAC padding

当消息的长度不足以满足分组长度的时候怎么搞?
在这里插入图片描述
如果填充全0,可以进行伪造:given tag on msg m attack obtains tag on mll0 ;
CBC MAC padding
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
k1,k2独立于k,当有填充的时候用K1,无填充的时候用K2;

1.5 PMAC and Carter-Wegman MAC

ECBC and NMAC这两个都是串行的,不是并行的,就算你的CPU有多个核也没有办法并行计算;

PMAC – parallel MAC

在这里插入图片描述
安全性如下:
在这里插入图片描述而且这个构造还可以进行更改某一个分组的信息(不需要重新计算):
在这里插入图片描述
在这里插入图片描述

One-time MAC: an example

  • creat a MAC used for integrity of a single message every time we

  • conpute the MAC for a particular message, we also change the key!

  • 对于只认证一条消息的应用而言,one time MAC 是有用的 just like one time pad / stream
    cipher is useful!
    在这里插入图片描述
    对手只能看到一条消息和对应的tag;
    下面是一个一次MAC的构造:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值