密码学 | Random Oracle 随机预言机

🥑原文:究竟什么才是随机预言机呢? - 玄星的回答

🥑答主指出: 英文维基明明对 随机预言机 给出了两个完全不同的理解,但这两个理解之间的连接词却是 “Stated differently”,即 “换句话说”。此外,中文维基的翻译还有问题。

当然,两个理解都是正确的,答主接下来将对比着中文版和英文版进行解释。



1 理解一

中文版: 在密码学中,随机预言是一个预言(简单说像是理论的黑箱),对任何输入都返回一个真正均匀随机的输出(请参考离散型均匀分布)。不过对相同的输入,该预言每次都会返回一模一样的输出。

英文版: In cryptography, a random oracle is an oracle (a theoretical black box) that responds to every unique query with a (truly) random response chosen uniformly from its output domain. If a query is repeated it responds the same way every time that query is submitted.

相比之下,我觉得英文版说得好清楚啊😇

O ( x ) O(x) O(x) 表示 RO 对于输入 x x x 的输出, L L L 代表 O ( x ) O(x) O(x) 的长度。

在这里插入图片描述

我根据下述流程画的图,不知道对不对😇
后文的 { 0 , 1 } L \{0,1\}^L {0,1}L 应该就是指长度为 L L L 的 01 字符串,即仅由 0 和 1 组成的字符串。

访问者与 RO 的互动如下:

  1. 初始时 RO 维护一张空表,该表共有两列:一列存放输入,一列存放输出;
  2. 如果访问者进行第一次输入 x x x,那么 RO 均匀随机地从 { 0 , 1 } L \{0,1\}^L {0,1}L 中选择一个值 O ( x ) O(x) O(x),并分别把输入 x x x 和输出 O ( x ) O(x) O(x) 记录到表的两列中;
  3. 针对访问者进行第二次及以后的输入 y y y
  4. 如果 y y y 没有出现在表中的输入这一列,那么 RO 均匀随机地从 { 0 , 1 } L \{0,1\}^L {0,1}L 中选择一个值 O ( y ) O(y) O(y),并分别把输入 y y y 和输出 O ( y ) O(y) O(y) 记录到表的两列中;
  5. 反之,如果 y y y 出现过,那么 RO 直接把 y y y 对应的 O ( y ) O(y) O(y) 再次输出。

以上就是中文版中 真正均匀随机对重复值输出相同 的意思。

简而言之,答主认为英文版中的 repeated 是指 “重复出现的”,而不是中文版中翻译的 “相同的”。随后,答主通过对 “与访问者互动来确定 RO 状态” 这一过程的介绍来完成了解释。



2 理解二

中文版: 换句话说,随机预言是一个将所有可能输入与输出作随机映射的函数。

英文版: Stated differently, a random oracle is a random mathematical function, that is, a function mapping each possible query to a (fixed) random response from its output domain.

答主指出:中文版翻译又把 (fixed) 这个词给扔了,而这个词至关重要。

上述理解是指: 在访问者进行第一个输出之前,RO 的状态就以 某种方式 确定了。某种方式 是指,从所有 —— 输入可以是任意的 01 字符串,输出是长度为 L L L 的 01 字符串 —— 的函数集合中,均匀随机地选择一个函数 O O O,作为此次 RO 的状态。随后,以 O O O 的方式来回应访问者。其中, L L L 是安全参数 n n n 的函数。

不太懂什么安全参数?应该就是说 L L L 不是随便定的,而是 n n n 的函数吧?而且这个 n n n 还是系统的安全参数?

看看 Ran Canetti, Oded Goldreich, Shai Halevi 三位大家在 The Random Oracle Methodology, Revisited 这篇论文里对 RO 的描述吧,就是上述的理解:

It is postulated that all oracle queries, regardless of the identity of the party making them, are answered by a single function, denoted O O O, that is uniformly selected among all possible functions. The set of possible functions is determined by a length function L o u t ( ⋅ ) L_{out}(\cdot) Lout(), and by the security parameter of the system.

原论文地址:The Random Oracle Methodology, Revisited



3 题外话

一个 RO 通常被当作安全的 Hash 函数,但通常只能在一次证明中使用。也就是说,你不能把一个已经确定了状态并且已知部分输入输出关系的 RO 用到另一个证明中,即新证明最好使用空白的 RO 。

这就是为什么论文里总是针对不同环节单独设置 Hash 函数,而不是所有环节都使用同一个 Hash 函数?

举个论文的例子:

  • H c o m H_{com} Hcom: hash function { 0 , 1 } ∗ → { 0 , 1 } l \{0, 1\}^∗ → \{0, 1\}^l {0,1}{0,1}l, is used in the commitment phase.
  • H a g g H_{agg} Hagg: hash function { 0 , 1 } ∗ → { 0 , 1 } l \{0, 1\}^∗ → \{0, 1\}^l {0,1}{0,1}l, is used to compute the aggregated key.
  • H s i g H_{sig} Hsig: hash function { 0 , 1 } ∗ → { 0 , 1 } l \{0, 1\}^∗ → \{0, 1\}^l {0,1}{0,1}l, is used to compute the signature.

上面三个哈希函数的功能其实都一样,即将一个任意长度的 01 字符串映射为一个长度为 l l l 的 01 字符串,但要求在不同环节使用不同的哈希函数。



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

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

相关文章

【Axure教程0基础入门】05动态面板

05动态面板 1.动态面板是什么? 一个用来存放多个元件的容器(container) 其中包含多个状态(state),但同时只能显示一个 状态之间,可以通过交互动作(action)控制切换和动…

HackTheBox-Machines--Paper

文章目录 0x01 信息收集0x02 漏洞利用 CVE-2019–176710x03 CVE-2021-3560 权限提升 Paper 测试过程 0x01 信息收集 a.端口扫描: 发现 22、80、443 端口 nmap -sC -sV 10.129.206.1642. 访问 80 / 443端口,页面一致 检查页面,无可利用点。但是查看响应包…

微软github技术公开课(web开发、生成式AI、ML、数据科学、物联网)

一些微软在github上公开的课程整理: web开发基础入门 面向初学者的数据数据科学课程 https://microsoft.github.io/Data-Science-For-Beginners/#/ 面向初学者的AI入门课程 https://github.com/microsoft/ai-for-beginners 面向初学者的生成式AI课程 https://…

【可实战】测试体系与测试方案设计(业务按公司实际情况,技术可参考通用测试方案)

一、如果我们要测试一个系统,首先我们要了解被测系统的架构 (一)业务架构-从需求里面去了解(角色和行为): 业务模型分析(是一个电商,还是一个企业的crm,还是一个网站&a…

Oracle之RMAN连接数据库及备份与恢复(一)

一、rman的相关概念和配置参数 rman几个重要的概念 1、备份集 备份集是一个逻辑数据集合,有一个或者多个rman的备份片组成。 备份片:是rman格式的操作系统文件,包含了数据文件、控制文件和归档日志、 备份集是rman的默认的备份文件,是备份片的集合。一般一个通…

【C 数据结构】树

文章目录 【 1. 基本原理 】1.1 子树、空树1.2 有序数、无序树1.3 森林 【 2. 结点 】【 3. 度、层次、深度 】 【 1. 基本原理 】 树结构是一种 非线性存储结构,存储的是具有 一对多 关系的数据元素的集合。一对多 如下图中的左图所示,对于数据 A 来…

【电子通识】什么是8D分析法?8D步骤及用法?

在问题分析时往往会听到8D报告这样的词汇。如在电源专题【电源专题】案例:电源芯片厂家怎么判断电源芯片端口是否损坏中我们使用的图片就来源于电源芯片厂家的8D报告。 什么是8D分析法? 8D问题分析由美国国防部于1974年创立,当时用于军用物资采购保障。目前在汽车产业、组装…

谷歌收录工具有什么好用的?

如果是想促进谷歌的收录,其实能用的手段无非就两个,谷歌GSC以及爬虫池 谷歌gsc就不用说了,作为谷歌官方提供的工具,他能提供最准确的数据,并且可以提交每天更新的链接,进而促进收录,只要你的页面…

ApiHug 的初心-ApiHug101

视频 秒懂 ApiHug -019 HOPE 🔥 H.O.P.E.: Help other people excellent 💝 是这个项目最初的初心 🤗 ApiHug {Postman|Swagger|Api...} 快↑ 准√ 省↓ 🏠 gitee github search ApiHug ApiHug 🤗 ApiHug {Post…

机器人模型匹配控制(MPC)MATLAB实现

模型匹配控制(Model matching control)是指设计一个控制器使闭环系统的传递函数tf(s)与td(s)相一致! mpcDesigner 可以分为: 2时域精确模型匹配控制3频域精确模型匹配控制 机械臂控制中应用模型匹配控制(Model Matc…

平衡二叉树(AVLTree)

AVLTree 1、树的分类2、平衡二叉树2.1、构建一个平衡二叉树2.2、删除节点2.3、搜索方式2.3.1、广度优先搜索(BFS)2.3.2、深度优先搜索(DFS) 1、树的分类 树形结构是编程当中特别常见的一种数据结构。比如电脑中的文件管理系统就大…

信息打点--公众号服务

微信公众号 获取微信公众号的途径https://weixin.sogou.com/ 微信公众号没有第三方服务 Github监控 人员&域名&邮箱 eg:xxx.cn password in:file https://gitee.com/ https://github.com/ https://www.huzhan.com/ 资源搜索 in:name test 仓库标题搜索含有…

C语言中字符串函数以及内存函数的使用和注意事项

目录 0. 前言 1、求字符串长度函数 1.1、strlen 模拟实现 2.长度不受限制的字符串函数 2.1 strcpy 模拟实现 2.2strcat 模拟实现 2.3strcmp 模拟实现 3.长度受限制的字符串函数 3.1strncpy 3.2strncat 3.3strncmp 4、字符串查找函数 4.1strstr 模拟实现 3.2strt…

修复版最新精仿熊猫办公PPT模板图片素材整站源码+WAP手机端+会员系统+火车头采集

修复版最新精仿熊猫办公PPT模板图片素材整站源码WAP手机端会员系统火车头,采用Empirecms7.5版UTF-8开发,是一款非常高端的ppt模板,图片素材下载站模板非常适合大型图库下载站,配有手机端模板,支持自定义设置会员组&…

面试官:在原生input上面使用v-model和组件上面使用有什么区别?

前言 还是上一篇面试官:来说说vue3是怎么处理内置的v-for、v-model等指令? 文章的那个粉丝,面试官接着问了他另外一个v-model的问题。 面试官:vue3的v-model都用过吧,来讲讲。 粉丝:v-model其实就是一个语…

python使用redis存储时序数据

import redisdef ts_demo():"""时序数据存储RedisTimeSeries测试"""# 连接到Redisr redis.Redis(hostlocalhost, password"xxxx", port63790, db0)r1 r.ts()# print(r1.get("ts_key"))# print(r.exists(ts_key))# # 清空键…

【技巧】Git 版本控制工具没有图标提示怎么办?

Git 版本控制工具在日常开发中使用率是非常高的,多数情况下会安装 TortoiseGit 之类的插件,让文件夹显示图标,方便观察文件的状态。但是有时装完插件之后发现,文件夹/文件并没有图标显示,可以按照以下思路进行排查&…

Ts支持哪些类型和类型运算(上)

目录 1、元组 2、接口(interface) 3、枚举(Enum) 4、字面量类型 5、keyof 6、in keyof 7、类型的装饰 静态类型系统 就是把 类型检查从运行时提前到了编译时,所以ts类型系统中的许多类型与js并无区别 例如&am…

2024-4-22 群讨论:微服务启动预热相关

以下来自本人拉的一个关于 Java 技术的讨论群。关注公众号:hashcon,私信进群拉你 Hotspot JVM 进程启动后,流量到来的时候 JIT 吃掉很多 CPU,如何观察到? 很多途径都能观察到: top -Hp:这个需…

MTK6775/MT6775/曦力P70联发科处理器性能参数资料

联发科MT6775(曦力P70)芯片搭载强大的Arm Cortex-A73/A53八核CPU,并采用台积电12纳米FinFET制程工艺,相较于其他14纳米级别产品,功耗节省达到了15%。此外,曦力P70还配备了高效能的Arm Mali-G72 GPU,相比上一代产品曦力…