原文教材 与 参考资料:
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|.
故,得到以下的概率表述: