密码协议学习笔记(4):比特承诺
比特承诺:
股票经纪人甲试图说服乙购买他的服务,甲表示,它已分析出若干支股票将会涨停,但在乙出钱购买它的服务之前,它不能透露如此有价值的信息,于是甲将这几支股票写在纸上,并锁进保险箱里,将保险箱交给乙,表示,一个月后将钥匙给乙,如果到时候打开保险柜,看看里面写的股票是否确实涨停,以此来判定甲的预测能力.
这便是比特承诺的概念.比特承诺包含两方:承诺者与验证者.
比特承诺包括以下几个阶段:
- 承诺阶段:承诺者选择一个要承诺的比特
,把能代表该比特的信息 发送给验证者 - 打开阶段:承诺者把用于打开
的信息 和承诺的比特 发送给验证者,验证者用 打开 并验证是否是
安全的比特承诺需要满足的性质:
- 隐藏性:打开阶段开始前,验证者无法得到
,进一步地,称一个方案是完善隐蔽的,指验证者不能从 中获得任何关于 的信息. - 绑定性:承诺者不能在打开阶段之前改变自己承诺的比特.
类似于密码算法安全性的定义,比特承诺的属性分为计算上隐藏的,计算上绑定的,和信息论上隐藏的,信息论上绑定的.
常用比特承诺协议:
使用对称加密函数的比特承诺:
协议开始前,双方在TTP的帮助下协商出安全的加密算法
(博主注:为何一定要在TTP帮助下协商呢,如果密钥是安全的,直接将加密解密算法公开不行吗)
注:用
Alice | Bob | |
生成一个随机比特串 |
||
选择想承诺的比特 生成一个密钥 计算 |
||
打开阶段 | ||
验证解密后得到的r,b |
隐藏性:Bob不知道密钥
绑定性:如果消息不含
使用单向哈希的比特承诺:
协议开始前,双方在TTP的帮助下协商出安全的哈希算法
Alice | Bob | |
生成随机比特串 和希望承诺的比特 |
||
打开阶段 | ||
计算 |
好处:Bob无需发送消息.
隐藏性:由于不知道
绑定性:Alice要伪造承诺,需要计算哈希碰撞
使用伪随机数发生器的比特承诺:
双方在TTP的帮助下选择一个伪随机数发生器
Alice | Bob | |
选择需要承诺的比特 产生 计算 |
||
打开阶段 | ||
计算 |
隐藏性:由于不知道
绑定性:要伪造承诺,则需计算
Pedersen承诺协议:
比特承诺协议也可以利用数论中的一些计算困难的问题来构造,例如该协议就是通过离散对数问题进行构造的.
双方在TTP的帮助下选择大素数
Alice | Bob | |
选择承诺的比特 计算 |
||
打开阶段 | ||
计算并验证 |
隐藏性:因为
绑定性:若Alice要篡改自己的承诺(以将
这需要计算离散对数问题,这在计算上是不可行的.
(博主注:以上几个协议的隐藏性都是信息论级别的,绑定性则只有计算复杂度级别)
如果要用比特承诺协议承诺多个比特,可以重复应用协议多次,而对Pedersen承诺协议而言,也可以直接将承诺的字符串
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义