无需配对的可匿名化环签名
奥利维尔·布拉齐1(B),泽维尔·布尔特尔2,和帕斯卡尔·拉富尔卡德2
1 Xlim,利摩日大学,法国利摩日 olivier.blazy@unilim.fr
2 LIMOS,克莱蒙奥弗涅大学,法国克莱蒙费朗
摘要
环签名是一种众所周知的密码学原语,允许拥有签名密钥的任何用户根据一个用户组匿名地对消息进行签名。几年前,Hoshino et al. 提出了一种新型环签名,其中任何人都可以将数字签名转换为根据选定用户组生成的匿名签名;作者提出了一个在随机预言模型下基于间隙 Diffie‐Hellman假设安全的基于配对的构造。然而,由于生成匿名签名所需的配对计算数量与用户组大小成线性关系,该方案在大用户组情况下效率较低。本文提出了一种更高效的无需配对的可匿名化签名方案。我们的匿名化算法仅需在素数阶群中执行 n次指数运算,其中 n为用户组大小。该方案在随机预言机模型下基于离散对数假设是安全的,这是一个更为标准的假设。
1 引言
可匿名化签名[7]是一种环签名,任何拥有群成员生成的签名的人都可以将其转换为群内的匿名签名:人们可以验证该匿名签名是由群成员签名生成的,但无法猜测具体是谁。在实际应用中,这种方案允许用户将特定签名的匿名化任务委托给代理。例如,在学术会议的审稿过程中,每位审稿人可以在将评审意见发送给程序委员会主席之前对其进行签名。然后,程序委员会主席将该签名匿名化,并将评审意见和匿名签名一起发送给论文作者。这样,作者可以确信评审意见来自程序委员会的一名成员,但不知道具体是哪位审稿人。此外,审稿人无需了解程序委员会的其他成员。
[7]的作者提出了一种基于配对的方案,在随机预言模型下基于gap Diffie‐Hellman假设是安全的。在该方案中,匿名签名是对群内有效签名的知识证明。然而,该方案在大规模群组中效率较低:匿名化需要一个配对计算的数量与群的大小呈线性关系。在本文中,我们提出了GAWP(即 Get Anonymizable signature Without Pairing),一种高效的无配对可匿名化签名方案。该方案基于Schnorr签名[9],并采用与[7]相同的方法。此外,我们的方案在随机预言模型下基于离散对数假设是可证明安全的。
相关工作
环签名由Rivest等在[8]中提出。这种签名方案允许用户在群组内匿名地对消息进行签名。由于用户仅需群组中所有成员的公钥以及自己的私钥,因此该原语无需像群签名[2]那样依赖任何群组管理员。最近,研究者提出了环签名的形式化安全定义[1]。在[7]中,Hoshino等定义了可匿名化签名,该概念扩展了环签名,增加了将任意签名转换为在指定群组内的匿名签名的可能性。作者对该新原语进行了形式化的安全模型定义,并基于BLS签名[3]提出了一个在随机预言机模型下可证明安全的实例化方案。该方案依赖于双线性对运算。据我们所知,这是文献中唯一的一个可匿名化签名方案。最后,可重链接签名[10]与匿名签名类似:该原语允许拥有重链接密钥的代理将一个匿名签名的群组进行更改。然而,普通用户无法对签名进行匿名化处理。此外,在匿名签名中,签名对所有人都是匿名的,而在可重链接签名中,代理能够识别签名归属,因此对代理而言不具有匿名性。
Outline
在下一节中,我们将介绍本工作所需的密码学基础。第3节给出可匿名化签名及其对应安全模型的形式化定义。然后在第4节介绍方案GAWP,并在最后一节之前分析其安全性。
2 背景
在本节中,我们回顾一些定义和密码学概念。
定义1(离散对数)
设 G为一个素数阶 p的乘法群, g ∈ G为其生成元。给定(g, g^x),离散对数问题(DL)是指计算 x 。离散对数假设指出,不存在能够在多项式时间内以不可忽略的优势解决DL问题的多项式时间算法。
零知识证明
[6] A知识证明是两个多项式时间算法之间的一种双人协议, P(证明者)和 V(验证者)。它允许证明者 P 说服验证者 V,使其相信他知道某个问题实例 I的解 s。如果该协议满足以下性质,则称其为零知识的知识证明(ZKP):
- 完备性 :如果 P知道 s,那么他能够说服 V(即, V输出“接受”)。
- 可靠性 :如果 P不知道 s,那么他无法说服 V(即, V输出“拒绝”),除非概率可以忽略不计。
- 零知识性 : V仅了解到一无所知关于 s,除了 I。
诚实验证者零知识证明 (HZKP) 是 ZKP 的一种较弱形式,其限制于验证者是诚实的场景,即 V正确执行协议。
如果证明者与验证者之间只有一条消息流,则称该 ZKP 为非交互式( NIZKP)。在文献中,Sigma协议 是指证明者与验证者之间有三次交互的 ZKP:承诺、挑战和响应。例如,Schnorr协议 [9]是一种 Sigma 协议,用于证明知道某个实例的离散对数(g, k= g^x):证明者选择 r←$ Z∗ p并发送 R= g^r。然后验证者向证明者发送挑战c ←$ Z∗ p,证明者以值 z= r+ x · c作为响应。当且仅当 g^z= h· k^c时,验证者接受该证明。
如果挑战选自一个较大的集合,就可以使用Fiat‐Shamir启发式将sigma协议转化为NIZKP[5],即用哈希函数对承诺的摘要来替代挑战。此外,还可以通过在随机预言模型中将消息与承诺一起作为哈希函数的输入来计算挑战,从而将此类NIZKP转换为签名方案。例如,Schnorr签名就是通过对Schnorr协议应用此转换而得到的:要使用私钥 x ∈ Z∗ p对消息 m进行签名,签名者选择 r并计算 h= g^r和 z= r+ x · H(h, m)。任何人均可使用公钥 k= g^x和签名 (h, z)验证g^z= h· k^{H(h,m)},以确认 m上的签名有效性。
最后,我们的方案使用了由[4]设计的ZKP通用转换。作者提出了一种从某个问题实例解的零知识证明(ZKP)到多个问题实例中某一问题实例解的零知识证明(ZKP)的通用转换(且不泄露具体是哪一个问题实例)。该转换适用于任意sigma协议,其工作方式如下:考虑n个实例{Ii}1≤i≤n,以及一个只知道实例 I1的解 s1的证明者。证明者发送针对 1 ≤ i ≤ n的 n承诺 hi,并收到一个唯一的挑战 c。对于所有实例{Ii}2≤i≤n,证明者选择一个挑战 ci,使得他能够使用 hi和挑战ci按照原始sigma协议的方式证明他知道 Ii的解(注意,由于挑战由证明者自行选择,因此他无需真正知道对应的秘密)。最后,他计算 c1= c⊕ c2 ⊕…⊕ cn,并使用 h1和挑战 c1按照原始sigma协议的方式证明他知道 I1的解(注意,在这种情况下,证明者必须知道秘密 s1才能完成证明)。然后验证者检查所有对(hi, ci)的证明,并验证 c= c1 ⊕… ⊕ cn。所得到的ZKP的计算和空间开销是基础零知识证明的 n倍。可以在此类ZKP上应用 Fiat‐Shamir转换以获得等效的NIZKP。
3 安全模型
我们首先给出可匿名化的环签名的形式化定义。
定义2(可匿名化的环签名(ARS))
一个ARS是由以下算法组成的元组 (Init,Gen,Sig, Ver,Ano,AVer),满足:
- Init(1^t) :该算法从安全参数 t输出一个初始化值。
- Gen(init) :该算法从init输出一个签名密钥对(ssk, svk)。
- Sig(ssk, m) :该算法使用签名私钥ssk对消息 m生成签名 σ 。
- Ver(svk, σ, m) :当 σ是消息 m相对于验证公钥svk的有效签名时,该算法返回1;否则返回0。
- Ano(L, σ, m, svk) :该算法根据公钥集合 L,从签名 σ及其对应的验证公钥svk,对消息 m生成匿名签名 σ̂。
- AVer(L, σ̂, m) :当 σ̂是消息 m相对于验证公钥集合 L的有效签名时,该算法返回 1;否则返回0。
在接下来的内容中,我们用outO表示在实验过程中由预言机 O输出的所有值的集合。第一个安全要求是不可伪造性。ARS具有不可伪造性是指,在没有相应私钥的情况下无法伪造签名,且在没有群成员之一的有效签名时无法伪造匿名签名。在此模型中,允许攻击者向某个签名预言机针对选定的消息和选定的用户请求匿名签名和普通签名。当然,为了成功实施攻击,攻击者必须伪造出一个并非来自这些预言机的签名。
定义3(存在性不可伪造‐选择消息攻击(EUF‐CMA)安全性)
设 P是一个安全参数为 t的ARS,且令 A=(A1, A2)为一个多项式时间敌手。我们对 A定义如下的存在性不可伪造性针对选择消息攻击的实验:
Expeuf-cma(P, A, (t, n)):
- init ← 初始化(1^t)
- ∀ i ∈{0,…, n}, (sski, svki) ← Gen(init)
- I ← A^{GO(·), SO(·), AO(·)}
1(t, {svki}
{0≤i≤n})
- (L∗, σ̂, m) ← A^{GO(·), SO(·), AO(·)}
2(t, {svki}
{0≤i≤n}, {sski}_{i∈I})
if ((匿名验证(L∗, σ̂, m) = 1) and (L∗ ⊂ {svki}_{0≤i≤n}, i∉I) and (∀ svk ∈ L∗, (svk, m, ∗) ∉ outSO) and ((L∗, m, σ̂) ∉ outAO)) then output 1 else output 0.
预言机的定义如下:
- GO(·) 是一个密钥生成预言机,它增加 n ← n+ 1,生成 (sskn, svkn) ← Gen(init) 并返回该结果。
- SO(·) 是一个签名预言机,以 (svki, m) 作为输入,计算 σ ← Sig(sski, m) 并返回 (svki, m, σ)。
- AO(·) 是一个匿名化预言机,以 (svki, m, L) 作为输入,计算 σ ← Sig(sski, m) 和 σ̂ ← Ano(L, σ, m, svki),并返回 (L, m, σ̂)。
我们定义攻击者 A在存在性不可伪造-选择消息攻击(EUF-CMA)实验中的优势为 Adv^euf-cma_P,A(t, n) = Pr[Expeuf-cma(P, A, (t, n)) = 1]。我们将存在性不可伪造-选择消息攻击(EUF-CMA)实验的优势定义为 Adv^euf-cma_P(t, n) = max_{A∈poly(t)}{Adv^euf-cma_P,A(t, n)}。我们称一个ARS方案 P是存在性不可伪造-选择消息攻击(EUF-CMA)安全的,当对于任意多项式有界 n,其优势Adv^euf-cma_P(t, n)均可忽略。
第二个安全要求是匿名性。粗略地说,当无法猜测出用于计算匿名签名的签名是由谁生成时,该ARS即具备匿名性。在此安全模型中,攻击者选择两个用户和一条消息 m,并收到一个匿名签名,该匿名签名是由包含在更大集合 L中的两个用户之一对 m进行签名后生成的。其目标是猜测出挑战者所选择的用户。为了帮助攻击者,其可以访问一些签名预言机。
定义4 (匿名性)
设 P为安全参数 t下的ARS,且A=(A1, A2)为多项式时间敌手。我们定义攻击者 A针对 P的匿名性实验如下:
Expanon(P, A, (t, n)):
- b ← {0, 1}
- init ← Init(1^t)
- ∀ i ∈{0,…, n}, (sski, svki) ← Gen(init)
- (i0, i1, L, m) ← A^{GO(·), SO(·), AO(·)}
1(t, {(sski, svki)}
{0≤i≤n})
- If i0 OR i1 ∉ L then Abort
- σ̂ ← 匿名化(L, Sig(ssk_ib, m), m, svk_ib)
- b′ ← A^{GO(·), SO(·), AO(·)}_2(t, σ̂)
- output b = b′.
其中 GO(·)、 SO(·)以及 AO(·)的定义如定义3 所述。
攻击者 A在匿名性上的优势为 Adv^anon_P,A(t, n) = |Pr[Exp_anon(P, A, (t, n)) = 1] − 1/2|。我们通过 Adv^anon_P(t, n) = max_{A∈poly(t)}{Adv^anon_P,A(t, n)}定义匿名性实验的优势,其中 poly(t)是关于 t的多项式时间内所有算法的集合。对于任意多项式有界的 n,若ARS方案 P的匿名性优势Adv^anon_P(t, n)可忽略,则称该ARS方案具有匿名性。
4 构造方法
在本节中,我们提出了一种称为GAWP(即获取ARS而无需配对)的方案。我们采用与[7]相同的设计方法:为了对消息σ的签名进行匿名化 m,用户需根据群中所有验证密钥中的一个验证密钥,计算关于 σ的知识的非交互式零知识证明。我们的方案基于著名的Schnorr签名(见第2节)。具体而言,签名算法和验证算法与Schnorr签名相同:设 g为一个素数阶群的生成元,则签名算法输出 h= g^r和 z= r+ ssk · H(h, m),其中 r是一个随机值,ssk为签名密钥, m为消息。为验证一个签名,
用户验证 g^z= h · svk^{H(h,m)},其中 svk 是满足 svk = g^{ssk} 的公钥验证密钥。
然后,我们的目标是提供一种方法,用于证明知道群中某个验证密钥对应的有效的 Schnorr 签名。注意,签名的第一部分 h= g^r 不会泄露任何关于签名私钥 ssk 的信息,因此该值可以在匿名签名中公开。最后一步是根据 h、 m、 H 以及群中所有成员的验证密钥集合 L,证明知道签名的第二部分 z。更准确地说,我们的目标是证明知道 z,使得对于某个svk ∈ L,有 g^z= h·svk^{H(h,m)},且 h、 m 和 H 成立。接下来,我们首先给出可证明知道 Schnorr 签名的零知识证明;然后,给出 GAWP 的具体构造;最后分析其安全性。
知识证明构造
设 G为一个素数阶群 p, g是 G的生成元, n是一个整数。令 k和 h为 G中的两个元素, m为一个比特串,且 H:{0, 1}∗ → Z ∗ p是一个哈希函数。最后,对于所有 i ∈{1,…, n},我们设定实例元组 ti=(ki, h, m, H)。
接下来,我们展示如何构建 Π,即关于 z ∈ Z ∗ p的知识的非交互式零知识证明,使得存在一个实例(k, h, m, H) ∈{ti}1≤i≤n满足 z= log_g(h · k^{H(h,m)})。
我们首先在图1中描述交互式情况 Π0,其中 n= 1,因此仅存在一个实例 t= (k, h, m, H)。它是Schnorr协议[9]的一个变体。该证明是一个Sigma‐协议。
引理1. 零知识证明(ZKP) Π0是完备的、可靠的,且具有诚实验证者零知识性。
引理1的证明与Schnorr协议性质的证明类似 [9]。由于Π0是诚实验证者零知识的且为sigma协议,我们可以使用[4]的通用转换来获得针对任意 n ≥ 1的证明的交互版本。最后,在 Π0上应用该转换和Fiat‐Shamir启发式,我们在随机预言模型中构建非交互式证明 Π。
定理1. 该NIZKP Π在随机预言模型下是完备的、可靠的,且具有零知识性。
证明. 它是 [4]和引理 1的直接推论。
符号说明
我们用 Π.Proof(z, t, {ti} {1≤i≤n})表示生成此类证明的算法,其中 z 是秘密值, t=(k, h, m, H) ∈{ti} {1≤i≤n}是对应于 z的实例,满足 g^z= h · k^{H(h,m)},且{ti} {1≤i≤n}是所有实例的集合。我们用Π.Verif(π, {ti} {1≤i≤n})表示根据实例集合{ti}_{1≤i≤n}验证证明 π有效性的算法。
方案1(GAWP方案)
GAWP=(Init, Gen,Sig, Ver,Ano,AVer)是一个ARS,满足:
- Init(1^t) :该算法根据安全参数 t选择一个素数阶 p的群 G 。然后选择群 G的一个生成元 g和一个哈希函数H: {0, 1}∗ → Z∗ p。输出(G,p, g, H)。
- Gen(init) :该算法选取 x ←$ Z∗ p,计算签名私钥ssk = x和验证公钥svk = g^x,并返回 (ssk, svk)。
- Sig(ssk, m) :该算法选取 r ←$ Z∗ p,计算 h= g^r、 M= H(h, m)以及ssk · M,并返回 σ=(h, z)。
- Ver(svk, σ, m) :使用 σ=(h, z),如果g^z= h· svk^{H(h,m)},则该算法返回1,否则返回0。
-
Ano(L, σ, m, svk)
:使用 σ=(h, z),该算法计算关于存在见证 z的知识的零知识证明,使得存在 k ∈ L满足 g^z= h · k^{H(h,m)},且不泄露 z和 k。更准确地说,它使用非交互式零知识证明方案
σ̂= Π.Proof(z, (svk, h, m, H), {(k, h, m, H)}_{k∈L}),并返回结果。 - AVer(L, σ̂, m) :该算法计算 b= Π.Verif(σ̂, {(k, h, m, H)}_{k∈L}),并返回结果。
安全分析
我们有以下定理。
定理2。 如果不存在多项式时间算法 A以不可忽略的概率解决离散对数问题,则在随机预言模型中,对于任意多项式有界的 n,Adv^euf-cma_GAWP(t, n) 和 Adv^anon_GAWP(t, n) 关于 t都是可忽略的。
我们通过以下两个引理来证明这一点
引理 2。 在离散对数问题的困难性下,ARS 是不可伪造的。
证明。 我们将证明,如果存在一个多项式时间的攻击者 A能够以不可忽略的概率 ε在多项式时间内伪造我们的方案,则我们可以构造一个模拟器 B,其能够在类似多项式时间内以概率 ε/q破解离散对数问题,其中 q是系统中的用户数量。
假设 B收到一个离散对数挑战svk∗ ∈ G。我们将构建一个游戏序列,使得 B能够利用攻击者 A来计算 x,从而满足 g^x=svk∗。
我们首先通过选择一个随机用户,并将其公钥设置为svk∗来启动模拟,所有用户的密钥都是诚实地生成的(换句话说模拟器 B知道它们对应的签名密钥)。这意味着如果攻击者想要腐蚀某些用户,我们可以将相应的秘密密钥交给他。
处理签名查询时:
- 如果签名者是诚实用户, B则使用相关的(已知的)秘密签名密钥诚实地计算签名。
- 如果该用户是预期的挑战用户,则 B选择一个随机的 r ∈ Z∗ p,计算 h_r,并模拟零知识证明ˆσ,以表明这确实是一个包含挑战用户 i∗的用户集合 L的有效签名。在零知识性质下(因此在ROM中的可编程性),此模拟与真实签名不可区分。
在进行多项式数量的签名查询后,攻击者选择一个用户 i′∗并返回对一条未签名消息/用户集合的签名。要使伪造有效,该签名必须是有效的,用户集合应仅包含未被攻破的用户,并且这些用户从未签署过该消息。
从攻击者的角度来看,真实的签名和模拟的签名是不可区分的,因此攻击者以概率 1/q选择预期用户作为其挑战对象。
现在利用随机预言机的可提取性, B可以恢复用于生成证明的签名私钥 ssk∗(这可以通过在最终的证明计算上倒带随机预言机简单实现)。因此,在多项式时间 B内,能够以概率 ε/q恢复与挑战相关的离散对数。
引理3。 该先前方案在随机预言模型中是匿名化的。
证明。 假设存在一个攻击者 A针对我们方案的匿名性,我们将在随机预言模型中构建一个模拟器 B。
- 我们从一个游戏 G0,0开始,在该游戏中,模拟器诚实地执行所有操作并选择身份 i0。这包括诚实地生成所有的私钥并进行签名。
- 现在我们改变挑战签名的生成方式。用户仍然随机选择一个 r ∈ Z ∗ p,但现在对零知识证明 ˆσ进行模拟。这是通过编程随机预言机实现的,使得挑战值与证明第一部分中的猜测相匹配。这引出了游戏G1,0。根据定理 1,此游戏与前一个游戏不可区分。
- 对于身份 i1的模拟挑战签名是完全相同的(因为模拟不需要密钥的知识),因此游戏 G1,1与前一个游戏相同。
- 最后,模拟器 B切换回使用私钥 i1生成 ˆσ的诚实签名。同样地,在随机预言模型下,此游戏与前一个游戏不可区分。
效率
在GAWP中,签名算法需要一次幂运算,而匿名化算法需要 2×n次指数运算,其中 n是群的大小。在方案[7]中,签名需要一次幂运算,但匿名化需要 n+1指数运算和 2×n+1配对计算。此外,该方案在匿名签名的验证算法中需要 2 × n次配对计算和 n次指数运算,而我们的方案仅需 2 × n+ 1次指数运算。因此,GAWP 比方案[7]更高效,后者在群成员数量较多时变得不实用。
5 结论
本文中,我们证明了在可匿名化的环签名中无需使用配对:我们设计了一种无配对方案,相较于先前在[7]中的方案,其效率更高且安全性基于更标准的假设。特别是,[7]中的匿名化算法和匿名验证算法在大规模群组下相比我们的方案效率很低,因为它所需的配对计算次数与群组大小成线性关系。下一步将是设计一种可在无需随机预言启发式的条件下被证明安全的可匿名化的环签名。
307

被折叠的 条评论
为什么被折叠?



