密码学 | 承诺:Pedersen 承诺 + ZKP

2024-04-21 20:04
文章标签 zkp 密码学 承诺 pedersen

本文主要是介绍密码学 | 承诺:Pedersen 承诺 + ZKP,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

🥑原文:Toward Achieving Anonymous NFT Trading

🥑写在前面:看了篇 22 年 SCI 3 区论文,里面提到在 Pedersen 承诺的揭示阶段可以使用零知识证明,而不必揭示消息明文和随机数。姑且记录一下这个方法。



1 Pedersen 承诺

以下是原文对 Pedersen 承诺的介绍😽

​一个承诺方案在承诺者 C 和接收者 R 之间进行。承诺者首先对一个秘密消息进行承诺,并将承诺发送给接收者。将来,这个秘密消息被打开给接收者,并且有一个有效的算法来验证打开的消息确实是用于生成承诺的确切消息。

这一段是对承诺的介绍,承诺全称就是承诺方案。

为此,公布一个具有阶 q q q 的群 G \mathcal{G} G 和两个生成元 G G G H H H 作为公共参数。C 随机选择 r ∈ Z q r∈Z_q rZq,并通过生成 c o m = m G + r H com = mG + rH com=mG+rH 来对消息 m m m 进行承诺,其中 c o m com com 发送给 R 。C 通过透露 ( m , r ) (m,r) (m,r) 来打开这个承诺,以便 R R R 可以检查 c o m = m G + r H com = mG + rH com=mG+rH 是否成立。

我真是服了: G \mathcal{G} G G G G 都是字母 G,只不过使用了不同的字体,以区分一个是循环群,一个是生成元。



2 Pedersen 承诺 + ZKP

为了保护消息 m m m 不被泄露给他人,C 可以生成一个关于消息打开过程的 知识证明,这样就能证明自己对消息内容的知晓,而不必直接透露消息本身,这一方案建立在如下原理之上。

在之前的学习中,C 都是直接揭示的消息 m m m 明文。如果消息 m m m 不涉及隐私,那么公布明文也无所谓,承诺的主要作用也只是为了防止 C 胡乱解读消息;如果消息 m m m 涉及隐私,那么我们将不希望公布明文。

承诺阶段

C 选择随机数 r r r 为消息 m m m 生成承诺:

c o m = m ∗ G + r ∗ H com = m*G + r*H com=mG+rH

C 将承诺 c o m com com 发送给 R 。

承诺阶段的操作没有改变。

揭示阶段

C 并不直接给 R 发送 ( m , r ) (m,r) (m,r),而是 ( P , x ′ , y ′ ) (P,x',y') (P,x,y)

x , y ← Z q P = x ∗ G + y ∗ H h ← R O ( P ) x ′ = x + h ∗ m , y ′ = y + h ∗ r \begin{alignat}{2} &x,y \gets Z_q \\ &P = x*G + y*H \\ &h\ \gets RO(P) \\ &x'=x+h*m,y'=y+h*r \end{alignat} x,yZqP=xG+yHh RO(P)x=x+hm,y=y+hr

R 收到 ( P , x ′ , y ′ ) (P,x',y') (P,x,y) 后验证:

h ← R O ( P ) P + h ∗ c o m = ? x ′ ∗ G + y ′ ∗ H \begin{alignat}{2} &h\ \gets RO(P) \\ &P+h*com \overset{?}{=} x'*G+y'*H \end{alignat} h RO(P)P+hcom=?xG+yH

注意:RO 是指 Random Oracle 随机预言机 这一抽象概念,在具体实现中通常是一个抗碰撞的哈希函数。

我的证明

对式子 ( 6 ) (6) (6) 的证明如下:

P + h ∗ c o m = ( x ∗ G + y ∗ H ) + h ∗ ( m ∗ G + r ∗ H ) = ( x + h ∗ m ) ∗ G + ( y + h ∗ r ) ∗ H = x ′ ∗ G + y ′ ∗ H \begin{alignat}{2} P+h*com &= (x*G + y*H) + h*(m*G + r*H) \\ &= (x+h*m)*G + (y+h*r)*H \\ &= x'*G+y'*H \end{alignat} P+hcom=(xG+yH)+h(mG+rH)=(x+hm)G+(y+hr)H=xG+yH



这篇关于密码学 | 承诺:Pedersen 承诺 + ZKP的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/923914

相关文章

密码学读书笔记小结

密码学是保证消息的私密性和完整性以及消息认证的基础。加密算法的选择和密钥的管理是安全机制的效率、性能和可用性的关键。 公钥加密算法: 分发密钥比较容易,但是对大数据量的加密性能较差密钥加密算法: 更适合大批的加密任务混合型加密协议: 例如TLS,先用公钥加密建立一个安全通道,然后使用通道交换密钥,并将此密钥用于后续数据交换。 对分布式系统攻击的分类: 窃听: 未经授权获得消息副本伪装: 在未

NISP | 密码学

关注这个证书的其他相关笔记:NISP 一级 —— 考证笔记合集-CSDN博客 通过上一章的学习,我们知道了,网络安全的 CIA 模型,而本期学习的“密码学”,则能为 CIA 模型提供很好的技术支持: 面临的攻击威胁所破坏的信息安全属性解决问题所采用的密码学技术截获(泄露信息)机密性对称密码和非对称密码篡改(修改信息)完整性哈希函数、数字签名、 对称密码和非对称密码伪造(伪造信息来源)真实

公钥密码学

1. 非对称密码学         非对称密码学(Asymmetric Cryptography) 中的 “非对称” 指的是用于加密数据的密钥和用于解密数据的密钥是不一样的(如果一样,那就是对称密码学)。对称密码学也称为共享密钥密码学。类似地,非对称密码学也有一个别称,即公钥密码学(Public Key Cryptography)。这是因为它使用一对公钥和私钥分别加密和解密数据。目前使用的非对称

对称密码学

1. 使用OpenSSL 命令行         在 Ubuntu Linux Distribution (发行版)中, OpenSSL 通常可用。当然,如果不可用的话,也可以使用下以下命令安装 OpenSSL: $ sudo apt-get install openssl 安装完后可以使用以下命令检查 OpenSSL 版本: $ openssl version 其输出将如下所示: O

信息安全(密码学)---数字证书、kpi体系结构、密钥管理、安全协议、密码学安全应用

数字证书 数字证书 (Digital Certificate,类似身份证的作用)----防伪标志 CA(Certificate Authority,电子商务认证授权机构)----ca用自己私钥进行数字签名 数字证书 姓名,地址,组织 所有者公钥 证书有效期 认证机构数字签名 ■ 公钥证书的种类与用途 ■ 证书示例  ·序列号04 ·签名算法md5RSA ·颁发者

Python密码学:cryptography库

在数字时代,确保数据的安全性和隐私至关重要。Python中的cryptography库是一个全面的包,为Python开发者提供了密码学原语和配方。它支持高级配方和常见密码学算法的低级接口。 cryptography库概述 cryptography库旨在易于使用且默认安全。它包括各种密码学操作的高级和低级API,如: 对称加密非对称加密哈希函数消息认证码(MAC)数字签名密钥管理 crypt

区块链应用,密码学会议书籍推荐以及隐私保护知识整理

基于区块链技术的安全多方计算项目示例 1. iCube——全球首个安全多方计算区块链金融项目 iCube团队通过与美国普渡大学区块链人工智能实验室深度合作,实现了区块链的安全多方计算。iCube建立了面向信息的终极抽象基础层和基于个人工智能的算法模型层,内置图灵完备编程语言和自主开发的MPC 算法沙盒,从而实现了区块链的多方安全计算。其整个架构如下: 从以上架构图可以看出,与传统区块

读软件开发安全之道:概念、设计与实施08密码学(下)

1. 对称加密 1.1. symmetric encryption 1.2. 使用各方共享的密钥来隐藏数据 1.2.1. 对称加密在本质上依赖共享密钥 1.3. 所有加密都是通过对明文进行转换,把明文消息(或者原始消息)变成无法识别的形式(也称为密文)​,从而隐藏原始消息内容的 1.4. 可逆的转换称为对称加密,因为只要知道密钥,我们就既可以进行加密,也可以进行解密 1.4.1.

加密学中的零知识证明(Zero-Knowledge Proof, ZKP)到底是什么?

加密学中的零知识证明(Zero-Knowledge Proof, ZKP)到底是什么? 引言 在加密学的应用中,零知识证明(Zero-Knowledge Proof, ZKP)无疑是一颗璀璨的明星。它不仅挑战了我们对信息验证的传统认知,更在保护隐私的同时确保了数据的真实性,为数字货币、身份验证、安全通信等多个领域带来了革命性的变革。本文将深入探讨零知识证明的原理、关键技术、应用场景以及未来

密码学之广播加密

1.什么是广播加密 广播加密是一种支持在不安全的公开信道上实现多用户数据安全共享的加密技术,适用于一对多安全传输场景。 2.广播加密的工作原理 数据拥有者首先选取一组接收者,运行广播加密算法,将加密得到的密文发布到公开信道,监听该信道的所有用户均可获取密文,但只有授权用户可利用解密密钥正确解密,未授权用户不能从密文中获取任何明文信息。 3.应用场景 广播加密在付费电视、数字版权保护及区块