比特承诺 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个比特位,拷 ...
随机推荐
- mysql Slave 启动失败
报错日志 Slave failed to initialize relay log info structure java程序访问日志显示事物查询失败,排查mysql 发现其中一台slave 启动状态 ...
- Flink on YARN(下):常见问题与排查思路
Flink 支持 Standalone 独立部署和 YARN.Kubernetes.Mesos 等集群部署模式,其中 YARN 集群部署模式在国内的应用越来越广泛.Flink 社区将推出 Flink ...
- PHP缓存技术简单介绍
一.数据缓存 这里所说的数据缓存是指数据库查询缓存,每次访问页面的时候,都会先检测相应的缓存数据是否存在,如果不存在,就连接数据库,得到数据,并把查询结果序列化后保存到文件中,以后同样的查询结果就直接 ...
- File、FileFilter、递归初步
java.io.File 文件和目录 路径名的抽象表示形式 文件:File 存储数据的 目录:Directory 文件夹 用来存储文件 路径:Path 定位具有平台无关性 在任意平台都可以使用 Fil ...
- 《DSP using MATLAB》Problem 8.39
代码: %% ------------------------------------------------------------------------ %% Output Info about ...
- Django之单表查询——神奇的双下划线
1.filter中的单表查询 # 查询id>1且id<4的结果 ret = models.Person.objects.filter(id__gt=1,id__lt=4) print(re ...
- 华为-eNSP模拟器路由器无法正常启动一直显示“#”
问题项如截图: 解决方案: 1. 打开自己电脑的控制面板 -->> 系统和安全 -->> Windows Defender防火墙 (运行应用通过Windows防火墙) 2 .找 ...
- Caffe系列1——网络文件和求解分析
1. 首先,我们先看一个完整的文件:lenet_train_test.prototxt name: "LeNet" #整个网络的名称 layer { #数据层——训练数据 name ...
- 【学术篇】oj.jzxx.net2701 无根树
这是一道来自OIerBBS的题目.. 原帖地址:http://www.oierbbs.com/forum.php?mod=viewthread&tid=512?fromuid=71 (似乎是个 ...
- Oracle使用语句块之循环插入数据
1.业务要求: 将oracle表A的整表的数据一次性导入到表B中 , 以A_ID为外键关联. (*******如果开发环境和实际生产环境的数据一致,而且数据量比较小情况,可以直接手动添加数据; ** ...