第三十一个知识点:Game Hopping证明
第三十一个知识点:Game Hopping证明
关于安全证明, 目前主流的方法有安全归约证明 (由 single game 实现) 和 Game Hopping (由 game sequence 实现) 两种。
注意这篇博客是基于Douglas Stebila的论文An Introduction to Provable Security的部分3.3中书写的,通过这个链接下载论文:https://www.douglas.stebila.ca/files/teaching/amsi-winter-school/Lecture-2-3-Provable-security.pdf。
回顾公钥密码学中IND-CCA安全定义。如果一个人从攻击者处移除了解密问询,那么我们就得到了CPA安全概念。注意:移除加密问询不能改变攻击者的能力,因为攻击者一开始就有公钥,所以他可以自己进行加密。
在早期的博客中,我们描述了一个DDH问题。在这篇博客中,我们继续讨论一个叫‘game hopping’的技术,来证明如果DDH是难的,那么ElGamal加密方案是IND-CPA安全的。从广义上讲,我们将对ElGamal的IND-CPA博弈转换成DDH的博弈来证明攻击者的在第一个游戏的概率不会超过第二个。因此如果第二个的概率是非常小的,那么第一个博弈获胜的概率也会是非常小的。(证明加密方案是IND-CPA安全的)
首先,让我们描述一下ElGamal加密方案。我们预先给定一个交换群G,G的阶是素数q,生成器是g。(这里隐式的选择了安全参数 \(\lambda\)。当我们说一个变量是可忽略的时候,我们指的是对安全参数的一个可忽略函数。我们不在这里讨论细节。)明文和密文都是群中的元素。私钥是一个秘密的指数\(x \in Z_q\),公钥是\(X = g^x\)。加密消息\(M \in G\),应该先随机的选择一个\(y \in Z_q\),计算\(c_1 = g^y,c_2=MX^y\)。然后密文就是\((c_1,c_2)\) 。为了解密,我们知道\(c_2 = MX^y = M(g^x)^y = M(g^y)^x = Mc_1^x\)。因此使用私钥\(x\),我们能计算\(M = c_2c_1^{-x}\)。
现在考虑下面的博弈,\(A\)是一个PPT(概率多项式时间)攻击者。
- \(x \overset{\$}{\leftarrow} \mathbb{Z}_q, X \leftarrow g^x\),生成公私钥对。
- \((M_0,M_1) \overset{\$}{\leftarrow} \mathcal{A}(X)\)。攻击者产生两个消息。
- \(b \overset{\$}{\leftarrow} \{0,1\}\)。
- \(y \overset{\$}{\leftarrow} \mathbb{Z}_q, c_1 \leftarrow g^y, Z \leftarrow X^y, c_2 \leftarrow M_bZ\)
- \(b^{'} \overset{\$}{\leftarrow} \mathcal{A}(c_1,c_2)\)。
- 如果\(b = b^{'}\),就返回1,否则返回0 。
如果上述博弈返回1,我们说\(\mathcal{A}\)获胜。从Ana的博客来看,如果\(\mathcal{A}\)的概率\(2|Pr[\mathcal{A} \space wins \space Game_0]-1/2|\)。
接下来,考虑一个新博弈\(Game_1\)。唯一和\(Game_0\)不同的是它把第四步替换了,从
\]
变成了
\]
。
因此新的密码就变成了\((c_1, c_2) = (g^y, M_bg^z)\)。
我们观看第二个博弈,我们发现z是随机选择的,我们攻击者就不知道关于b的任何信息,于是他猜测成功的概率是1/2。
我们对比两个博弈,观察其中的不同。一个用的是\(g^{xy}\),一个用的是\(g^z\)。很容易发现问题和DDH问题相关。攻击者必须分区\(g^x,g^y,g^{xy}\)和\(g^x,g^y,g^z\)。为了保证两个博弈的链接,我们使用\(\mathcal{A}\)来构造一个攻击者\(\mathcal{B}\),来对抗DDH:
- 一旦输出\((X,Y,Z)\),运行$\mathcal{A} \(输入\)X\(。接收到挑战对\)(M_0,M_1)$。
- 随机选择一个比特\(b\)。然后计算\(m_bZ\)。
- 给攻击者\(\mathcal{A}\)出密文\((Y,m_bZ)\)然后其输出一比特\(b^{'}\)。
- 如果\(b = b^{'}\),攻击者就获胜了。
如果\(B\) 被给定的三元组是\((g^x,g^y,g^{xy})\),那么上述就是一个\(A\) 的完美的模拟。因此之前两个博弈的差距完全在于B和DDH对抗的概率。
结合上面的分析,我们可以很容易地得到A对ElGamal的IND-CPA安全性的优势并不大于B对DDH的优势。因此,如果DDH对于所有多项式时间的对手都是困难的(这意味着它们的优势可以忽略不计),那么ElGamal必须是IND-CPA安全的。
第三十一个知识点:Game Hopping证明的更多相关文章
- 第十一个知识点:DLP,CDH和DDH问题都是什么?
第十一个知识点:DLP,CDH和DDH问题都是什么 这是第11篇也是数学背景的第二篇.主要关注群操作如何被用于设计密码基础. 就像你现在知道的那样,密码学经常依赖于'难问题'.这也就是说,如果我们假设 ...
- 【FastDev4Android框架开发】RecyclerView完全解析之下拉刷新与上拉加载SwipeRefreshLayout(三十一)
转载请标明出处: http://blog.csdn.net/developer_jiangqq/article/details/49992269 本文出自:[江清清的博客] (一).前言: [好消息] ...
- Bootstrap <基础三十一>插件概览
在前面布局组件中所讨论到的组件仅仅是个开始.Bootstrap 自带 12 种 jQuery 插件,扩展了功能,可以给站点添加更多的互动.即使不是一名高级的 JavaScript 开发人员,也可以着手 ...
- COJ969 WZJ的数据结构(负三十一)
WZJ的数据结构(负三十一) 难度级别:D: 运行时间限制:3000ms: 运行空间限制:262144KB: 代码长度限制:2000000B 试题描述 A国有两个主基站,供给全国的资源.定义一个主基站 ...
- NeHe OpenGL教程 第三十一课:加载模型
转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...
- 三十一、Java图形化界面设计——布局管理器之GridLayout(网格布局)
摘自http://blog.csdn.net/liujun13579/article/details/7772491 三十一.Java图形化界面设计--布局管理器之GridLayout(网格布局) 网 ...
- JAVA之旅(三十一)——JAVA的图形化界面,GUI布局,Frame,GUI事件监听机制,Action事件,鼠标事件
JAVA之旅(三十一)--JAVA的图形化界面,GUI布局,Frame,GUI事件监听机制,Action事件,鼠标事件 有段时间没有更新JAVA了,我们今天来说一下JAVA中的图形化界面,也就是GUI ...
- Java进阶(三十一) Web服务调用
Java进阶(三十一) Web服务调用 前言 有朋友问了一个问题:如何调用已知的音乐服务接口,服务文档如下: https://www.evernote.com/shard/s744/sh/c37cd5 ...
- Gradle 1.12用户指南翻译——第三十一章. FindBugs 插件
其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Github上的地址: https://g ...
随机推荐
- Idea中JSP页面中out内置对象报错out.println标红问题
问题如图: 解决方法: 导入jar包 1.在pom.xml的<dependencies>里面复制 <dependency> <groupId>javax.servl ...
- 3步!完成WordPress博客迁移与重新部署
本文来自于轻量应用服务器征文活动的用户投稿,已获得作者(昵称nstar)授权发布. 由于现有的服务器已经到期,并且活动已经取消,续费一个月145元比较贵,于是参加了阿里云的活动购买一台轻量应用服务器. ...
- day31 协程
day31 协程 一.死锁与递归锁 所谓死锁:是指两个或者两个以上的进程或线程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去.此时称系统处于死锁状态或系统产 ...
- nodejs-Path模块
JavaScript 标准参考教程(alpha) 草稿二:Node.js Path模块 GitHub TOP Path模块 来自<JavaScript 标准参考教程(alpha)>,by ...
- LeetCode398-随机数索引
原题链接:[398. 随机数索引]:https://leetcode-cn.com/problems/random-pick-index/ 题目描述: 给定一个可能含有重复元素的整数数组,要求随机输出 ...
- 【leetcode】633. Sum of Square Numbers(two-sum 变形)
Given a non-negative integer c, decide whether there're two integers a and b such that a2 + b2 = c. ...
- dbeaver可视化工具-连接clickhouse
下载地址 https://dbeaver.io/download/ 本次下载的是ZIP包,这种方式方便移动/备份软件 此软件可连接多种数据库,这里是连接clickhouse 新建连接 点击 上面的倒三 ...
- java列表组件鼠标双击事件的实现
Swing中提供两种列表组件,分别是列表框(JList)和组合框(JComboBox). 一.JList组件 构造方法: public JList():构造一个空的.具有只读模型的JList.publ ...
- 【科研工具】MathType7.2的安装破解与使用
亲测可用,可以嵌入word. [我们为什么要用MathType] tex不香嘛,但是学校给的模板只有word,word输入公式点起来实在是太麻烦了. 有了这个就可以直接输入公式转换啦. [安装破解教程 ...
- 使用IDEA整合spring4+spring mvc+hibernate
配置文件 spring-mvc.xml 1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans x ...