学习笔记:DualRing: 一种环签名的通用构造及实例
文献笔记:DualRing: 一种环签名的通用构造及实例
- 贡献
- 预备知识
- 安全模型
- Unforgeability w.r.t. insider corruption
- Anonymity against full key exposure
- 通用构造
- AOS通用签名
- Canonical Identification
- Type-T* Canonical Identification
- DualRing
- DualRing-EC
- Notations
- Sum Arguments of Knowledge
- 对数规模的DualRing-EC
- DualRing-LB
- Notations
- 格基Canonical Identification
边学习边整理。
Yuen T , Esgin M , Liu J , et al. Dualring: Generic construction of ring signatures with efficient instantiations. CRYPTO 2021.
https://hub.hku.hk/handle/10722/304339
贡献
- 提出双环签名的通用结构:签名由n个challenge和1个response组成(不同于AOS通用环签名:包含n个response和1个challenge)
- 新的Argument of knowledge: Sum Argument
- DualRing-EC deploying Schnorr identification scheme with Sum Argument: better efficiency
- DualRing-LB:在环规模4-2000范围内最短的格基环签名。
预备知识
Argument of Knowledge包含三个PPT算法(S, P, V):CRS生成器 S ( λ ) → σ ^ S(\lambda)\rightarrow\hat{\sigma} S(λ)→σ^,prover P ( s ) P(s) P(s), verifier V ( t ) V(t) V(t)。
Argument of Knowledge应满足Perfect completeness和Statistical Witness-Extended Emulation。
安全模型
Unforgeability w.r.t. insider corruption
敌手 A A A在没有密钥的情况下不能生成有效的签名,即使他可以自适应地破坏一些诚实的参与者并获得他们的密钥。正式定义:
Random oracle C O CO CO输出查询的私钥, S O SO SO输出一个签名(除非查询的 p k ^ j \hat{pk}_j pk^j不在环 p k pk pk中,终止)
Anonymity against full key exposure
敌手 A A A在生成密钥时是完全随机的。正式定义:
通用构造
AOS通用签名
包括Type-H和Type T两类,本文类比Type-T签名。
Type-T签名
生成签名:commit function A A A outputs a commitment R R R, hash function H H H outputs a challenge c c c, response function Z Z Z outputs a response z z z.
验证签名:重构 R R R并验证 c = H ( M , R ′ ) c=H(M,R') c=H(M,R′)
Type-T环签名:包含一个challenge和n个response
Canonical Identification
三步公钥认证协议
Fiat-Shamir变换可以将Canonical Identification变成非交互证明(用hash生成challenge,不需要交互)
Type-T* Canonical Identification
即满足4个属性的Canonical Identification:
- 在重构 R ′ R' R′时,verify 算法中的function V包含两个functions: V 1 V_1 V1和 V 2 V_2 V2,故而算法2中line 14变成: R ′ = V 1 ( z ) ⊙ V 2 ( p k , c ) R'=V_1(z)\odot V_2(pk,c) R′=V1(z)⊙V2(pk,c)
- V 1 V_1 V1满足加性/乘性同态,即 V 1 ( z 1 ) ⊙ V 2 ( z 2 ) = V 1 ( z 1 ⊕ z 2 ) V_1(z_1)\odot V_2(z_2)=V_1(z_1\oplus z_2) V1(z1)⊙V2(z2)=V1(z1⊕z2)
- 给定 p k pk pk对应的 s k sk sk和 c c c,存在一个function T T T, z ^ = T ( s k , c ) \hat{z}=T(sk,c) z^=T(sk,c),有 V 1 ( z ^ ) = V 2 ( p k , c ) V_1(\hat{z})= V_2(pk,c) V1(z^)=V2(pk,c)
- challenge space Δ c \Delta_c Δc is a group with operation ⊗ \otimes ⊗
DualRing
签名者(已知一组公钥 p k 1 , . . . , p k n pk_1,...,pk_n pk1,...,pkn和私钥 s k j sk_j skj):
(1) 随机选择 r j r_j rj(line 5)
(2) 随机选择challenges c 1 , . . . c j − 1 , c j + 1 , . . . , c n c_1,...c_{j-1},c_{j+1},...,c_n c1,...cj−1,cj+1,...,cn(line 5)
(3) 用function A A A、 V 2 V_2 V2和运算符 ⊙ \odot ⊙生成一个R-环(line 6)
(4) 用运算符 ⊗ \otimes ⊗生成一个C-环(line 7)
(5) 计算剩下的 c j = H ( m , p k , R ) ⊘ c j + 1 ⊘ . . . ⊘ c n ⊘ c 1 ⊘ . . . ⊘ c j − 1 c_j=H(m,pk,R)\oslash c_{j+1}\oslash...\oslash c_n\oslash c_1\oslash...\oslash c_{j-1} cj=H(m,pk,R)⊘cj+1⊘...⊘cn⊘c1⊘...⊘cj−1( ⊘ \oslash ⊘是 ⊗ \otimes ⊗的逆运算)故而有: c 1 ⊗ . . . ⊗ c n = H ( m , p k , R ) c_1\otimes ...\otimes c_n=H(m,pk,R) c1⊗...⊗cn=H(m,pk,R)
(6)计算response z ← Z ( s k j , c j , r j ) z\leftarrow Z(sk_j,c_j,r_j) z←Z(skj,cj,rj),生成签名包含一个response z z z和n个challenges ( c 1 , . . . , c n ) (c_1,...,c_n) (c1,...,cn)
和AOS相比的优势:
- 如果response大challenge小,可节省空间
- 通过避免使用hash降低复杂度到O(log n)
- 用Schnorr实例化的方案,具有更简单的归约(原文给出)
DualRing安全和匿名证明见原文。
DualRing-EC
Notations
a [ : l ] : ( a 1 , . . . , a l ) \mathbf{a}_{[:l]}:(a_1,...,a_l) a[:l]:(a1,...,al) a [ l : ] : ( a l + 1 , . . . , a n ) \mathbf{a}_{[l:]}:(a_{l+1},...,a_n) a[l:]:(al+1,...,an)
a ∘ b : \mathbf{a}\circ\mathbf{b}: a∘b:Hadamard product ( a 1 b 1 , a 2 b 2 , . . . , a n b n ) (a_1b_1,a_2b_2,...,a_nb_n) (a1b1,a2b2,...,anbn)
⟨ a , b ⟩ : \left\langle\mathbf{a},\mathbf{b}\right\rangle: ⟨a,b⟩:内积 ∑ i = 1 n a i b i \sum_{i=1}^{n}a_ib_i ∑i=1naibi
a b : ( a 1 b , a 2 b , . . . , a n b ) \mathbf{a}^b:(a_1^b,a_2^b,...,a_n^b) ab:(a1b,a2b,...,anb)
a + b : ( a 1 + b , . . . , a n + b ) \mathbf{a}+b:(a_1+b,...,a_n+b) a+b:(a1+b,...,an+b)
a b : ( ∏ i = 1 n a i b i ) \mathbf{a^b}:(\prod_{i=1}^{n}a_i^{b_i}) ab:(∏i=1naibi)
Sum Arguments of Knowledge
是Bullet proofs中内积证明的一种变体。内积证明是要证明关系:
证明者P使验证者V信服: c c c是两个被承诺的向量 a , b \mathbf{a,b} a,b的内积( ∑ i = 1 n a i b i \sum_{i=1}^n a_ib_i ∑i=1naibi)
Bullet proofs将证明的通信复杂度降到 O ( l o g n ) O(log n) O(logn):通过运行一个递归算法 P F P_F PF,在每一轮中两个规模为 n n n的向量 a , b \mathbf{a},\mathbf{b} a,b被提交为承诺 ( L , R ) (L,R) (L,R),对挑战 x x x计算两个规模 n / 2 n/2 n/2的证明向量 a ′ , b ′ \mathbf{a}',\mathbf{b}' a′,b′,有 L x 2 P R − x 2 L^{x^2}PR^{-x^2} Lx2PR−x2与 a ′ , b ′ , ⟨ a ′ , b ′ ⟩ \mathbf{a}',\mathbf{b}',\left\langle\mathbf{a}',\mathbf{b}'\right\rangle a′,b′,⟨a′,b′⟩的承诺相等。在下一轮,以 a ′ , b ′ \mathbf{a}',\mathbf{b}' a′,b′为算法 P F P_F PF的输入。直到 n = 1 n=1 n=1递归结束。
Sum Argument:
关系:
P向V证明它知道标量 a \mathbf{a} a的一个向量,使 P = g a P=\mathbf{g^{a}} P=ga且 c = ∑ a c=\sum\mathbf{a} c=∑a。尽管Sum Argument能通过设置向量 b \mathbf{b} b为 1 n 1^n 1n由内积证明变换得到,但这种方法的效率低于本方法。
p a r a m \mathbf{param} param:generator u ∈ G u\in\mathbb{G} u∈G在群 G \mathbb{G} G中阶为 p p p,hash函数 H Z , H Z ′ : { 0 , 1 } ∗ → Z p H_Z,H'_Z:\{0,1\}^*\rightarrow\mathbb{Z}_p HZ,HZ′:{0,1}∗→Zp.
N I S A ( p a r a m , g , P , c , a ) → NISA(\mathbf{param},\mathbf{g},P,c,\mathbf{a})\rightarrow NISA(param,g,P,c,a)→ a proof π \pi π.(Non-interactive Sum Argument)
V E R I F Y ( p a r a m , g , P , c , π ) → 1 / 0 VERIFY(\mathbf{param},\mathbf{g},P,c,\pi)\rightarrow1/0 VERIFY(param,g,P,c,π)→1/0.
P F P_F PF 中 n ≠ 1 n\neq1 n=1时:
- 计算 n ′ = n 2 , c L = ⟨ ( a 1 , . . . , a n ′ ) , ( b n ′ + 1 , . . . , b n ) ⟩ n'=\frac{n}{2},c_L=\left\langle (a_1,...,a_{n'}),(b_{n'+1},...,b_n)\right\rangle n′=2n,cL=⟨(a1,...,an′),(bn′+1,...,bn)⟩ = ∑ i = 1 n ′ a i b i + n ′ = ∑ i = 1 n ′ a i =\sum_{i=1}^{n'}a_ib_{i+n'}={\color{red}\sum_{i=1}^{n'}a_i} =∑i=1n′aibi+n′=∑i=1n′ai, c R = ⟨ ( a n ′ + 1 , . . . , a n ) , ( b 1 , . . . , b n ′ ) ⟩ = ∑ i = n ′ + 1 n a i b i − n ′ = ∑ i = n ′ + 1 n a i c_R=\left\langle (a_{n'+1},...,a_n),(b_1,...,b_{n'})\right\rangle=\sum_{i=n'+1}^{n}a_ib_{i-n'}={\color{red}\sum_{i=n'+1}^{n}a_i} cR=⟨(an′+1,...,an),(b1,...,bn′)⟩=∑i=n′+1naibi−n′=∑i=n′+1nai
- L = ( ∏ i = n ′ + 1 n g i a i ) u ^ c L L=(\prod_{i=n'+1}^{n}g_i^{a_i})\hat{u}^{c_L} L=(∏i=n′+1ngiai)u^cL, R = ( ∏ i = 1 n ′ g i a i ) u ^ c R R=(\prod_{i=1}^{n'}g_i^{a_i})\hat{u}^{c_R} R=(∏i=1n′giai)u^cR.
- 将 L L L加入 L \mathbf{L} L, R R R加入 R \mathbf{R} R,计算 x = H Z ( L , R ) x=H_Z(L,R) x=HZ(L,R).
- 计算 g ′ = ( g 1 x − 1 , . . . , g n ′ x − 1 ) ∘ ( g n ′ + 1 x , . . . , g n x ) = ( g 1 x − 1 g n ′ + 1 x , . . . , g n ′ x − 1 g n x ) \mathbf{g}'=(g_1^{x^{-1}},...,g_{n'}^{x^{-1}})\circ(g_{n'+1}^x,...,g_n^x)=(g_1^{x^{-1}}g_{n'+1}^x,...,g_{n'}^{x^{-1}}g_n^x) g′=(g1x−1,...,gn′x−1)∘(gn′+1x,...,gnx)=(g1x−1gn′+1x,...,gn′x−1gnx), a ′ = x ⋅ ( a 1 , . . . , a n ′ ) + x − 1 ⋅ ( a n ′ + 1 , . . . , a n ) \mathbf{a}'=x\cdot(a_1,...,a_{n'})+x^{-1}\cdot(a_{n'+1},...,a_n) a′=x⋅(a1,...,an′)+x−1⋅(an′+1,...,an), b ′ = x − 1 ⋅ ( b 1 , . . . , b n ′ ) + x ⋅ ( b n ′ + 1 , . . . , b n ) = ( x − 1 + x ) 1 n 2 \mathbf{b}'=x^{-1}\cdot(b_1,...,b_{n'})+x\cdot(b_{n'+1},...,b_n)={\color{red}(x^{-1}+x)\mathbf{1}^{\frac{n}{2}}} b′=x−1⋅(b1,...,bn′)+x⋅(bn′+1,...,bn)=(x−1+x)12n.(红色字仅第一轮)
- 递归计算 P F ( g ′ , u ^ , a ′ , b ′ ) P_F(\mathbf{g}',\hat{u},\mathbf{a}',\mathbf{b}') PF(g′,u^,a′,b′).
观察 P F P_F PF的第k次递归, b \mathbf{b} b的值是 ∏ i = 1 k ( x i + x i − 1 ) 1 n 2 k \prod_{i = 1}^{k}(x_i+x_i^{-1})\mathbf{1}^{\frac{n}{2^k}} ∏i=1k(xi+xi−1)12kn, x i x_i xi是 H Z H_Z HZ的第i个输出。
对数规模的DualRing-EC
将sum argument of knowledge的DualRing和Schnorridentification相结合,给出了基于DL的紧凑环签名的完整构造。
将sum argument匹配到ring signature
注意前面提到的sum argument要证明的关系可整理为:
而上文提出的通用环签名的验证包括(算法15-17行):
有趣的是,Type-T* canonical identification的两个实例(基于DL和RSA的)都满足 V 2 ( p k i , c i ) = p k i c i V_2(pk_i,c_i)=pk_i^{c_i} V2(pki,ci)=pkici.因此可以将sum argument用于关系:(哎,巧了么这不)
因此可以从匹配NISA的Type-T* canonical identification构造一个对数规模的环签名。
构造
将NISA加入DualRing中:
- 环签名的目的是证明环关系的合法性,DualRing中,是C环。而SA是证明某个向量关系,所以用SA帮助证明环签名,就是用NISA给出C环的证明(行7)。
- 上文讨论将SA用于Type-T* canonical identification的前提是满足相似的关系,所以在证明中要将DualRing关系式整理到SA关系的形式(行8)。
- 签名中 R R R的存在是为了在验证阶段重构出 P P P(行10-16)。
DualRing-LB
Notations
定义奇数模 q q q, R q R_q Rq是一个 d d d维的环 Z q [ X ] / ( X d + 1 ) \mathbb{Z}_q[X]/(X^d+1) Zq[X]/(Xd+1)
I n \bm{I}_n In是规模为 n n n的单位矩阵
U k \mathfrak{U}_k Uk是 Z [ X ] / ( X d + 1 ) \mathbb{Z}[X]/(X^d+1) Z[X]/(Xd+1)中的一个多项式集合,无穷范数不超过 k ∈ Z + k\in\mathbb{Z}^+ k∈Z+
U \mathcal{U} U是均匀分布
多项式(或多项式向量)的欧氏范数 ∥ ⋅ ∥ \|\cdot\| ∥⋅∥ 和 无穷范数 ∥ ⋅ ∥ ∞ \|\cdot\|_{\infty} ∥⋅∥∞标准定义
定义挑战空间: C = { c ∈ Z [ X ] / ( X d + 1 ) : ∥ c ∥ ∞ = 1 } \mathcal{C}=\{c\in\mathbb{Z}[X]/(X^d+1):\|c\|_{\infty}=1\} C={c∈Z[X]/(Xd+1):∥c∥∞=1},注意 ∣ C ∣ = 3 d |\mathcal{C}|=3^d ∣C∣=3d
格基Canonical Identification
Type-T* canonical identification from M-LWE/SIS,用拒绝采用技术保证没有签名者密钥的信息在response中被泄露。格基的Canonical Identification实例算法:
满足Canonical Identification的四个属性:
- R R R包含两个方法 V 1 V_1 V1和 V 2 V_2 V2
- V 1 V_1 V1满足加性同态 V 1 ( z 1 ) + V 2 ( z 2 ) = − G ⋅ z 1 − G ⋅ z 2 = − G ⋅ ( z 1 + z 2 ) = V 1 ( z 1 + z 2 ) V_1(z_1)+V_2(z_2)=-G\cdot z_1-G\cdot z_2=-G\cdot(z_1+z_2)=V_1(z_1+z_2) V1(z1)+V2(z2)=−G⋅z1−G⋅z2=−G⋅(z1+z2)=V1(z1+z2)
- 给定 s k , p k {\rm sk,pk} sk,pk和 c c c,可计算 z ~ = − c ⋅ s k \tilde{z}=-c\cdot {\rm sk} z~=−c⋅sk使得 V 1 ( z ~ ) = G ⋅ ( c ⋅ s k ) = V 2 ( p k , c ) V_1(\tilde{z})=G\cdot(c\cdot {\rm sk})=V_2({\rm pk},c) V1(z~)=G⋅(c⋅sk)=V2(pk,c)成立。(整理等式即可得)
- 挑战空间 C \mathcal{C} C是在加法模3下的一个群。
注意:不知道如何用sum argument生成一个有效的格基零知识证明。所以这篇文章的格基签名的规模仍然是 O ( n ) O(n) O(n),而已有研究达到了 O ( l o g n ) O(log n) O(logn),因此在某个点之后会产生更长的签名。
学习笔记:DualRing: 一种环签名的通用构造及实例相关推荐
- MySQL学习笔记02【SQL基本概念与通用语法、数据库的CRUD操作】
MySQL 文档-黑马程序员(腾讯微云):https://share.weiyun.com/RaCdIwas 1-MySQL基础.pdf.2-MySQL约束与设计.pdf.3-MySQL多表查询与事务 ...
- Zemax学习笔记(9)- 双胶合透镜消除色差的实例
Zemax学习笔记(9)- 双胶合透镜消除色差的实例 1.概述 2.设计优化 2.1 参数要求 2.2 设计优化过程 3.总结 1.概述 这一章虽然也是双胶合透镜,但是讲到了如何利用ZEMAX替换材料 ...
- JVM学习笔记之四 四种引用和垃圾回收的两次标记
四种引用和两次标记 四种引用 java中的数据类型我们知道是分为基本数据类型和引用类型的.基本数据类型是8种,分别是boolean byte short int long double float c ...
- pytorch梯度下降函数_Pytorch学习笔记6:激活函数/单层感知机/梯度下降求最小值实例...
#添加到学习笔记2末尾,直接运行.代码意义可以看注释. #需要import以下库 import torch import numpy as np from matplotlib import pypl ...
- Postman接口测试工具学习笔记(二)Postman进阶实践:获取天气预报实例
Postman接口测试工具学习笔记(一) 入门及基本概念 https://blog.csdn.net/sevensolo/article/details/87208546 Postman进阶实践:获取 ...
- 【学习笔记/PLL】锁相环PLL线性模型理论分析
锁相(phase locking)的概念是20世纪30年代提出的,距今已经100年左右了,尽管工艺在持续发展,振荡器的频率也越来越快,各种花样锁相环结构的文章层出不穷,但是发展至今,基本的锁相环结构几 ...
- [论文学习笔记]01一种轮廓平行扫描算法【3D打印路径规划】
文章目录 零.论文来源 0.1 概述 一.算法描述 1.1 定义一些概念 1.2 域分区 1.3 偏移量的生成 1.4 自交问题 1.5 尖角 1.6 外部轮廓和内部轮廓相交 1.7 空隙 1.8 连 ...
- 学习笔记:几种矩阵乘法(matmul product普通乘积、hadamard product矩阵点乘、kronecker product克罗内克积、斯特拉森矩阵乘法)
1.普通矩阵乘法(matmul product) 假设矩阵A大小是M*N,矩阵B大小是N*P,C=AB 这里选取一个例子 这里的矩阵乘法要求相乘的两个矩阵一个的行数得等于另一个的列数,否则,无法进行乘 ...
- C++学习笔记:三种智能指针【Share、Unique、Weak】【Cherno】
老规矩,先问题后文章: 为什么要有智能指针以及它的好处是什么.智能指针是在怎么工作的.智能指针的操作: 1:为什么要有智能指针: 要知道,内存泄漏是非常严重的后果,如果new出来的空间没在合适的时间d ...
最新文章
- LARS 算法简介-机器学习
- 目标检测比赛中的trick
- getter方法的作用 vuex_Vuex入门篇——基本使用
- java的System.getProperty()方法能够获取的值
- python封装一个函数并调用_python - 函数的封装与调用
- PAT乙级(1027 打印沙漏)
- STM32学习笔记(十) CAN通讯测试(环回模式)
- mice包--R中数据缺失值的处理
- java我们一起打雪仗_一起打雪仗作文(通用5篇)
- 根据银行卡号判断所属银行
- ISO27001体系的价值(详解)
- VRay Next for SketchUp 赋予材质常见问题
- 运算符、表达式和语句
- 7. 重磅硬核 | 一文聊透对象在JVM中的内存布局,以及内存对齐和压缩指针的原理及应用
- 什么是计算机网络 它有哪些主要功能,什么是计算机网络及主要功能有哪些?...
- Python3版本Django实现免费手机验证码注册
- 路由 router-view 实现点击跳转时不打开新网页,而是在当前显示
- MATLAB基于Canny边缘检测的车牌识别
- uniapp使用Dplayer.js实现视频播放
- vmware fusion8虚拟机win10桥接无法上网的问题