密码学 | 承诺:基本概念

2024-04-18 11:28

本文主要是介绍密码学 | 承诺:基本概念,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

正文

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.chinasem.cn/article/914645

相关文章

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

【机器学习】高斯网络的基本概念和应用领域

引言 高斯网络(Gaussian Network)通常指的是一个概率图模型,其中所有的随机变量(或节点)都遵循高斯分布 文章目录 引言一、高斯网络(Gaussian Network)1.1 高斯过程(Gaussian Process)1.2 高斯混合模型(Gaussian Mixture Model)1.3 应用1.4 总结 二、高斯网络的应用2.1 机器学习2.2 统计学2.3

【Rocketmq入门-基本概念】

Rocketmq入门-基本概念 名词解释名称服务器(NameServer)消息队列(Message Queue)主题(Topic)标签(Tag)生产者(Producer)消费者(Consumer)拉取模式(Pull)推送模式(Push)消息模型(Message Model) 关键组件Broker消息存储工作流程 名词解释 名称服务器(NameServer) 定义: 名称服务器

密码学读书笔记小结

密码学是保证消息的私密性和完整性以及消息认证的基础。加密算法的选择和密钥的管理是安全机制的效率、性能和可用性的关键。 公钥加密算法: 分发密钥比较容易,但是对大数据量的加密性能较差密钥加密算法: 更适合大批的加密任务混合型加密协议: 例如TLS,先用公钥加密建立一个安全通道,然后使用通道交换密钥,并将此密钥用于后续数据交换。 对分布式系统攻击的分类: 窃听: 未经授权获得消息副本伪装: 在未

数据结构的基本概念和术语的一些介绍

数据:是客观事物的符号表示,包括两种:                  数值型(整数,实数)和非数值型(文字,图形,声音 数据元素:是数据的基本单位,通常作为一个整体进行表示。                  与数据的关系:是数据集合的个体 数据项:组成数据元素的不可分割的最小单位。 以上三者的关系:数据>数据元素>数据项                  例如:学生表>个人记录>

NISP | 密码学

关注这个证书的其他相关笔记:NISP 一级 —— 考证笔记合集-CSDN博客 通过上一章的学习,我们知道了,网络安全的 CIA 模型,而本期学习的“密码学”,则能为 CIA 模型提供很好的技术支持: 面临的攻击威胁所破坏的信息安全属性解决问题所采用的密码学技术截获(泄露信息)机密性对称密码和非对称密码篡改(修改信息)完整性哈希函数、数字签名、 对称密码和非对称密码伪造(伪造信息来源)真实

【DL--05】深度学习基本概念—函数式模型

函数式模型 函数式模型算是本文档比较原创的词汇了,所以这里要说一下 在Keras 0.x中,模型其实有两种,一种叫Sequential,称为序贯模型,也就是单输入单输出,一条路通到底,层与层之间只有相邻关系,跨层连接统统没有。这种模型编译速度快,操作上也比较简单。第二种模型称为Graph,即图模型,这个模型支持多输入多输出,层与层之间想怎么连怎么连,但是编译速度慢。可以看到,Sequentia

【DL--04】深度学习基本概念—data_format

data_format 这是一个无可奈何的问题,在如何表示一组彩色图片的问题上,Theano和TensorFlow发生了分歧,’th’模式,也即Theano模式会把100张RGB三通道的16×32(高为16宽为32)彩色图表示为下面这种形式(100,3,16,32),Caffe采取的也是这种方式。第0个维度是样本维,代表样本的数目,第1个维度是通道维,代表颜色通道数。后面两个就是高和宽了。这种t

【DL--03】深度学习基本概念—张量

张量 TensorFlow中的中心数据单位是张量。张量由一组成形为任意数量的数组的原始值组成。张量的等级是其维数。以下是张量的一些例子: 3 # a rank 0 tensor; this is a scalar with shape [][1. ,2., 3.] # a rank 1 tensor; this is a vector with shape [3][[1., 2., 3.]

【DL--02】深度学习基本概念--符号计算

符号计算 Keras的底层库使用Theano或TensorFlow,这两个库也称为Keras的后端。无论是Theano还是TensorFlow,都是一个“符号式”的库。 因此,这也使得Keras的编程与传统的Python代码有所差别。笼统的说,符号主义的计算首先定义各种变量,然后建立一个“计算图”,计算图规定了各个变量之间的计算关系。建立好的计算图需要编译以确定其内部细节,然而,此时的计算图还