Bootle, J., Elkhiyaoui, K., Hesse, J., Manevich, Y. (2022). DualDory: Logarithmic-Verifier Linkable Ring Signatures Through Preprocessing. ESORICS 2022.
https://link.springer.com/chapter/10.1007/978-3-031-17146-8_21
在这项工作中,原文作者构建了第一个具有对数签名大小和验证的可链接环签名,不需要任何可信机制。这个方案依赖于离散对数类型假设和双线性映射,通过集成改进的预处理参数,改进了DualRing的环签名,以减少环大小从线性到对数的验证时间。
dualory=Dualring+Dory
Dory is a pairing-based interactive argument,通过一次性离线预处理阶段实现对数验证时间,代替bulletproof。使DualRing的线性验证成本降至对数。
通过确定性标签进一步增强了DualDory的可链接性。更准确地说,将Pedersen承诺和知识签名结合起来,以表明标签是使用环中的一个密钥计算的。作为一个积极的副作用,我们能够预先计算签名的线性工作,当消息已知时,只需要执行恒定数量的操作。
Overview
DualRing
加入可链接性
引入了prefix linkability,其中要签名的字符串被分成两个部分:前缀 p r f x prfx prfx和消息 m m m。如果两个签名是由同一用户创建的,则可以链接它们,并使用相同的前缀 p r f x prfx prfx签名消息。
构造prefix-linkable,签名者计算一个标签tag
H
′
(
p
r
f
x
)
s
k
H'(prfx)^{sk}
H′(prfx)sk
为了确保使用与签名其余部分相同的秘密密钥正确计算标签tag,让签名者为其秘密密钥生成Pedersen承诺
c
o
m
=
P
s
k
Q
r
com = P^{sk}Q^r
com=PskQr,并使用基于标准sigma协议的“tag proof”来显示
c
o
m
com
com和
t
a
g
tag
tag都使用相同的秘密密钥。(注意,不能对用户的公钥执行这种一致性检查,因为这会泄露用户的身份。)
进一步的问题。签名者可以使用DualRing来证明自己掌握环中一个私钥,但此证明与tag或com无关。解决:签名者知道
c
o
m
=
P
s
k
Q
r
com=P^{sk}Q^r
com=PskQr对应的
s
k
,
r
sk,r
sk,r,那么他知道如何打开环
(
c
o
m
/
p
k
1
,
.
.
.
,
c
o
m
/
p
k
n
)
(com/pk_1,...,com/pk_n)
(com/pk1,...,com/pkn)中某一个承诺到0,即,他们知道
r
r
r满足
c
o
m
/
p
k
i
=
Q
r
com/pk_i=Q^r
com/pki=Qr.
将DualRing应用于
(
c
o
m
/
p
k
1
,
.
.
.
,
c
o
m
/
p
k
n
)
(com/pk_1,...,com/pk_n)
(com/pk1,...,com/pkn),并添加tag proof产生一个LRS,其中验证者检查tag proof和以下方程:
此签名的大小可在dualring中可减少到
O
(
l
o
g
n
)
O(log~n)
O(log n)。但是,验证时间仍然是
O
(
n
)
O(n)
O(n)。
同时减少签名大小和验证时间
https://link.springer.com/chapter/10.1007/978-3-030-90453-1_1
Dory方案是将bulletproof推广到双线性对:
优化验证成本:Dory允许在离线阶段一劳永逸地对commitment keys 进行预处理。此后,验证者只需要对这些密钥使用简洁的承诺,并产生
O
(
l
o
g
n
)
O (log~n)
O(log n)成本。
Dory构造:
- 映射到双线性对:将(3)和(4)(prefix-Dualring验证方程)映射到双线性群上的方程。假设DualRing方案已经在双线性group的
G
1
\mathbb{G}_1
G1上执行。考虑group元素
e
(
P
,
P
~
)
e(P,\tilde{P})
e(P,P~)(其中
P
∈
G
1
,
P
~
∈
G
2
P\in\mathbb{G}_1,\tilde{P} \in\mathbb{G}_2
P∈G1,P~∈G2)。利用方程(3)的左右两边取幂,利用
e
e
e的双线性,得到
类似地,(6)可以与 P ~ \tilde{P} P~配对并重新排列得到
由于幂和双线性对的映射都是单射,所以方程(5)(6)包含了(3)(4). - 证明条件成立:给定对 ( P , … , P ) ∈ G 1 n , ( P ~ c 1 , … , P ~ c n ) ∈ G 2 n (P,…,P)\in\mathbb{G}_1^n,(\tilde{P} ^{c_1},…,\tilde{P} ^{c_n})\in\mathbb{G}_2^n (P,…,P)∈G1n,(P~c1,…,P~cn)∈G2n, ( c o m / p k i ) i = 1 n ∈ G 1 n (com/pk_i)_{i=1}^n\in\mathbb{G}_1^n (com/pki)i=1n∈G1n的承诺,签名者可以使用Dory来证明公式(5)和公式(6)成立,每个方程的左侧作为目标值。注意,(5)中的目标值涉及n个值,因此为了避免这里的 O ( n ) O(n) O(n)个验证器成本,我们将这些值替换为 ( c o m / p k 1 , … , c o m / p k n ) (com/pk_1,…,com/pk_n) (com/pk1,…,com/pkn)的承诺。只要承诺方案具有约束力,这仍然足以保证DualRing的安全性。
- 优化验证:使用
O
(
n
)
O(n)
O(n)次离线操作和
O
(
l
o
g
n
)
O(log~n)
O(log n)次在线操作来计算对
(
c
o
m
/
p
k
1
,
…
,
c
o
m
/
p
k
n
)
∈
G
1
n
(com/pk_1,…,com/pk_n)\in\mathbb{G}_1^n
(com/pk1,…,com/pkn)∈G1n的承诺。由于
c
o
m
com
com依赖于随机性
r
r
r,它对于每个签名都是不同的,因此验证者不可能独立于任何签名一劳永逸地计算这个承诺。
相反,验证者离线计算 Γ ~ : = ∏ i = 1 n Γ ~ i \tilde{\Gamma} :=\prod_{i=1}^n\tilde{\Gamma}_i Γ~:=∏i=1nΓ~i,一个 ( p k 1 , … , p k n ) (pk_1,…,pk_n) (pk1,…,pkn)的承诺 A 0 : = ∏ i = 1 n e ( p k i , Γ ~ i ) {\rm A}_0:=\prod_{i=1}^n e(pk_i,\tilde{\Gamma}_i) A0:=∏i=1ne(pki,Γ~i),这需要 O ( n ) O(n) O(n)次操作。这并不依赖于签名的任何部分,并且可以为每个环“离线”计算一次,然后在“在线”签名验证中重用。请注意,承诺密钥的长度 n n n给出了可以提交的用户公钥数量的上限。在验证签名时,验证者可以计算对 ( c o m / p k 1 , … , c o m / p k n ) (com/pk_1,…,com/pk_n) (com/pk1,…,com/pkn)的承诺 e ( c o m , Γ ~ ) / A 0 e(com,\tilde{\Gamma})/{\rm A}_0 e(com,Γ~)/A0。
Preliminaries
Argument of Knowledge
Argument of Knowledge for Pairing Products
notations
定义关系
Signature of Knowledge
Prefix-Linkable Ring Signature Schemes
tag proof
tag proof 用于证明
c
o
m
com
com和
t
a
g
tag
tag使用了相同的
s
k
sk
sk,且不泄露秘密
s
k
,
r
sk,r
sk,r
X
\mathbb{X}
X公开参数,
W
\mathbb{W}
W秘密参数,关系
R
T
a
g
\mathcal{R}_{Tag}
RTag的SoK (with message
m
m
m):
DualDory
(用大写字母表示group元素,小写字母表示
Z
p
\mathbb{Z}_p
Zp元素,带~的表示
G
2
\mathbb{G}_2
G2中的元素,下划
_
\_
_表示向量,粗体表示
G
T
\mathbb{G}_T
GT)
签名过程
- 计算 c o m com com,并用 c o m com com迭代公钥环 p k i ′ pk_i' pki′
- 生成
p
k
′
pk'
pk′的承诺(为了验证的时候不再需要
O
(
n
)
O(n)
O(n)),在Dualring中代替公钥环计算hash值
A = e ( c o m , Γ ~ ) / A 0 = e ( c o m , ∏ i = 1 n Γ ~ i ) / ∏ i = 1 n e ( p k i , Γ ~ i ) = ∏ i = 1 n e ( p k i ′ , Γ ~ i ) = e ( p k ′ ‾ , Γ ~ ‾ ) {\rm A}=e(com,\tilde{\Gamma})/{\rm A}_0=e(com,\prod_{i=1}^n\tilde{\Gamma}_i)/\prod_{i=1}^ne(pk_i,\tilde{\Gamma}_i)=\prod_{i=1}^ne(pk_i',\tilde{\Gamma}_i)=e(\underline{pk'},\underline{\tilde \Gamma}) A=e(com,Γ~)/A0=e(com,∏i=1nΓ~i)/∏i=1ne(pki,Γ~i)=∏i=1ne(pki′,Γ~i)=e(pk′,Γ~) - 环 p k ′ ‾ \underline{pk'} pk′上的Dualring签名,但并没有对消息 m m m签名。
- 通过关系的AoK证明双线性化的签名验证方程(5)(6)(这是为了优化验证的复杂度):
B
=
e
(
Γ
‾
c
‾
,
P
~
)
,
C
=
e
(
Q
y
/
Q
x
∏
i
≠
j
p
k
i
′
−
c
i
,
P
~
)
=
e
(
Q
r
⋅
c
j
∏
i
≠
j
p
k
i
′
c
i
,
P
~
)
=
e
(
p
k
j
′
c
j
∏
i
≠
j
p
k
i
′
c
i
,
P
~
)
=
e
(
p
k
′
‾
,
P
~
)
{\rm B}=e(\underline{\Gamma}^{\underline c},\tilde{P}),{\rm C}=e(Q^y/Q^x \prod_{i\neq j}pk_i'^{-c_i},\tilde P)=e(Q^{r\cdot c_j} \prod_{i\neq j}pk_i'^{c_i},\tilde P)=e(pk_j'^{c_j} \prod_{i\neq j}pk_i'^{c_i},\tilde P)=e(\underline{pk'},\tilde P)
B=e(Γc,P~),C=e(Qy/Qx∏i=jpki′−ci,P~)=e(Qr⋅cj∏i=jpki′ci,P~)=e(pkj′cj∏i=jpki′ci,P~)=e(pk′,P~)符合关系的定义规范,
π
1
\pi_1
π1对应验证方程(6)
类似地, π 2 \pi_2 π2对应验证方程(5),并通过 A , B \rm A,B A,B连接两个关系。 - 用于耦合可链接性的tag proof(SoK)以及签名消息 m m m:生成tag,和com、prfx一起作为证明的公开参数,用私密参数 ( s k , r ) (sk,r) (sk,r)生成(关系+消息)的知识签名。
验证过程需要对三个证明/知识签名进行验证
- 首先要恢复出用于验证缺少的参数: ( A , C ) , ( E ) ({\rm A,C),(E}) (A,C),(E)
- 三次验证
链接过程因为是前缀/事件链接,所以必须是同一prfx下不同消息的两个签名,由同一签名者生成,比对tag