承诺协议:定义 构造

news2024/10/7 9:27:13

文章目录

  • 安全性定义
  • 方案构造
    • 基于 OWP 存在性
    • 基于 DL 假设
    • 基于 OWF 存在性
    • 基于 DDH 假设
  • 总结

安全性定义

承诺协议(Commitment Scheme)是一个两阶段的两方协议。一方是承诺者(Committer) C C C,另一方是接收者(Receiver) R R R,两者都是 PPT 能力的。形式化描述如下:

在这里插入图片描述

承诺协议的安全性分为两部分:绑定性(Binding)、隐藏性(Hiding)。Binding 是用于保护 R R R 的,使得恶意的 C C C 无法将已有的承诺值 Open 成不同的内容。Hiding 是用于保护 C C C 的,使得恶意的 R R R 无法从承诺值中获得有关于内容的信息。

在这里插入图片描述

如果考虑 unbounded 敌手,那么可以得到 Perfect、Statistical、Computational 三种安全强度。

  • Perfect Binding 是说:每一个承诺值 c c c,都仅存在一个 ( m , d e c ) (m,dec) (m,dec) 与之对应,从而无界敌手也不能找出一对不同的消息。在 Statistical 版本中,存在多个消息与之对应的承诺值的占比(依赖于 R R R 的随机带)可忽略。
  • Perfect Hiding 是说:任意的两个消息 m 0 ≠ m 1 m_0 \neq m_1 m0=m1,它们的承诺值 c c c 的分布(依赖于 C C C 的随机带)完全相同。在 Statistical 版本中,两者的统计距离可忽略。

Perfect / Statistical Binding 与 Perfect / Statistical Hiding 不可同时存在

  1. 如果是 Statistical Binding 的,那么承诺值 c c c 几乎总是仅能对应两个消息 m 0 ≠ m 1 m_0 \neq m_1 m0=m1 的其中之一,无界敌手总可以穷举所有的随机带找出这个 m b m_b mb,从而打破 Hiding(不是 Statistical Hiding)
  2. 如果是 Statistical Hiding 的,那么承诺值 c c c 几乎总是可以对应两个消息 m 0 ≠ m 1 m_0 \neq m_1 m0=m1,无界敌手总可以穷举所有的随机带找出对应的 d e c 0 , d e c 1 dec_0,dec_1 dec0,dec1,从而打破 Binding(不是 Statistical Binding)
  3. Perfect 导致 Statistical,因此 Perfect 也无法共存

PZK IP 中,有 “实例依赖” 的承诺方案:对于 x ∈ L x \in L xL 可以达成 Perfect Hiding(从而是 Perfect ZK),对于 x ∉ L x \notin L x/L 可以达成 Perfect Binding(从而是 Proof System)。

方案构造

承诺方案的存在性,等价于 ZKP 的存在性。在标准假设下,承诺方案存在,于是 ZKP 也存在。下面给出若干种构造。

基于 OWP 存在性

假设 OWP f ′ ( x ) f'(x) f(x) 存在,那么可以利用 Goldreich-Levin 定理,给出一个带有 hardcore h ( x , r ) = ⟨ x , r ⟩ h(x,r)=\langle x,r \rangle h(x,r)=x,r 的新 OWP f ( x , r ) = ( f ′ ( x ) , r ) f(x,r)=(f'(x),r) f(x,r)=(f(x),r)

基于 OWP 的比特承诺方案:

在这里插入图片描述

它是 Perfect-Binding and Computational-Hiding非交互承诺协议。因为 OWP 是置换,因此它完美绑定了随机数。其隐藏性来源于 OWP 的单向性。

基于 DL 假设

如果素数 p p p 满足 p − 1 = ∏ i q i p-1=\prod_iq_i p1=iqi 可分解为若干小的素因子 q i q_i qi,那么基于 CRT 分解,可以快速穷举出每个子群 G q i ⊆ Z p ∗ G_{q_i} \subseteq \mathbb Z_p^* GqiZp 上的 DL 问题的解。从而在这种素数下, Z p ∗ \mathbb Z_p^* Zp 上的 DL 问题不难。

如果素数 p = 2 q + 1 p=2q+1 p=2q+1,其中 q q q 是大素数,此时上述的攻击方法就必须爆破阶 q q q 的子群 G q ⊆ Z p ∗ G_{q} \subseteq \mathbb Z_p^* GqZp 上的 DL 问题。然而,根据 x x x 的奇偶性 ( g x ) ( p − 1 ) / 2 (g^x)^{(p-1)/2} (gx)(p1)/2 分别等于 + 1 , − 1 +1,-1 +1,1,由于 ( g x , g y , g x y ) (g^x,g^y,g^{xy}) (gx,gy,gxy) 指数的奇偶性有关系,因此可以快速与 ( g x , g y , g z ) (g^x,g^y,g^z) (gx,gy,gz) 做区分。从而在这种素数下, Z p ∗ \mathbb Z_p^* Zp 上的 DDH 问题不难。

如果我们选取形如 p = 2 q + 1 p=2q+1 p=2q+1 的大素数,在循环群 Z p ∗ = < g > \mathbb Z_p^* = <g> Zp=<g> 中选择二次剩余群 Q R ( p ) = < g 2 > QR(p)=<g^2> QR(p)=<g2> 作为 DDH 问题的群,那么就使得所有群元素的指数都是偶数,从而避免上述的奇偶分析。假设这种群上的 DDH 问题是困难的,因为在 Cook 归约下 D D H ≤ c C D H ≤ c D L DDH \le_c CDH \le_c DL DDHcCDHcDL,因此在 Q R ( 2 q + 1 ) QR(2q+1) QR(2q+1) 上的 DL 问题也是困难的。

基于离散对数问题的 Pedersen 承诺方案(关于群元素的,而非单比特):

在这里插入图片描述

它是 Computational-Binding and Perfect-Hiding2-round承诺协议。假如 r r r 均匀采样那么 h r h^r hr 也是均匀的,因此是完美隐藏的。其绑定性来源于 h = g x h=g^x h=gx 的 DL 问题。

可以证明,对于 non-uniform 敌手 C ∗ C^* C不存在非交互 Perfect-Hiding 的承诺协议可以达成 Binding 安全性。因为是 Perfect Hidng,因此承诺值 c c c 可以对应两个不同的消息 ( m 0 , r 0 ) , ( m 1 , r 1 ) (m_0,r_0),(m_1,r_1) (m0,r0),(m1,r1),因此可以把它作为 advice 写入到某个 non-uniform PPT 敌手 C ∗ C^* C(存在性),这就打破了 Computational Binding(因此必须引入 R R R 的随机性,这需要交互)

不过,确实存在基于 hash 的非交互 statistical-hiding and computational-binding 的承诺协议,可以抵御 uniform(能力弱)PPT 的敌手 C ∗ C^* C [Halevi, Micali, 96]

基于 OWF 存在性

OWP 存在性的假设较强,实际上只要 OWF 存在就可以导致承诺协议存在。密码学课程都会讲授 Levin 的从带 hardcore OWP 构造 PRG 的方法,而 [Hill90] 证明了 OWF 就可以构造出 PRG(但是很复杂)。

基于 OWF 的 Naor 比特承诺方案:

在这里插入图片描述

它是 Statistical-Binding and Computational-Hiding2-round承诺协议。由于 G G G n n n 比特的 r r r 拉长为 3 n 3n 3n 比特,因此 G ( r 0 ) ⊕ G ( r 1 ) G(r_0) \oplus G(r_1) G(r0)G(r1) 仅仅有 2 2 n 2^{2n} 22n 种取值,但是 x ∈ { 0 , 1 } 3 n x \in \{0,1\}^{3n} x{0,1}3n 2 3 n 2^{3n} 23n 种取值,仅仅占比 n e g l ( n ) negl(n) negl(n) 的随机串可能被敌手利用,然而 x x x 是被诚实的 R R R 均匀掷出的。其隐藏性来源于 PRG 的伪随机性。

那么,是否可以基于 OWF 构造 Statistical-Hiding 的承诺方案呢?假如 hiding 仅仅来源于 one-way,那么无界敌手 C ∗ C^* C 必然可以求逆,从而打破它。令人吃惊的是,[Haitner, Nguyen, et al. 09] 给出了一种构造。

基于 DDH 假设

基于 OWP 的 Perfect-Binding 比特承诺方案,当遇到了需要承诺多个比特的情况时,就必须独立执行多次。如果串行组合,根据 Sequential composition theorems 这依然是安全的,但是 round complexity 就会快速上升;如果并行组合,那么这就很复杂了(基于游戏的归约,loss factor 可能会是指数级;基于模拟的归约,rewind 次数可能会是指数级)。

基于 DDH 问题的 ElGamal 承诺协议(关于群元素的,而非单比特):

在这里插入图片描述

它是 Perfect-Binding and Computational-Hiding非交互承诺协议。因为 g r g^r gr 是置换,因此这是完美绑定的。可以将 DDH 问题归约到打破它的隐藏性:输入一个三元组 ( g x , g y , g z ) (g^x,g^y,g^z) (gx,gy,gz),将 h h h 替换为 g x g^x gx,将 g r g^r gr 替换为 g y g^y gy,因为它们都是均匀分布。接着将 g m b h r g^{m_b}h^r gmbhr 替换为 g m b g z g^{m_b}g^z gmbgz:假如 z z z 均匀,那么 g m 0 g z g^{m_0}g^z gm0gz g m 1 g z g^{m_1}g^z gm1gz 同分布,无界敌手也不能给出有偏的输出分布;假如 z = x y z=xy z=xy,那么 g m b g z g^{m_b}g^z gmbgz g m b h r g^{m_b}h^r gmbhr 同分布,于是针对 Hiding 的敌手 ( R ∗ , D ) (R^*,D) (R,D) 就转化为了针对 DDH 的敌手。

总结

下面的 Round Complexity 考虑的是 Committing 阶段的,而 Opening 阶段直接发送 C C C 所使用的随机带即可(必然是 1-round 的)。

  1. 如果 DL 假设成立,则存在 2-round 的 perfect-hiding 以及 computational-binding 的承诺协议(二次剩余群上的 Pedersen 承诺方案)
  2. 如果 OWF 存在,则存在 2-round 的 computational-hiding 以及 statistical-binding 的承诺协议(基于 PRG 的 Naor’s 比特承诺方案)
  3. 如果 OWP 存在,则存在 1-round 的 computational-hiding 以及 perfect-binding 的承诺协议(基于 hardcore 的比特承诺方案)
  4. 如果 DDH 假设成立,则存在 1-round 的 computational-hiding 以及 perfect-binding 的承诺协议(二次剩余群上的 ElGamal 承诺方案)

前三者可以被用于 Blum’s ZKP for HC 的构造,从而导出 ZKP 的存在性结论。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/517750.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

网络安全怎么学?

一、怎么入门&#xff1f; 这个 Web 安全学习路线&#xff0c;整体大概半年左右&#xff0c;具体视每个人的情况而定。 &#xff08;上传一直很模糊&#xff0c;所以就没有展开了&#xff0c;需要高清版的可以在下面领取&#xff09; &#x1f449; 【一学习路线高清版一】&a…

WiFi(Wireless Fidelity)基础(八)

目录 一、基本介绍&#xff08;Introduction&#xff09; 二、进化发展&#xff08;Evolution&#xff09; 三、PHY帧&#xff08;&#xff08;PHY Frame &#xff09; 四、MAC帧&#xff08;MAC Frame &#xff09; 五、协议&#xff08;Protocol&#xff09; 六、安全&#x…

AndroidStudio-学习笔记之多级目录功能的设计与开发

多级目录功能的设计与开发 演示效果需求描述开发预计前端后端 前端开发多级目录的UI小框架前端xml前端代码---本地demo版前端代码---服务器版逻辑说明 后端开发表设计书写接口 演示效果 需求描述 根据需求&#xff0c;为用户展示多级目录(目前设计的为4级目录)&#xff0c;并在…

Win10笔记本无法正常启动代码0xc0000001解决方法

Win10笔记本无法正常启动代码0xc0000001解决方法。最近不少的用户在笔记本电脑安装Win10系统使用时&#xff0c;出现了蓝屏的情况&#xff0c;电脑显示错误代码0xc0000001无法启动到桌面使用。那么这个情况怎么去进行问题的解决呢&#xff1f;来看看以下的解决方法吧。 准备工作…

OpenCL编程指南-4.1OpenCL C编程

使用OpenCL C编写数据并行内核 OpenCL中的数据并行性表述为一个N维计算域&#xff0c;其中N1、2或3。N-D域定义了可以并行执行的工作项的总数。下面通过一个简单的例子来了解如何用OpenCL C编写一个数据并行内核&#xff0c;将两个浮点数数组相加。这个代码的串行版本求和时需…

在windows上通过QEMU快速上手RT-thread smart

参考链接 官方文档 资料下载 env-windows-v1.3.5.7z userapps 注意事项 通过QEMU仿真不同的平台&#xff0c;使用到的交叉编译工具也不一样&#xff0c;需要将相应工具的路径添加到系统PATH里&#xff1b;或者通过CMD定位到userapps&#xff0c;运行smart-env.bat xxx&…

【jvm系列-11】jvm性能调优篇---命令行工具的基本使用

JVM系列整体栏目 内容链接地址【一】初识虚拟机与java虚拟机https://blog.csdn.net/zhenghuishengq/article/details/129544460【二】jvm的类加载子系统以及jclasslib的基本使用https://blog.csdn.net/zhenghuishengq/article/details/129610963【三】运行时私有区域之虚拟机栈…

智能优化算法——下山单纯型算法

作者&#xff1a;非妃是公主 专栏&#xff1a;《智能优化算法》 博客地址&#xff1a;https://blog.csdn.net/myf_666 个性签&#xff1a;顺境不惰&#xff0c;逆境不馁&#xff0c;以心制境&#xff0c;万事可成。——曾国藩 文章目录 专栏推荐序一、算法流程1. 反射2. 膨胀…

马哈鱼SQLFLow数据流生成介绍

马哈鱼数据血缘分析器是当前最流行的数据血缘关系(data lineage)管理工具之一&#xff0c;它是一种通过分析SQL脚本来自动发现数据流向的工具。它通过生成一个简洁的图表来显示数据仓库中表/视图和列之间的数据流。支持超过20种流行的数据库&#xff0c;包括 bigquery, couchba…

项目风险的4种应对策略及实施条件

面对威胁或可能给项目带来消极影响的风险&#xff0c;我们一般采用规避、转移、缓解和接受的应对策略。 一、风险规避 风险规避策略是指项目团队采取行动来消除威胁&#xff0c;或保护项目免受风险影响的应对策略&#xff0c;通常包括改变项目管理计划&#xff0c;以完全消除威…

super_数学知识(质数筛选和约数学习)lesson08易错题记录

文章目录 回文质数第n小的质数素数个数 回文质数 先上代码 #include<iostream> #include<vector>//创建动态数组需要的头文件 #include<cstring>//使用memset需要的头文件 using namespace std; vector<int> q; bool arr[10000005]; //埃氏筛法找出所…

详解软件开发的标准过程(生命周期):跟着标准搞,设计没烦恼

目录 一.软件开发的生命周期总括 二.项目架构分类 C/S架构 B/S架构 三.详解软件需求 需求分类 需求获取 需求分析 四.详解面向对象分析&#xff08;OOA&#xff09; 概念理解&#xff1a; 统⼀建模语⾔UML UML的重要组成部分&#xff1a; ⽤例图的元素 识别参与者…

怎么搭建个人小型渲染农场?搭建渲染农场配置

渲染农场是众多机器组成的渲染集群&#xff0c;通常用来渲染你的单帧效果图或动画项目&#xff0c;我们借助渲染农场的力量&#xff0c;可以满足3D项目交期时间迫在眉睫的需求&#xff0c;当你试着在自己的机器上渲染一个复杂的动画项目时&#xff0c;可能需要几十小时的等待时…

gdb与symbol符号表文件的调试

目录 1&#xff0c;剥离命令 2&#xff0c;gdbdebug 文件的调试 今天在调试程序的时候发现&#xff0c;在测试部测试的程序都是剥离了符号表的&#xff0c;导致用gdb无法调试&#xff0c;只有找到符号表文件才能继续gdb调试&#xff0c;好在符号表文件是和程序一起发布的。之…

浅谈作为程序员如何写好文档:了解读者

我作为从一名懵懂的实习生转变为工程师的工作经历中&#xff0c;伴随着技术经验的成长&#xff0c;也逐渐意识到了编写文档是知识和经验传递给其他人的最有效方式。通过文档&#xff0c;可以分享我的技术知识和最佳实践&#xff0c;使其他人更好地理解我的工作。在这里&#xf…

Postgres : 创建schema、创建表空间与指定用户权限

1. 创建新的Schema 要创建 PostgreSQL 中的一个新的 schema&#xff0c;并创建一个只有该 schema 权限的新用户&#xff0c;请按照以下步骤操作&#xff1a; &#xff08;1&#xff09;打开 PostgreSQL 客户端并连接到数据库服务器。 &#xff08;2&#xff09;创建一个新的…

如何在Oracle存储过程发生异常时获取out类型参数的值

Oracle存储过程关于在出现&#xff08;自定义/自带&#xff09;异常下out类型参数的获取问题的分析 ✈️ 场景: 有一些关于金额和时间的精确且量大的计算需要在存储过程中完成。存储过程中有一些自定义的异常。并且将在RAISE前通过out类型的参数将详细的异常原因返回。 但是在…

商业智能BI分析报表很慢是什么原因?应该如何优化?

当下&#xff0c;数据计算已成为了分析工作中必不可少的高频次操作之一&#xff0c;而且在大数据的发展背景下&#xff0c;应用性能往往关系着项目的成败&#xff0c;成为了大家最为关注的产品技术参数。那么我们先来分析一下BI分析表计算很慢的原因是什么&#xff0c;再对症下…

Microsoft Dynamics 365 Business Central 生产订单扣料的几种方法

学习目标&#xff1a; 掌握生产订单扣料的几种方法 学习内容&#xff1a; Forward flush by routing operation&#xff08;通过工序&#xff1a;向前扣料&#xff09;Backward flush by routing operation&#xff08;通过工序&#xff1a;向后扣料&#xff09;Forward flus…

Java-Redis持久化之RDB操作

Java-Redis持久化之RDB操作 1.为什么redis需要持久化&#xff1f;2.什么是RDB操作?3.请你用自己的话讲下RDB的过程?4.如何恢复rdb文件? 1.为什么redis需要持久化&#xff1f; Redis是内存数据库&#xff0c;如果不将内存数据库保存到磁盘&#xff0c;那么服务器进程退出&am…