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. Java文件教程

    File类的对象是文件或目录的路径名的抽象表示. 创建文件 我们可以从以下创建一个File对象 - 一个路径名 一个父路径名和子路径名 一个URI (统一资源标识符) 可以使用File类的以下构造函数 ...

  2. 【NodeJS】Error: Cannot find module 'ms'

    报错原因: Error: Cannot find module 'ms' at Function.Module._resolveFilename (module.js::) at Function.M ...

  3. python中面向对象之装饰器

    python面向对象内置装饰器property,staticmethod,classmethod的使用 @property 装饰器作用及使用 作用:面向对象中的方法伪装成属性 使用如下: class ...

  4. Linux系统查看局域网的公网ip

    访问http://www.cip.cc即可获得ip 前提是linux系统能够解析域名 [root@Test ~]# curl cip.cc IP : 115.216.41.112 地址 : 中国 浙江 ...

  5. hadoop命令行

    持续更新中................ 1. 设置目录配额 命令:hadoop dfsadmin -setSpaceQuota 样例:hadoop dfsadmin -setSpaceQuota ...

  6. python数据结构之快速排序

    def quick_sort(nums): if not nums: return [] else: # 这里取第0个数为基点 flag = nums[0] # 小于flag 的放到左边 left = ...

  7. python输入一个\输出2个\问题

    在Python里面,如果\后面不是一个合法的转移字符,那么,Python会打印两个\,换句话说,Python将\也当成普通字符看待,而不是转义符的标志: >>>S = 'C:\py\ ...

  8. null == null 或者 [] == [] 或者{} == {} 或者alert(1|| 2) 或者alert(1&& 2) 结果及原理

    相信面试的小伙伴们都会遇到此头大的问题,是不是很想骂一句面试官:你白痴啊,鬼都用不着的东西拿来问,你还别说,这些看似用不着的东西却包含着最基础的原理,那我们来理一理. 1.alert(1||2)和 a ...

  9. 微信小程序开发显示城市天气

    本案例实现动态显示城市天气的功能,案例效果如下: 首先分析制作的思路: 1.在app.json文件的pages数组里加上main文件夹和template(模板)文件夹的路径. 2.在main.js文件 ...

  10. Pregel的计算过程