PRG的安全性

PRG(Pseudo-random generators)即伪随机生成器。直观来说,PRG是一个高效的确定性算法,它以一个比特串作为输入,输出一个比特串,并且为了实用性一般情况下满足。那么PRG的安全性是什么含义呢?其实从PRG的名字就可以看得出来,PRG的安全性指的就是其输出具有伪随机性,即对于来说,是计算不可区分的。形式化描述如下:

现在有一个PRG记为,一个挑战者,一个敌手,两个experiment记为分别如下工作:

:

作为的输入得到一个比特长的输出并发送给;

返回一个比特

输出

:

随机选取并发送给;

返回一个比特

输出

定义experiment的方式在密码学中非常常见,通俗的来说,这里的experiment可以理解为两个平行宇宙中的房间,这两个房间所有的参数都是相同的,只有接受的输入可能不同。敌手从房间的窗户中接受输入串以后,根据输入来判断它现在处于哪个宇宙即在接受哪个experiment的考验。那么在这儿的话,返回的代表认为它收到的串是一个PRG的输出(0)还是一个真正的随机串(1)。为了衡量PRG的安全性,我们需要定义什么情况下PRG可以被认为是安全的,而显然,PRG的安全性和敌手的能力是相关的。从上面的两个experiment我们就可以看出,PRG是安全的当且仅当无法高效识别它收到的串是PRG生成的还是一个真正的随机串,因此我们可以定义的优势如下:

其中代表事件中敌手输出1,代表事件中敌手输出1。因此PRG是安全的当且仅当是一个关于安全参数的可忽略函数。这里说一下这个安全参数,这在理论密码学中是一个很重要的基本概念,据我粗浅的理解,简单来说就是安全参数衡量了一个密码方案(这儿是PRG)的实际的安全性,当超过一个给定值后我们就可以认为这个方案在目前的实际应用中是很难被攻破的。

流密码的语义安全性

语义安全性是设计一个密码方案所需要的最基本的安全性。直观来看,语义安全性指的是在只看到密文的情况下,敌手甚至无法区别这个密文是由哪个明文加密而成的,一个通用的语义安全性框架可以形式化描述如下:

现在有一个密码方案记为,一个挑战者,一个敌手,两个明文,两个experiment记为分别如下工作:

通过加密方案加密得到发送给

返回一个比特

输出

通过加密方案加密得到发送给

返回一个比特

输出

那么说密码方案具备语义安全性当且仅当无法分辨它收到的是哪个明文。具体来说,令代表事件中敌手输出1,代表事件中敌手输出1,则可以定义语义安全优势如下

具备语义安全性当且仅当是一个可忽略函数。

如果指定加密方案为一个流密码加密的话,就是将上面的特化为一个流密码方案。形式化描述如下:

现在有一个输入长度为比特输出长度为比特的流密码加密方案记为,一个挑战者,一个敌手,两个长度为比特的明文通过使用一个PRG 生成了一个流密钥。两个experiment记为分别如下工作:

通过加密得到发送给

返回一个比特

输出

通过加密得到发送给

返回一个比特

输出

其中表示的前个比特。那么说流密码加密方案具备语义安全性当且仅当是一个可忽略函数。需要注意的是不能太小,否则敌手不需要恢复整个流密钥然后再截断便可以很轻松的试出加密密钥。

其实,语义安全性还有另一个版本的定义,这个版本不再定义两个experiment而只有一个,即现在只有一个房间,挑战者通过对随机选择的一个串进行加密处理后从窗户递给敌手,敌手通过从窗户传进来的信息判断挑战者加密的是哪个串,相当于现在把上面定义中的experiment或者平行宇宙的随机性用挑战者对串的随机选择来代替,然后通过敌手猜测的正确性来输出比特,因此又称为bit-guessing版本。具体如下:

现在都不变,唯一有区别的是现在只有一个experiment 如下工作

随机选择一个比特

加密得到发送给

返回一个比特

输出

其中为1如果否则为0。bit-guessing版本的语义安全性中的敌手总是可以随机选一个比特,因此这个版本中的敌手优势定义为

则我们可以说,是语义安全的当且仅当是一个可忽略函数。现在的问题是这个定义是否是一个良定义,即这个bit-guessing版本的语义安全性定义与前面的定义是否会有冲突,事实上我们有如下结果:

从而可以看出两个版本的语义安全性定义是一致的。

PRG的安全性与流密码的语义安全性之间的关系

其实,从定义中我们便大致可以猜得出来,如果流密码使用的PRG是安全的,那么它是语义安全的。事实上,我们有如下定理:

定理1:如果一个流密码使用的PRG 是安全的,那么是语义安全的,并且在给定的敌手的情况下存在对于的敌手满足

证明:证明方法通过game sequence的形式来证明。game sequence是现代密码学理论中一种非常重要且常见的证明方法,这个方法类似于归约论证,通过一系列attack game将要证明的安全性转化到依赖的密码学组件的安全性上得到证明。在这个问题中,我们就是要将的安全性归约到的语义安全性上,为了完成这个归约,首先定义Game 0如下:

Game 0:

随机选择一个比特

加密得到发送给

返回一个比特

可以看出,Game 0实际上就是的bit-guessing版本的语义安全性定义。我们设表示Game 0中敌手成功的概率。接着定义Game 1如下:

Game 1:

随机选择一个比特

加密得到发送给

返回一个比特

可以看出,Game 1和Game 0唯一的不同之处便是怎么得到的。还是定义为Game 1中敌手成功的概率,显然其值为1/2.从直观上来说,因为PRG是安全的,所以Game 0到Game 1的概率差是可忽略的。现在我们对​​​​​​​的语义安全性进行归约论证。思路是这样的,因为我们想要证明的是的语义安全性,所以我们可以把攻击的敌手当作一个“子程序”来在对的攻击中进行调用,只要证明了利用这种调用可以建立两个敌手优势之间的关系,证明就完成了。具体来说,对于针对的敌手,它在执行的时候,接收到一个比特串以后调用,意味着此时原来的敌手现在是作为的挑战者来执行,将作为中的密钥串,然后的输出作为自己的输出。现在分析的优势,可以看出,当执行时相当于在执行Game 0,而当执行时相当于在执行Game 1。因此中输出1的概率实际上就是上面的,而中输出1的概率实际上就是上面的,即有

有了这个等式以后便可以看出,如果是安全的,那么​​​​​​​就是语义安全的。                                                                                   ​​​​​​​

流密码的语义安全性与PRG的安全性相关推荐

  1. java线程安全性_Java并发-线程安全性

    1.什么是线程安全性? 在线程安全性的定义中,最核心的就是正确性.当多线程访问调用某个类时,线程之间不会出现错误的交互,不管运行时线程如何交替执行,并且在主调代码不需要任何同步或协同,这个类都能表现出 ...

  2. java php安全性_java和php安全性有什么不同

    java和php安全性有什么不同 发布时间:2020-11-09 11:56:07 来源:亿速云 阅读:96 作者:小新 小编给大家分享一下java和php安全性有什么不同,相信大部分人都还不怎么了解 ...

  3. 开源软件的安全性风险_开源安全性,Google惊喜等

    开源软件的安全性风险 在本周的开放源代码新闻摘要中,我们介绍了商业开放源代码的安全性,谷歌意外推出的ODF支持,乌干达采用了免费开放源代码软件等等. 开源新闻让您阅读愉快 2014年12月22日至12 ...

  4. python安全性_关于python安全性的问题

    收集总结了一下python安全方面的知识点以及近年来的相关漏洞,如果有需要修正或补充的地方,欢迎各位师傅的指出. 常见web漏洞在python中的示例. xss python下的xss其原理跟php是 ...

  5. 数据库安全性概念与自主安全性机制

    数据库安全性: DBMS应该保证的数据库的一种特性,通过一定的机制和手段免受非法.非授权用户的使用.泄露.更改或破坏 数据的安全级别:绝密(Top Secret),机密(Secret),可信(conf ...

  6. oracle 值安全性,Oracle Solaris 11 安全性預設值

    Oracle Solaris 11 安全性預設值 安裝之後,在其他安全性功能當中,Oracle Solaris 會保護系統免於遭受入侵,並會監視登入嘗試. 系統存取權會受到限制和監視 初始使用者和 r ...

  7. linux与windows安全性,Linux与Windows安全性比较.doc

    /article/61/388/2006/2006071922562.shtml ????安全问题对于IT管理员来说是需要长期关注的.主管们需要一套框架来对操作系统的安全性进行合理的评估,包括:基本安 ...

  8. mysql数据库安全性_Mysql数据库的安全性问题释疑

    数据库的安全重要性相信大家都知道啦,小编就不在这里啰嗦了.但是,数据库系统的安全性包括很多方面呢.大多情况下,数据库服务器是容许客户机从网络上连接,因此客户机连接的安全对MySQL数据库安全是有很重要 ...

  9. 微服务微应用的安全测试_提高微服务安全性的11个方法

    1.通过设计确保安全 设计安全,意味着从一开始就应该将安全性纳入软件设计中.关于安全,其中最常见的一个威胁就是恶意字符. 我问我的朋友罗伯·温奇(Rob Winch)他对删除恶意字符的想法.Rob是S ...

最新文章

  1. 关于如何用100行如何实现docker
  2. editplus 常用快捷键汇总 大小写代码折叠
  3. ubuntu14.04下的NVIDIA Tesla K80显卡驱动的安装教程
  4. 程序员请注意:异步编程模式已被人注册为专利
  5. 导致View树遍历的时机
  6. 孙鑫老师的j2ee教程—j2ee视频教程
  7. 基于javaweb的医院门诊收费管理系统(java+html+jdbc+mysql)
  8. c语言实验报告1答案,郑州大学C语言实验报告答案
  9. css音乐播放器插件,jQuery MPlayer音乐播放器插件
  10. python爬虫基础教程115_python爬虫分析:115网盘的模拟登录
  11. 什么是串口并行,串口接行
  12. 使用svg实现的曲线时间线 2022-01-09
  13. 升级ubuntu 16.04的新内核时出现依赖libssl1.1.0问题
  14. 老男孩--你记得当初的梦想吗
  15. 爬虫 -- 王者荣耀爬虫,爬取每个英雄的皮肤图片
  16. maya正交视图锁定与解锁
  17. 机器学习 最小角回归 LARS
  18. 01组团队项目-Alpha冲刺-5/6
  19. 对一次微信升级事件的自我反省:思维方式决定解决问题能力
  20. C语言进阶——地址和指针

热门文章

  1. GEE绘制DEM全解析
  2. 深入原生冰山安全体系,详解华为云安全服务如何构筑全栈安全
  3. 计算机的可持续发展问题,可持续发展视角下的计算机教育优化
  4. 头歌:立体几何计算题
  5. 2020文献积累:计算机 [1] Reinforcement learning in Economics and Finance
  6. 两年聚37亿美元,“庞氏骗局” 维卡币负责人在美被捕
  7. P1024 一元三次方程求解 牛顿迭代+盛金公式+二分+勘根定理
  8. 《Web安全之机器学习入门》笔记:第九章 9.4 支持向量机算法SVM 检测DGA域名
  9. 安搭Share:“张而不弛,文武佛能也;一张一弛,文武之道也。”
  10. vds挖矿linux教程,VDS模式币大揭秘