比特承诺 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个比特位,拷 ...
随机推荐
- cordova 插件发布到 npm
cordova 插件发布到 npm Cordova插件开发(3)- 将Cordova插件发布到npm could not find an installed version of gradle eit ...
- [190308]Ubuntu 安装完之后,安装的软件小记
install software vim sudo apt-get install -y vim Typora command copy from Typora website # or run: # ...
- SQL Server install
{ https://www.cnblogs.com/ios9/p/9527939.html https://www.cnblogs.com/ios9/p/9527815.html //在安装工具中 安 ...
- 使用treeNMS管理及监控Redis
Redis做为现在web应用开发的黄金搭担组合,大量的被应用,广泛用于存储session信息,权限信息,交易作业等热数据.做为一名有10年以上JAVA开发经验的程序员,工作中项目也是广泛使用了Redi ...
- http://www.jianshu.com/简书。
http://www.jianshu.com/ 简书,类似于博客园.也是一个交流平台.
- 大数据和BI商业智能有何区别?有何相关
大数据和BI商业智能有何区别?有何相关 大数据 ≠BI商业智能,大数据也不是传统商业智能的简单升级. 1.大数据和BI两者的区别 BI(BusinessIntelligence)即商业智能,它是企业数 ...
- 线程池_ThreadPool
using System; using System.Collections.Generic; using System.Drawing; using System.Drawing.Imaging; ...
- CSS 常用的兼容性调试技巧
1.实现所有浏览器主页居中 Firefox下主页居中代码:.box{margin:0px auto} IE5.5下主页居中代码:body{text-align:center;} 将以上两种代码,合在一 ...
- 一次性安装python常用模块
链接:https://pan.baidu.com/s/1fuIxRUnkJJfzgrbQ8kIgvw 提取码:d1r6 电脑必须是win64才可以安装 Anaconda3安装完成后,不需要自己添加环境 ...
- java8 新特性学习笔记
Java8新特性 学习笔记 1主要内容 Lambda 表达式 函数式接口 方法引用与构造器引用 Stream API 接口中的默认方法与静态方法 新时间日期 API 其他新特性 2 简洁 速度更快 修 ...