IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 《A Graduate Course in Applied Cryptography》Chapter 12 Chosen ciphertext secure pkc(2) -> 正文阅读

[数据结构与算法]《A Graduate Course in Applied Cryptography》Chapter 12 Chosen ciphertext secure pkc(2)

原文教材 与 参考资料:

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

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

? ? ? ? 博客为对该书的学习笔记,并非原创知识,帮助理解,整理思路。
?

12.3 CCA-secure encryption from trapdoor function schemes

本节主要描述了一种基于陷门函数满足CCA安全的通用构造,在12.6节将展示如何将一个CPA方案转换为一个CCA方案的通用方法。在本节首先考虑使用一个基于陷门函数算法的公钥加密算法,以及一个哈希函数(作为随机谕言机),以及一个对称加密算法。由上述三个密码学原语构造一个加密方案如下:

?这里需考虑一个问题:

? ? ? ?如果密文(y,c)是一个错误的密文,即为y没有一个F(pk,x)的原像,在现实中算法是可以拒绝错误密文的,此处,我们只需要修改一下解密算法,新的解密算法会在接收到密文请求后进行一次F函数的判断,如果y没有原像,意味着y不是一个由正确的私钥sk计算得到的部分密文,所以直接返回拒绝,具体的算法描述如下:

证明:如果H作为随机谕言机,对称加密算法是1CCA安全的,并且假设陷函数是单向的,那么上文所述加密算法是CCA安全的。特别的,如果接收到了一个错误的部分密文y, 那么还需要一个限制条件更强的假设,该陷门函数需要能够拒绝错误密文,所以,为陷门函数增加一个“原像谕言机”,该新的陷门假设如下:

值得注意的是,每一个单项陷门函数协议都可以比较容易的转换为一个IOW假设。

?安全定理:

? ? ? ?构造证明的结构与目的:如果存在一个敌手A能够攻击该方案,那么存在另外的敌手Biow和BS敌手能够通过调用A来攻击单向陷门假设和1CCA的对称加密方案。

? ? ? ?证明设计流程:为了达到上述证明的构造结构与目的,敌手在进行解密询问时,必须限制该敌手不能从中获得任何的有益于其挑战询问的信息。所以在解密构造时,我们必须要设计挑战者回复为不适用私钥sk进行解密。这个需求可以通过随机谕言机来实现,挑战者维护一张表格,当敌手进行密钥的随机谕言机询问时,选择一个随机数作为解密询问的密钥,规定挑战密文不能用来进行解密询问。

? ? ? 随机谕言机请求回复:如果敌手在先前某个点x, 进行过随机谕言机询问,那么挑战者使用先前在x点询问产生的随机谕言机结果k, 进行解密。否则,如火的敌手先前没有进行随机谕言机的询问,而进行解密询问,那么挑战者和敌手都不会知道正确的解密密钥。然后,挑战者选取一个随机数,使用该随机数进行解密。这里挑战者需要使用额外的技术维护一致性,因为如果敌手下次对于该点进行随机谕言机询问,那么敌手需要将之前随机选的密钥返回给敌手,这样从敌手的角度来看,不论是先进行解密询问还是先进性随机谕言机询问,其询问的对于部分密文y的请求都是同样的密钥。

? ? ?挑战者回复半挑战密文的解密询问:我们在回复解密请求的时候,必须要考虑到如下的请求形式,即y使挑战密文的部分密文,但是c却不是挑战密文,就是说有y的那一半解密询问和挑战询问的那一半y是相等的。直觉上,在单向陷门函数存在的条件下,敌手是很难请求到真正的x在随机谕言机询问中,即使问到了随机谕言机回复一个随机的K。而从敌手的角度看k也应该是一个和随机值不可区分的。所以,该协议的CCA安全立即就服从了该方案中使用对称加密方案的1CCA安全性。

证明如下

? ? ? ? ? ?我们证明定理12.2 在一个1CCA安全的比特猜测游戏模型下:

?首先,我们定义Game 0 是运行在敌手A和本算法挑战者之间的有个游戏,这个游戏时一个比特猜测版本的1CCA攻击游戏。接着修改挑战者获得Game 1. 在每个游戏中,b是由挑战者选取的随机比特,b`定义了敌手最后的猜测输出。Wj 定义了在游戏Game j中,猜测正确的情况。

Game 0:描述如下图所示:

挑战者必须回复随机谕言机请求,以及加密和解密请求。敌手可进行任意次的随机谕言机询问,以及任意次的解密询问,但是只能进行一次加密询问。回忆一下,除了直接访问随机谕言机,敌手还可间接的访问随机谕言机通过加密和解密请求,挑战者也是可以访问随机谕言机的。

? ? ? 在初始化阶段,挑战者计算一些信息,包括生成公私钥对,选择随机的k 和 b, 这些的目的是为了运行加密请求,这些内容可以在敌手没有发出挑战明文时完成。为了便于证明,我们想要我们的挑战者尽可能的少使用私钥sk,在解密请求中(尽量不适用,防止敌手在解密询问时获取相关有意义的信息)。这个要求将通过一个非一般性的策略实现解密和随机谕言机请求。

? ? ? 本文在此处使用了一个联合数组实现随机谕言机。首先使用一个Map1[y->k],用Map1来映射部分密文y与K之间的关系。规定在x询问的返回值为k. 然后使用另一个表格Pre【y->x】来跟踪询问请求与y之间的关系。Map通常生成除了Pre已经被定义过,因为挑战者也会访问随机谕言机,在解密请求时Map1也会被填充建立新的条目,但是此时Pre确没有。

? ? ? ?处理解密请求:如果部分密文y相等,则使用默认的k进行解密。否则,检测Map1中是否记录了此时询问的部分密文y,如果没有则给表项中添加一个随机的k值。如果y有原像并且Map1没有记录,那么意味着不论是挑战者还是敌手都没有先前询问过y的原像x。所以一个新的随机数k对应于随机询问x。特别的,如果敌手后去请求了随机谕言机在x处,那么将会使用相同的y进行回复。换句话说,在解密询问时如果发现之前没有记录过的y,那么挑战者一定要记录,并且维持一致性,当随机谕言机在某个时刻询问相同的x时,保持回复的一致性。如果y没有原像,那么即使分配了随机的k也没有意义。? ? ? 下一步,挑战者测试y是否满足F,如果不满足则挑战者拒绝这个密文。如上图中调用函数Image(pk,sk,y)来确认y是否有原像。 最后,如果y符合F,那么挑战者使用Map1表格中分配的随机k, 进行解密。挑战者可以在不知道x的情况下实现这一点。即为,此时挑战者在只有y作为解密询问的情况下随机赋予了解密密钥k在Game 0中的(1)处包含实现了,挑战者此时是知道秘密值x的。

Game 1:

? ? ?Game 1 和 0的区别在于,删除了上图中的(1)。定义Z为敌手在Game 1向随机谕言机请求x时的事件。Game1 和 Game 0执行的过程都是相同的,除了Z事件的发生,所以可以使用Difference Lemma. 我们得到下式:? ?

?如果事件Z发生了,那么在Game1结束时,我们可以从Pre【】中获取一个x,这个x就是y的原像。我们即可以使用敌手A去构造一个BIow敌手,这个BIow敌手可以攻破该方案的陷门函数在原像谕言机的帮助之下。? BIow首先作为敌手和其CIOW挑战者运行获取pk,y. 然后Biow使用这些信息作为A的挑战者,与A运行本加密方案的挑战游戏。此时,

? ? ? (1)并没有在本游戏中被明确使用(除了计算y),sk没有被使用(除了计算image function)。

? ? ? (2)Biow可以使用image oracle.(通过请求CIOW挑战者)

? ? 在这个游戏结束时,如果y 在Pre的条目中,那么Biow输出该条目中的x,所以得到:

最终,在Game1中,k 仅仅被使用去加密挑战明文,与解密y相同时的解密询问。所以,敌手本质上是攻击1CCA的对称加密算法,很用调用A实现了一个1CCA的敌手攻击本方案所用的对称加密算法。所以得到如下:

根据12.5 12.6. 12.7 我们可以获得12.4证明完毕。

12.4 CCA-secure EIGamal encryption

本书上节内容的基于TDF的加密方案可以使用任意的陷门函数实例化。在本节中主要探讨的是EIGamal协议的CCA安全性。回忆一下该方案的细节:

然而,由CDH假设本身建立的这个方案并不是CCA安全的,敌手可以有效的借助解密询问来判断DH元组,敌手自己给出判断是非常困难的(DDH假设),解密请求可能会潜在的泄露私钥alpha的信息。虽然按照目前的知识来看,这种泄露并不会威胁到方案的安全性,然而,我们需要明确指出这种假设。所以,为了刻画这个模型,我们需要对CDH假设做出一定的修改,需要一个新的假设来捕获敌手的攻击行为,因为敌手的询问导致可以从解密谕言机获取一定的帮助,我们得到一个新的假设交互式CDH假设ICDH假设,描述如下:(即为在有DH判定谕言机的帮助下的CDH假设)

?进一步,我们得到如下安全定理:

安全定理:

?这个证明结构和上文的基于TDF的协议证明方式几乎没有什么区别,所以根据该书的内容,下文直接进行游戏描述,首先给出Game 0.

? ? ? ? ? ?

Game0 中:

? ? ? ? ? ? ?敌手的询问请求:

? ? ? ? ? ? ? ? (1)任意次的随机谕言机询问

? ? ? ? ? ? ? ? (2)任意次的解密询问

? ? ? ? ? ? ? ? (3)最多一次加密询问

? ? ? ? ? ? ? ? (4)可以通过加密与解密询问间接通过随机挑战者访问随机谕言机

? ? ? ? ? ?协议的初始阶段:

? ? ? ? ? ? ? ? ?(1)挑战者生成公私钥对

? ? ? ? ? ? ? ? ?(2)挑战者获取选取随机值k,b等加密询问参数,可以在不知道挑战明文时进行

? ? ? ? ? 为了使挑战者尽可能少的使用密钥sk,需要采取类似TDF方案中处理的方式,设计随机谕言机回复避免使用私钥sk.

? ? ? ? ? ? 随机谕言机的设计:

? ? ? ? ? ? ? ? Map[G2 -> k], 敌手提供(v,w) -> 得到k.

? ? ? ? ? ? ? ? Map1[G->k], u->k, 辅助记录.

? ? ? ? ? ? ? ? 如果当且仅当(u,v,w)是一个DH元组,随机谕言机在(v,w)的点输出为k, 那么对于这个两个表而言Map[v,w] = Map1[v] = k. 在解密请求中,如果敌手发起的解密请求v, 并没有在随机谕言机中请求过,那么此处先行给Map1[v] 随机选择赋值k。 当敌手在后期如果再次询问到(v,w)时,继续将Map1中的k赋值给随机谕言机请求即可,保持一致性。

? ? ? ? ? ? 随机谕言机请求:

? ? ? ? ? ? 如果随机谕言机已经表格中已经存储了询问条目,那么直接返回结果,否则,按照如下的设计回复敌手:

? ? ? ? ? ? 首先,测试敌手询问的是否是一个DH元组,使用函数DHP(*,*,*),同时这里也是唯一使用私钥的地方。

? ? ? ? ? ? 如果这是一个DH元组,那么挑战者给Map1一个随机的值,如果Map1中没有定义的话,并进一步将这个随机值k赋值给Map。并且记录一个条目sol.? Sol 是另外一个辅助谕言机记录表格,用来记录ICDH实例。

? ? ? ? ? ? 如果这不是一个DH元组,那么挑战者给与Map设定一个随机的值k, 这里并没有进一步设置Map1。

? ? ? ? ? ?解密请求回复:

? ? ? ? ? ?当挑战者收到一个解密请求(v,c)时,按照如下步骤处理:

? ? ? ? ? (1)如果部分密文v等于初始化阶段生成的v. 那么直接使用预先准备好的密钥进行解密。

? ? ? ? ? (2)如果不满足(1),那么检车是否满足在Map1中记录有,如果没有那么给与随机赋值k, 然后使用该随机的k作为密钥进行解密。显然,挑战者在回复解密请求的时候并没有使用CDH问题实例(u, v, w)的信息。然而如果敌手请求随机谕言机在这个实例(v,*)时刻,敌手将会看到同样的k,所以一致性得到了维护。

?Game 1 :?

? ? ? ? ? ?Game?1 与 Game 0 一样的,除了(1)被删除了。定义Z为敌手A在Game1中请求(v,w),不难看出在Z不发生时两个游戏的运行过程是一样的。

? ? ? ? ? ? 如果Z发生,那么在游戏的最后,我们从Sol中就可以获得w ,即为一个ICDH问题解的实例。我们可以调用A构造一个BICDH敌手去攻破CDH假设在有DH判断谕言机的帮助下,其优势等同于Z事件发生的概率。

考虑到和TDF一样的情形,我们类似得到可以调用A去攻击对称加密方案,最后得到上述两个等式,得证。

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-10-03 17:18:25  更:2021-10-03 17:20:45 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 4:30:47-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码