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

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


写在最前面

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

内容补充:骆婷老师的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,从而形成一个闭环;
  1. 单向函数(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\}^nx{0,1}n. 计算 y : = f ( x ) y := f(x)y:=f(x). 注:挑战y yy是由随机产生的x xx得到的,而不是直接随机挑选一个y yy
  2. A \mathcal{A}A1 n 1^n1ny yy (挑战)作为输入,并输出 x ′ x'x.
  3. 实验成功 I n v e r t A , f ( n ) = 1 \mathsf{Invert}_{\mathcal{A},f}(n) = 1InvertA,f(n)=1 ,如果 f ( x ′ ) = y f(x')=yf(x)=y, 否则 0. 注:这里不需要x ′ = x x'= xx=x
  1. OWF/OWP的定义 [Yao]
  • 定义:多项式时间算法 M f M_fMfA \mathcal{A}A.
    一个函数 f    :    { 0 , 1 } ∗ → { 0 , 1 } ∗ f\;:\; \{0,1\}^* \to \{0,1\}^*f:{0,1}{0,1} 是单向函数,如果满足:
    易于计算: ∃ \exists M f M_fMf: ∀ 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 xxy yy 是相同长度的质数;注:后面会学习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 Nfsquare(x)=x2modN注:也被应用于公钥密码学
  • 离散指数与对数(Discrete exponential and logarithm):f g , p ( x ) = g x   m o d   p f_{g,p}(x)=g^x\bmod pfg,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 ff也不是;
  • 不是单向函数的理由在于,f ′ f'f可以容易求逆;
  • 另外,要注意求逆实验是从随机挑选的x xx得到y yy,并不能直接指定y yy
  1. 核心断言 Hard-Core Predicates (HCP)
  • 一个函数h c    :    { 0 , 1 } ∗ → { 0 , 1 } \mathsf{hc}\; : \; \{0,1\}^* \to \{0,1\}hc:{0,1}{0,1}是一个函数f ff的核心断言(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 ff是一个OWF。那么,存在一个OWF g gg 并与 g gg 伴随着一个HCP g l glgl
  • 问题: g l ( x ) = ⨁ i = 1 n x i \mathsf{gl}(x) = \bigoplus^{n}_{i=1} x_igl(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_igl(x,r)=defi=1nxiri。 其中,r rr 是一个随机串。
  • 说明:g l \mathsf{gl}gl就是从x xx中随机选择若干比特异或结果作为核心断言。即便敌手根据输出推断出x xx中若干比特的信息,但仍不能推断出(由r rr来)随机挑选的任意若干比特信息(核心断言),否则意味着敌手可以求出整个x xx
  1. 从OWP到PRG:Blum-Micali Generator
  • 定理:f ff 是一个OWP并且 h c \mathsf{hc}hc 是一个 f ff 的 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) > np(n)>n, ∃ \exists 一个 PRG 带有扩展因子 ℓ ( n ) = p ( n ) \ell(n) = p(n)(n)=p(n)
  • 定理成立的理由有两点:
  • 因为f ff为排列(这很重要,不能是非排列的函数),那么当s ss随机生成时,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 kk为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 kk为根,根据第一个比特选择左分支,接着选择右分支,右分支。
  • PRF随机性来自于PRG的随机性。
  1. 从PRF到PRP [Lucy, Rackoff]
  • Feistel网络可以将一个n nn比特的PRF转变为一个2 n 2n2n比特的PRP,有以下定理
  • 定理:一个3轮的Feistel网络可将一个PRF转变为一个PRP。
  • 定理:一个4轮的Feistel网络可将一个PRP转变为一个strong PRP。
  • 说明:
  • 首先,Feistel网络本身特性是排列,因此证明上述定理成立的关键在于,证明伪随机性;伪随机性来自与每轮的mangler函数是PRF,其输出是一个独立的随机值。
  • 对于为什么至少需要3轮?首先可以观察到如果只有1轮,则不是伪随机的,因为R 0 R_0R0被直接输出为L 1 L_1L1;如果只有2轮,也不是随机的,因为只改变L 0 L_0L0来翻转1个比特,那么R 2 R_2R2也只翻转1个比特。当3轮时,上述两个情况不会发生,并且输出结果L 3 , R 3 L_3, R_3L3,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_0cm0 作为A \mathcal{A}A求逆的输入。当求拟成功时,A ′ \mathcal{A}'A输出0;否则,输出1。当m 0 m_0m0被加密,则破解加密方案意味着可求逆;当m 1 m_1m1被加密,则破解加密方案意味着没有成功求逆,概率为1 − 1 / 2 n 1-1/2^n11/2n
  1. 总结
  • OWF意味着安全私钥加密方案,安全私钥加密方案意味着OWF。
目录
相关文章
|
16天前
|
数据可视化 Python
Python的分子模拟动态促进DF Theory理论对二进制硬盘系统的适用性
Python的分子模拟动态促进DF Theory理论对二进制硬盘系统的适用性
|
机器学习/深度学习 算法 搜索推荐
一文读懂FM算法优势,并用python实现!(附代码)
介绍 我仍然记得第一次遇到点击率预测问题时的情形,在那之前,我一直在学习数据科学,对自己取得的进展很满意,在机器学习黑客马拉松活动中也开始建立了自信,并决定好好迎接不同的挑战。 为了做得更好,我购买了一台内存16GB,i7处理器的机器,但是当我看到数据集的时候却感到非常不安,解压缩之后的数据大概有50GB - 我不知道基于这样的数据集要怎样进行点击率预测。
14985 0
|
3月前
|
机器学习/深度学习 安全 算法
【现代密码学】笔记3.1-3.3 --规约证明、伪随机性《introduction to modern cryphtography》
【现代密码学】笔记3.1-3.3 --规约证明、伪随机性《introduction to modern cryphtography》
49 0
|
3月前
|
机器学习/深度学习 资源调度 安全
【现代密码学】笔记5--伪随机置换(分组加密)《introduction to modern cryphtography》
【现代密码学】笔记5--伪随机置换(分组加密)《introduction to modern cryphtography》
37 0
|
3月前
|
安全 算法 API
【现代密码学】笔记4--消息认证码与抗碰撞哈希函数《introduction to modern cryphtography》
【现代密码学】笔记4--消息认证码与抗碰撞哈希函数《introduction to modern cryphtography》
45 0
|
3月前
|
机器学习/深度学习 安全 搜索推荐
【现代密码学】笔记3.4-3.7--构造安全加密方案、CPA安全、CCA安全 《introduction to modern cryphtography》
【现代密码学】笔记3.4-3.7--构造安全加密方案、CPA安全、CCA安全 《introduction to modern cryphtography》
59 0
|
4月前
|
机器学习/深度学习 人工智能 算法
算法02-入门算法枚举与模拟算法
算法02-入门算法枚举与模拟算法
|
人工智能 算法 数据挖掘
简述k-means算法基本原理,并针对如何自适应确定k值
简述k-means算法基本原理,并针对如何自适应确定k值
300 0
简述k-means算法基本原理,并针对如何自适应确定k值
|
8月前
RxSwift特征序列Single、Maybe、Completable的使用
RxSwift特征序列Single、Maybe、Completable的使用
149 1
|
10月前
|
机器学习/深度学习 传感器 算法
【JavaSE专栏42】Java常用类Random解析,伪随机数的生成
【JavaSE专栏42】Java常用类Random解析,伪随机数的生成
129 0