《A Graduate Course in Applied Cryptography》Chapter 6 Message Intergrity (1)

 原文教材 与 参考资料:

Boneh Dan , Shoup Victor . A Graduate Course in Applied Cryptography[J].

该书项目地址(可以免费获取):http://toc.cryptobook.us/

博客内容为对该书的学习笔记(包括但不限于翻译、额外绘图、注解、个人理解等),并非原创知识,仅帮助理解,整理思路.

对称密码体制下数据完整性的应用就是Mac码,其中MAC码是一种带密钥的数据完整性认证码,假设通信双方已经预先共享了一个密钥k. 如下图所示:

这里有一个技术原理,当我们设计一个消息完整性机制需要遵循以下基本原理:

 两个通信方想要建立建立一个消息完整性机制,必须有一个敌手不知道的私钥,如果敌手掌握了该私钥或者说没有私钥,那么敌手显然可以伪造任意的合法消息-验证码对。

6.1 Definition of a message authentication code

消息验证码的定义比较简单,MAC的定义如下:

       两个算法一个概率性算法产生消息的完整性验证码,一个确定性算法可以对产生的验证码进行验证。

按照一般对于密码学的研究思路,当我们给出一原语的定义之后,就需要给出其安全性描述,本书的惯例是使用攻击游戏的方式描述,安全MAC的共游戏描述如下所示:

       敌手的能力:选择消息询问对应的Mac码,最终给出一个新消息以及Mac的伪造。

       安全性描述:

                     (1) 弱安全性:如果敌手能够仿造一个新消息的Mac.

                     (2) 强安全性:如果敌手能够仿造一个新消息的Mac, 且这个Mac也是全新的。

       Mac 的分类:

            (1)确定型Mac,即为一个消息对应一个独一无二的Mac码,这种安全性即为敌手对一个新的消息伪造一个合法的Mac码。

            (2)随机性Mac,即为一个消息可能有多个可以通过验证的Mac码,该协议的安全性即为敌手可以访问该消息的多个合法Mac验证码,最终给出一个该消息合法的Mac码。

6.2   Mac verification queries do not help the attacker

在基本的攻击游戏6.1中,存在一个问题,即为敌手是不知道Mac私钥的,那么显然,敌手就算伪造出了一个Message-Mac消息对,也不能判断这个伪造的结果是不是合法的。这反应了一个问题,即为敌手其实需要一个验证询问才能完整捕获敌手的攻击行为,但是存在一个问题,如果说敌手具备询问验证的能力,那么敌手的能力相对现实世界是被增强了,其实这并不冲突,因为敌手亦可通过其他手段来访问验证(例如,寻找验证者机器的漏洞,向验证者发送消息-验证码对,然后观察敌手的行为,或许能够判断敌手是接受了还是丢弃了该数据)。

讨论过敌手是否具备询问验证消息的能力后,给出新的攻击游戏来定义安全性,并进一步证明,敌手的验证询问不会帮助敌手获得攻击Mac系统的能力。

 攻击游戏6.2 和 6.1 是等价的,唯一不同是敌手具备询问验证请求的能力。

下面给出等价性证明:

安全定理:

证明的构造和之前的类似,首先有敌手A攻击游戏6.2,此时构造敌手B,敌手B调用敌手A攻击游戏6.1. 此时,敌手B既是敌手A的挑战者也是游戏6.1中的挑战者。当A询问签名时(请求mac)B将该请求转发给6.1游戏挑战者,至于敌手A的验证询问,敌手B每次都回复reject.

证明过程如下:

首先给出Game 0:原始攻击游戏

       接着给出Game 1, 其他部分都不改变,只有(*)处修改为返回reject 给敌手,也就是说当回复验证请求时,在Gamer1 中总是回复敌手A reject. 但是,我们依然定义W1事件为返回值为accept 的条件。虽然挑战者不会通知敌手A 事件W1发生了(即为通过验证了,因为始终给的都是reject)。可见Game 0 和 Game 1除了发生这个事件时都是一样的。换句话说,此时返回reject 是相同的,但是在Game 0中是可能返回accept的 Game 1中即使是正确的也不会通知敌手A回复accept. 本质上来看虽然Game 1输出给敌手的是reject, 但是Game1和Game0中敌手获胜的概率是一样的,只是不会再额外通知敌手accept 这个信息而已,不意味着敌手真的错了。

       接着给出Game 2, 与 1 不同的是,最开始的时候挑战者选择一个w, w < Qverify, 此时挑战者企图随机选择一个敌手的验证询问作为攻击游戏6.1的结果,定义W2事件为第w次询问的验证消息是正确验证的,由于Game 2中挑战者是随机选取的w,则W2 的概率最少大于(1\Qverify)*W1。

 而此时,敌手B可以使用W2事件的结果去攻击游戏6.1所以有:

 此时联立 6.2\3\4 得到 6.1 成功将对6.2游戏规约到6.1游戏上。

6.3 Constructing MACs from PRFs

使用PRF可以构造MAC系统:

这里假定PRF的输出空间是超多项式的,即为输出是不可预测的,则给出基于PRF构造的Mac的定义如下:

定义F是一个安全的PRF,其中该PRF的输出是超多项式的,定义一个确定性的MAC系统是符合Mac 6.1 安全定义的。

如果存在一个Q询问的敌手A攻击协议MAC,那么存在一个Q+1询问的PRF敌手B攻击PRF协议。则A的优势小于敌手B的优势加上PRF空间分之一,即为敌手要么能攻破PRF的安全性,要么能够猜测出其中的概率即为1/|Y|. 另外,敌手与PRF交互,如果将PRF替换为真正的随机函数,如果说敌手不能够区分两个挑战者,那么敌手将不能攻破这个方案。

证明:首先,给出原始Game 0:

接着替换PRF为一个随机函数,得到新的游戏,因为PRF是一个安全的随机数生成函数,那么敌手是无法注意到这个替换的。则得到Game1:

 现在我们构造一个敌手B,当A进行PRF询问时,B将该请求转发给自己的PRF挑战者,当A输出一个伪造时,B将该伪造提交给自己的PRF挑战者,然后比较两个输出是不是相等,如果相等则输出1,否者输出0。 那么,显然对于Game 0 和 Game 1的敌手,其运行在PRF攻击游戏的实验1和实验0中,则得到以下概率条件:

 接着,我们观察W1的概率,因为此时敌手面对的是一个完全随机的函数,所以其选择消息攻击对于敌手A赢得这个游戏没有任何帮助,是完全独立的时间,所以敌手相当于盲猜,盲猜的概率为1/|Y|. 因此敌手的优势不会大于1/|Y|.

故,得到以下的概率表述:

### 随机预言机的概念及其在密码学协议中的应用 随机预言机(Random Oracle, RO)是一种理想化的哈希函数模型,在现代密码学理论中具有重要地位。它假设存在一种能够返回完全随机输出的黑盒机制,对于任何唯一的输入,该黑盒都会返回一个唯一且不可预测的随机值[^4]。 #### 定义 随机预言机被定义为一个理论上完美的哈希函数,其行为类似于一个真正的随机函数。具体来说,当给定一个新的输入 \( m \),随机预言机会返回一个从未见过的随机字符串作为输出;如果再次接收到相同的输入 \( m \),则会始终返回之前的结果。这种一致性与随机性的结合使得随机预言机成为分析加密方案安全性的重要工具[^5]。 #### 使用场景 随机预言机广泛应用于各种安全协议的设计和证明过程中: 1. **签名算法的安全性增强** 数字签名方案通常依赖于某种形式的消息摘要计算来验证数据完整性。通过引入随机预言机模型,可以简化复杂公钥基础设施下签名的有效性和抗伪造能力论证过程[^6]。 2. **密钥交换协议** 在Diffie-Hellman等类型的密钥协商协议中,利用基于随机预言机构建的伪随机数生成器可以帮助抵御中间人攻击以及其他潜在威胁[^7]。 3. **零知识证明系统优化** 对于某些特定种类的交互式或非交互式的零知识证明体系而言,采用随机预言机方法可以在不牺牲隐私保护的前提下提高效率并降低通信成本[^8]。 以下是实现简单版本模拟随机预言功能的一个Python代码片段示例: ```python import hashlib class SimpleRandomOracle: def __init__(self): self.cache = {} def query(self, message: str) -> bytes: if isinstance(message,str): # Ensure input is string type before hashing. encoded_message=message.encode('utf-8') hash_value=hashlib.sha256(encoded_message).digest() if not (encoded_message in self.cache.keys()): self.cache[encoded_message]=hash_value return self.cache.get(encoded_message) ro_instance = SimpleRandomOracle() print(ro_instance.query("test")) ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值