文献笔记: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
贡献
- 提出双环签名的通用结构:签名由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),因此在某个点之后会产生更长的签名。