比特承诺 Bit Commitment
Introduction—A story
Alice:股票经纪人
Bob:股民
Alice:你的钱交给我,我替你买股票,我专业,挣钱多!
Bob:怎么证明?
Alice:我们上月买进的10只股票都上涨了10%以上,我可以让你看看我上月选择的股票情况。
Bob:这不可靠,你现在完全可以在知道股票的情况后,告诉我你原来选择的就是这些上涨的股票。如果你告诉 我现在选择哪些股票,一个月后她们能上涨多少,而一个月后这些股票确实如此,我就相信你。
Alice:这对我不公平,你可能直接用你的钱去买我选择的股票,一个月后你赚了钱,仍然不让我替你购买。
Bob: 你的担心也对,那么我们这样做好吗?你拿一个坚固的箱子和一把锁,把你现在选择的股票写到一张纸上,装到箱子里锁上,你把钥匙带走,把箱子留在我这里。一个月之后你到我这里,当面打开箱子,如果你选的股票确实如你所预料的上涨了,我就把钱交给你,让你替我购买。行吗?
Alice:好!这个方法好,多我们都公平。
他们这样做了,一个月后检验发现Alice的预测是正确的,Bob把的钱交给了Alice。
Definition of Bit Commitment
比特承诺(Bit Commitment,BC)是密码学中的重要基 础协议,其概念最早由1995 年图灵奖得主Blum
提出。比特承诺方案可用于构建零知识证明、可验证秘密 分享、硬币投掷等协议,同时和茫然传送一起构成安全双方计算的基础,是信息安全领域研究的热点。
比特承诺的基本思想如下:发送者Alice 向接收者Bob 承诺一个比特b (如果是多个比特,即比特串t ,则称为比特 串承诺),要求:在第1 阶段即承诺阶段Alice 向Bob 承诺这个比特b ,但是Bob 无法知道b 的信息;在第2 阶段即揭示 阶段Alice 向Bob 证实她在第1 阶段承诺的确实是b ,但是 Alice 无法欺骗Bob(即不能在第2 阶段篡改b 的值)。
经典环境中关于比特承诺的一个形象的例子是:Alice 将待承诺的比特或秘密写在一张纸上,然后将这张纸锁进一个保险箱,该保险箱只有唯一的钥匙可以打开。在承诺阶段, Alice 将保险箱送给Bob,但是保留钥匙;到了揭示阶段,Alice 将比特或秘密告诉Bob,同时将钥匙传给Bob 使其相信自己的承诺。需要指出的是,保险箱不能被“暴力破解” 的性质甚至允许Alice 在揭示阶段无需向Bob 说明承诺的比特或秘密,只要将钥匙发送给Bob 即可。
一个比特承诺方案必须具备下列性质:
*正确性: 如果Alice 和Bob 均诚实地执行协议,那么在 揭示阶段Bob 将正确获得Alice 承诺的比特b 。
*保密性: 在揭示阶段之前Bob 不能获知b 的信息 。
*绑定性: 在承诺阶段结束之后,Bob 只能在揭示阶段获得唯一的b 。
三方比特承诺模型
在该模型下,承诺者由一人变为二人Alice 与Bob,由此二人共同向第三方Chris 承诺一个比特或比特串。承诺阶段之前,Alice 与Bob 可以自由通信以商定承诺内容,但是在协议开始以后,要求Alice 与Bob 无法再进行通信。
由Alice 向Chris承诺b。
由Bob 负责向Chris 揭示b 的信息,因此Alice 没有任何作弊的可能,即无法破坏协议的绑定性。
三方参与的安全模型在实际生活中是有很多应用的,例如在博弈论的经典“囚徒困境”模型中,两个纵火嫌疑犯即 可以视作证明者,他们在被抓住以前可以自由交流(例如商定
问讯对策),被抓以后将被警察(验证者)分开审讯。如果这两 个嫌疑犯均“忠实”地在审讯过程中坚持否认纵火事实,那么他们将获得集体最优结果。又如,由两家单位合作来对某 个大型项目进行投标(例如资金与技术的合作),则这两家单位和招标方构成三方承诺模型。
比特承诺 Bit Commitment的更多相关文章
- fuzzy commitment 和fuzzy vault
Alice,这位令人惊异的魔术天才,正表演关于人类意念的神秘技巧.她将在Bob选牌之前猜中Bob将选的牌!注意Alice在一张纸上写出她的预测.Alice很神秘地将那张纸片装入信封中并封上.就在人们吃 ...
- Scrum 是什么?
Scrum 是什么? Scrum 是当前最流行的敏捷软件开发方法论和实施框架.但就像人们对 “Agile” 术语的不同理解一样,不同的人对 “Scrum” 也有着不同的理解.那么,到底 Scrum 是 ...
- Scrum总结
Scrum总结一个轻量级的软件开发方法 Scrum是一个敏捷开发框架,是一个增量迭代的开发过程..在这个框架整个开发周期由若干个小的跌代周期,每个小的的跌代周期称为一个Sprint,每个Sprint的 ...
- 如何成为一位优秀的ScrumMaster
嗨,大家好,我是叶子 背景介绍 目标:为了能更好的适应快速变化的需求和不确定的未来. 部门包含岗位:部门负责人.项目经理.产品经理.开发团队(开发人员.测试人员) 那么这种情况下,我们想转型Scrum ...
- .NET 云原生架构师训练营(模块二 基础巩固 Scrum 核心)--学习笔记
2.7.2 Scrum 核心 3个工件 5个会议 5个价值观 3个工件 产品待办列表(Product Backlog) Sprint 待办列表(Sprint Backlog) 产品增量(Product ...
- 承诺会计/预留款会计(commitment accounting/Encumbrance Accounting) in AX 2012
作者:umfish 博文 http://blog.csdn.net/umfish/article/details/7751397 如果要使用Encmubrance Accounting, 需要先在G ...
- 使用C#处理基于比特流的数据
使用C#处理基于比特流的数据 0x00 起因 最近需要处理一些基于比特流的数据,计算机处理数据一般都是以byte(8bit)为单位的,使用BinaryReader读取的数据也是如此,即使读取bool型 ...
- AngularJs $q 承诺与延迟
$q 一个帮助处理异步执行函数的服务.当他们做完处理时,使用它们的返回值(或异常). 受 Kris Kowa’s Q 的启发,这是一个实现promise/deferred对象的启用. $q的两种方式- ...
- 一个按比特位拷贝数据的函数copybits
一个按比特位拷贝数据的函数 没有进行特别的优化.其实还可以在拷贝源开始位置和目标开始位置是2的整数倍位置的时候进行优化. 说明 这个函数用于从src数组首地址跳过sbb个字节,又跳过ssb个比特位,拷 ...
随机推荐
- MongoDB4.0及以上的版本安装时无法启动服务。
问题描述:MongoDB安装过程中启动服务失败,点击忽略之后,可以安装完成.安装完成之后提示重启电脑,出现电脑蓝屏. 并且修复好电脑之后无法启动MongoDB服务. 暂时不知道原因(怀疑是MongoD ...
- JAVA数据结构之二叉树
用树作为存储数据的结构兼具像数组一样查询速度快和像链表一样具有很快的插入和删除数据项的优点 我们用圆点表示节点,连接圆的直线表示边如下图所示就表示了一颗树,接下来我们讨论的二叉树即每个节点最多只有两个 ...
- CSS——滑动门技术及应用
先来体会下现实中的滑动门,或者你可以叫做推拉门: 滑动门出现的背景 制作网页时,为了美观,常常需要为网页元素设置特殊形状的背景,比如微信导航栏,有凸起和凹下去的感觉,最大的问题是里面的字数不一样多,咋 ...
- JavaScript中的文档对象模型
1. DOM基本介绍1 什么是DOMDOM的英语全称为Document Object Model,翻译成中文就 是文档对象模型.也就是说,将整个文档看作是一个对象.而一个文档又是由很多节点组成的, 那 ...
- VS2010-MFC(状态栏的使用详解)
转自:http://www.jizhuomi.com/software/219.html 上一节讲了工具栏的创建.停靠与使用,本节来讲解状态栏的知识. 状态栏简介 状态栏相信大家在很多窗口中都能见到, ...
- 同步异步,异步回调,线程队列,线程时间Event
同步异步-阻塞非阻塞 阻塞-非阻塞 指的是程序的运行状态 阻塞:当程序执行过程中遇到了IO操作,在执行IO操作时,程序无法继续执行其他代码,称为阻塞. 非阻塞:程序在正常运行没有遇到IO操作,或者通过 ...
- iOS开发JSON字符串和字典互转
1.相关属性简述 NSJSONReadingOptions读取属性: typedef NS_OPTIONS(NSUInteger, NSJSONReadingOptions) { NSJSONRead ...
- fastjson 过滤不需要序列化的属性
JSON JSON英文全称为JavaScriptObject Natation,采用key:value键值对的方式存贮数据,与xml格式相比,JSON是一种轻量级的数据交换格式:不要被JavaScri ...
- 《DSP using MATLAB》Problem 8.37
代码: %% ------------------------------------------------------------------------ %% Output Info about ...
- vue导航条选中项样式
html: <div id="app"> <div class="collection"> <a href="#!&qu ...