Alice,这位令人惊异的魔术天才,正表演关于人类意念的神秘技巧。她将在Bob选牌之前猜中Bob将选的牌!注意Alice在一张纸上写出她的预测。Alice很神秘地将那张纸片装入信封中并封上。就在人们吃惊之时Alice将封好的信封随机地递给一观众。“取一张牌,Bob,任选一张”。他看了看牌而后将之出示给Alice和观众。是方块7。现在Alice从观众那里取回信封,并撕开它。在Bob选牌之先写的预测,也是:方块7!全场欢呼!

这个魔术的要点在于,Alice在戏法的最后交换了信封。然而,密码协议能够提供防止这种花招的方法。这为什么有用?下面是一个更实际的故事:

股票经纪人Alice想说服投资商Bob她的选取赢利股票的方法很不错。

Bob说:“给我选5支股票,如果都赢利,我将把生意给你。”

Alice说:“如果我为你选了5只股票,你可以自己对他们投资,而不用给我付款。我为什么不向你出示我上月选的股票呢?”

Bob:“我怎样知道你在了解了上月股票的收益后没改变你上月选择的股票呢?如果你现在告诉我你选的股票,我就可以知道你不能改变他们。在我买你的方法以前我不在这些股票中投资。相信我。”

Alice:“我宁愿告诉你我上月选择的股票。我不会变,相信我。”

Alice想对Bob承诺一个预测(即1bit或bit序列),但直到某个时间以后才揭示她的预测。而另一方面,Bob想确信在Alice承诺了她的预测后,她没有改变她的想法。

使用对称密码算法的比特承诺

这个比特承诺协议使用对称密码:

(1)Bob产生一个随机比特串R,并把它发送给Alice。

R

(2)Alice生成一个由她想承诺的比特b组成的消息(b实际上可能是几个比特),以及Bob的随机串。她用某个随机密钥K对它加密,并将结果送回给Bob。

EK(R,b)

这是这个协议的承诺部分,Bob不能解密消息,因而不知道比特为何。

当到了Alice揭示她的比特的时候,协议继续:

(1)Alice发送密钥给Bob;

(2)Bob解密消息以揭示比特。他检测他的随机串以证实比特的有效性。

如果消息不包含Bob的随机串,Alice能够秘密地用一系列密钥解密她交给Bob的消息,直到找到一个给她的bit,而不是她承诺的比特。由于比特只有两种可能的值,她只需试几次肯定可以找到一个。Bob的随机串避免了这种攻击,她必须能找到一个新的消息,这个消息不仅使她的比特反转,而且使Bob的随机串准确地重新产生。如果加密算法好,她发现这种消息的机会是极小的。Alice不能在她承诺后改变她的比特。

使用单向函数的比特承诺

本协议利用单向函数:

(1)Alice产生两个随机比特串,R1和R2。

R1,R2

(2)Alice产生消息,该消息由她的随机串和她希望承诺的比特(实际上可能是几比特)组成。

(R1,R2,b)。

(3)Alice计算消息的单向函数值,将结果以及其中一个随机串发送给Bob。H(R1,R2,b),R1。

这个来自Alice的传送就是承诺证据。Alice在第(3)步使用单向函数阻止 Bob对函数求逆并确定这个比特。

当到了要Alice出示她的比特的时候,协议继续:

(4)Alice将原消息发给Bob。

(R1,R2,b)

(5)Bob计算消息的单向函数值,并将该值及R1与原先第(3)步收到的值及随机串比较。如匹配,则比特有效。

这个协议较前面一个的优点在于Bob不必发送任何消息。Alice送给Bob一个对比特承诺的消息,以及另一揭示该bit的消息。

这里不需要Bob的随机串,因为Alice承诺的结果是对消息进行单向函数变换得到的。Alice不可能欺骗,并找到另一个消息(R1,R2’,b’),满足

H(R1,R2’,b’)=(R1,R2,b)

通过发给Bob  R1,Alice对b的值作了承诺。如果Alice不保持R2是秘密的,那么Bob能够计算H(R1,R2,b’)和(R1,R2,b),并比较哪一个等于他从Alice那里接收的。

使用伪随机序列发生器的比特承诺

本协议是更容易的[1137]:

(1)Bob产生随机比特串,并送给Alice。

RB

(2)Alice为伪随机比特发生器生成一个随机种子。然后,对Bob随机比特串中的每一比特,她回送Bob下面两个中的一个:

(a)当Bob比特为0,发生器的输出,或者

(b)如果Bob的比特为1,发生器输出与她的比特的异或。

当到了Alice出示她的比特的时候,协议继续:

(3)Alice将随机种子送给Bob。

(4)Bob完成第(2)步以确认Alice的行动是合理的。

如果Bob的随机比特串足够长,伪随机比特发生器不可预测,这时Alice就无有效的方法进行欺诈。

模糊点

Alice送给Bob以便对比特承诺的这些串有时又叫模糊点。一个模糊点是一个比特序列,虽然在协议中没有说明它为什么必须这样,正如Gilles Brassard所说的,“只要是合理存在的就是有用的”[236]。模糊点有下面四个特性:

1.Alice能够对模糊点承诺,通过承诺模糊点来承诺一个比特。

2.Alice能够打开她所承诺的任何模糊点。当她打开模糊点时,她能让Bob相信在她对模糊点承诺时她所承诺的比特值。因此,她不能选择把任何模糊点作为0或1打开。

3.Bob不知道Alice如何打开承诺了的但尚未打开的模糊点。即使Alice打开别的模糊点之后,也是如此。

4.模糊点所带的信息除Alice承诺的比特外,不再有任何信息。模糊点本身,连同Alice承诺和开启模糊点的过程,与Alice希望对Bob保密的别的东西不相关。

--------------------- 

作者:simanstar 

来源:CSDN 

原文:https://blog.csdn.net/simanstar/article/details/50965931 

版权声明:本文为博主原创文章,转载请附上博文链接!

fuzzy commitment 和fuzzy vault的更多相关文章

  1. Data Flow ->> Fuzzy Lookup & Fuzzy Grouping

    这两个任务的作用是数据清洗(Data Cleansing). Fuzzy Lookup通过引用另外一张数据库表或者索引来进行相似值匹配.这种组件对于标准化和查找可能错误的客户端数据非常有用.例如像地址 ...

  2. Umbraco Examine 实现Fuzzy search

    在Umbraco examine search项目开发中,有一个需求, 就是intercom 和 intercoms需要返回同样的结果 也就是说 搜索intercom 时, 能返回包含intercom ...

  3. elasticsearch-查询基础篇

    elasticsearch的查询有两部分组成:query and filter. 两者的主要区别在于:filter是不计算相关性的,同时可以cache.因此,filter速度要快于query. 先记录 ...

  4. Elasticsearch学习笔记(一)

    批量建索引: curl -s -XPOST 'localhost:9200/_bulk' --data-binary @documents.json 查看索引mappingmyindex/_mappi ...

  5. js+css3文字模糊代码

    在写文字模糊的时候要理清自己的思路,根据以下的步骤来: 对你要模糊的文字进行布局 <body style="background:#ccc;"> <ul clas ...

  6. SSIS:控件清单

    Control Flow 控制流程 Containers 容器 For Loop Container Foreach Loop Container Sequence Container Core Ta ...

  7. elasticsearch-查询的基本语法

    elasticsearch的查询有两部分组成:query and filter. 两者的主要区别在于:filter是不计算相关性的,同时可以cache.因此,filter速度要快于query. 先记录 ...

  8. Oracle 10g 数据文件的第一个数据块结构

    一.数据文件的第一个数据块结构kcvfh BBED> set file 1 FILE# 1 BBED> set block 1 BLOCK# 1 --查看第一个数据块的整体结构 BBED& ...

  9. Lucene 搜索功能

    搜索过程 图解: 主要 API: IndexSearcher:    //所有搜索都通过 IndexSearcher 进行,他们将调用该类中重载的 search() 方法 Query:         ...

随机推荐

  1. 2019河北省大学生程序设计竞赛(重现赛)J-舔狗 (拓扑排序)

    题目链接:https://ac.nowcoder.com/acm/contest/903/J 题意:给你 n 个舔狗和他喜欢的人,让你俩俩配对(只能和喜欢它的和它喜欢的),求剩下的单身狗数量. 思路: ...

  2. js文本框焦点自动聚焦到下个文本框

    HTML: <form> <input type="text" name="text1" maxlength="3" si ...

  3. Oracle中NEXTVAL 和 CURRVAL的使用

    能够通过在 SQL 语句中使用 NEXTVAL 或 CURRVAL 运算符来訪问序列的值.必须用以 sequence.NEXTVAL 或sequence.CURRVAL 格式驻留在同一个数据库中的序列 ...

  4. webapi 给自己挖的坑

    这次做项目,负责开发web api. 自己给自己挖了个坑.在所有的api接口前面都加上一个static . 结果检查路由配置.代码等等都找不到问题所在. 最后在一个同事的提醒下,原来是static给惹 ...

  5. WdatePicker设置时间与倒计时

    之前苦于jQuery的datetimepicker插件不知道如何设置秒数,用了同学推荐的WdatePicker,真心好用. 相关文档用法可以上http://www.my97.net/dp/index. ...

  6. Vue报错type check failed for prop

    在报错的'value'属性前面加:或者去掉:即可解决问题.

  7. 如何配置vue-cli4.0

    这是一期主要分享vue-cli4.0配置 新建一个项目,最令人为难的是配置环境.拿vue来说,创建项目很简单,跟着文档走即可,但是要知道配置本地,测试,生产环境,以及反向代理等等,如果对于一个对vue ...

  8. delphi JPG转为BMP存入数据库

    delphi  JPG转为BMP存入数据库   必须在uses中引用JPEG procedure TForm1.BitBtn3Click(Sender: TObject);varjpg:TJPEGim ...

  9. Vue的data选项使用注意

    使用组件时,大多数可以传入到Vue构造器中的选项可以在Vue extend()或 Vue.component() 中注册组件时使用,但是有一个重要的前提:data必须是函数 .在 var vm = n ...

  10. 动态隐藏显示窗口的标题栏(同时保持窗口的sizeable性能

    今天考虑作界面的时候,想去掉窗体的标题栏,但设置 Form.BorderStyle := bsNone; 会导致窗体不可再 Sizeable (通过鼠标操作改变窗体大小),仔细翻看了相关Help也没找 ...