消息依赖开启的群签名技术解析
1. 非交互零知识证明
非交互零知识证明系统用于多项式时间可计算关系 (R),由三个概率算法 (K)、(P) 和 (V) 组成:
-
公共参考串生成算法 (K)
:产生公共参考串 (\Sigma)。
-
证明算法 (P)
:以公共参考串 (\Sigma)、定理 (x) 和见证 (w)(其中 (R(x, w) = \top))为输入,生成证明 (\pi)。
-
验证算法 (V)
:以 ((\Sigma, x, \pi)) 为输入,输出 (\top) 或 (\bot)。
该证明系统有三个重要属性:
| 属性 | 定义 |
| ---- | ---- |
| 完美完整性 | 对于任何敌手 (A),有 (Pr[\Sigma \leftarrow K(1^{\lambda}); (x, w) \leftarrow A(\Sigma); \pi \leftarrow P(\Sigma, x, w) : V(\Sigma, x, \pi) = \top \vee R(x, w) = \bot] = 1)。 |
| 完美可靠性 | 对于所有敌手 (A),有 (Pr[\Sigma \leftarrow K(1^{\lambda}); (x, \pi) \leftarrow A(\Sigma) : V(\Sigma, x, \pi) = \bot \vee x \in L] = 1),其中 (L) 是所有存在 (w) 使得 (R(x, w) = \top) 的 (x) 的集合。 |
| 零知识属性 | 存在一对概率算法 ((S1, S2)),使得对于所有不输出 ((x, w)) 且 (R(x, w) = \bot) 的 PPT 敌手 (A),(Pr[\Sigma \leftarrow K(1^{\lambda}); (x, w) \leftarrow A(\Sigma); \pi \leftarrow P(\Sigma, x, w) : A(\pi) = 1] - Pr[(\Sigma, \tau) \leftarrow S1(1^{\lambda}); (x, w) \leftarrow A(\Sigma); \pi \leftarrow S2(\Sigma, \tau, x) : A(\pi) = 1]) 是可忽略的。 |
2. 消息依赖开启的群签名概述
消息依赖开启的群签名(GS - MDO)方案允许群成员匿名签署消息,仅表明消息由群成员签署。在特殊情况下,指定的第三方“开启者”可与“许可者”合作开启签名以识别签名者。
GS - MDO 方案包含以下五个算法:
1.
GKg
:输入 ((1^{\lambda}, 1^{n}, 1^{k})),其中 (\lambda) 是安全参数,(n) 是群成员数量,(k) 是可发布的特定消息令牌的最大数量,输出群公钥 (gpk)、消息指定密钥 (msk)、开启密钥 (ok) 和 (n) 个群签名密钥 ({gsk_i}_{i\in[n]})。
2.
GSig
:输入 (gpk)、(gsk_i) 和消息 (M),输出群签名 (\sigma)。
3.
Td
:输入 (gpk)、(msk) 和消息 (M),输出消息 (M) 的令牌 (t_M)。
4.
GVf
:输入 (gpk)、(\sigma) 和消息 (M),输出 (\top) 或 (\bot)。
5.
Open
:输入 (gpk)、(ok)、消息 (M)、签名 (\sigma) 和令牌 (t_M),输出 (i \in N) 或 (\bot)。
其正确性要求为:对于所有 (\lambda)、(n)、(k) 以及 (GKg(1^{\lambda}, 1^{n}, 1^{k})) 范围内的所有 ((gpk, msk, ok, {gsk_i}_{i\in[n]})),有 (GVf(gpk, M, GSig(gpk, gsk_i, M)) = \top) 对于所有 (M \in {0, 1}^ ) 和 (i \in [n]) 成立,且 (Open(gpk, ok, M, GSig(gpk, gsk_i, M), Td(gpk, msk, M)) = i) 对于所有 (M \in {0, 1}^ ) 和 (i \in [n]) 成立。
3. 安全属性
GS - MDO 方案需要确保匿名性和可追溯性,其中匿名性又分为开启者匿名性和许可者匿名性。
3.1 开启者匿名性
开启者匿名性定义为敌手在给定开启密钥的情况下,无法区分不同签名者的签名。具体通过以下游戏定义:
graph LR
classDef startend fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px;
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
A([开始]):::startend --> B(设置):::process
B --> C(令牌查询阶段 I):::process
C --> D(挑战):::process
D --> E(令牌查询阶段 II):::process
E --> F(猜测):::process
F --> G([结束]):::startend
- 设置 :挑战者运行 (GKg(1^{\lambda}, 1^{n}, 1^{k})) 得到 ((gpk, ok, msk, {gsk_i} {i\in[n]})),并将 ((gpk, ok, {gsk_i} {i\in[n]})) 发送给敌手 (A)。
- 令牌查询阶段 I :敌手 (A) 自适应地发出令牌查询,挑战者通过运行 (Td(gpk, msk, M)) 响应。
- 挑战 :敌手 (A) 请求对 (i_0, i_1 \in [n]) 和消息 (M^ ) 进行挑战,挑战者选择随机比特 (b),并以 (GSig(gpk, gsk_{i_b}, M^ )) 响应。此阶段禁止敌手提交在阶段 I 中已查询过令牌的 (M^*)。
- 令牌查询阶段 II :敌手继续查询令牌,但禁止查询在挑战阶段提交的 (M^*)。
- 猜测 :敌手输出比特 (b’),其优势定义为 (|Pr[b’ = b] - 1/2|)。
若任何 PPT 敌手 (A) 在该游戏中的优势在安全参数 (\lambda) 下是可忽略的,则称 GS - MDO 方案具有开启者匿名性。若敌手最多发出 (k) 个令牌查询时优势可忽略,则称具有 (k) 有界令牌的开启者匿名性。
3.2 许可者匿名性
许可者匿名性定义为敌手在给定消息指定密钥的情况下,无法区分不同签名者的签名。游戏流程与开启者匿名性类似:
1.
设置
:挑战者运行 (GKg(1^{\lambda}, 1^{n}, 1^{k})) 得到 ((gpk, ok, msk, {gsk_i}
{i\in[n]})),并将 ((gpk, msk, {gsk_i}
{i\in[n]})) 发送给敌手 (A)。
2.
开启查询阶段 I
:敌手 (A) 自适应地发出开启查询,挑战者生成 (t_M) 并以 (Open(gpk, ok, M, \sigma, t_M)) 响应。
3.
挑战
:敌手 (A) 请求对 (i_0, i_1 \in [n]) 和消息 (M^
) 进行挑战,挑战者选择随机比特 (b),并以 (GSig(gpk, gsk_{i_b}, M^
)) 响应。
4.
开启查询阶段 II
:敌手继续提交开启查询,但禁止查询在挑战阶段产生的签名 (\sigma^
)。
5.
猜测
*:敌手输出比特 (b’),其优势定义为 (|Pr[b’ = b] - 1/2|)。
若任何 PPT 敌手 (A) 在该游戏中的优势在安全参数 (\lambda) 下是可忽略的,则称 GS - MDO 方案具有许可者匿名性。
3.3 可追溯性
可追溯性要求即使开启者和许可者合谋并破坏一些群成员,被破坏方也不能产生伪造或不可追溯的签名。游戏流程如下:
1.
设置
:挑战者运行 (GKg(1^{\lambda}, 1^{n}, 1^{k})) 得到 ((gpk, ok, msk, {gsk_i}_{i\in[n]})),并将 ((gpk, ok, msk)) 发送给敌手 (A)。
2.
查询
:敌手 (A) 自适应地发出两种类型的查询:
-
密钥揭示查询
:请求揭示群成员 (i) 的群签名密钥,挑战者响应 (gsk_i)。
-
签名查询
:请求某个群成员对某消息的签名,挑战者以 (GSig(gpk, gsk_i, M)) 响应。
3.
伪造
:敌手输出伪造 ((M^
, \sigma^
)),若 (GVf(gpk, M^
, \sigma^
) = \top) 且满足以下两个条件之一,则敌手获胜:
- (Open(gpk, ok, M^
, \sigma^
, Td(gpk, msk, M^
)) = \bot)。
- (Open(gpk, ok, M^
, \sigma^
, Td(gpk, msk, M^
)) = i^
\neq \bot),且未提交对用户 (i^
) 的密钥揭示查询或对 ((i^
, M^
)) 的签名查询。敌手的优势定义为获胜的概率。
4. 从群签名构造基于身份的 KEM
可以从 GS - MDO 方案进行基于身份的密钥封装机制(KEM)的黑盒构造,代码如下:
def ISetup(1λ):
(gpk, ok, msk, {gsk 1, gsk 2}) = GKg(1λ, 12)
par = (gpk, ok, gsk 1, gsk 2)
mk = msk
return (par, mk)
def IEncpar(ID):
for i in range(1, λ + 1):
Ki = {0, 1}
σi = GSig(gpk, gsk[Ki + 1], ID)
C = (σ1, ..., σλ)
K = K1 · · · Kλ
return (C, K)
def IExtmk(ID):
dk_ID = Td(gpk, mk, ID)
return dk_ID
def IDecdkID(C):
(σ1, ..., σλ) = C
for i in range(1, λ + 1):
Ki = Open(gpk, ok, ID, σi, dk_ID)
if Ki == ⊥:
return ⊥
return K1 ... Kλ
5. 高效构造的困难
设计高效的 GS - MDO 方案存在一些困难:
-
与其他密码原语的关系
:GS - MDO 方案的存在意味着 IBE 方案的存在,因此构造 GS - MDO 方案几乎不可避免地依赖于 IBE 方案或其等价物,而不仅仅是陷门置换和 NIZK 证明。
-
Groth - Sahai 兼容性
:已知的具有合理效率的非交互零知识证明构造限于 Groth - Sahai 证明系统,但目前没有已知的 IBE 方案与 Groth - Sahai 兼容。为克服这一问题,采用 (k) 弹性 IBE 代替完全安全的 IBE。
6. 通用构造
GS - MDO 方案的通用构造基于 EUF - CMA 安全签名方案、强不可伪造一次性签名方案、选择性标签弱选择密文安全的基于标签的 KEM、(k) 弹性基于身份的 KEM 和自适应 NIZK 证明系统。
graph LR
classDef startend fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px;
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
A([开始]):::startend --> B(设置):::process
B --> C(签名):::process
C --> D(验证):::process
D --> E(开启):::process
E --> F([结束]):::startend
具体算法如下:
def GKg(1λ, 1n, 1k):
(vk_issue, sk_issue) = SigKg(1λ)
(pk, dk) = TKg(1λ)
(par, mk) = ISetup(1λ, 1k)
Σ = K(1λ)
gpk = (vk_issue, pk, par, Σ)
ok = dk
msk = mk
for i in range(1, n + 1):
(vk_i, sk_i) = SigKg(1λ)
cert_i = Signsk_issue((i, sk_i))
gsk_i = (i, vk_i, cert_i, sk_i)
return (gpk, ok, msk, {gsk_i})
def GSig(gpk, gsk_i, M):
(vk_issue, pk, par, Σ) = gpk
(i, vk_i, cert_i, sk_i) = gsk_i
s = Signsk_i(M)
(vk_OT, sk_OT) = SigKgOT(1λ)
(CPKE, KPKE) = TEncpk(vk_OT)
(CIBE, KIBE) = IEncpar(M)
χ = (i, vk_i, cert_i, s) ⊙ KPKE ⊙ KIBE
π = PNIZK(· · · )
σ_OT = SignOT_sk_OT((CPKE, CIBE, χ, π))
σ = (vk_OT, CPKE, CIBE, χ, π, σ_OT)
return σ
def GVf(gpk, M, σ):
(vk_issue, pk, par, Σ) = gpk
(vk_OT, CPKE, CIBE, χ, π, σ_OT) = σ
if VerifyOT_vk_OT((CPKE, CIBE, χ, π), σ_OT) == 1 and VNIZK(. . .) == 1:
return ⊤
return ⊥
def Td(gpk, msk, M):
(vk_issue, pk, par, Σ) = gpk
t_M = IExt(par, msk, M)
return t_M
def Open(gpk, ok, M, σ, t_M):
(vk_issue, pk, par, Σ) = gpk
(vk_OT, CPKE, CIBE, χ, π, σ_OT) = σ
KPKE = TDecok(vk_OT, CPKE)
KIBE = IDect_M(M, CIBE)
(i, vk_i, cert_i, s) = χ ⊙ KIBE^(-1) ⊙ KPKE^(-1)
if VerifyOT_vk_OT((CPKE, CIBE, χ, π), σ_OT) == 1 and VNIZK(. . .) == 1:
return i
return ⊥
在构造中,群成员使用签名方案的密钥对 ((vk_i, sk_i)),并通过多重加密技术确保匿名性。非交互证明 (\pi) 用于证明授权成员的有效签名被加密。
该通用构造在满足一定条件下具有良好的安全属性:
- 若基于身份的 KEM 是 (k) 弹性的且非交互证明系统是零知识的,则方案满足 (k) 有界令牌的开启者匿名性。
- 若基于标签的 KEM 是选择性标签弱选择密文安全的、非交互证明系统是零知识的且一次性签名方案是强不可伪造的,则方案满足许可者匿名性。
- 若非交互证明系统是可靠的且签名方案是 EUF - CMA 安全的,则方案满足可追溯性。
消息依赖开启的群签名技术解析
7. 技术细节分析
7.1 非交互零知识证明的作用
非交互零知识证明在 GS - MDO 方案中起到了至关重要的作用。在群签名过程中,成员需要证明自己是合法的签名者,但又不能泄露过多信息。非交互零知识证明系统的三个算法 (K)、(P) 和 (V) 相互协作,实现了这一目标。
- (K) 算法生成公共参考串 (\Sigma),为后续的证明和验证提供了统一的基础。
- (P) 算法根据公共参考串、定理 (x) 和见证 (w) 生成证明 (\pi),证明签名的合法性。
- (V) 算法根据公共参考串、定理和证明进行验证,输出验证结果。
其完美完整性、完美可靠性和零知识属性确保了证明的正确性、安全性和隐私性。
7.2 多重加密技术
在 GS - MDO 方案的通用构造中,群成员使用多重加密技术来确保匿名性。具体来说,成员使用标签基 KEM 和基于身份的 KEM 对签名和证书进行加密。
| 加密类型 | 作用 |
| ---- | ---- |
| 标签基 KEM | 对一次性签名密钥进行加密,生成 (CPKE) 和 (KPKE)。 |
| 基于身份的 KEM | 对消息进行加密,生成 (CIBE) 和 (KIBE)。 |
通过将签名和证书与 (KPKE) 和 (KIBE) 进行组合,得到 (\chi),进一步增强了加密的安全性。
7.3 非交互证明的具体内容
签名中的非交互证明 (\pi) 用于证明存在随机数 (r)、(\rho)、群成员 (i)、验证密钥 (vk_i)、证书 (cert_i) 和签名 (s),满足以下条件:
- ((CPKE, KPKE) = TEncpk(vk_{OT}; r))
- ((CIBE, KIBE) = IEncpar(M; \rho))
- (\chi = \langle i, vk_i, cert_i, s\rangle \odot KPKE \odot KIBE)
- (Verify_{vk_{issue}}(\langle i, vk_i\rangle, cert_i) = \top)
- (Verify_{vk_i}(M, s) = \top)
这一证明确保了签名的有效性和合法性,同时保护了签名者的身份信息。
8. 安全属性的保障
8.1 开启者匿名性的保障
开启者匿名性通过特定的游戏来定义和保障。在游戏中,敌手被给予开启密钥,但仍然无法区分不同签名者的签名。这是因为基于身份的 KEM 是 (k) 弹性的,非交互证明系统是零知识的。
- (k) 弹性的基于身份的 KEM 确保了在一定数量的令牌查询内,敌手无法获取足够的信息来区分签名者。
- 零知识的非交互证明系统保证了证明过程不会泄露额外的信息,进一步增强了匿名性。
8.2 许可者匿名性的保障
许可者匿名性的保障依赖于基于标签的 KEM 的选择性标签弱选择密文安全性、非交互证明系统的零知识属性和一次性签名方案的强不可伪造性。
- 选择性标签弱选择密文安全的基于标签的 KEM 确保了敌手在给定消息指定密钥的情况下,无法通过密文获取签名者的信息。
- 零知识的非交互证明系统和强不可伪造的一次性签名方案进一步增强了安全性,使得敌手无法区分不同签名者的签名。
8.3 可追溯性的保障
可追溯性通过非交互证明系统的可靠性和签名方案的 EUF - CMA 安全性来保障。即使开启者和许可者合谋并破坏一些群成员,被破坏方也无法产生伪造或不可追溯的签名。
- 可靠的非交互证明系统确保了签名的合法性和有效性,使得验证者能够准确判断签名的真实性。
- EUF - CMA 安全的签名方案保证了签名的不可伪造性,防止敌手伪造签名。
9. 应用场景
GS - MDO 方案在许多领域都有潜在的应用:
-
电子投票
:在电子投票系统中,选民可以匿名投票,而管理员在必要时可以与许可者合作,开启特定的投票以进行审计或调查。
-
云计算
:在云计算环境中,用户可以匿名地使用云服务,而云服务提供商在必要时可以与许可者合作,识别特定用户的操作。
-
物联网
:在物联网设备中,设备可以匿名地发送数据,而管理员在必要时可以与许可者合作,识别特定设备的来源。
10. 总结
GS - MDO 方案是一种具有创新性的群签名方案,它结合了非交互零知识证明、多重加密技术等多种密码学技术,实现了群成员的匿名签名和签名的可追溯性。其开启者匿名性、许可者匿名性和可追溯性等安全属性为其在多个领域的应用提供了保障。
然而,设计高效的 GS - MDO 方案仍然面临一些困难,如与其他密码原语的关系和 Groth - Sahai 兼容性等问题。未来的研究可以致力于解决这些困难,进一步提高 GS - MDO 方案的效率和安全性。
graph LR
classDef startend fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px;
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
A([开始]):::startend --> B(非交互零知识证明):::process
B --> C(多重加密技术):::process
C --> D(安全属性保障):::process
D --> E(应用场景):::process
E --> F([结束]):::startend
通过对 GS - MDO 方案的深入研究和分析,我们可以更好地理解其原理和应用,为密码学领域的发展做出贡献。
超级会员免费看
2424

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



