现代密码学导论-17-伪随机函数

news2025/7/14 10:42:21

目录

3.5.1伪随机函数的非正式定义

|Func_n| 有多大?

DEFINITION 3.24 伪随机函数的正式定义

Example 3.25 一个不安全的反例


3.5.1伪随机函数的非正式定义

伪随机函数(PRFs)推广了伪随机发生器的概念。

F : {0, 1}∗× {0, 1}∗→ {0, 1}∗

F有两个输入,k和x,即F(k,x)

如果有一个多项式时间算法可以计算F,我们就称F为高效

安全参数n规定了密钥k的长度、输入长度和输出长度。

对于任意的k

函数F的输入被定义为

 

在这种情况下,

 

除非另有说明,为了简单起见,我们假设F是保留长度的,即 

我们还有如下定义

Func_n表示映射n位字符串到n位字符串的所有函数的集合。

从与Fk(x)具有相同定义域和值域的集合Func_n中随机均匀挑选出来的一个函数,如果函数Fk(x)(其中k是随机均匀选择的),和这个被挑选出来的函数是不可区分的,那我们就称F具有伪随机性。换句话说,不存在PPT敌手能够区分其正在交互的对象是一个Func_n中的真随机函数,还是伪随机函数F


|Func_n| 有多大?

我们可以将任何一个在有限域上函数f视为一个大的查找表,它将f(x)存储在用x标记的表的行中,

以n=2为例,我们取一个f∈Func_2,f可表示为

x1=00

f(x1)

x2=01

f(x2)

x3=10

f(x3)

x4=11

f(x4)

每个f(xi)都是长度为n的字符串,一共2^n行

把所有的f(xi)合成一行,合成一个长度为n*(2^n)的字符串

f是在Func_n中任取的,Func_n的大小正是所有长度为n*(2^n)的字符串的数量

最终我们得到

 


DEFINITION 3.24 伪随机函数的正式定义

一个高效的、长度保留的、含有参数k的函数F: {0,1}∗×{0,1}∗→{0,1}∗,如果对于所有的PPT区分器D,有一个可忽略函数negl使得

那么我们称F是一个伪随机函数

其中区分器D是不知道密钥k的。如果给定了k,那么区分Fk的预言机和f的预言机是轻而易举的

k如果是被D已知的,相当于Fk是确定性的。这意味着,如果k被揭示出来,任何关于伪随机性的说法都不再成立

 


Example 3.25 一个不安全的反例

假设F(k, x) = k⊕x。当k时随机均匀选择时,对于任何输入x,Fk(x)的值都是均匀分布的。然而,F不是伪随机的,因为它在任何两点上的值都是相关的。考虑区分器D采取这样的策略:它在不同的点x1,x2上询问其预言机O以获得值y1 = O(x1)和y2 = O(x2),当且仅当y1⊕y2 = x1⊕x2时输出1。

当O=Fk时,y1⊕y2 =k⊕x1⊕k⊕x2= x1⊕x2,此时D输出1的概率为1

当O=f∈Func_n时

显然1-2^(-n)并不是可忽略的,所以 F 不是伪随机函数 

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

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

相关文章

Linux进程管理【进程的相关介绍片、ps、 kill 、pstree】【详细整理】

目录进程相关介绍显示系统执行的流程 psps 详解![请添加图片描述](https://img-blog.csdnimg.cn/cd9f10bf36684b419f2f94068afb9a03.png)案例终止进程kill 和 killall基本语法常见选型案例查看进程数pstreepstree [选项],可以更加直观的来查看进程信息进程相关介绍 …

【无线传感器】使用 Mamdani 模糊推理系统改进无线传感器网络路由和数据包传递附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。 🍎个人主页:Matlab科研工作室 🍊个人信条:格物致知。 更多Matlab仿真内容点击👇 智能优化算法 …

【语音去噪】谱减法+维纳滤波语音去噪(带面板+信噪比)【含GUI Matlab源码 1661期】

⛄一、简介 1 维纳滤波法 维纳滤波法(wiener filter)也是一个比较经典的传统做法,它的本质是估计出一个线性滤波器,也就是一个向量,这个滤波器会对不同的频段进行不同程度的抑制,其保真效果会比谱减法要好一些。 我们这里不会讲…

8.4 数据结构——选择排序

8.4.1 简单选择排序 基本思想:在待排序的数据中选出最大(小)的元素放在其开始的位置。 基本操作: (1)首先通过n-1次关键字比较,从n个记录中找出关键字最小的记录,将它与第一个交换…

Pytorch 中Label Smoothing CrossEntropyLoss实现

一. 前言 一般情况下我们都是直接调用Pytorch自带的交叉熵损失函数计算loss,但涉及到魔改以及优化时,我们需要自己动手实现loss function,在这个过程中如果能对交叉熵损失的代码实现有一定的了解会帮助我们写出更优美的代码。 其次是标签平…

Day13--自定义组件-封装自定义属性和click事件

提出问题: 当前我们search搜索框的背景颜色和圆角边框都是写死的,使用者没有办法修改器背景颜色和圆角尺寸。那么为了让这个组件更加通用性强一些。 ***********************************************************************************************…

用DIV+CSS技术设计的个人电影网站(web前端网页制作课作业)

HTML实例网页代码, 本实例适合于初学HTML的同学。该实例里面有设置了css的样式设置,有div的样式格局,这个实例比较全面,有助于同学的学习,本文将介绍如何通过从头开始设计个人网站并将其转换为代码的过程来实践设计。 文章目录一、网页介绍一…

框架体系——Spring

Spring IOC IOC控制反转 IOC 控制反转,全称Inverse of Control,是一种设计理念由代理人来创建和管理对象,消费者通过代理人来获取对象Ioc的目的是降低对象之间的耦合通过加入Ioc容器将对象统一管理,将对象关联变为弱耦合。 DI…

MyBatis中有哪些注解呢?

转自: MyBatis中有哪些注解呢? 为了简化 XML 的配置,MyBatis 提供了注解。我们可以通过 MyBatis 的 jar 包查看注解,如下图所示。 以上注解主要分为三大类,即 SQL 语句映射、结果集映射和关系映射 下面分别进行讲解 一、SQL 语句…

Allegro中如何进行尺寸标注

摘要本文介绍了如何在Allegro中进行尺寸标注,包含各种标注样式的区别、如何设置参数、如何显示单位、如何导出带尺寸的PDF与DXF等信息。 一. 为什么要尺寸标注PCB尺寸标注的作用: 方便设计人员明确板子的大小,以及安装位置的各种细节&#xf…

react学习笔记3--数据双向绑定,组件通信

一、表单处理 1、受控组件-input元素 通过设置input元素的value值(或复选框的checked值)实现Getter,通过监听onChange事件实现Setter,从而实现数据双向绑定。 class element extends React.Component {state {txt:""…

vulhub靶场搭建与使用

vulhub靶场搭建与使用1.前言2.配置yum源2.1备份原来的源文件2.2 配置阿里源2.3重置yum源2.4更新yum源3.安装docket3.1安装docket3.2启动docket3.3设置国内镜像源3.4重启docket4.安装docker-compose4.1安装dockers-compose4.2提升权限5.安装vulhub5.1安装git5.2下载vulhub5.3下载…

自知识蒸馏(知识蒸馏二)

自知识蒸馏(知识蒸馏二)自知识蒸馏(知识蒸馏二)Born-Again Neural Networks(ICML2018)方法为什么有效实验结果Training Deep Neural Networks in Generations: A More Tolerant Teacher Educates Better St…

MyBatis工作原理

MyBatis工作流程: 具体介绍: (1) MyBatis 读取核心配置文件mybatis-config.xml mybatis-config.xml核心配置文件主要配置了MyBatis的运行环境等信息。 (2)加载映射文件Mapper.xml Mapexm文件即SQL映射文件,该文件配置了操作数据库的SOL语句&a…

Python+Appium移动端自动化测试框架实现

一、Appium 概述 1、Appium 简介 Appium是一个开源的自动化测试框架,可以用来测试基于iOS、Android和Firefox OS 平台的原生与混合的应用。 该框架使用Selenium WebDriver,在执行测试时用于和Selenium Server 通信的是JSON Wire Protocol。在Selenium 2中,Appium将取代 i…

【CNN】经典网络LeNet——最早发布的卷积神经网络之一

前言 LeNet是Yann LeCun于1988年提出的用于数字识别的网络结构,可以说LeNet是深度CNN网络的基石,AlexNet、VGG、GoogLeNet、ResNet等都是在VGG基础上加入各类激活函数或加深网络演变而来的,所以理解LeNet对于现在主流CNN深度学习架构的理解有…

制作一个简单HTML电影网页设计(HTML+CSS)

HTML实例网页代码, 本实例适合于初学HTML的同学。该实例里面有设置了css的样式设置,有div的样式格局,这个实例比较全面,有助于同学的学习,本文将介绍如何通过从头开始设计个人网站并将其转换为代码的过程来实践设计。 文章目录一、网页介绍一…

基于蚁群算法的多配送中心的车辆调度问题的研究(Matlab代码实现)

👨‍🎓个人主页:研学社的博客 💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜…

【图像处理】小波编码图像中伪影和纹理的检测附Matlab代码和报告

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。 🍎个人主页:Matlab科研工作室 🍊个人信条:格物致知。 更多Matlab仿真内容点击👇 智能优化算法 …

如果各位同学还对时间复杂度有疑问?看这一篇就可以啦!

🎇🎇🎇作者: 小鱼不会骑车 🎆🎆🎆专栏: 《java练级之旅》 🎓🎓🎓个人简介: 一名专科大一在读的小比特,努力学习编程是我…