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

news2025/1/11 8:39:04

【现代密码学】笔记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.coloradmin.cn/o/1388379.html

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

相关文章

Vue中的全局组件与局部组件

聚沙成塔每天进步一点点 本文内容 ⭐ 专栏简介1. 全局组件的原理2. 局部组件的原理3. 组件注册的影响与考虑因素全局组件的使用场景:局部组件的使用场景: 4. 组合使用全局组件与局部组件 ⭐ 写在最后 ⭐ 专栏简介 Vue学习之旅的奇妙世界 欢迎大家来到 Vu…

Android 捕获native异常

11.使用google官方提供的breakpad 地址:Android 捕获native异常 https://github.com/google/breakpad 2.编译breakpad的so文件 2.1设置需要编译的架构 3.编译完,在build\intermediates\cmake\debug\obj目录下获取对应架构的so包 4.编译一个错误的so包…

MIT 6s081 lab3:page tables

Lab3: page tables 作业地址:Lab: page tables (mit.edu) 本实验的目标:修改页表、简化从用户态拷贝数据到内核态的方法 其实页表就几个操作:创建页表、添加PTE项,查找PTE项,清空PTE项,释放PTE对应的物理…

聚观早报 |一加Ace 3鸣沙金开售;地平线征程6将发布

聚观早报每日整理最值得关注的行业重点事件,帮助大家及时了解最新行业动态,每日读报,就读聚观365资讯简报。 整理丨Cutie 1月16日消息 一加Ace 3鸣沙金开售 地平线征程6将发布 互动短剧《谍影成双》首曝PV 台积电发布四季度财报 保时捷…

JVM实战(21)——jstat实战(2)

作者简介:大家好,我是smart哥,前中兴通讯、美团架构师,现某互联网公司CTO 联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬 学习必须往深处挖&…

Proxy的使用方法和13种拦截操作

前言 proxy是ES6新推出的方法,功能很强大。属于元编程,也就是修改js本身的一些东西。可以对数组,对象,函数等引用类型的对象进行一些复杂的操作。 其中,大部分人应该最熟悉的莫过于vue3中使用proxy替换了defineProperty,而且还实现了本身defineProperty不能实现的一些东西。 …

Vue-API

$parent 和 $children $parent 父传子--在子组件中使用,放在计算属性、生命周期中: $children 子传父--方法中使用: $nextTick: $ref: 操作dom $set、$delete:

UML-实现图(组件图和部署图)

实现图是从系统的层次来描述的,描述硬件的组成和布局,描述软件系统划分和功能实现。 UML-实现图(组件图和部署图) 一、组件图1.组件图的元素(1)组件(2)接口(3&#xff09…

linux系统nginx工具的一些应用和基于nginx做虚拟主机

nginx高级应用 虚拟目录监控模块配置文件创建用户名密码客户端访问 限制传输速度(服务层) nginx虚拟主机基于ip基于域名基于端口 nginx配置文件中的每个语句要以 ; 结尾 虚拟目录 配置文件中的server块中编辑:location /test {alias /usr/…

SparkSQL初体验

SparkSQL初体验 命令式的 API RDD 版本的 WordCount val conf new SparkConf().setAppName("ip_ana").setMaster("local[6]") val sc new SparkContext(conf)sc.textFile("hdfs://master:9000/dataset/wordcount.txt").flatMap(_.split("…

Visual Studio 2019 ctrl+f 呼出查找和替换窗口

有时候 ctrlshiftf 呼出查找和替换窗口不起作用,可能和其它程序的快捷键冲突,解决方案: ------------英文版本------------ 依次点击VS菜单栏中的 Tools - Options - Environment - Keyboard: 1. 在右侧的 Show commands containing: 文本框输…

单列的堆叠柱状图

目的 MSingleColumnStackBarChart类被设计用于创建只有单列的堆叠柱状图,用于血糖数据的统计。以下是封装这个类的目的的详细描述: 抽象复杂性: 通过创建MSingleColumnStackBarChart类,你将复杂的MPAndroidChart库的使用和配置封…

创意交融:集成自定义报表和仪表盘设计器,实现图标替换

前言 在现代数据分析领域,随着对报表和数据分析的需求不断增长,市场上涌现了许多嵌入式报表工具。这些工具能够与企业现有的OA、ERP、MES、CRM等应用系统深度集成,实现对业务数据的自助式分析。然而,在实际应用中,不同…

【量化交易实战记】小明的破晓时刻——2023下半年新能源汽车板块的成功掘金之旅

在2023年的炎炎夏日,小明在不断的观察分析市场的过程中,突然敏锐地察觉到了新能源汽车市场的风云变幻。他日复一日地研读行业报告、追踪政策动向、分析公司财报,以及密切关注全球市场动态。那段时间里,新能源汽车行业仿佛迎来了一…

Vue中父子组件通信

聚沙成塔每天进步一点点 本文内容 ⭐ 专栏简介Vue中父子组件通信1. Props父组件:子组件: 2. 自定义事件子组件:父组件: 3. 使用 v-model子组件:父组件: 4. 使用$refs子组件:父组件: …

必示科技助力中国联通智网创新中心通过智能化运维(AIOps)通用能力成熟度3级评估

2023年12月15日,中国信息通信研究院隆重公布了智能化运维AIOps系列标准最新批次评估结果。 必示科技与中国联通智网创新中心合作的“智能IT故障监控定位分析能力建设项目”通过了中国信息通信研究院开展的《智能化运维能力成熟度系列标准 第1部分:通用能…

通用外设-2.8‘TFT屏的使用

前言 一、验证连接是否正确 二、更改自己想用的图像 1.取模软件 Image2Lcd 2.9 的使用 2.使用 总结 前言 本文在中景园的代码上改写而来,主要记录下使用记录 一、验证连接是否正确 1.按内容说明进行线路连接 2.运行程序,因为内部有图片样本&…

这可能是最全面的Java并发编程八股文了

内容摘自我的学习网站:topjavaer.cn 分享50道Java并发高频面试题。 线程池 线程池:一个管理线程的池子。 为什么平时都是使用线程池创建线程,直接new一个线程不好吗? 嗯,手动创建线程有两个缺点 不受控风险频繁创…

23年全球数字经济发展如何?这本《白皮书》告诉你答案丨附下载

这一年,全球主要国家优化数字经济政策布局, 促进数字产业化创新升级、发展数字基础设施; 这一年,全域国际合作让“命运共同体” 构建见成效, 全球经济多极化趋势加强,中国坐拥Top1数字市场; …

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

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