密码学 | 承诺:基本概念

目录

正文

1  承诺的交互

2  承诺的属性

3  硬币抛掷问题

3.1  朴素版方案

3.2  承诺版方案


🥑源自:https://en.wikipedia.org/wiki/Commitment_scheme

🥑写在前面:英文的承诺是 commitment scheme,否则很难进行检索。

正文

承诺方案 是一种密码学原语,它允许一个人对他们选择的价值(或选择的陈述)进行承诺,同时将其隐藏在其他所有人面前,并具有在 稍后揭示 所承诺价值的能力。

如上图所示,想象 发送者信息 放入一个带锁的盒子中,并将盒子交给 接收者。接收者无法打开锁,因此无法看到盒子中的信息。同时,由于接收者掌控着盒子,发送者也无法更改其中的信息 —— 发送者只能在稍后的某个时间提供钥匙进行揭示。

密码学中的承诺不同于日常生活中承诺的含义,请自行洗脑😇

承诺方案被设计成这样:一旦当事人对某个价值或陈述进行了承诺,他们就不能更改它。也就是说,承诺方案是具有 约束力 的。承诺方案在许多密码学协议中具有重要应用,包括安全的硬币翻转、零知识证明和安全的计算。 

1  承诺的交互

承诺方案中的交互分为两个阶段:

  • 承诺阶段,在此期间 发送者 选择一个值并对其进行承诺;
  • 揭示阶段,在此期间 发送者 揭示该值,然后 接收者 验证其真实性。

在这个隐喻中,承诺阶段是发送者将信息放入盒子并上锁。揭示阶段是发送者将钥匙交给接收者,接收者使用它来打开盒子并验证其内容。上锁的盒子是承诺,而钥匙是证明。 

你可能会觉得,这都是些什么颠公颠婆,直接把信息告诉对方不就得了吗?或许你看到后面的硬币抛掷问题会有所改观😈

2  承诺的属性

假设发送方选择的是 A 值并对其进行承诺:

  • 隐藏性:在打开承诺之前,接收方不知道发送方选择的是 A 值。
  • 绑定性:在打开承诺之后,发送方难以将已承诺的 A 值解释成 B 值。

在简单的协议中,承诺阶段由发送者向接收者发送的一条消息组成。这条消息被称为承诺。至关重要的是,在那个时候接收者无法得知所选的具体值。这称为隐藏属性。

一个简单的揭示阶段由一条消息组成,即发送者向接收者的开启消息,随后由接收者执行检查。在承诺阶段选择的值必须是发送者能够计算且在揭示阶段得到验证的唯一值。这称为绑定属性。 

3  硬币抛掷问题

假设 AliceBob 希望通过抛掷硬币来解决一些争议。

准确来说不是解决争议,而是 Alice 猜测 Bob 的投掷结果是什么。

3.1  朴素版方案

如果他们身处同一个地方,一个典型的程序可能是:

  1. Alice 喊出自己对抛掷结果的猜测;
  2. Bob 抛掷硬币;
  3. 如果 Alice 的猜测正确,那么她获胜,否则 Bob 获胜。

在 Alice 喊出 “正面” 或者 “背面” 的同时 Bob 抛掷硬币,如果硬币朝上的一面与 Alice 喊的一样,那么 Alice 获胜,否则 Bob 获胜。由于 Alice 和 Bob 身处同一个地方,因此 Alice 一眼就能看到 Bob 的抛掷结果,Bob 也听见了 Alice 的喊声,故二者都没有作弊的空间。

如果 Alice 和 Bob 不在同一个地方,问题就出现了。

如果 Alice 事先把自己的猜测通知给 Bob,那么 Bob 可以规定抛掷结果为他所希望的一切。同样地,如果 Alice 没有事先把自己的猜测通知给 Bob,那么在 Bob 抛掷硬币并宣布结果之后,Alice 可以声称她刚刚猜测的就是当前的抛掷结果。

情况一:Alice 通知 Bob 自己猜测的是 “正面”,那么即使 Bob 抛的是 “正面”,他也可以声称自己抛的是 “背面”,反正 Alice 也看不到。情况二:Alice 先不通知 Bob 自己猜测的是什么,而是先让 Bob 公布抛掷结果,那么即使 Alice 刚刚的猜测和抛掷结果不一致,她也可以声称自己猜测的就是当前的抛掷结果。

3.2  承诺版方案

Alice 和 Bob 仍然不在同一个地方

Alice 和 Bob 可以在程序中使用承诺,以使双方都能信任结果:

  1. Alice 告诉 Bob 她对 猜测承诺
  2. Bob 抛掷硬币并向 Alice 报告抛掷结果;
  3. Alice 告诉 Bob 她的 猜测
  4. Bob 检验 Alice 的 猜测 和她之前的 承诺 是否相匹配;
  5. 如果不匹配,说明 Alice 在撒谎,游戏终止,反之继续;
  6. 如果 Alice 的 猜测 与 Bob 报告的抛掷结果相匹配,那么 Alice 获胜。

每当你觉得步骤繁琐甚至冗余的时候,想想前面两个大骗子是怎么互相骗的就释怀了😇

由于在第 2 步的时候,Alice 已经知道抛掷结果了,因此她完全可以在第 3 步的时候谎称自己的猜测就是当前的抛掷结果。那么 Bob 该如何识破 Alice 的谎言呢?此时承诺就派上用场了。

补充:在第 2 步中,由于 Bob 手里只有 Alice 的 承诺 而非 Alice 的 猜测,因此 Bob 没有办法欺骗 Alice,只能老老实实地告诉 Alice 真实的抛掷结果。如果 Bob 这都想撒谎,那真是无语呢😇

简而言之,第 3 步 Alice 传给 Bob 的猜测可能是真的,也可能是假的。但由于承诺方案的存在,即使 Alice 撒谎,Bob 也能够轻松识破 Alice 的谎言。

在第 4 步中,Bob 是如何进行检验的呢?

如下图所示,事实上 Alice 在第 3 步除了要告诉 Bob 自己的猜测,还要告诉 Bob 自己生成承诺的方法。Bob 会根据这个方法和 Alice 传来的猜测生成一条新承诺。如果这个 新承诺老承诺 相同,那么说明 Alice 没有撒谎,反之则发现内鬼终止游戏。

这里就要求:只要信息没有改变,生成承诺的方法每次都应该为该信息生成一样的承诺。

说明:这里使用绿色是为了指明 Alice 可以传一条假的猜测。

为什么上述过程和前文说的打开上锁的盒子不太一样?

答:在实际操作中,上锁的盒子一般是打不开的。因此,Alice 只能告诉 Bob 自己的信息和上锁的方式是什么。如果 Bob 根据信息和上锁方式得到了一个一模一样的上锁的盒子,那么就能证明 Alice 发来的信息就是之前被承诺的信息。

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

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

相关文章

网络爬虫入门

爬虫(也被称为网络爬虫或网络蜘蛛)是一种自动化程序,它可以在互联网上自动抓取数据。爬虫的基本工作原理通常包括以下几个步骤:发送请求:爬虫向目标网站发送HTTP请求,请求网页内容。接收响应:爬…

根据 Figma 设计稿自动生成 Python GUI | 开源日报 No.221

ParthJadhav/Tkinter-Designer Stars: 8.0k License: BSD-3-Clause Tkinter-Designer 是一个用于快速创建 Python GUI 的工具,通过使用 Figma 设计软件,可以轻松地生成美观的 Tkinter GUI。 主要功能和优势包括: 拖放界面设计比手写代码更快…

百亿补贴低价的治理思路

各大电商平台都有陆续在推出百亿补贴通道,这对消费者来说,会更便捷,因为平台百亿补贴价格较低,不需要消费者再进行多链接、多平台的比价工作,直接下单即可,由于百亿补贴链接的上架主导权在平台,…

​面试经典150题——从前序与中序遍历序列构造二叉树

​ 1. 题目描述 2. 题目分析与解析 二叉树的前序、中序和后序遍历 二叉树的前序、中序和后序遍历是树的三种基本遍历方式,它们是通过不同的顺序来访问树中的节点的。 前序遍历(Pre-order traversal): 访问根节点 前序遍历左子树…

详细介绍医用PSA变压吸附制氧机设备的工艺特点

随着技术的不断进步,医用氧气作为一种重要的治疗资源,其供应方式也在不断地改进和升级。其中,医用PSA(Pressure Swing Adsorption,变压吸附)变压吸附制氧机设备因其高效、安全、稳定的特点,受到了广大机构的青睐。那么…

Java高阶私房菜:快速学会异步编程CompletableFuture

为了使主程代码不受阻塞之苦,一般使用异步编程,而异步编程架构在JDK1.5便已有了雏形,主要通过Future和Callable实现,但其操作方法十分繁琐,想要异步获取结果,通常要以轮询的方式去获取结果,具体如下&#x…

传统零售行业如何做数字化转型?

传统零售行业的数字化转型是一个系统性的过程,涉及到企业的多个方面。以下是一些关键步骤和策略,帮助传统零售企业实现数字化转型: 1、明确转型目标和战略 首先,企业需要明确数字化转型的目标和战略。包括确定企业的核心竞争力、…

照片光晕光学特效模拟调色Boris FX Optics 2024 mac下载安装教程

Boris FX Optics 2024 Mac版是一款照片光晕光学特效模拟调色软件,旨在模拟光学相机滤镜,专用镜头,胶卷和颗粒,镜头光晕,光学实验室处理,色彩校正以及自然光和摄影效果。用户可以通过应用光学并从160个滤镜和…

HAL STM32 I2C方式读取MT6701磁编码器获取角度例程

HAL STM32 I2C方式读取MT6701磁编码器获取角度例程 📍相关篇《Arduino通过I2C驱动MT6701磁编码器并读取角度数据》🎈《STM32 软件I2C方式读取MT6701磁编码器获取角度例程》📌MT6701当前最新文档资料:https://www.magntek.com.cn/u…

甘特图:项目管理者的必备神器,如何提高工作效率?

甘特图是什么?项目管理者大多都熟悉甘特图,它是一种直观展示项目计划执行过程的工具。通过条形图来显示项目、任务的时间安排,以及实际进度与计划进度的对比情况。 在我个人的项目管理实践中,甘特图确实帮助我提高了工作效率&am…

威纶通触摸屏与S7-1200进行标签通信(符号寻址)的具体方法示例

威纶通与S7-1200进行标签通信(符号寻址)的具体方法示例 前面和大家分享了威纶通与S7-1200通过绝对地址进行以太网通信的具体方法,具体内容可参考以下链接中的内容: 威纶通触摸屏与S7-1200以太网通信的具体方法和步骤(非常详细) 如下图所示,打开博途软件,新建一个项目,…

中国老铁路增开对国际旅客列车开行

4月13日,中老铁路国际旅客列车开行一周年之际,中老两国铁路部门在中国西双版纳至老挝琅勃拉邦两大著名旅游城市间增开1对国际旅客列车,旅客乘火车可实现两地间当日往返。标题:古道新程——中国老铁路增开国际旅客列车 在这个日新月…

图书管理系统概述

自友图书馆管理系统解决方案适用于中小学、大中专院校以及企事业单位中小型图书馆的自动化管理需求,其功能覆盖了图书馆自动化集成管理业务流程所包括的所有环节。《图书馆管理系统》首先应该按照我国图书馆行业通用CNMARC格式及《中图法第四版》行业标准开发而成,支…

linux运行ant 报错 Unable to locate tools.jar【已解决】

linux安装 ant 运行时报错 Unable to locate tools.jar. Expected to find it in /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.402.b06-1.el7_9.x86_64/lib/tools.jar 原因 已安装的jdk只有运行环境,没有tool.jar,而ant运行需要java开发环境,因…

第47篇:简易处理器<一>

Q:本期我们开始介绍一种数字系统----简易处理器,可以执行由指令指定的各种操作。 A:简易处理器包含多个9位寄存器、一个数据选择器、一个加/减法器单元和一个控制单元(有限状态机)。 数据选择器:可以将输入数据加载到各种寄存器&…

计算机网络-IS-IS基础概念二

前面已经学习了IS-IS的定义、组成、NET地址标识以及路由器级别分类等,今天继续学习IS-IS基础概念知识。 参考链接:IS-IS路由协议基础概念 一、IS-IS支持的网络类型 IS-IS会自动根据接口的数据链路层封装决定该接口的缺省网络类型, IS-IS支持两…

Biome 1.7 发布,支持从 ESLint 和 Prettier 迁移

近日,Biome v1.7 正式发布!这个新版本提供了从 ESLint 和 Prettier 迁移的简单路径。它还引入了格式化程序和 linter 的实验性机器可读报告、新的 linter 规则和许多修复。 使用以下命令更新 Biome: npm install --save-dev --save-exact b…

一篇文章带你快速认识区块链(必看)

引言 区块链技术,这一划时代的分布式账本技术,正在全球范围内掀起一场深度的信任与协作模式变革。区块链如同一部由多方共同维护的公开而又安全的大账本,每一笔交易都被打包成一个区块,通过高级密码学手段确保传输和访问安全&…

Axure如何实现限制选择项数量的交互

大家经常会看到这样的功能设计:可以多选,但是限制多选。比如某招聘网站城市的选择只能选择5个。再选择第6个的时候会提示最多只能选择5项。 这个效果是我们经常会遇到的,在工作中也经常会遇到需要制作这样的效果。今天我们一起来看看&#xf…

RabbitMQ-交换机

文章目录 交换机fanoutDirecttopicHeadersRPC 交换机 **交换机 **是消息队列中的一个组件,其作用类似于网络路由器。它负责将我们发送的消息转发到相应的目标,就像快递站将快递发送到对应的站点,或者网络路由器将网络请求转发到相应的服务器…