现代密码学3.3--伪随机生成器/PRG

  • PRG
  • 归约证明
  • 基于PRG构造计算安全(唯密文攻击)的密码方案
    • 构造密码方案Π\PiΠ
    • 基于PRG,证明密码方案Π\PiΠ的计算安全

博主正在学习INTRODUCTION TO MODERN CRYPTOGRAPHY (Second Edition) --Jonathan Katz, Yehuda Lindell,做一些笔记供自己回忆,如有错误请指正。整理成一个系列现代密码学,方便检索。

  • 第二章定义的完美安全是一种理论上的讨论,而第三章需要定义的计算安全是一种更偏向实际需求的讨论。
  • 3.1节讨论了定义计算安全的两种方法,3.2节讨论了什么是计算安全。1.4节介绍了现代密码的三大原则:定义+假设+安全性证明,现在定义了计算安全,还需要有一个假设,才能构造能够进行安全性证明的密码方案,
  • 所以3.3节:
    • 介绍一个常见的假设工具:伪随机生成器/pseudorandom generator/PRG,
    • 如何基于困难问题来构造密码方案
    • 以及基于PRG(困难问题)构造密码方案的实例。

PRG

  • 原因:生成真随机比特是难的且慢的
  • 过程:“短的、均匀的”字符串(seed) 生成 “长的,看起来均匀的”字符串
  • 定义原因:需要进行统计测试确定PRG的合理性,但多少次测试足以保证呢?(不知道多少次,所以需要严格定义

定义
lll是一个多项式,GGG是一个确定性多项式算法,对于输入s∈{0,1}ns\in \{0,1\}^ns∈{0,1}n,G(s)G(s)G(s)输出长度为l(n)l(n)l(n)的字符串。如果GGG满足以下两个性质,则称为PRG。

  • 拓展性:l(n)>n,∀nl(n)>n,\forall nl(n)>n,∀n(如果l(n)≤nl(n)\le nl(n)≤n,则没有用PRG的意义,直接用真随机就可以满足,lll被称为GGG的扩张因子)
  • 伪随机性:对于任意PPT敌手DDD,都有可忽略函数neglneglnegl满足∣Pr[D(G(s))=1]−Pr[D(r)=1]∣≤negl(n),r∈{0,1}l(n)|Pr[D(G(s))=1]-Pr[D(r)=1]|\le negl(n),r\in \{0,1\}^{l(n)}∣Pr[D(G(s))=1]−Pr[D(r)=1]∣≤negl(n),r∈{0,1}l(n)均匀随机。

暴力破解可以区分伪随机和真随机,但这并不影响伪随机的合理性。不过这告诉我们seed需要足够长,不会被遍历,通常选|seed|=安全参数

归约证明

归约思想:如果存在PPT敌手A\mathcal{A}A以不可忽略的概率ϵ\epsilonϵ攻破密码方案,则构造PPT敌手A′\mathcal{A}'A′调用A\mathcal{A}A,可以解决困难问题;因为假设问题是困难的,所以推出矛盾。

归约过程

  • 找到PPT敌手A\mathcal{A}A,尝试攻破密码方案Π\PiΠ,成功概率为ϵ(n)\epsilon(n)ϵ(n)
  • 构造PPT敌手A′\mathcal{A}'A′,尝试解决困难问题X,调用A\mathcal{A}A作为子线程。如果A\mathcal{A}A攻破密码方案Π\PiΠ,则A′\mathcal{A}'A′以1/p(n)1/p(n)1/p(n)概率解决困难问题实例x。
  • A′\mathcal{A}'A′以ϵ(n)/p(n)\epsilon(n)/p(n)ϵ(n)/p(n)概率解决困难问题X
  • 如果ϵ\epsilonϵ不可忽略,则ϵ(n)/p(n)\epsilon(n)/p(n)ϵ(n)/p(n)不可忽略;这与X是困难问题不符,矛盾推出A\mathcal{A}A攻破密码方案Π\PiΠ的概率ϵ\epsilonϵ一定是可忽略的,则密码方案Π\PiΠ一定是计算安全的。

基于PRG构造计算安全(唯密文攻击)的密码方案

构造密码方案Π\PiΠ

GGG是一个扩张因子为lll的伪随机生成器,是确定性算法

  • Gen:安全参数nnn,种子k∈{0,1}nk\in \{0,1\}^nk∈{0,1}n作为密钥
  • Enc:基于密钥k∈{0,1}nk\in \{0,1\}^nk∈{0,1}n和明文m∈{0,1}l(n)m\in \{0,1\}^{l(n)}m∈{0,1}l(n),输出密文c:=G(k)⊕mc:=G(k)\oplus mc:=G(k)⊕m
  • Dec:基于密钥k∈{0,1}nk\in \{0,1\}^nk∈{0,1}n和密文c∈{0,1}l(n)c\in \{0,1\}^{l(n)}c∈{0,1}l(n),输出明文m:=G(k)⊕cm:=G(k)\oplus cm:=G(k)⊕c

基于PRG,证明密码方案Π\PiΠ的计算安全

  • 要证:对于任意PPT敌手A\mathcal{A}A,存在一个可忽略函数neglneglnegl使得Pr[PrivKA,Πeav(n)=1]≤12+negl(n)Pr[PrivK_{\mathcal{A},\Pi}^{eav}(n)=1]\le \frac{1}{2}+negl(n)Pr[PrivKA,Πeav​(n)=1]≤21​+negl(n),
  • 思路:通过调用A\mathcal{A}A作为子程序,构造PPT敌手DDD,用DDD去区分伪随机GGG和真随机;如果A\mathcal{A}A能以不可忽略概率攻破方案Π\PiΠ,则DDD能区分伪随机和真随机,这与伪随机的定义不符,矛盾。

构造DDD,有一个输入w∈{0,1}l(n)w\in \{0,1\}^{l(n)}w∈{0,1}l(n)

  • DDD调用A(1n)\mathcal{A}(1^n)A(1n),获得明文m0,m1∈{0,1}l(n)m_0,m_1\in \{0,1\}^{l(n)}m0​,m1​∈{0,1}l(n)
  • 加密者任选一个b∈{0,1}b\in \{0,1\}b∈{0,1},输出密文c:=w⊕mbc:=w\oplus m_bc:=w⊕mb​给DDD
  • DDD将密文ccc传给A\mathcal{A}A,得到b′b'b′。如果b′=bb'=bb′=b,则输出1,否则输出0。

密码方案Π‾\overline{\Pi}Π是标准的一次一密加密方案/one-time pad,Pr[PrivKA,Π‾eav]=12Pr[PrivK_{\mathcal{A},\overline{\Pi}}^{eav}]=\frac{1}{2}Pr[PrivKA,Πeav​]=21​。

  • 如果w∈{0,1}l(n)w\in \{0,1\}^{l(n)}w∈{0,1}l(n)是真随机的,则Prw←{0,1}l(n)[D(w)=1]=Pr[PrivKA,Π‾eav]=12Pr_{w\leftarrow \{0,1\}^{l(n)}}[D(w)=1]=Pr[PrivK_{\mathcal{A},\overline{\Pi}}^{eav}]=\frac{1}{2}Prw←{0,1}l(n)​[D(w)=1]=Pr[PrivKA,Πeav​]=21​
  • 如果www是通过随机种子k∈{0,1}l(n)k\in \{0,1\}^{l(n)}k∈{0,1}l(n)和PRG GGG生成的w:=G(k)w:=G(k)w:=G(k),则Prw←{0,1}l(n)[D(G(k))=1]=Pr[PrivKA,Πeav]Pr_{w\leftarrow \{0,1\}^{l(n)}}[D(G(k))=1]=Pr[PrivK_{\mathcal{A},\Pi}^{eav}]Prw←{0,1}l(n)​[D(G(k))=1]=Pr[PrivKA,Πeav​]

PRG定义推出密码方案计算安全

  • PRG定义:Prw←{0,1}l(n)[D(w)=1]−Prw←{0,1}l(n)[D(G(k))=1]≤negl(n)Pr_{w\leftarrow \{0,1\}^{l(n)}}[D(w)=1]-Pr_{w\leftarrow \{0,1\}^{l(n)}}[D(G(k))=1]\le negl(n)Prw←{0,1}l(n)​[D(w)=1]−Prw←{0,1}l(n)​[D(G(k))=1]≤negl(n)
  • ∣12−Pr[PrivKA,Πeav]∣≤negl(n)|\frac{1}{2}-Pr[PrivK_{\mathcal{A},\Pi}^{eav}]|\le negl(n)∣21​−Pr[PrivKA,Πeav​]∣≤negl(n)

则我们有Pr[PrivKA,Πeav]≤12+negl(n)Pr[PrivK_{\mathcal{A},\Pi}^{eav}]\le \frac{1}{2}+negl(n)Pr[PrivKA,Πeav​]≤21​+negl(n)

现代密码学3.3--伪随机生成器/PRG相关推荐

  1. 伪随机生成器具体实现——杂乱的方法

    一 点睛 具体的伪随机生成器有下面几种 杂乱的方法 线性同余法 单向散列函数 密码法 ANSI X9.17 二 杂乱的方法--这种方法不可取 可能有人会说,既然是要生成杂乱无章的数列,那么用杂乱无章的 ...

  2. 伪随机函数 密码学_密码学与理论2:什么是伪随机

    伪随机函数 密码学 正如本系列第一部分所得出的结论,没有随机性的安全性是不可能的. 确定性密码无法抵御强大的攻击者, 真正的随机数生成器不切实际或难以获得,因此加密技术基于伪随机数生成器. 这篇文章的 ...

  3. 密码学与理论2:什么是伪随机

    正如本系列第一部分所得出的结论,没有随机性的安全性是不可能的. 确定性密码无法抵御强大的攻击者, 真正的随机数生成器不切实际或难以获得,因此加密技术基于伪随机数生成器. 这篇文章的前两章定义它们是什么 ...

  4. 如何理解“伪随机”以及“随机种子”

    "真随机"与"伪随机" 真随机:就是我们传统意义上理解的"随机",随机事件如今天是否下雨,抛硬币的正反面,家门口的十字路口今天发生车祸等等. ...

  5. 加密生成指定长度_3分钟短文 | PHP伪随机Token生成器,实地测试,效果感人!

    引言 我们经常可能会用到邀请码,邮件验证码,或者需要使用unique 字符串标记用户属性的情况. 今天我们且不说高深的"全局唯一ID"的生成方案,我们说一个简单的,如何生成一个唯一 ...

  6. theboboy原创 随机生成器 生成伪数据 用来做测试 Java版本

    package com.theboboy.javase.util; import java.text.ParseException;import java.text.SimpleDateFormat; ...

  7. theboboy原创 随机生成器 生成伪数据 用来做测试 C#.Net版本

    using System; using System.Collections.Generic; using System.Linq; using System.Text;namespace thebo ...

  8. java random 伪随机_真/伪随机、以及随机算法

    伪随机性(英语:Pseudorandomness)是一个过程似乎是随机的,但实际上并不是.伪随机数是看似随机实质是固定的周期性序列,也就是有规则的随机. 什么是随机数 随机数在计算机应用中使用的比较广 ...

  9. 【密码学基础】08 随机位生成和流密码

    随机位生成和流密码 1. 随机位生成 1.1 伪随机数 1.1.1 伪随机数生成的原理 1.1.2 伪随机数生成 1.1.2.1 线性同余生成器 1.1.2.2 BBS生成器 1.1.2.3 用分组密 ...

最新文章

  1. 如何利用魔棒工具抠图_3秒搞定抠图!免费在线抠图工具
  2. C++STL中的vector
  3. v8-su-root
  4. Leetcode 203. 移除链表元素 (每日一题 20210914)
  5. React demo:express、react-redux、react-router、react-roter-redux、redux-thunk(一)
  6. 算法竞赛入门经典(第二版) | 例题5-1 大理石在哪 (普适查找)(UVa10474,Where is the Marble?)
  7. html:(26):类选择器和id选择器
  8. 简介NoSqlOnSql在SQL上实现NOSQL
  9. python+requests+excel+unittest+ddt接口自动化数据驱动并生成html报告(二)
  10. matlab高斯窗函数,Matlab的窗函数,矩形窗,三角窗,汉明窗,汉宁窗,布莱克曼窗
  11. MFC入门到精通1-创建项目
  12. 自动化构建工作流--gulp
  13. php cms系统 知乎,php cms 知乎
  14. Fuzzy SVM with a new fuzzy membership function--文献翻译
  15. matlab计算两向量的乘积,matlab中两个函数相乘
  16. 上楼梯问题+不死兔子
  17. Skin Cancer MNIST(皮肤癌患者相关数据集)
  18. 充电桩APP开发方案
  19. [文档] 软件测试说明书
  20. Linux:VSS、RSS、PSS和USS的图解说明

热门文章

  1. python 有趣的变量_Python进阶之路 3.2有趣的赋值操作
  2. css字体的字型,CSS的字体、字型控制_css
  3. android 数组赋值字符串_c语言中的字符数组与字符串
  4. 十张图了解2020年数据中心市场现状与发展趋势
  5. 柴油发电机组的基本结构及工作特性
  6. 数据中心新认证出现,UPTIME面临挑战
  7. java创建集合有的不用泛型_为什么在Java泛型右手边的集合类型没有任何影响?...
  8. 成功解决ValueError: With n_samples=0, test_size=0.3 and train_size=None, the resulting train set will be
  9. Dataset之CamVid:CamVid数据集的简介、下载、使用方法之详细攻略
  10. Dataset之RentListingInquries:RentListingInquries(Kaggle竞赛)数据集的简介、下载、案例应用之详细攻略