首页 > 其他分享 >关于为随机函数PRF的入门认知

关于为随机函数PRF的入门认知

时间:2024-05-12 17:11:06浏览次数:25  
标签:PRF 函数 认知 随机 prf 分组 密钥 入门

伪随机函数(Pseudo Random Function,即PRF)在密码学中是一个重要的概念,是一个基础的密码学原语。

基本概念

PRF是一个确定性的函数。我们记定义在 $(K,X,Y)$ 上的函数$F$,其中$K$是密钥空间,$X$和$Y$分别是输入和输出空间。对于PRF,给定确定的密钥k,函数$F$应该看上去是一个定义在$X \rightarrow Y$上的随机函数。

这里有随机函数的概念。考虑定义域$X$和值域$Y$,定义一个集合其中包含所有定义在此定义域和值域上的函数。从这个集合中随机挑选一个函数,此函数就是随机函数。因此,这里“随机”的概念不是指函数的输出是随机的,而是函数本身是被随机选择出来的。PRF是伪随机的,意思就是无法与真正的随机函数区分开来。

PRF与分组密码有紧密的联系。分组密码也可以称之为伪随机置换PRP,在很多语境中,PRP就是指分组密码。在实际应用时,可以用安全的分组密码代替PRF而不失安全性。

特点

PRF将随机性应用到输入数据上,通常具有两个特点:

  • 给定相同的密钥和输入,产生相同的输出。
  • 对于不同的密钥和输入,输出看起来随机且不可预测。

在我看来,这两个特点前者体现了其函数的性质,后者体现了伪随机性。

此外,有博客提到了PRF的安全特性:

  • 伪随机性,不可预测。
  • 抗相关性,输入输出不存在明显相关性。
  • 抗差分攻击,输入稍微变化,输出应该具有高度不确定性。

应用场景

关于PRF,网络上有很多资料,通常关于其定义、安全性证明、与PRP和分组密码的联系等等,很少提到PRF的应用场景,即在什么时候可以使用PRF,能够实现什么样的效果。

密码学中PRF有多种作用:

  • 伪随机数生成,可以生成密码学伪随机数。
  • 密钥派生,从一个密钥扩展生成更多密钥。
  • 生成加密算法所需的随机性,比如对称加密用于生成IV。
  • 等等。

PRF可以使用分组密码实现,如AES,也可以使用HMAC(散列消息认证码)。从编程角度来看,PRF在调用前需要进行初始化。

# init
prf = PseudoRandomFunction(key=k)

# call prf
output1 = prf(input1)
output2 = prf(input2)

output3 = prf(input1)  # output1 == output3

output1output2具有伪随机性。

标签:PRF,函数,认知,随机,prf,分组,密钥,入门
From: https://www.cnblogs.com/louistang0524/p/18187949

相关文章

  • Vue.js的Vue@Cli入门指南
    Vue.js是一款流行的JavaScript框架,它使得构建交互式的Web界面变得简单和快捷。Vue@Cli是Vue.js官方提供的脚手架工具,它能够帮助我们快速搭建Vue.js项目,并提供了丰富的功能和插件。准备工作在开始之前,确保您已经安装了node.js和npm。然后,您可以通过以下命令安装Vue@Cli:npminsta......
  • ThreadLocal入门笔记
    ThreadLocal入门笔记最近学习小傅哥的面经手册,学习到ThreadLocal,这里做个笔记加深印象,也方便日后复习。ThreadLocal是除了加锁这种同步方式之外的一种规避多线程访问出现线程不安全的方法,它的核心思想是:共享变量在每个线程都有一个副本,每个线程操作的都是自己的副本,对另外的线程......
  • 【vue3入门】-【22】 插槽
    插槽-基本使用方式我们已经了解了组件能够接收任意类型的JavaScript值作为props,但是组件要如何接收模版内容呢?在某些场景中,我们可能想要为子组件传递一些模版片段,让子组件在他们的组件中渲染这些片段。最基本的使用方式app.vue<template><!--单标签就是仅应用当前组件-->......
  • Windows 下 PyTorch 入门深度学习环境安装(CPU版本)
    Windows下PyTorch入门深度学习环境安装(CPU版本)一、安装Anaconda二、虚拟环境配置2.1基础命令列出虚拟环境condaenvlist创建虚拟环境https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/maincondacreate-n虚拟环境名字python=版本-c镜像地址激活环境conda......
  • PyTorch深度学习快速入门教程
    PyTorch深度学习快速入门教程一、基础知识1.1Python学习中的两大法宝1.2pycharm以及jupyter使用及对比将环境写入Notebook的kernel中:python-mipykernelinstall--user--name环境名称--display-name"Python(环境名称)"打开Jupyternotebook,新建Python文件,这时候......
  • nsq入门
    目录nsq组件快速入门nsqd.datgo-nsqTopic、Channel、MessageTopic(主题)Channel(通道)Topic与Channel的关系Message(消息)总结参考nsq组件组件端口说明nsqdTCP:4150HTTP:4151nsq的核心,负责消息的存储与分发。包括topic和channel的管理、producer和consumer的维护,简单......
  • 图机器学习入门:基本概念介绍
    图机器学习(GraphMachineLearning,简称GraphML)是机器学习的一个分支,专注于利用图形结构的数据。在图形结构中,数据以图的形式表示,其中的节点(或顶点)表示实体,边(或链接)表示实体之间的关系。本篇文章将从基础开始介绍什么是图,我们如何描述和表示它们,以及它们的属性是什么。图论是在1......
  • gRPC入门学习之旅目录
     gRPC入门学习之旅(一)gRPC入门学习之旅(二)gRPC入门学习之旅(三)gRPC入门学习之旅(四)gRPC入门学习之旅(五)gRPC入门学习之旅(六) gRPC入门学习之旅(七)gRPC入门学习之旅(八)......
  • 《最新出炉》系列入门篇-Python+Playwright自动化测试-46-鼠标滚轮操作
    1.简介有些网站为了节省流量和资源,提高加载效率,采用的是动态加载(懒加载)的,也就是当拖动页面右侧滚动条后会自动加载网页下面的内容,不拖动就不会加载的或者通过鼠标滚轮操作。2.wheel模拟鼠标滚动wheel模拟鼠标滚动,就是通过调度一个wheel事件。(滚轮事件如果不处理可能会导致滚动,......
  • gRPC入门学习之旅(八)
     gRPC入门学习之旅(一)gRPC入门学习之旅(二)gRPC入门学习之旅(三)gRPC入门学习之旅(四)gRPC入门学习之旅(五)gRPC入门学习之旅(六) gRPC入门学习之旅(七) 3.7、添加proto协议文件1.将服务端项目Demo.GrpcService中的Protos目录中的Grpc协议文件复制过来,如下图所示:......