通用可组合声誉系统

实用、匿名且公开可链接的通用可组合声誉系统

1 引言

声誉系统提供了有关先前交易的宝贵信息,是衡量交互方可信度的流行工具。这种衡量依赖于针对某一特定主体的大量评分的存在。但在大多数实际应用中,评分过程除了揭示实际评分外,还会泄露许多关于评分者的信息。声誉系统的提供商以多种方式利用这些信息,例如对用户进行画像,而这并不一定是用户所期望的。此外,当用户担心负面评分会带来负面后果时,可能会被迫“不诚实或善意”地进行评分。因此,重要的是评分过程不应泄露比实际评分更多的信息。此外,声誉系统需要防范各种攻击,以提供可信、可靠和诚实的评分。

这些攻击包括自我评分攻击(也称为自我推广攻击)、女巫攻击、洗白攻击、恶意诋毁攻击、刷票攻击和价值失衡攻击。文献中经常讨论隐私问题和攻击防范,例如[1,8,13,17,20,21,23,24,26,27],尽管这两方面并未被同时考虑。

声誉系统另一个重要的安全属性是匿名性、(公开)可链接性、可追溯性以及不可诬陷性,如[1,6,13,27]中所讨论。匿名性意味着诚实用户的评分无法被区分;而公开可链接性要求任何人都能判断针对同一产品的两个评分是否由同一用户创建。此外,评分必须具备可追溯性:指定的系统管理员能够确定任何评分者的身份。在此过程中,不可诬陷性保证了诚实参与方不会被错误指责为对某产品进行了评分,而实际上他们并未评分。可追溯性与不可诬陷性的结合使得对不诚实行为进行惩罚成为可能。

所有前述工作都将声誉系统视为孤立的,尽管声誉系统总是与其他应用程序结合使用。在这种情况下,如[6]中的独立安全定义并不能保证安全性。通用可组合性框架(UC)[9]提供了一种方法论,能够确保即使在组合应用中也能保障安全。非正式地说,在通用可组合性框架中,现实协议的执行与理想协议的执行进行比较。如果现实协议和理想协议的执行无法区分,则该现实协议是UC-安全的。基于这一安全定义,坎内蒂 [9]提出了一个组合定理,指出任何 UC‐安全的协议在与其他协议组合时仍然是安全的。

我们的贡献

我们在通用可组合性框架中提出了声誉系统的理想功能FRS[9]。我们的理想功能F能够防止前述所有攻击,并提供匿名性、公开可链接性、可追溯性和不可诬陷性。与[6]不同,用户可以相互对彼此的产品提交评分;不存在客户与提供商的区分。

除了定义理想功能外,我们还提出了一种实现FRS的声誉系统的高效协议。该协议借鉴了来自Σ‐协议[16]以及(动态)群签名[2–4,7]的不同技术,类似于[6]中的方案。但我们的协议比[6]中的方案更高效、更灵活,并且即使在并发组合下也是安全的(UC‐安全)。

2 声誉系统的理想功能

在本节的第一部分中,我们将对声誉系统的理想功能 $ F_{RS} $ 进行一些直观说明。第二部分涉及在通用可组合性框架 [9] 中对$ F_{RS} $的形式化定义。第三部分讨论该功能及其安全属性。

我们声誉系统的直观理解

一个有意义的声誉系统必须提供可信、可靠且诚实的评分。此外,它应具有灵活性,能够与许多不同的高层应用相结合。因此,我们专注于安全评分的过程,并提供一种可与任何高层应用结合的方案。基于此,评分的聚合以及特定信誉函数的评估不在我们的模型范围内。具体而言,我们将实际的评分消息视为高层应用的一个占位符。

我们考虑这样一种声誉系统:系统内的用户可以对彼此的产品进行评分。术语product指的是任何可以作为评分基础的事物。在我们的系统中,每个用户在对产品进行评分之前,必须先向System_Manager进行一次注册。这可以防止女巫攻击、洗白攻击、恶意诋毁攻击和刷票攻击,并赋予系统管理员惩罚行为不当的用户的能力。为使此机制有效,系统必须防止用户使用不同身份进行注册。当用户不想对其他产品进行评分时,无需注册——发布产品和验证评分与注册无关,这提高了系统中的信任度。类似于注册,产品必须在评分前被购买。这一要求确保评分仅由实际使用过该产品的评分者给出。此外,这也是防止价值失衡攻击的一种保护机制。

为了进一步提高对声誉系统的信任,评分者必须能够匿名地对已购买的产品进行评分。如果没有匿名性,评分者在担心产品所有者可能带来负面后果时,可能会倾向于不诚实地评分。同时,必须保护产品所有者免受不公正的负面评分。这通过赋予系统管理员撤销评分者匿名性的能力来实现。当然,系统管理员不能够错误指控诚实用户有不当行为。

匿名性的负面影响是,难以防止自我评分,即产品所有者对自己产品的评分,并且购买了产品的单个评分者可能对该产品进行多次评分。因此,我们要求声誉系统明确禁止自我评分,并提供link-able ratings:每个人——甚至是系统外部人员——都必须能够检测到同一用户对同一产品的多次评分。

如上所述,声誉系统必须满足的安全要求包括但不限于评分者的匿名性、不可伪造性以及评分的公开可链接性,并具备确定评分者身份的能力。这些性质已在群签名的较简单背景下得到研究[2–4,7,18]。然而,声誉系统比群签名具有更多的安全要求,因为它们不仅仅由单一用户组构成。相反,声誉系统可以被视为多个群签名方案的集合——每个产品对应一个群签名方案。此外,单个用户可能提供多种产品。因此,在定义安全属性时,必须同时考虑不同的群签名方案。为此,我们调整并扩展了这些概念,并在通用可组合性框架[9]中给出了安全声誉系统的正式定义。该框架即使在并发组合协议的情况下也能保证安全性。独立安全定义无法提供这种强有力的安全保障,而这一点对于我们的声誉系统至关重要,因为我们希望将其与其他应用进行组合。

除了基于实验的声誉系统[6]和群签名[3,4]的安全性定义外,我们的理想功能 $ F_{RS} $ 还受到数字签名 $ F_{SIG} $[10]、公钥加密$ F_{PKE} $[9]和群签名[2]的理想功能的影响。

通用可组合性框架

与独立的安全定义(包括基于实验和基于模拟的定义)相比,坎内蒂提出的通用可组合性框架[9]提供了不同应用并发组合下的安全性。为了实现这种强安全概念,现实协议的执行被与理想协议的执行进行比较。这两个协议执行均由一个环境控制 Z该环境试图区分其交互的是现实协议还是理想协议。

理想协议由一个理想功能 $ F $ 描述,该功能作为可信方处理每一个(密码学)任务,并与理想攻击者 $ S $(也称为模拟器)以及协议中涉及的所有参与方进行交互。每个参与方将其来自环境的输入安全地传递给 $ F $。然后 $ F $ 计算各参与方的输出,并将其发送回相应的参与方。每当一个参与方从 $ F $ 接收到消息时,该参与方会直接将此消息输出到环境中。理想攻击者 $ S $ 可以腐蚀某些参与方,并可以阻止 $ F $ 发送给某个参与方的消息的传递。参与方传递给 $ F $ 的输入无法被 $ S $ 看到。在现实执行中,所有参与方通过运行定义的协议来计算其输出。类似于 $ S $,现实中的攻击者 $ A $ 可以在现实协议执行过程中腐蚀参与方。

我们说现实协议UC实现了理想协议,如果没有任何环境能够区分与现实协议和 $ A $ 的交互以及与理想协议和 $ S $ 的交互。基于此安全定义,坎内蒂 [9] 提出了一个组合定理,该定理指出,任何通用组成安全的协议在与其他协议并发执行时也是安全的。

对于我们的安全性证明,我们将考虑具有黑盒访问实际对手 $ A $ 能力的黑盒模拟器 $ S $,记为 $ S^A $。同时,我们考虑一个具有理想认证信道的模型,这意味着攻击者能够读取所发送的消息,但无法修改它们。我们将此通信模型称为认证信道假设。

2.1 $ F_{RS} $ 的正式定义

我们的理想功能与参与方 $ PID_M, P_1, P_2, …, P_n $ 以及一个理想攻击者 $ S $(也称为模拟器)进行交互。参与方 $ PID_M $ 充当系统管理员,而参与方 $ P_i $ 对应声誉系统中的用户。此外, $ F_{RS} $ 管理列表 Params、Reg、Prods、Purch、Ratings 和 Open 以存储重要信息。在给出 $ F_{RS} $ 的形式化定义之前,我们先解释这些列表的使用方式。我们还介绍了在 $ F_{RS} $ 定义中所需的符号表示。

Params :该列表存储了所有形如($ PID_M $, pp)的对,其中包含模拟器 S在密钥生成请求期间提供给 $ F_{RS} $ 的公共参数。每对中的第一个分量固定为 $ PID_M $,而第二个分量表示由 S提供的实际参数。

Reg :列表 Reg 存储形如 $ (pp, P_i) $ 的对,其中包含注册信息。第一个分量存储已注册方在 Register‐协议 中使用的公共参数,第二个分量为已注册方。

Prods :声誉系统内使用的所有 products 均以四元组($ P_i $,prod,ppk, b)的形式存储在列表 Prods 中。元组的第一个分量声明产品所有者,第二个分量是产品标识符(由环境选择的比特串),第三个分量指定对应的产品公钥,第四个分量为有效性位。可以存在具有相同产品标识符但属于不同产品所有者的产品。有效性位用于指示该产品公钥是否与给定的产品所有者和产品标识符匹配。

Purch :当某个实体成功购买产品时,此信息将作为4元组($ P_i, P_j $, prod, ppk)存储在列表 Purch 中。对于列表中的每个元组,第一个分量表示购买者,而其余分量则确定所购买的产品(产品所有者、产品标识符和产品公钥)。

Ratings :列表 Ratings 以十元组形式存储最复杂的信息,其形式为(pp, $ P_i $, $ P_j $,prod,ppk, m, σ, b,lid,oid)。每个元组的分量表示以下信息:

  1. pp ——评分生成所针对的公共参数,
  2. $ P_i $ ——评分者的身份(($ pp, P_i $) 应与 Reg 中的条目匹配),
  3. $ P_j $ ——评分所针对产品的所有者,
  4. prod ——评分所针对产品的标识符,
  5. ppk ——评分所针对产品的产品公钥(元组 ($ P_i, P_j $, prod, ppk) 应与 Purch 中的条目匹配),
  6. m——评分消息(高层应用的占位符),
  7. σ ——评分,
  8. b ——有效性位(指示评分是否为有效),
  9. lid ——链接类标识符,由算法 RebLDB 管理
  10. oid ——打开证明标识符

链接类标识符用于建模可链接性属性:具有相同链接类标识符的两个评分离具有相同的作者。打开证明标识符将一组打开证明绑定到特定评分。每当向列表 Ratings中添加新评分时, $ F_{RS} $ 会使用全局计数器lidc的当前值作为链接类标识符,并使该计数器递增。随后执行RebLDB可确保根据可链接性关系将评分放入正确的链接类中。关于此行为以及oid机制的更详细说明将在 $ F_{RS} $ 的安全属性讨论中给出。

Open :该列表以四元组形式存储所有opening-proofs,即(oid, τ, b, P)。第一个分量是打开证明标识符,用于将元组绑定到具有相同标识符的特定评分。第二个分量是实际的打开证明。第三个分量是有效性位,表示该证明是否有效,第四个分量是声称的作者实体,即相关评分的作者。评分中的值oid= ⊥表示该评分尚未被打开,因此不存在打开证明。为了唯一地将打开证明与评分绑定,使用全局计数器oidc,每当新的打开证明绑定到未打开的评分时,该计数器递增。

为了操作所述列表,我们引入了两种操作:

  • 向列表 L 添加元组 v 表示为 L.Add(v),以及
  • 用元组 v_new 替换元组 v_old 表示为 L.Sub(v_old, v_new)。

替换元组 v_old意味着该元组从列表中移除,而元组 v_new被添加到列表中。

用于访问元组分量的经典表示法是使用索引,即v=(v1, v2,…, vn),其中 vi 是元组 v的第 i个分量。为了防止与不同变量混淆,我们偏离这种表示法,通过 v[i]来表示元组 v的第 i个分量。

备注1($ F_{RS} $的技术细节) 。每当 $ F_{RS} $ 缺失某些信息时,会使用符号 ⊥来强调这一事实。此外,模拟器 S在某些情况下也可以输出该符号,以表明其无法响应某个请求。根据具体情况,这不一定是失败。

为了减少重复代码,我们引入了内部激活 VfyProd、VfyRtg、LinkRtgs 和 RebLDB。这些激活仅被 $ F_{RS} $ 作为内部子程序使用,无法被参与方或对手调用。

用户注册(Register)和购买产品(Purchase)的激活会向多个参与方生成输出。尽管这种机制在通用组成框架中很少使用,但Damgård等人提出的同态UC承诺的定义中也存在该技术的另一个示例[15]。

在这些前提条件下,我们现在给出$ F_{RS} $的形式化定义。

3 实现$ F_{RS} $

在介绍实现 $ F_{RS} $ 的协议之前,我们在此部分给出所需的预备知识和构建模块。

预备知识

我们的实现依赖于双线性群、对称外部Diffie‐Hellman假设以及 Pointcheval‐Sanders假设。为完整起见,我们在本节中给出相应的定义。

定义1(双线性群) 。双线性群 $ \mathbb{GD} $ 是由三个循环群 $ \mathbb{G}_1 $、$ \mathbb{G}_2 $ 和 $ \mathbb{G}_T $ 组成的集合,每个群的阶均为素数 $ p $,并配有一个双线性映射 $ e: \mathbb{G}_1 \times \mathbb{G}_2 \to \mathbb{G}_T $,具有以下性质:

  1. 双线性 :对于所有 $ u \in \mathbb{G}_1, v \in \mathbb{G}_2 $ 和 $ a, b \in \mathbb{Z}_p $: $ e(u^a, v^b) = e(u, v)^{ab} $。
  2. 非退化性 :对于 $ u \neq 1_{\mathbb{G} 1} $ 和 $ v \neq 1 {\mathbb{G} 2} $: $ e(u, v) \neq 1 {\mathbb{G}_T} $。
  3. 映射 $ e $ 是可高效计算的。

我们的构造将使用Type‐3配对,因为它们允许高效的实现,并且 Pointcheval‐Sanders假设在Type‐1和Type‐2配对群中不成立。此外,据信在 $ \mathbb{G}_1 $ 和 $ \mathbb{G}_2 $ 中,决策性Diffie‐Hellman问题对于Type‐3配对群是困难的。这一假设通常被称为对称外部Diffie‐Hellman假设(SXDH)[19]。

定义2(双线性群生成器) 。一个双线性群生成器,记为BiGrGen,是一个概率多项式时间算法,它在输入 $ 1^\lambda $ 时输出一个双线性群的描述 $ \mathbb{GD} $。我们将 BiGrGen的输出表示为 $ \mathbb{GD} = (p, \mathbb{G}_1, \mathbb{G}_2, \mathbb{G}_T, e, g_1, g_2) $。

定义3(Pointcheval-Sanders问题–PS1) 。设 $ \mathbb{GD} = (p, \mathbb{G} 1, \mathbb{G}_2, \mathbb{G}_T, e, g_1, g_2) $ 为Type-3双线性群设置,其生成元为 $ g_1 \in \mathbb{G}_1 $ 和 $ g_2 \in \mathbb{G}_2 $。进一步,令 $ g \leftarrow_u \mathbb{G}_1 $, $ \tilde{g} \leftarrow_u \mathbb{G}_2 $, $ X := g^x $, $ Y := g^y \in \mathbb{G}_1 $ 以及 $ \tilde{X} := \tilde{g}^x $, $ \tilde{Y} := \tilde{g}^y \in \mathbb{G}_2 $,其中 $ x, y \leftarrow_u \mathbb{Z}_p $。我们如下定义预言机 $ O(m) $:在输入 $ m \in \mathbb{Z}_p $ 时,选择 $ h \leftarrow_u \mathbb{G}_1 $ 并输出 $ (h, h^{x + m \cdot y}) $。给定 $ (g, Y, \tilde{g}, \tilde{X}, \tilde{Y}) $ 并可无限访问预言机 $ O $ 的情况下,Pointcheval-Sanders问题要求输出一个元组 $ (m^ , s, s^{x + m^ \cdot y}) $,其中 $ s \neq 1 {\mathbb{G}_1} $ 且 $ m^* $ 未被提交给 $ O $。

我们说,对于双线性群生成器BiGrGen,如果对于所有概率多项式时间对手 $ A $,存在一个可忽略的函数negl,使得Pointcheval-Sanders假设成立。
$$
\mathrm{Pr}[A^{O(\cdot)}(\mathbb{GD}, g, Y, \tilde{g}, \tilde{X}, \tilde{Y}) = (m^ , s, s^{x + m^ \cdot y})] \leq \mathrm{negl}(\lambda),
$$
其中概率取自BiGrGen、$ A $ 所使用的随机比特,以及 $ x $ 和 $ y \leftarrow_u \mathbb{Z}_p $ 的随机选择。

我们实现的基础构件与直觉

在本节中,我们将简要介绍我们实现的构建模块,并解释它们如何组合以实现 $ F_{RS} $。由于篇幅限制,所有形式化定义均在本文的完整版本中给出[5]。

我们使用Pointcheval-Sanders签名(PS = (KeyGen, Sign, Verify))[25] 作为注册和购买产品的证书。我们将用于注册的证书称为注册令牌,将用于已购买产品 的证书称为评分令牌。为了获得此类令牌,每个用户都必须证明其知晓自行选择的用户密钥 usk。为此,我们使用了 Σ‐协议的并发零知识变体,该变体采用陷门佩德森承诺(PD = (KeyGen, Commit, Reveal, Equiv))。

要对产品进行评分,用户必须非交互式地证明其知晓注册令牌、评分令牌 以及生成这些令牌时所使用的个人用户密钥。作为非交互式证明系统,我们使用 知识签名[12]。此外,打开证明(由 $ PID_M $ 生成)是非交互式地证明知晓打开 令牌的知识证明。这些令牌是在注册协议期间由用户 $ P_i $ 提供给系统管理员 $ PID_M $ 的。在我们的构造中,重要的是不要公开这些令牌,因为它们可用于打 开任何评分。因此,我们使用CCA2安全的Cramer-Shoup加密(CS = (KeyGen, Enc, Dec))[14] 对打开令牌进行加密。

我们使用的知识签名需要一个随机预言机,可以在通用组成框架中将其建 模为理想功能 $ F_{RO} $[22]。我们还需要用于公共参考字符串 $ F_{CRS} $[11] 和认证 $ F_{CA} $[10] 的理想功能。 $ F_{CRS} $ 是安全承诺方案(例如上述陷门佩德森承诺)所必需的,而 $ F_{CA} $ 确保用户无法使用不同身份进行注册。

$ F_{CRS} $ 的输出为 $ (\mathbb{GD}, PD.pk, H, H_1, H_2) $,其中 $ \mathbb{GD} $ 是双线性群生成器BiGrGen($ 1^\lambda $) 的输出,$ PD.pk = (u, v) \in \mathbb{G} 1^2 $ 是陷门佩德森承诺方案的公钥,且 $ H: {0, 1}^ \to \mathbb{Z}_p $, $ H_1: {0, 1}^ \to \mathbb{G}_1 $,以及 $ H_2: {0, 1}^* \to \mathbb{G}_2 $ 是抗碰撞哈希函数。我们假设每个参与方在首次激活之前已获得公共参考字符串。我们用 $ y := F {RO}(x) $ 表示对 $ F_{RO} $ 的调用,输入为(sid, x),并向调用方输出 $ y $。

实现 $ F_{RS} $ 的协议

我们假定双方通过认证信道进行通信。这意味着通信双方的身份彼此已知,且攻击者无法修改消息的有效载荷。

定理1 . 在认证信道假设、SXDH-As-sumption、Pointcheval‐Sanders假设以及 $ H $、$ H_1 $ 和 $ H_2 $ 为抗碰撞哈希函数的假设下,协议 $ \Pi_{RS} $ 在($ F_{RO}, F_{CRS}, F_{CA} $)-混合模型中,针对静态对手可UC实现 $ F_{RS} $ 功能。

由于篇幅限制,此处仅简要概述证明过程。完整证明见本文的完整版本[5]。

证明(概要) 。为了证明定理1,我们需要说明,对于任意概率多项式时间的现实世界攻击者 $ A $,存在一个概率多项式时间的理想世界攻击者 $ S $ 使得对于任意概率多项式时间的环境 $ Z $ 成立:
$$
{ \text{EXEC} {F {RS}, S^A, Z}(1^\lambda, z) } {\lambda \in \mathbb{N}, z \in {0,1}^ } \overset{c}{\equiv} { \text{EXEC} {F {RO}, F_{CRS}, F_{CA}}^{\Pi_{RS}, A, Z}(1^\lambda, z) }_{\lambda \in \mathbb{N}, z \in {0,1}^ }.
$$
我们将此声明的证明分为三个部分。在第一部分中,我们定义了与 $ F
{RS} $ 交互并模拟密码学计算的模拟器 $ S $。注意,在评分请求期间, $ S $ 无法获得评分者的任何识别信息。因此, $ S $ 使用代表评分的知识签名的零知识模拟器。类似地,打开证明也由知识签名表示。因此, $ S $ 使用相应的零知识模拟器来生成打开证明。

在证明的第二部分,我们定义一个混合博弈 $ G $ 和一个相应的模拟器 $ S_1 $,并证明没有任何环境 $ Z $ 能够区分它是在与($ F_{RS}, S $)还是与($ G, S_1 $)进行交互。在这个博弈中, $ S_1 $ 在评分请求期间获得所有识别信息,因此可以按照协议 $ \Pi_{RS} $ 中的定义执行计算。同样,打开证明也可以由 $ S_1 $ 按照协议 $ \Pi_{RS} $ 生成。因此,环境 $ Z $ 只有在能够区分模拟的与真实的评分以及打开证明时,才能区分($ F_{RS}, S $)和($ G, S_1 $)。在SXDH假设下,这是不可能的。

在证明的第三部分,我们展示了 $ S_1 $ 执行的计算与协议 $ \Pi_{RS} $ 完全相同。这意味着任何能够区分($ G, S_1 $)和($ \Pi_{RS}, A $)的环境 $ Z $,都能够使 $ F_{RS} $ 输出错误,而协议 $ \Pi_{RS} $ 输出某个值,或者 $ F_{RS} $ 输出0,而协议 $ \Pi_{RS} $ 输出1(或反过来)。通过归约到Pointcheval‐Sanders问题以及Cramer‐Shoup加密方案的CCA2安全性,我们证明了此类环境不可能存在。因此, $ \Pi_{RS} $ 在($ F_{RO}, F_{CRS}, F_{CA} $)‐混合模型中UC‐实现 $ F_{RS} $。

关于撤销的说明 :协议 $ \Pi_{RS} $ 可以轻松扩展以支持验证者本地撤销,即完全撤销一个用户:要撤销参与方 $ \tilde{P}_i $,系统管理员 $ PID_M $,甚至 $ P_i $ 用户本人,可在撤销列表 $ RL $ 上公布值 $ Y_i $ 作为用户的撤销令牌 $ rt_i $。然后,任何验证者都可以通过检查等式 $ e(T_5, Y) = e(H_1(j, prod), rt) $ 是否对任意条目 $ rt \in RL $ 成立,来判断给定评分 $ \sigma = (T_1, T_2, T_3, T_4, T_5, ch, s) $ 的作者是否已被撤销。类似地,在 Purchase 请求期间,产品所有者可以测试等式 $ e(M_i, Y) = e(g_1, rt) $ 是否成立,以检测被撤销的用户 $ P_i $。此撤销机制与我们定义的匿名性存在冲突,而当考虑撤销时如何证明安全性仍是一个开放问题。

考虑自适应对手 :定理1仅声明对静态对手的安全性,因为匿名性和可链接性是相互冲突的安全属性,这阻碍了在存在自适应对手的情况下构建UC安全协议。我们将此问题留作一个需要进一步研究的开放问题。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值