密码学之PRP/PRF转换引理

Python微信订餐小程序课程视频

https://edu.csdn.net/course/detail/36074

Python实战量化交易理财系统

https://edu.csdn.net/course/detail/35475
本文将介绍密码学中的PRF、PRP等相关概念,并介绍 PRP/PRF 转换引理及其证明,希望读完本文后,你能对现代密码学中这几个基础概念有所了解。

在开始本文前,希望你有如下预备知识:

  • 现代密码学是怎样的一门学科?
  • “Security Through Obscurity” 是什么意思?
  • 集合、极限、函数、随机变量、采样等数学概念是什么?

概述

在之前的一篇博客中提到,伪随机性是现代密码学的根基,每一个密码算法都需要有这样的伪随机性来源。而伪随机数发生器只是一个承载伪随机性的初等原语,其数学性质和模型都太朴素,不足以帮助我们构建更复杂的算法结构。

伪随机函数的出现,对「如何将随机性这个特点与函数的输入输出结合?」这一问题给出了严格的数学定义与描述方法。这为各位密码学家们提供了一个很强的模型。进一步地,伪随机置换则在此基础上,引入了「映射可逆」的概念,从而丰富和细化了PRF的抽象能力。

这篇博客将依次介绍伪随机数发生器(PRNG)、伪随机函数(PRF)、伪随机置换(PRP),并给出大名鼎鼎的 PRF/PRP 转换引理及其证明。

PRNG

伪随机性之于现代密码学的重要性在之前的博客中已经为大家介绍过了,而作为伪随机性的载体,伪随机数发生器(Pseudorandom Number Generator,PRNG)的定义重新陈述如下:

令GGG为一多项式时间算法,其输入为s∈{0,1}ns∈{0,1}ns\in {0, 1}^{n},即为一长度为nnn的01比特串,输出的长度记作l(n)l(n)l(n)。其中,l(⋅)l(⋅)l(\cdot )也为一多项式时间算法,l(n)l(n)l(n)则表示是nnn的多项式界(如 n2n2n^{2}、nnn)下的一个数值。若GGG为一PRNG,则应同时满足如下两个条件:

  • 对于任意的nnn,都有l(n)>nl(n)>nl(n) > n;
  • 若此时对于任意一具有多项式资源的敌手AA\mathcal{A},都存在一个可忽略(negligible)的概率 ϵϵ\epsilon ,使得下式成立:

|Pr[A®=1]−Pr[A(G(s))=1]|≤ϵ(1)(1)|Pr[A®=1]−Pr[A(G(s))=1]|≤ϵ|\mathrm{Pr}[\mathcal{A}®=1] - \mathrm{Pr}[\mathcal{A}(G(s))=1]| \le \epsilon \tag{1}
PRNG作为伪随机性最直观的抽象模型,示意图如下图所示。

可以看到,PRNG在算法构建上的表现力似乎还不是很强。例如,G(s)G(s)G(s)作为PRNG的输出,但这和一个密码算法到底有啥关系?生成密钥?可一个算法又不只有密钥,还有输入输出呢!因此,PRNG作为一个初等原语,其抽象能力还是有些弱,这就需要表达能力更强的原语了。

PRF与PRP

PRF

伪随机函数(即 Pseudorandom Function, PRF)与PRNG相比,多了对输入输出的描述,而这正是「函数」的意义。在介绍PRF之前,首先介绍随机函数。

随机函数

对于将nnn位比特串{0,1}n{0,1}n{0, 1 }^{n}映射到nnn位比特串{0,1}n{0,1}n{0, 1 }^{n}的所有函数组成的函数族FF\mathcal{F},一个随机函数fff是指在FF\mathcal{F}中以均匀随机采样的方法选择得到的一个函数,即有f∈rndFf∈rndFf \stackrel{rnd} \in \mathcal{F}.

在该函数族中,一个函数相当于给出了一种2n2n2{n}个nnn比特长的串的排列,那么整个函数族的大小即为2n⋅2n2n⋅2n2{n\cdot 2^{n}}。这是一个指数级别的计算规模,因此即使存在一个多项式资源的敌手或区分器,他也无法在多项式时间内建模某个随机函数fff的映射方式。

伪随机函数

PRF的正式定义如下:

对于一类带密钥的函数FFF,有F:{0,1}∗×{0,1}∗→{0,1}∗F:{0,1}∗×{0,1}∗→{0,1}∗F: {0,1}^{ } \times {0, 1}^{ } \rightarrow {0, 1}^{*},即y←F(k,x)y←F(k,x)y \leftarrow F(k, x),其中xxx为输入,kkk为密钥,yyy为输出。若称FFF为PRF,则可满足以下条件:

  • 高效计算:给定kkk与xxx,存在高效的多项式时间算法能计算y=F(k,x)y=F(k,x)y=F(k, x);
  • 不可区分:随机选定密钥kkk,伪随机函数F(k,⋅)F(k,⋅)F(k, \cdot)与一随机函数f(⋅)f(⋅)f(\cdot)是不可区分的;
  • 长度保留
  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

[虚幻私塾】

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值