Ashley Fraser and Elizabeth A Quaglia. Report and trace ring signatures. In International Conference on Cryptology and Network Security, pages 179-199. Springer, 2021(CACR C).https://link.springer.com/chapter/10.1007/978-3-030-92548-2_10
引入了报告和跟踪环签名方案,平衡了签名者匿名的愿望和报告恶意行为并随后撤销匿名的能力。与现有的问责环签名文献进行了比较。
这篇文章的意义更多地是给出了一种定义和范式。
Report and trace ring signatures
Syntax and Security
Syntax
Security
Oracles
O
X
(
y
1
,
.
.
.
,
y
n
)
(
z
1
,
.
.
.
,
z
n
)
:
\mathcal{O}X_{(y_1,...,y_n)}(z_1, . . . , z_n):
OX(y1,...,yn)(z1,...,zn):oracle X可以访问的参数集合
y
1
,
.
.
.
,
y
n
y_1,...,y_n
y1,...,yn,并以
z
1
,
.
.
.
,
z
n
z_1,...,z_n
z1,...,zn为输入
O
r
e
g
\mathcal{O}{reg}
Oreg,
O
c
o
r
r
u
p
t
\mathcal{O}{corrupt}
Ocorrupt,
O
s
i
g
n
\mathcal{O}{sign}
Osign按预期操作:分别为用户注册、用户损坏和签名生成建模
调用
O
r
e
p
o
r
t
\mathcal{O}{report}
Oreport来获取消息的报告令牌,调用
O
t
r
a
c
e
\mathcal{O}{trace}
Otrace来跟踪消息的签名者
Anonymity
对抗生成密钥的匿名性。因此,我们假设对手可以破坏和控制users和reporters,但tracer是诚实的。
要求对手在获得challenge 签名时,不能确定两个潜在的诚实签名者中哪一个生成了签名,前提是对手没有获得质疑签名的trace。
Unforgeability
假设对手控制trace程序,并可以破坏和控制users和reporters。我们要求对手不能为诚实用户环输出有效签名,其中签名不是签名oracle的输出。
Traceability
- Trace correctness:要求诚实生成的签名必须可跟踪到正确的签名者。
- Non-frameability:表示报告和跟踪机制不能将非签名者识别为签名者。
- trace soundness:报告和跟踪机制识别的签名者是唯一的。
Reporter Anonymity
要求报告不暴露产生报告的环成员。我们正式地将记者匿名性定义为这样一种属性:当对手提供一份报告供其签名时,他无法确定两名潜在的记者中是哪一位撰写了这份报告。
A Report and Trace Ring Signature Construction
setup & keygen
方案中共出现了4种密钥:
- RS:用于环签名的密钥对
- PKE:用于(签名)加密的密钥对
- Sign:用于report的密钥对
- T:用于追溯的密钥对
Sign
- 加密 reporter token s k s i g n sk_{sign} sksign to each ring member: P K E p k P K E i ( s k s i g n ) → { c 1 , i } i = 1 ∣ R ∣ → c 1 PKE_{pk_{PKE_i}}(sk_{sign})\rightarrow\{c_{1,i}\}_{i=1}^{|R|}\rightarrow {\bf c_1} PKEpkPKEi(sksign)→{c1,i}i=1∣R∣→c1
- 签名者证明每个PKE密文都加密了与
p
k
S
i
g
n
pk_{Sign}
pkSign相关的 reporter token
s
k
s
i
g
n
sk_{sign}
sksign,该令牌包含在签名中。即为如下关系 提供NIZK证明:
- 然后,对签名者的验证密钥 p k R S pk_{RS} pkRS在跟踪者的公钥下进行加密,得到密文 c 2 ← P K E p k T ( p k R S ) {\bf c_2}\leftarrow PKE_{pk_T}(pk_{RS}) c2←PKEpkT(pkRS),再对密文 c 2 {\bf c_2} c2在新生成的公钥 p k S i g n pk_{Sign} pkSign下进行加密,得到密文 c 3 ← P K E p k s i g n ( c 2 ) {\bf c_3}\leftarrow PKE_{pk_{sign}}({\bf c_2}) c3←PKEpksign(c2)。
- 最后,签名者产生一个知识签名SoK,证明
c
3
{\bf c_3}
c3加密一个验证密钥,签名者知道与其相关联的签名密钥
report & trace
环成员运行report来解密reporter token:
D
e
c
s
k
P
K
E
(
c
1
,
i
)
=
s
k
s
i
g
n
Dec_{sk_{PKE}}(c_{1,i})=sk_{sign}
DecskPKE(c1,i)=sksign
报告器还提供正确解密的证明,但不透露是哪个环成员解密了token。
- 在收到报告时,跟踪程序运行Trace来解密密文 c 2 ← D e c s k s i g n ( c 3 ) c_2\leftarrow Dec_{sk_{sign}}(c_3) c2←Decsksign(c3)和 p k R S ← D e c s k T ( c 2 ) pk_{RS}\leftarrow Dec_{sk_T}(c_2) pkRS←DecskT(c2)并揭示签名者的验证密钥。
- 由于
s
k
S
i
g
n
sk_{Sign}
skSign包含在report中,任何人都可以解密
c
3
c_3
c3,因此可以直接检查正确的解密。因此,跟踪程序只需要证明
c
2
c_2
c2的正确解密,它由以下关系给出:
综上我们可以总结一下签名的组成及作用 σ = ( p k s i g n , c 1 , c 2 , ρ , σ S O K ) \sigma=(pk_{sign},{\bf c_1},c_2,\rho,\sigma_{SOK}) σ=(pksign,c1,c2,ρ,σSOK):
- c 1 {\bf c_1} c1构造环关系并绑定report token(任意环成员能够解开并获得 s k s i g n sk_{sign} sksign), ρ \rho ρ证明其合法性
- c 2 c_2 c2用 p k T pk_T pkT加密 p k R S pk_{RS} pkRS,再将密文用 p k s i g n pk_{sign} pksign加密到 c 3 c_3 c3。Trace中必须拥有 s k s i g n sk_{sign} sksign和 s k T sk_{T} skT才能顺利解密出身份 p k R S pk_{RS} pkRS.(所以只有环成员主动申请了report才能trace)
- c 2 c_2 c2的作用是trace, c 3 c_3 c3的作用是封装 c 2 c_2 c2并实现report前置
- σ S O K \sigma_{SOK} σSOK才是真正的环签名,证明了 c 2 c_2 c2, c 3 c_3 c3的生成过程,结合签名消息 m m m
Verify
σ
=
(
p
k
s
i
g
n
,
c
1
,
c
2
,
ρ
,
σ
S
O
K
)
\sigma=(pk_{sign},{\bf c_1},c_2,\rho,\sigma_{SOK})
σ=(pksign,c1,c2,ρ,σSOK), check:
-
N
I
Z
K
.
V
e
r
i
f
y
(
ρ
)
=
1
NIZK.Verify_{}(\rho)=1
NIZK.Verify(ρ)=1,
S
o
K
,
V
e
r
i
f
y
(
m
,
σ
S
O
K
)
=
1
SoK,Verify(m,\sigma_{SOK})=1
SoK,Verify(m,σSOK)=1
两步验证分别证明了 c 1 , c 2 , c 3 {\bf c_1},c_2,c_3 c1,c2,c3的加密合法性,以及签名密钥生成合法性
它确保签名者提供他们自己的公钥的加密,如果消息是恶意的,则支持跟踪。
公共跟踪验证算法VerTrace确保跟踪正确的签名者
- 这个验证需在report和trace完成后进行,否则无法进行前两步NIZK验证( c 1 , c 2 {\bf c_1},c_2 c1,c2解密的正确性)
- 验证签名的有效性:签名者提供他们自己公钥的环结构和有效消息签名
- 由于任何参与方都可以申请report得到 s k s i g n sk_{sign} sksign,故而可以自行验证 c 3 c_3 c3的正确解密
Instantiating
PKE: ElGamal encryption
SoK: Short Accountable Ring Signatures Based on DDH
NIZK: 我们用各种Σ-protocols实例化了我们的NIZK协议,用于签名、报告和跟踪。
Setup & keygen
S e t u p ( 1 λ ) → ( p p P K E , p p S O K ) Setup(1^\lambda)\rightarrow(pp_{PKE},pp_{SOK}) Setup(1λ)→(ppPKE,ppSOK)
- p p P K E = p p N I Z K = ( G , g , q ) pp_{PKE} = pp_{NIZK} = (\mathbb{G},g,q) ppPKE=ppNIZK=(G,g,q)
- p p S O K = ( e k , c k ) pp_{SOK}=(ek,ck) ppSOK=(ek,ck): e k ek ek is an ElGamal encryption key, c k ck ck is a key for a commitment scheme.
- f ( x ) : = g x , x ∈ Z q f(x):=g^x,x\in \mathbb{Z}_q f(x):=gx,x∈Zq one way function
k e y g e n ( p p ) → ( ( p k T , s k T ) , ( p k U , s k U ) ) keygen(pp)\rightarrow((pk_T,sk_T),(pk_U,sk_U)) keygen(pp)→((pkT,skT),(pkU,skU))
- p k T = ( g s k T , s k T ) pk_T=(g^{sk_T},sk_T) pkT=(gskT,skT)
- ( p k U , s k U ) = ( ( g s k R S , g s k P K E ) , ( s k R S , s k P K E ) ) , s k T , s k R S , s k P K E ∈ Z q (pk_U,sk_U)=((g^{sk_{RS}},g^{sk_{PKE}}),(sk_{RS},sk_{PKE})),sk_{T},sk_{RS},sk_{PKE}\in \mathbb{Z}_q (pkU,skU)=((gskRS,gskPKE),(skRS,skPKE)),skT,skRS,skPKE∈Zq
Sign
S i g n ( ) → Sign()\rightarrow Sign()→
- 用ElGamal encryption实例化PKE:密文 c 1 , c 2 = ( A 2 , B 2 ) = ( g r 2 , p k T r 2 ⋅ p k R S ) , c 3 = ( A 2 , A 3 , B 3 ) = ( g r 2 , g r 3 , p k S i g n r 3 ⋅ p k T r 2 ⋅ p k R S ) {\bf c_1},c_2=(A_2,B_2)=(g^{r_2},pk_T^{r_2}\cdot pk_{RS}),c_3=(A_2,A_3,B_3)=(g^{r_2},g^{r_3},pk_{Sign}^{r_3}\cdot pk_T^{r_2}\cdot pk_{RS}) c1,c2=(A2,B2)=(gr2,pkTr2⋅pkRS),c3=(A2,A3,B3)=(gr2,gr3,pkSignr3⋅pkTr2⋅pkRS)
- 使用一种已有的 Σ \Sigma Σ协议生成 ρ \rho ρ,然后用Fiat-Shamir变换生成NIZK
- 改进已有的一种SoK生成 σ S O K \sigma_{SOK} σSOK,证明签名者知道 s k R S sk_{RS} skRS使得 p k R S = g s k R S pk_{RS}=g^{sk_{RS}} pkRS=gskRS是环中的元素
Report & trace
- P K E . D e c PKE.Dec PKE.Dec,由于离散对数的性质,不需要证明解密的正确性
- p k s i g n = g s k s i g n pk_{sign}=g^{sk_{sign}} pksign=gsksign,tracer可以使用reporter的返回平凡地检查解密正确性
- tracer解密signer的ID: B 3 / ( A 2 s k T A 3 s k s i g n ) = p k S i g n r 3 ⋅ p k T r 2 ⋅ p k R S / ( g r 2 ⋅ s k T g r 3 ⋅ s k s i g n ) = p k R S B_3/(A_2^{sk_T}A_3^{sk_{sign}})=pk_{Sign}^{r_3}\cdot pk_T^{r_2}\cdot pk_{RS}/(g^{r_2\cdot sk_T}g^{r_3\cdot sk_{sign}})=pk_{RS} B3/(A2skTA3sksign)=pkSignr3⋅pkTr2⋅pkRS/(gr2⋅skTgr3⋅sksign)=pkRS