【现代密码学】笔记6--伪随机对象的理论构造《introduction to modern cryphtography》

【现代密码学】笔记6--伪随机对象的理论构造《introduction to modern cryphtography》

  • 写在最前面
  • 6 伪随机对象的理论构造

写在最前面

主要在 哈工大密码学课程 张宇老师课件 的基础上学习记录笔记。

内容补充:骆婷老师的PPT
《introduction to modern cryphtography》–Jonathan Katz, Yehuda Lindell(现代密码学——原理与协议)中相关章节
密码学复习笔记 这个博主好有意思

初步笔记,如有错误请指正

快速补充一些密码相关的背景知识


请添加图片描述

6 伪随机对象的理论构造

  1. 本节学习如何设计基于单向函数存在的假设从理论上构造PRG、PRF、PRP这三个伪随机对象。

  2. 目录:单向函数(One-Way Function),从OWF到PRP

  3. 概览

    • 现代密码学的贡献之一是,单向函数的存在等价于所有(有意义的)私钥密码学的存在;
    • 我们学习一系列密码学对象的构造过程:从OWF构造核心断言(HCP),构造RPG,构造PRF,构造PRP,构造安全私钥加密方案,而安全私钥加密方案就是一个OWF,从而形成一个闭环;
  4. 单向函数(One-Way Functions (OWF)

  • 单向函数是一个正向易于计算(多项式时间),而逆向难以计算(无多项式时间);
  • 下面的单向函数定义是由姚期智提出的;
  • 求逆实验 I n v e r t A , f ( n ) \mathsf{Invert}_{\mathcal{A},f}(n) InvertA,f(n):
    1. 随机产生输入 x ← { 0 , 1 } n x \gets \{0,1\}^n x{0,1}n. 计算 y : = f ( x ) y := f(x) y:=f(x). 注:挑战 y y y是由随机产生的 x x x得到的,而不是直接随机挑选一个 y y y
    2. A \mathcal{A} A 1 n 1^n 1n y y y (挑战)作为输入,并输出 x ′ x' x.
    3. 实验成功 I n v e r t A , f ( n ) = 1 \mathsf{Invert}_{\mathcal{A},f}(n) = 1 InvertA,f(n)=1 ,如果 f ( x ′ ) = y f(x')=y f(x)=y, 否则 0. 注:这里不需要 x ′ = x x'= x x=x
  1. OWF/OWP的定义 [Yao]
  • 定义:多项式时间算法 M f M_f Mf A \mathcal{A} A.

    一个函数 f : { 0 , 1 } ∗ → { 0 , 1 } ∗ f\;:\; \{0,1\}^* \to \{0,1\}^* f:{0,1}{0,1} 是单向函数,如果满足:

    易于计算: ∃ \exists M f M_f Mf: ∀ x , M f ( x ) = f ( x ) \forall x, M_f(x) = f(x) x,Mf(x)=f(x). 注:这里说明计算不需要用原本的函数,只要结果相同就可以

    难以求逆: ∀ \forall A \mathcal{A} A, ∃ n e g l \exists\;\mathsf{negl} negl 使得, Pr ⁡ [ I n v e r t A , f ( n ) = 1 ] ≤ n e g l ( n ) \Pr[\mathsf{Invert}_{\mathcal{A},f}(n)=1] \le \mathsf{negl}(n) Pr[InvertA,f(n)=1]negl(n) 或者 Pr ⁡ x ← { 0 , 1 } n [ A ( f ( x ) ) ∈ f − 1 ( f ( x ) ) ] ≤ n e g l ( n ) . \Pr_{\substack{x \gets \{0,1\}^n}}[\mathcal{A}(f(x)) \in f^{-1}(f(x))] \le \mathsf{negl}(n). Prx{0,1}n[A(f(x))f1(f(x))]negl(n).

  • 注:后半部分是难以求逆的另一种表达

  1. 若干候选的单向函数
  • 乘法与分解(Multiplication and factoring): f m u l t ( x , y ) = ( x y , ∥ x ∥ , ∥ y ∥ ) f_{\mathsf{mult}}(x,y)=(xy,\|x\|,\|y\|) fmult(x,y)=(xy,x,y), x x x y y y 是相同长度的质数;注:后面会学习RSA问题
  • 模平方和平方根(Modular squaring and square roots): f s q u a r e ( x ) = x 2 m o d N f_{\mathsf{square}}(x)=x^2\bmod N fsquare(x)=x2modN注:也被应用于公钥密码学
  • 离散指数与对数(Discrete exponential and logarithm): f g , p ( x ) = g x m o d p f_{g,p}(x)=g^x\bmod p fg,p(x)=gxmodp注:后面将学习DH密钥交换协议
  • 子集和问题(Subset sum problem): f ( x 1 , … , x n , J ) = ( x 1 , … , x n , ∑ j ∈ J x j ) f(x_1,\dotsc,x_n,J)=(x_1,\dotsc,x_n,\sum_{j \in J} x_j) f(x1,,xn,J)=(x1,,xn,jJxj)注:子集和问题判定是否存在一个子集中元素之和为给定的值
  • 密码学安全哈希函数(Cryptographically secure hash functions):稍后会学习;
  1. 单向函数例题
  • 单向函数的理由在于,如果 f ′ f' f不是单向的,那么 f f f也不是;
  • 不是单向函数的理由在于, f ′ f' f可以容易求逆;
  • 另外,要注意求逆实验是从随机挑选的 x x x得到 y y y,并不能直接指定 y y y
  1. 核心断言 Hard-Core Predicates (HCP)
  • 一个函数 h c : { 0 , 1 } ∗ → { 0 , 1 } \mathsf{hc}\; : \; \{0,1\}^* \to \{0,1\} hc:{0,1}{0,1} 是一个函数 f f f的核心断言( hard-core predicate),如果
    • (1) h c \mathsf{hc} hc 可在多项式时间计算;
    • (2) ∀ \forall 概率多项式时间 A \mathcal{A} A ∃ n e g l \exists\; \mathsf{negl} negl 使得 Pr ⁡ x ← { 0 , 1 } n [ A ( f ( x ) ) = h c ( x ) ] ≤ 1 2 + n e g l ( n ) . \Pr_{\substack{x \gets \{0,1\}^n}}[\mathcal{A}(f(x)) = \mathsf{hc}(x)] \le \frac{1}{2} + \mathsf{negl}(n). Prx{0,1}n[A(f(x))=hc(x)]21+negl(n).
  • 注:核心断言可以理解为根据函数的输出最难推断的关于输入的一个比特信息,任意敌手算法与随机猜测相比几乎没有差异。
  1. 对于任意OWF的HCP [Goldreich and Levin]
  • 定理: f f f是一个OWF。那么,存在一个OWF g g g 并与 g g g 伴随着一个HCP g l gl gl
  • 问题: g l ( x ) = ⨁ i = 1 n x i \mathsf{gl}(x) = \bigoplus^{n}_{i=1} x_i gl(x)=i=1nxi 是任意OWF的HCP吗? 答案是否定的,例如一个单向函数输出的最后一个比特就是输入按位异或的结果;
  • 证明: g ( x , r ) = def ( f ( x ) , r ) g(x,r) \overset{\text{def}}{=} (f(x), r) g(x,r)=def(f(x),r), for ∣ x ∣ = ∣ r ∣ |x| = |r| x=r, 并定义 g l ( x , r ) = def ⨁ i = 1 n x i ⋅ r i \mathsf{gl}(x,r) \overset{\text{def}}{=} \bigoplus^{n}_{i=1} x_i \cdot r_i gl(x,r)=defi=1nxiri。 其中, r r r 是一个随机串。
  • 说明: g l \mathsf{gl} gl就是从 x x x中随机选择若干比特异或结果作为核心断言。即便敌手根据输出推断出 x x x中若干比特的信息,但仍不能推断出(由 r r r来)随机挑选的任意若干比特信息(核心断言),否则意味着敌手可以求出整个 x x x
  1. 从OWP到PRG:Blum-Micali Generator
  • 定理: f f f 是一个OWP并且 h c \mathsf{hc} hc 是一个 f f f 的 HCP 。那么, G ( s ) = def ( f ( s ) , h c ( s ) ) G(s) \overset{\text{def}}{=} (f(s), \mathsf{hc}(s)) G(s)=def(f(s),hc(s)) 构造了一个 PRG 带有扩展因子 ℓ ( n ) = n + 1 \ell(n) = n+1 (n)=n+1,并且 ∀ \forall 多项式 p ( n ) > n p(n) > n p(n)>n, ∃ \exists 一个 PRG 带有扩展因子 ℓ ( n ) = p ( n ) \ell(n) = p(n) (n)=p(n)
  • 定理成立的理由有两点:
    • 因为 f f f为排列(这很重要,不能是非排列的函数),那么当 s s s随机生成时, f ( s ) f(s) f(s)也是均匀随机的, G ( s ) G(s) G(s)的头部也就是随机的;
    • 根据 f ( s ) f(s) f(s)难以推断核心断言 h c ( s ) \mathsf{hc}(s) hc(s),这正是伪随机生成器的伪随机性的判断依据:下一比特不可预测性。
  1. 从PRG到PRF [Goldreich, Goldwasser, Micali]
  • 定理:如果存在一个PRG带有扩展因子 ℓ ( n ) = 2 n \ell(n) = 2n (n)=2n,那么存在一个PRF。
  • F k ( x 1 x 2 ⋯ x n ) = G x n ( ⋯ ( G x 2 ( G x 1 ( k ) ) ) ⋯ ) , G ( s ) = ( G 0 ( s ) , G 1 ( s ) ) . F_k(x_1x_2\cdots x_n) = G_{x_n}(\cdots(G_{x_2}(G_{x_1}(k)))\cdots), G(s)=(G_0(s),G_1(s)). Fk(x1x2xn)=Gxn((Gx2(Gx1(k)))),G(s)=(G0(s),G1(s)).
  • 以密钥 k k k为PRG的种子生成随机串,并将该随机串对半分为两个子串 G 0 ( s ) , G 1 ( s ) G_0(s),G_1(s) G0(s),G1(s);再以每个子串作为种子分别生成两个新的子串;由此,构造一个以密钥(种子)为根的二叉树,每个叶子节点对应伪随机函数的一个输出,从输入到输出的映射就是从根到叶子的一条分支,根据输入每个比特值来选择分叉:0为左,1为右;
  • 例如, F k ( 011 ) = G 1 ( G 1 ( G 0 ( k ) ) ) F_k(011) = G_1(G_1(G_0(k))) Fk(011)=G1(G1(G0(k)));以 k k k为根,根据第一个比特选择左分支,接着选择右分支,右分支。
  • PRF随机性来自于PRG的随机性。
  1. 从PRF到PRP [Lucy, Rackoff]
  • Feistel网络可以将一个 n n n比特的PRF转变为一个 2 n 2n 2n比特的PRP,有以下定理
  • 定理:一个3轮的Feistel网络可将一个PRF转变为一个PRP。
  • 定理:一个4轮的Feistel网络可将一个PRP转变为一个strong PRP。
  • 说明:
    • 首先,Feistel网络本身特性是排列,因此证明上述定理成立的关键在于,证明伪随机性;伪随机性来自与每轮的mangler函数是PRF,其输出是一个独立的随机值。
    • 对于为什么至少需要3轮?首先可以观察到如果只有1轮,则不是伪随机的,因为 R 0 R_0 R0被直接输出为 L 1 L_1 L1;如果只有2轮,也不是随机的,因为只改变 L 0 L_0 L0来翻转1个比特,那么 R 2 R_2 R2也只翻转1个比特。当3轮时,上述两个情况不会发生,并且输出结果 L 3 , R 3 L_3, R_3 L3,R3都是经过了PRF结果得到的。
  1. 必要的假设
  • 前面的理论说明OWP的存在是安全加密方案的充分条件,同时我们还可以证明OWP的存在也是安全加密方案的必要条件。
  • 定理:假设存在OWP,那么存在PRG,PRF,PRP和CCA安全私钥加密方案。
    • 如何构造CCA安全的加密方案将在后面学习。
  • 命题:如果存在窃听者不可区分私钥加密方案,那么存在一个OWF。
  • 证明: f ( k , m , r ) = def ( E n c k ( m , r ) , m ) f(k,m,r) \overset{\text{def}}{=} (\mathsf{Enc}_k(m,r),m) f(k,m,r)=def(Enck(m,r),m),其中 ∣ k ∣ = n , ∣ m ∣ = 2 n , ∣ r ∣ = ℓ ( n ) |k|=n, |m|=2n, |r|=\ell(n) k=n,m=2n,r=(n)
    • 从破解加密方案问题 A ′ \mathcal{A}' A规约到单向函数求逆问题 A \mathcal{A} A。规约的关键之一在于将挑战密文和一个明文 c ∥ m 0 c\|m_0 cm0 作为 A \mathcal{A} A求逆的输入。当求拟成功时, A ′ \mathcal{A}' A输出0;否则,输出1。当 m 0 m_0 m0被加密,则破解加密方案意味着可求逆;当 m 1 m_1 m1被加密,则破解加密方案意味着没有成功求逆,概率为 1 − 1 / 2 n 1-1/2^n 11/2n
  1. 总结
  • OWF意味着安全私钥加密方案,安全私钥加密方案意味着OWF。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/626358.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Qt/C++中英输入法/嵌入式输入法/小数字面板/简繁切换/特殊字符/支持Qt456

一、前言 在嵌入式板子上由于没有系统层面的输入法支持,所以都绕不开一个问题,那就是在需要输入的UI软件中,必须提供一个输入法来进行输入,大概从Qt5.7开始官方提供了输入法的源码,作为插件的形式加入到Qt中&#xff…

网络广播号角喇叭在智能工地施工现场的应用,以及网络广播在公共广播中的实际作用。

网络号角喇叭在智能工地施工现场的应用,以及网络广播在公共广播中的实际作用。 SV-7044村村通ip网络通信广播号角喇叭,网络音箱,网络音柱是一种公共广播技术,主要应用于公共场所,如公交、商场、大型活动场所等。可以用…

visual studio的安装及scanf报错的解决

visual studio是一款很不错的c语言编译器 下载地址:官网 点击后跳转到以下界面 下滑后点击下载Vasual Sutdio,选择社区版即可 选择位置存放下载文件后,即可开始安装 安装时会稍微等一小会儿。然后会弹出这个窗口,我们选择安装位…

无需编程,简单易上手的家具小程序搭建方法分享

想要开设一家家具店的小程序吗?现在,我将为大家介绍如何使用乔拓云平台搭建一个家具小程序,帮助您方便快捷地开展线上家具销售业务。 第一步,登录乔拓云平台进入商城后台管理页面。 第二步,在乔拓云平台的后台管理页面…

Vulnhub-Raven-1

一、信息收集 端口扫描 PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 6.7p1 Debian 5deb8u4 (protocol 2.0) | ssh-hostkey: | 1024 26:81:c1:f3:5e:01:ef:93:49:3d:91:1e:ae:8b:3c:fc (DSA) |_ 256 0e:85:71:a8:a2:c3:08:69:9c:91:c0:3f:84:18:df:…

多线程——CAS

什么是CAS CAS的全称:Compare and swap,字面意思就是:“比较并交换”,一个CAS涉及到以下操作: 假设内存中的原数据V,旧的预期值A,需要修改的新值B 1.比较A与V是否相等(比较&#xf…

antd pro项目部署到gitpage白屏

先总结一下如何部署项目到gitpage 1.新建分支gh-pages 2.把打包好的文件放在这个分支下 3. 之前打开一直白屏,有很多坑 第一个,import { getIntl } from umijs/max;这个引入要,不能是./引入的 第二个,新建一个config.prod.t…

盘点2023年信息系统故障

安全生产,人人有责。每年信息系统安全事件层出不穷,作为一线运维人员对这些生产安全故障当抱有敬畏之心,并从中总结经验教训,分析原因,不能简单的调侃为开猿节流、降本增笑的结果。本文简要盘点2023年发生的主要信息系…

Java NIO (一)简介(备份)

1 NIO简介 在1.4版本之前,Java NIO类库是阻塞IO,从1.4版本开始,引进了新的异步IO库,被称为Java New IO类库,简称为Java NIO。New IO类库的目的 就是要让Java支持非阻塞IO。 Java NIO类库包含三个核心组件: …

Shell基本操作(2)

文件显示与编辑 连接并显示文件内容 cat cat[options] file... options -n加上行号 -s将连续两行以上的空白行替换为一行如果file不止一个文件,则会将它们连接起来如果想一次只看一页,可以使用more或者less命令 过滤文件内容grep grep命令可以查找拥…

【STM32CubeMX串口通信详解】USART1 -- DMA发送 + DMA空闲中断 接收不定长数据

文章目录: 前言 一、准备工作 1、接线 2、新建工程 二、CubeMX的配置 1、USART1 配置 异步通信 2、通信协议参数 3、打开DMA发送、接收 三、发送操作、代码解释 四、printf 重定向到USART1 五、接收代码的编写 1、定义一个结构体变量&a…

初识 Elasticsearch 应用知识,一文读懂 Elasticsearch 知识文集(4)

🏆作者简介,普修罗双战士,一直追求不断学习和成长,在技术的道路上持续探索和实践。 🏆多年互联网行业从业经验,历任核心研发工程师,项目技术负责人。 🎉欢迎 👍点赞✍评论…

金和OA jc6 Upload 任意文件上传漏洞复现

0x01 产品简介 金和OA协同办公管理系统软件(简称金和OA),本着简单、适用、高效的原则,贴合企事业单位的实际需求,实行通用化、标准化、智能化、人性化的产品设计,充分体现企事业单位规范管理、提高办公效率的核心思想,为用户提供一整套标准的办公自动化解决方案,以帮助…

༺༽༾ཊ—设计-七个原则-模式—ཏ༿༼༻

第一原则:单一职责 一个类只负责一个功能领域中的相应职责; 接下来我们举一个代码例子,主要的功能实现是: 在主函数中运行调用描边工具和填充工具画矩形与圆形 首先写一个圆形类,里面只有一个方法用来返回string类型…

SAP中采购文档价格条件可以删除吗?

首先要声名,基于采购价格条件的严谨性和历史追朔需求,删除属于危险操作。不建议普通用户去执行操作。如果有兴趣,在测试系统中自行测试一下即可。正式系统中,还请慎重处理。 笔者公司日常不会去删除采购价格,日常处理…

Word2Vec的CBOW模型

Word2Vec中的CBOW(Continuous Bag of Words)模型是一种用于学习词向量的神经网络模型。CBOW的核心思想是根据上下文中的周围单词来预测目标单词。 例如,对于句子“The cat climbed up the tree”,如果窗口大小为5,那么…

微信小程序(四)页面跳转

注释很详细&#xff0c;直接上代码 新增内容 1.相对路径页面跳转 2. 绝对路径页面跳转 index.wxml <!-- navigator是块级元素&#xff0c;占一整行 --> <!-- 页面跳转url&#xff0c;相对路径 --> <navigator url"../logs/logs"><button type&…

赋值运算符和关系运算符

赋值运算符和关系运算符 赋值运算符 分类 符号作用说明赋值int a 10&#xff0c; 将10赋值给变量a加后赋值a b&#xff0c;将a b的值赋值给a-减后赋值a - b&#xff0c;将a - b的值赋值给a*乘后赋值a * b&#xff0c;将a b的值赋值给a/除后赋值a / b&#xff0c;将a b的…

运维知识点-Sqlite

Sqlite 引入 依赖 引入 依赖 <dependency><groupId>org.xerial</groupId><artifactId>sqlite-jdbc</artifactId><version>3.36.0.3</version></dependency>import javafx.scene.control.Alert; import java.sql.*;public clas…

第二证券:抢占技术前沿 中国光伏企业结伴“走出去”

2024年新年前后&#xff0c;光伏职业分外忙碌。据证券时报记者不完全统计&#xff0c;晶澳科技、华晟新动力、高测股份、华民股份等多家企业宣告新建项目投产&#xff0c;安徽皇氏绿能等企业的项目也迎来设备安装的重要节点。 证券时报记者采访多家企业的负责人后了解到&#…