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

news/2024/9/23 4:49:30/

🥑原文: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




http://www.ppmy.cn/news/1428432.html

相关文章

XiaodiSec day033 Learn Note 小迪渗透学习笔记

XiaodiSec day033 Learn Note 小迪渗透学习笔记 记录得比较凌乱,不尽详细 day33 文件上传 中间件上传,学了也不一定遇得到,但是要学 文件上传漏洞有几个情况会导致,有后端验证,第三方富文本编辑器导致 编辑器被目…

webpack源码分析——enhanced-resolve库之cdUp函数

一、 cdUp函数 函数功能 该函数寻找上层目录,每次调用函数时对输入的路径进行一次寻找上级目录。如果没有找到返回null 二、函数分析 传入的directory判读是否为‘/’如果是直接返回nullif (directory "/") return null;获取‘/’和‘\’在directory 中…

【模板】差分

本题链接:登录—专业IT笔试面试备考平台_牛客网 题目: 样例: 输入 3 2 1 2 3 1 2 4 3 3 -2 输出 5 6 1 思路: 一直以来,我总是不太理解差分和树状数组操作区别。 现在摸了一下开始有所理解了。 差分和树状数组的区别…

OpenHarmony轻量系统开发【4】编写第一个程序、启动流程分析

摘要:本文简单介绍如何编写第一个hello world程序,以及程序是被执行的 适合群体:适用于Hi3861开发板,启动流程分析 4.1编写第一个程序 编写一个hello world程序比较简单,可以参考官网: https://gitee.c…

word批量修改表格样式

利用宏,批量选中表格,然后利用段落和表设计来操作。 利用宏,批量选中表格,参考百度安全验证段落,表格里面的内容有空格,应该是有缩进,在段落中去掉缩进,即缩进-特殊,选择…

《论文阅读》对话推理的对比学习 EMNLP 2023

《论文阅读》对话推理的对比学习 前言名词简介CICERO 数据集方法损失函数实验结果前言 亲身阅读感受分享,细节画图解释,再也不用担心看不懂论文啦~ 无抄袭,无复制,纯手工敲击键盘~ 今天为大家带来的是《Contrastive Learning for Inference in Dialogue》 出版:EMNLP 时…

算法 第46天 动态规划8

139 单词拆分 给你一个字符串 s 和一个字符串列表 wordDict 作为字典。如果可以利用字典中出现的一个或多个单词拼接出 s 则返回 true。 注意:不要求字典中出现的单词全部都使用,并且字典中的单词可以重复使用。 输入: s “leetcode”, wordDict [“…

黑客知识了解

ipc$ 利用139,445端口 弱口令:admin,123456,root 容易被破解 命令 内部命令(系统自带命令) dir,tree,notepad 外部命令(你自己下载的命令) python webshell 网页木马 SQL注入 sql 结构化查询语言 …