密码学 | Random Oracle 随机预言机

news2024/10/1 23:37:49

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

🥑答主指出: 英文维基明明对 随机预言机 给出了两个完全不同的理解,但这两个理解之间的连接词却是 “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://www.coloradmin.cn/o/1613795.html

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

相关文章

LabVIEW多设备控制与数据采集系统

LabVIEW多设备控制与数据采集系统 随着科技的进步,自动化测试与控制系统在工业、科研等领域的应用越来越广泛。开发了一种基于LabVIEW平台开发的多设备控制与数据采集系统,旨在解决多设备手动设置复杂、多路数据显示不直观、数据存储不便等问题。通过RS…

c语言利用控制台实现贪吃蛇

使用控制台实现贪吃蛇需要的技能加点: 控制台设置(包含于stdlib.h): 定义命令行窗口高/宽: system("mode con cols100 lines30"); system() 函数是一个C标准库函数,它允许程序执行操作系统命令…

Java中创建对象内存分析

package day31; ​ public class Pet {String name;int age;public void shout(){System.out.println("叫了一声");} } ​ package day31; ​ public class Application {public static void main(String[] args) {Pet cat new Pet();cat.name"肥波";cat…

Linux——网络管理nmcli

nmcli 不能独立使用,需要对应的服务启动 1. NetworkManager.service 2. 网络配置和服务不相关 3. 通过 nmcl i 建立网络配置和网卡之前的映射关系 网卡 简称:nmcli d DEVICE :物理设备 TYPE: 物理设备类型 ethernet 以太网…

螺纹滑牙的原因有哪些——SunTorque智能扭矩系统

螺纹滑牙的原因,通常是由于在旋紧或旋松过程中,螺纹副之间的摩擦力不足以维持所需的预紧力或工作载荷,导致螺纹副的相对位置发生变化。这种现象可能由多种因素引起,包括材料选择不当、设计不合理、制造工艺缺陷、环境因素以及使用…

AI大模型探索之路-实战篇3:基于私有模型GLM-企业级知识库开发实战

文章目录 前言概述一、本地知识库核心架构回顾(RAG)1. 知识数据向量化2. 知识数据检索返回 二、大模型选择1. 模型选择标准2. ChatGLM3-6B 三、Embedding模型选择四、改造后的技术选型五、资源准备1. 安装git-lfs2. 下载GLM模型3. 下载Embeding模型 六、…

Java、Spring、Dubbo三者SPI机制原理与区别

Java、Spring、Dubbo三者SPI机制原理与区别 什么是SPI SPI全称为Service Provider Interface,是一种动态替换发现的机制,一种解耦非常优秀的思想,SPI可以很灵活的让接口和实现分离,让api提供者只提供接口,第三方来实…

【嵌入式】keil5安装(同时兼容C51和STM32)

最近在开发STM32的时候,安装Keil5,遇到STM32和C51的共存的问题,在网上找了很多方法,又遇到一些bug,最终还是弄好了。因此将处理的过程记录下来,希望对遇到相同问题的朋友一些启发。 1、下载安装包 Keil P…

判断水仙花数(C语言)

一、N-S流程图&#xff1b; 二、运行结果&#xff1b; 三、源代码&#xff1b; # define _CRT_SECURE_NO_WARNINGS # include <stdio.h>int main() {//初始化变量值&#xff1b;int n 0;int b 0;int s 0;int g 0;int m 0;//提示用户&#xff1b;printf("请输入…

贪吃蛇游戏实现(VS编译环境)

贪吃蛇游戏 &#x1f955;个人主页&#xff1a;开敲&#x1f349; &#x1f525;所属专栏&#xff1a;C语言&#x1f353; &#x1f33c;文章目录&#x1f33c; 0. 前言 1. 游戏背景 2. 实现后游戏画面展示 3. 技术要求 4. Win32 API介绍 4.1 Win32 API 4.2 控制台程序 4.…

开启农业新篇章:山海鲸智慧农业解决方案全面解析

在农业领域&#xff0c;数字化转型已经成为推动农业发展的重要力量。山海鲸&#xff0c;作为农业科技创新的引领者&#xff0c;推出了全新的智慧农业解决方案&#xff0c;通过运用先进的物联网、大数据和人工智能等技术&#xff0c;为农业生产提供智能化、精准化的管理服务&…

c++模拟实现list——详讲双链表--链表

在C语言中我们已经模拟实现了list&#xff0c;现在对比c看看二者的区别 双链表————详讲 个人博客主页&#xff1a; 个人主页 个人码云 码云代码 文章目录 目录 文章目录 ​编辑 前言 一、list是什么&#xff1f; 二、list的使用 三、模拟实现list和搭建list的结构 1.节点结…

孩子用什么样的灯对眼睛没有伤害?分享五款防近视护眼台灯

随着生活条件逐渐提升&#xff0c;对台灯的需求也越来越大&#xff0c;不管在生活中还是工作中&#xff0c;灯具是必不可少的照明工具了&#xff0c;尤其是对于学生而言。很多家长都在寻找孩子用什么样的灯对眼睛没有伤害&#xff1f;建议最好选择一款合格、专业的护眼台灯&…

SpringBootWeb请求

文章目录 前言一、Postman介绍 二、简单参数三、实体参数四、数组集合参数五、日期参数六、JSON参数七、路径参数 前言 在上一篇文章中&#xff0c;已经基于SpringBoot的方式开发一个web应用&#xff0c;浏览器发起请求 /hello 后 &#xff0c;给浏览器返回字符串 “Hello Wor…

STM32之HAL开发——FSMC—扩展外部SRAM

SRAM读写时序 对SRAM进行读写数据时&#xff0c;它各个信号线的时序流程如下图 &#xff08;图一&#xff09;SRAM的读时序 &#xff08;图二&#xff09;SRAM的写时序 流程解释 主机使用地址信号线发出要访问的存储器目标地址&#xff1b;控制片选信号CS1#及CS2#使能存储器…

力扣HOT100 - 25. K 个一组翻转链表

解题思路&#xff1a; class Solution {public ListNode reverseKGroup(ListNode head, int k) {ListNode dum new ListNode(0, head);ListNode pre dum;ListNode end dum;while (end.next ! null) {for (int i 0; i < k && end ! null; i) {end end.next;}if …

生成式AI产品图谱全览:投资人、产品经理必备指南

以下是生成式AI产品图谱的核心要点&#xff0c;供投资人、产品经理等关注生成性AI领域的专业人士参考&#xff1a; 技术领域细分&#xff1a;依据AI技术所处理的媒介类型进行划分&#xff0c;包括文本处理、代码生成、图像处理、语音识别、视频分析、3D模型构建、音乐创作和游戏…

深度学习项目设置超参数 parser or dictionary

见惯了parser 有的人却是用字典读的&#xff1a; 将配置文件config.yaml读取到一个dictionary类型的变量cfg中&#xff0c; 后面出现了这样的语句&#xff1a;cfg["trainer"].get("sup_only_epoch", 1): 意思是&#xff1a;在config.yaml文件里key为trai…

Java客户端如何直接调用es的API

Java客户端如何直接调用es的API 一. 问题二. withJson 前言 这是我在这个网站整理的笔记,有错误的地方请指出&#xff0c;关注我&#xff0c;接下来还会持续更新。 作者&#xff1a;神的孩子都在歌唱 一. 问题 今天做项目的时候&#xff0c;想要直接通过java客户端调用es的api…

PHP反序列化漏洞原理(附带pikachu靶场演示)

1.反序列化概念 序列化:是将变量转换为可保存或传输的字符串的过程;实现函数是serialize()反序列化:就是在适当的时候把这个字符串再转化成原来的变量使用&#xff0c;就是序列化的逆过程。实现函数是unserialize() 直白一点就是&#xff1a;序列化是把对象转换成字节流&#…