学习笔记:DualRing: 一种环签名的通用构造及实例


边学习边整理。
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

贡献

  1. 提出双环签名的通用结构:签名由n个challenge和1个response组成(不同于AOS通用环签名:包含n个response和1个challenge)
  2. 新的Argument of knowledge: Sum Argument
  3. DualRing-EC deploying Schnorr identification scheme with Sum Argument: better efficiency
  4. 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:

  1. 在重构 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)
  2. 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(z1z2)
  3. 给定 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)
  4. 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,...cj1,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...cnc1...cj1 ⊘ \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) zZ(skj,cj,rj),生成签名包含一个response z z z和n个challenges ( c 1 , . . . , c n ) (c_1,...,c_n) (c1,...,cn)
在这里插入图片描述
和AOS相比的优势

  1. 如果response大challenge小,可节省空间
  2. 通过避免使用hash降低复杂度到O(log n)
  3. 用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}: ab: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} Lx2PRx2 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} uG在群 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时:

  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=1naibi+n=i=1nai 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+1naibin=i=n+1nai
  2. 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=1ngiai)u^cR.
  3. 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).
  4. 计算 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=(g1x1,...,gnx1)(gn+1x,...,gnx)=(g1x1gn+1x,...,gnx1gnx) 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)+x1(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=x1(b1,...,bn)+x(bn+1,...,bn)=(x1+x)12n.(红色字仅第一轮)
  5. 递归计算 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+xi1)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中:

  1. 环签名的目的是证明环关系的合法性,DualRing中,是C环。而SA是证明某个向量关系,所以用SA帮助证明环签名,就是用NISA给出C环的证明(行7)。
  2. 上文讨论将SA用于Type-T* canonical identification的前提是满足相似的关系,所以在证明中要将DualRing关系式整理到SA关系的形式(行8)。
  3. 签名中 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}^+ kZ+
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={cZ[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的四个属性:

  1. R R R包含两个方法 V 1 V_1 V1 V 2 V_2 V2
  2. 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)=Gz1Gz2=G(z1+z2)=V1(z1+z2)
  3. 给定 s k , p k {\rm sk,pk} sk,pk c c c,可计算 z ~ = − c ⋅ s k \tilde{z}=-c\cdot {\rm sk} z~=csk使得 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(csk)=V2(pk,c)成立。(整理等式即可得)
  4. 挑战空间 C \mathcal{C} C是在加法模3下的一个群。
    注意:不知道如何用sum argument生成一个有效的格基零知识证明。所以这篇文章的格基签名的规模仍然是 O ( n ) O(n) O(n),而已有研究达到了 O ( l o g n ) O(log n) O(logn),因此在某个点之后会产生更长的签名。
  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值