基于属性的签名实现匿名认证

基于属性的签名支持匿名认证

摘要

本文提出了一种基于属性的签名(ABS)之上的匿名认证(AC)方案。在明确了匿名认证方案的性质和核心构建模块后,我们指出了 ABS 在满足 AC 特性方面的局限性,并提出了一种新的系统模型以及基于标准假设和随机预言模型的具体数学构造。我们的方案具有多个优势:首先,它提供了一种数据最小化的密码学方案,允许用户仅向任何服务提供者披露必要的信息;其次,它确保了不同认证会话之间的不可链接性,同时保持了用户的匿名性;第三,权威机构对已认证属性的派生依赖于一种非交互式协议,从而提供了较低的通信开销。

关键词 :用户隐私 · Anonymous certification · Attribute-based 签名

1 引言

匿名凭证(AC)最初由大卫·乔姆[9]于1982年提出,并由卡梅尼施和利西扬斯卡娅[4]于2001年进行了完整的形式化定义。这些方案被认为是隐私保护身份管理系统中的重要构建模块,因为它们允许用户向服务提供商证明其拥有某些凭证,同时不会在系统中被追踪。也就是说,当用户从某些可信的签发者处获得与其部分属性相关的凭证后,可以针对后续向服务提供商的每一次出示生成相应的证明。匿名凭证的特性包括:即使服务提供商之间存在共谋,或与凭证签发者共谋,也无法将收到的某次证明与其他证明或凭证所有者的任何信息关联起来。

迄今为止,业界出现了两种主要的匿名凭证解决方案:一种是 IBM 基于卡梅尼施‐利西扬斯卡娅(CL)签名[4,5],的 Idemix 方案[15],该方案与群签名非常相似;另一种是微软基于布兰兹盲签名[2]的 U‐Prove 方案[20]。

人们对匿名凭证的兴趣源于其能够严格支持数据最小化原则[17],该原则要求数据收集应与收集目的成比例,且不应过度。如今,由于这一原则处于未来欧洲通用数据保护条例的核心地位,这种兴趣被进一步放大[11]同时也受到美国网络空间可信身份国家战略(NSTIC)的推动[14]。

本文提出了一种基于属性签名(ABS)的新型匿名凭证(AC)方案。最初,ABS 的设计目的是使用户能够对消息进行细粒度控制下的识别信息签名,但其本身并不支持实现匿名凭证所需的特性。因此,在明确识别出缺失的特性后,本文首先提出了一个抽象方案 HABS,随后给出了具体构造,详细说明了这些基于访问策略的签名如何高效地服务于匿名凭证目标。与工业级匿名凭证解决方案相比,本方案具有多项优势:首先,签发流程更加高效,无需用户与签发者之间进行复杂的交互式协议;签发者仅需基于用户的公钥即可生成凭证,而 Idemix 和 U‐Prove 方案每次签发新凭证时都要求用户提供密钥中的随机部分,因其依赖于群签名和盲签名机制。其次,本方案继承了基于属性的签名在定义访问策略方面的表达能力,从而支持灵活的选择性披露机制,且不带来额外的计算开销。

Paper Organization

– 第2节介绍了匿名凭证系统(AC)以及相关的参与方、流程和安全要求。第3节定义了基于属性的签名(ABS),并对 ABS 的属性进行了通用分析,从而突出了 ABS 在满足 AC 要求方面所缺失的特性。第5节提出了我们新型 AC 系统的具体构造,第6节给出了详细的安全分析,并扩展了该方案以支持多个签发者。最后,第7节讨论了与现有系统的理论比较,第8节给出了结论。

2 匿名凭证

匿名凭证(AC)也被称为隐私保护属性凭证,指的是一些明确标识的实体和流程,并需要实现某些安全要求。

Entities

– 一个匿名凭证系统涉及多个实体。一些实体,例如用户、验证者和签发者是必需的,而其他实体,例如撤销机构和检查员则是可选的[3]。

用户是核心实体,其目标是获得由服务提供商(即称为验证者)提供的服务的隐私保护访问。每个验证者根据用户所拥有的凭证以及在呈现令牌中选择并包含的信息,对其资源和服务实施访问控制策略。为此,每个用户首先需要从发行者获取凭证。然后,他从凭证中选择适当的信息,并将所选信息以呈现令牌的形式向请求的验证者出示

呈现令牌。请注意,验证者访问控制策略被称为展示策略。用户和验证者都必须从撤销机构获取最新的撤销信息,以分别生成和验证呈现令牌。撤销机构负责撤销已签发的凭证,并维护系统中有效凭证的列表。当凭证被撤销后,将无法再用于派生呈现令牌。检查员是一个可信实体,具备在需要时去除用户匿名性的技术能力。

AC 系统由以下算法定义:

Setup :该算法以安全参数 ξ(安全级别)为输入,输出公共参数 params 以及签发者的公私钥对(pkis, skis)。
UserKG :该算法以 j ∈ N 为输入,输出用户 j 的密钥对(pku, sku)。
Obtain ↔ Issue :Obtain ↔ Issue 表示签发流程。由签发者执行的 Issue 算法以公共参数 params、签发者私钥 pkis、用户公钥 sku 和属性集合 {ai} N Obtain 算法以用户秘密钥 sku 和签发者公钥 pkis 为输入。在此阶段结束时,用户从签发者处获得凭证 C C。
Show ↔ Verify :Show ↔ Verify 是用户与验证者之间的展示过程。根据展示策略,Show 算法以用户秘密钥 sku、签发者公钥 pkis、所需属性的集合 {ai} N′ i=1 和一个凭证 C 为输入,输出一个呈现令牌。Verify 是由验证者执行的公开算法;它以签发者公钥 pkis、属性集合 {ai} N′ i=1, 和呈现令牌为输入。在此展示阶段结束时,Verify 输出一位 b ∈{0, 1},表示验证成功或失败。

Security Requirements

– 匿名凭证系统必须满足以下安全属性:

正确性 –诚实用户必须始终能够以匿名方式向验证者证明证明的有效性。

匿名性 –在向验证者进行展示过程中,用户必须在一组用户中保持匿名。

不可伪造性 –未持有适当合法凭证的用户无法生成有效的呈现令牌。

不可链接性 – 该属性对于用户隐私保护至关重要,并且与匿名性属性密切相关。不可链接性分为两个属性:签发-出示不可关联性和多出示不可关联性,具体如下:(i)签发‐出示不可关联性确保在凭证签发过程中收集的任何信息都无法用于将呈现令牌与原始凭证进行关联;(ii)多出示不可关联性保证由同一凭证导出并在多个会话中传输的多个呈现令牌无法被验证者关联。

此外,隐私保护属性基凭证必须确保若干功能特性,即撤销、检查和选择性披露。选择性披露特性指的是用户能够向验证者出示从其凭证中提取或推导出的部分信息,例如证明自己年龄超过18岁以购买酒精饮料,同时不泄露其出生日期。

3 基于属性的签名用于匿名凭证

本节介绍了基于属性的签名方案(ABS)及其相关算法和安全属性。随后的分析表明,ABS缺少一些作为支持匿名凭证(AC)的构建模块所需的属性。

3.1 基于属性的签名(ABS)

基于属性的签名(ABS)[19]是一种灵活的原语,使用户能够对消息进行签名,并对识别信息实现细粒度控制。在基于属性的签名中,用户拥有一组属性,每个属性对应一个从可信权威机构获取的秘密签名密钥。用户可以根据其属性满足的谓词对消息进行签名。在常见的设定中,涉及的不同参与方包括签名受托人(ST)、属性权威机构(AA),以及可能的多个签名者和验证者。其中,ST 作为全局实体,负责生成真实的全局系统参数,而 AA 则为用户的(签名者)属性集合签发签名密钥。此外,ST 和 AA 的角色可以合并为同一实体。基于属性的签名支持以下对隐私保护至关重要的性质:AA 即使知晓用户的签名密钥和属性,也无法确定某一有效签名中使用了哪些具体属性,因此无法将该签名关联到其来源用户,也无法将多个签名链接为来自同一用户。近年来,密码学文献中提出了多种基于属性的签名方案,采用了不同的设计方向。简而言之,(i)属性值可以是二进制位串[13,18,19,21,22],,也可以具有特定的数据结构[23],;(ii)访问结构可支持阈值策略[13,18,22], 、单调策略[19,23] 或非单调策略[21], ;(iii)属性私钥的签发能力可由单一权威机构[19,22,23], 或一组权威机构[19,21] 提供。

让我们解释在只有一个 AA 权威机构的简单情况下的通用 AA 基于属性的签名 {sk1,···, skN} 签名过程。首先,AA 根据请求签名者的属性集合 S= {a1,···, aN} 生成私钥 {sk1,···, skN},其中 N 是属性数量。私钥生成过程使用 AA 的主密钥 MK 以及一些相关的公共参数完成,这些参数均在设置阶段生成。然后,为了对验证者发送的消息 m 进行签名,并结合一个签名谓词 Υ,用户需要其私钥以及一个满足该谓词 Υ 的属性集合。最后,验证者能够验证某个拥有满足签名谓词的属性集合的用户确实进行了签名

谓词已对消息 m 进行签名。一个 ABS 方案由以下算法定义:

ABS.setup – 该算法由 (ST) 执行。它以安全参数 ξ 作为输入,输出全局公共参数 params(作为后续所有算法的辅助输入)以及 AA 的主密钥 MK。
ABS.keygen – 该算法由 AA 执行,以他的主密钥 MK 和一个属性集合 S ⊂ S 作为输入(其中 S={ai}iN=1,N 为属性数量,S 为属性全集)。该算法输出一个签名密钥 skS1。
ABS.sign – 该算法以私钥 skS、消息 m 和签名谓词 Υ 作为输入,例如 Υ(S)= 1(S 满足 Υ)。该算法输出一个签名 σ(或错误信息 ⊥)。
ABS.verif – 该算法以接收到的签名 σ、签名谓词 Υ 和消息 m 作为输入。它输出一个比特 b ∈{0, 1},其中 1 表示接受;即验证者成功根据签名谓词验证了签名。否则,0 表示拒绝。

3.2 基于属性的签名的安全属性

First,一个 ABS 方案必须满足正确性属性(定义1)

定义1. 正确性 –一个 ABS 方案是正确的,如果对于所有 (params,MK) ← ABS,setup(ξ),所有消息 m,所有属性集合 S,所有签名密钥 skS ← ABS.keygen(S, MK),所有声称的谓词 Υ 满足 Υ(S)= 1,以及所有签名 σ ← ABS.sign(skS, m, Υ),我们有 ABS.verif(σ, m, Υ)= 1。

此外,基于 Maji 等人[19], 的工作,我们提出了以下两个形式化定义,用于描述 ABS 方案的安全属性。

定义2. 完美隐私 –一个 ABS 方案是完美隐私的,如果对于所有 (params, MK) ← ABS.setup(ξ),所有属性集合 S1, S2,所有秘密签名密钥 sk1 ← ABS.keygen(S1, MK),sk2 ← ABS.keygen(S2, MK),所有消息 m 以及所有声明谓词 Υ 满足 Υ(S1)= Υ(S2) = 1,则分布 ABS.sign(sk1, m, Υ) 和 ABS.sign(sk2, m, Υ) 是不可区分的。

简而言之,如果完美隐私属性成立,则签名不会泄露最初使用的属性集合或私有签名密钥。

定义3。不可伪造性 ——如果对手 A 无法赢得以下游戏,则该 ABS 方案是不可伪造的:

– 设置阶段:挑战者 C 选择一个较大的安全参数 ξ 并运行 setup。C 保留主密钥 MK 的机密性,并将由 ABS.setup 生成的 params 发送给对手 A。

为便于表述,我们将签名密钥表示为一个整体实体,但在许多现有方案中,签名密钥由 S中每个单独属性对应的不同元素组成。

– 查询阶段:对手 A 可对 S 和 (m, Υ) 向私钥生成预言机以及签名预言机进行多项式次数的查询。
– 伪造阶段:A 输出关于消息 m∗ 和 Υ ∗ 的一个签名 σ∗。

如果 σ∗ 是针对谓词 Υ ∗ 在消息 m∗ 上的有效签名,且二元组 (m∗, Υ ∗) 未被查询过签名预言机,并且没有任何满足 Υ ∗ 的属性集合 S∗ 被提交给私钥生成预言机,则对手 A 赢得该博弈。

这种不可伪造性还涵盖了用户之间试图通过结合其互补属性来超越自身权限,从而生成满足给定谓词 Υ 的签名的共谋行为。同时,它也包含了不可陷害性的情况,即某个用户试图单独超越自身权限的情形。

3.3 弥合基于属性的签名与匿名凭证之间的差距

据我们所知,基于属性的签名仍被认为与匿名凭证的匿名性目的不兼容[21], 主要是因为基于属性的签名假设 AAs 是完全可信的权威,因为他们知道每个用户的密钥。此外,在 AC 系统所需的多个 AAs 情况下,所签发的凭证可能被 AAs 关联起来,因为它们都基于相同的公钥。

我们通过一个简单的例子来说明如何将基于属性的签名(ABS)应用于匿名凭证(AC)的目的。一名学生(作为用户)从大学(作为签发者)处获取一份经过认证的凭证(即学生证),该凭证基于其属性集合 S={a1:=姓名; a2:= Bob a3:= 城市 a4:= Paris a5:=专业 a6:=信息安全}。该属性集合通过用户公钥被承诺为一个单一值,并使用签发者私钥进行签名,从而生成最终的凭证 C,记为 C。

之后,该学生可以例如证明自己是居住在巴黎的学生,而无需透露其姓名或所学专业。为此,我们考虑签名谓词 Υ=(Studies ∨ Teaches) ∧(City ∧ (Paris ∨ Lille))。拥有满足该谓词属性的用户可利用其凭证 C 成功提取与请求的属性 a3、a4 和 a5 相关的适当密钥。因此,该学生在居住于巴黎的学生群体中保持匿名,并且能够证明所请求的特征,因为大学对其属性的签名是有效的。此示例为将基于属性的签名(ABS)适应于匿名凭证(AC)用途提供了初步思路,但仍需进一步研究工作。

Additional Requirements For ABS

– 让我们首先分析文献中为满足匿名凭证的匿名性和不可伪造性要求而提出的基于属性的签名的形式化安全模型(第2节)。

第一个模型由 Shahandashti 和 Safavi‐Naini[22], 提出,给出了主要流程和基本安全属性,例如正确性、不可伪造性和签名人属性隐私。随后,Maji 等人[19] 和 ElKaafarani 等人[10] 引入并形式化了完美隐私属性,该属性要求签名既不泄露用户身份,也不泄露用于签名过程的属性集合。这些模型

并不完全符合我们设计安全 AC 方案的需求。更准确地说,需要解决以下要求:

Traceability of signatures :本质上,ABS 方案支持用户的匿名性。因此,需要引入一个新的过程 Inspec 以消除匿名性,并识别生成 ABS 签名的用户。为了防止签发者追踪用户,该算法应由一个配备密钥并称为检查员的追踪机构执行。这一特性在需要问责和防止滥用的场景中非常重要。

Unlinkability between issuers :在基于属性的签名(ABS)方案中,当用户请求多个权威机构根据其属性签发凭证时,这些权威机构可以通过用户的公钥将已颁发凭证关联到同一用户。为了满足匿名凭证(AC)方案的不可链接性属性,必须设计一种新的基于属性的签名(ABS)签发流程。

Replaying sessions :为了抵御 ABS 签名重放攻击,验证者必须在每次认证会话中生成一条新消息,该消息可能依赖于会话数据,例如验证者身份和当前时间。

4 我们的新匿名认证方案

本节概述了基于属性的签名的新型 AC 方案及其相关流程和算法。然后定义了相应的安全模型以及形式化的安全属性。

4.1 系统模型

我们新的隐私保护基于属性的签名 HABS 依赖于三个流程,这些流程基于以下七个算法,可能涉及多个用户(即签名者)。验证和检查流程仅涉及公开数据。

在下文中,我们用 HABS 表示我们的新 AC 方案,用 ABS 表示第3节中定义的基于属性的签名基本功能。

HABS.Setup ——该算法运行 ABS.设置算法。它以安全参数 ξ 为输入,输出全局公共参数 params。该算法还为被称为检查员的追踪机构生成一对公钥和私钥(pkins, skins)。在下文中,假设公共参数 params 包含检查者公钥,且所有算法均默认输入 params。

HABS.KeyGen ——该算法以全局参数 params 为输入,输出用户或签发者的公钥和私钥。用户 j 的公钥和私钥分别记为(pku, sku)j,签发者的公钥和私钥记为(pkis, skis)。

HABS.Obtain ↔ HABS.Issue ——凭证颁发流程对应于 ABS.密钥生成算法。由签发者执行的 HABS.Issue 算法以用户公钥 pku 和属性集合 S ⊂ S 作为输入

(其中 S={ai}iN=1, N 为属性数量,S 称为属性全集),签发者私钥 skis 和检查者公钥 pkins。它输出对属性集合 S 的签名承诺 C。

HABS.Obtain 算法由用户执行,对应于从签发者处收集认证凭证的过程。用户需验证其属性上收到的签名承诺的正确性。在验证过程中,HABS.Obtain 算法以签名承诺 C、用户私钥 sku、签发者公钥 pkis 以及可能的检查者公钥 pkins 作为输入,输出一个比特 b ∈{0, 1}。

HABS.Show ↔ HABS.Verify – 展示过程包含 ABS 签名的 ABS.sign 和 ABS.verif 算法。该过程使验证者能够验证用户是否已从经过认证(即可信)的签发者处获取了某些属性的凭证,以及他是否被授权根据某个访问策略访问服务。因此,验证者首先需要向用户发送一个随机值 m(对应于 ABS.sign 中的消息 m)。为了抵御重放攻击(第3节.3),每次认证会话都通过该随机值进行个性化处理,该随机值可以是验证者身份与其时钟值的拼接。其次,用户基于其凭证对收到的随机值进行签名。简而言之,用户首先选择其满足签名谓词 Υ 的属性子集(Υ(S′)= 1),并对收到的值 m 进行签名。需要注意的是,基于属性的签名通常可被视为基于 Fiat‐Shamir 启发式方法的非交互式知识证明。也就是说,用户无需向验证者直接发送其属性,而只需证明他从一个可信签发者处获得了满足访问策略的某些属性。最后,用户将其签名 Σ 发送给验证者,验证者通过验证 ABS.verif(pkis,Σ, Υ, m)= 1 来检验所得签名的有效性。

HABS.Show 算法以随机化消息 m、签名谓词 Υ、用户私钥 sku、凭证 C C 以及其属性集合 S′ 的一个子集作为输入,例如满足 Υ(S′)= 1。该算法输出一个签名 Σ(或错误信息 ⊥)。

HABS.Verify 算法以接收到的签名 Σ、签发者公钥 pki、签名谓词 Υ 和消息 m 作为输入,输出一个比特 b ∈{0, 1},其中 1 表示接受,即签名验证成功,0 表示拒绝。

HABS.Inspec ——我们的方案支持由称为检查员的独立可信实体执行的检查程序。该方案依赖于两个算法,即 HABS.trace 和 HABS.judge,用于识别用户并提供判决证明。

HABS.追踪算法输入检查员的密钥 skins、发行者公钥 pkis 和签名 Σ,输出相对于谓词 Υ 对消息 m 进行签名的用户索引 j,同时还输出一个证明 。

HABS.judge 算法以发行者 pkis 的公钥、签名 Σ、用户索引 j 和证明 作为输入。它输出 b ∈{0, 1},其中 1 表示 是证明用户 j 生成了签名 Σ 的有效证明。

4.2 安全模型

我们考虑了两种现实的威胁模型,以证明我们基于属性的凭证构造的安全性和隐私性。首先,我们指出存在 honest but curious 验证者和签发者的情况。也就是说,验证者和签发者在协议的每一步都诚实执行,提供正确的输入或输出,并正确完成预期的所有计算,但他们具有好奇心,试图从协议中获取额外信息。因此,我们针对匿名性和不可链接性属性所涉及的隐私要求,考虑了这种诚实但好奇的威胁模型。

其次,我们考虑恶意用户试图超越其权限的情况。也就是说,恶意用户可能会试图偏离协议或提供无效输入。因此,我们主要针对第4.2.1节中所述的不可伪造性要求,考虑恶意用户安全模型。

4.2.1 不可伪造性

不可伪造性属性意味着,除非已知签发者的私钥(对应 Issue 情况)或用户的私钥(对应 Show 情况),否则无法伪造出有效凭证(或用户的呈现令牌)。该属性还涵盖不可陷害性,确保即使用户共谋,也无法诬陷未生成有效呈现令牌的用户。因此,我们基于对手 A 与挑战者 C 之间的三个安全游戏来定义不可伪造性,其中挑战者模拟系统流程与对手进行交互。

定义4。不可伪造性 ——我们称 HABS 满足不可伪造性属性,如果对于每个概率多项式时间攻击者 A,都存在一个可忽略函数 ε,使得:
Pr[ExpA unforg(1ξ)= 1] ≤ ε(ξ) 其中 ExpA unforg 是针对不可伪造性属性的安全实验,该实验基于后文介绍的 MC-Game、MU-游戏和 Col-游戏。

一方面,MC-Game(其形式化定义见下文)可用于描述恶意用户试图伪造有效凭证的行为。即,在第一阶段 Phase I 中,挑战者 C 运行 HABS.Setup 算法,将公共参数 params 提供给对手 A,并按以下步骤进行:
– 密钥生成:挑战者 C 运行 HABS.KeyGen 算法,以获取签发者、检查员和用户(u)的密钥对。用户的密钥对 (pku, sku) 被发送给对手。
– 签发查询:对手 A 可以多次请求 C,以获取通过将 HABS.Issue 算法应用于公钥 pku 和属性集合 Si 上所得到的凭证结果 Ci(针对会话 i)。

然后,在第二阶段,C 要求对手提供一个关于属性集合 S 的 (使得 S 在之前的签发查询阶段中未被输出)。因此,A 运行 ForgeCred 并尝试计算一个有效的凭证 C

凭证 C∗。如果对手 A 提供了一个有效凭证,则他赢得游戏。即,HABS.Obtain(C∗, sku,pkis)算法返回接受。

另一方面,MU-Game 和 Col-Game 安全游戏能够捕捉恶意用户试图伪造呈现令牌的行为,无论是单独进行(即;MU-Game)还是与其他合法用户合谋(即;Col-Game)。

首先,MU-游戏形式化定义如下:在第一阶段中,挑战者 C 运行 HABS.Setup 算法,将公共参数 params 提供给对手 A,并按以下步骤进行:
– 密钥生成:挑战者 C 运行 HABS.KeyGen 算法,以获取签发者、检查员和用户(u)的密钥对。用户的密钥对 (pku, sku) 被发送给对手。
– 签发:挑战者 C 在公钥 pku 和属性集合 S 上运行 HABS.Issue 算法。他将属性集合 S、凭证 C 以及一个谓词 Υ 发送给对手,使得 Υ(S)= 1。
– 展示查询:对手 A 可以多次请求执行 HABS.Show 算法,输入包括谓词 Υ、用户私钥 sku、随机生成的消息 mi(用于会话 i)以及其属性子集 S′,其中 Υ(S′)= 1。每次请求 i 将产生一个签名 Σi。

然后,在第二阶段,挑战者 C 要求对手提供对一个随机化消息 m 的有效签名(该消息 m 在之前的展示查询阶段未被输出过)。因此,对手 A 执行 ForgeSig 并尝试计算一个有效的签名 Σ∗。

其次,Col-Game 被视为 MU-游戏的一个子情况,其形式化定义如下:挑战者 C 首先运行 HABS.Setup 算法,将公共参数 params 提供给对手 A,并按如下步骤进行:

– 密钥生成:挑战者 C 运行 HABS.KeyGen 算法,以获取签发者、检查员以及两个用户 u1 和 u2 的密钥对。所获得的两对密钥 (pku1, sku1) 和 (pku2, sku2) 均发送给对手 A。
– 签发:C 在公钥 pkuk (k ∈{1, 2}) 和一个属性集合 Sk 上运行 HABS.Issue 算法,其中 S1 和 S2 互不相交且非空。他将属性集合 Sk、获取到的凭证 Ck、一个随机数 m 以及一个谓词 Υ(满足 Υ(Sk)= 1 但 Υ(S1 ∪S2) = 1)发送给 A。
– 展示查询:A 可多次请求执行 HABS.Show 算法,输入为其私钥 skuk 、消息 m、其属性子集 S′ k 以及一个谓词 Υi(其中 Υi(S ′ k)= 1),以获得签名 Σik。

在第二阶段,C 要求对手提供对消息 m 和谓词 Υ的签名。因此,A 试图计算一个有效的签名 σ ∗。

如果在 MU-Game 和 Col-Game 中,HABS.Verify 过程返回 accept 的概率是可忽略的,则称该 AC 方案是不可伪造的。

4.2.2 隐私

隐私属性涵盖了第2节中定义的匿名性、签发‐展示和多示证要求。在本节中,我们基于对手 A 和挑战者 C 定义了三个现实的隐私游戏——PP-游戏、MS-游戏和 IS-游戏——其中 A 只能访问公开数据,仅在一个游戏中可访问凭证。因此,A 无法自行运行 HABS.Obtain ↔ Issue 或 HABS.Show ↔ Verify 算法,而必须向挑战者 C 请求这些算法的结果,挑战者负责模拟系统流程。

定义5. 隐私属性 –我们说 HABS 满足隐私属性,如果对于每个概率多项式时间攻击者 A,存在一个可忽略函数 ε,使得:
Pr[ExpA priv(1ξ)= 1]= 1 2 ± ε(ξ)
其中 ExpA priv 是针对隐私属性的安全实验,涉及下文介绍的 PP-游戏、MS-游戏 和 IS-游戏。

我们正式定义了三个游戏,过程如下:在第一阶段,Phase I,C 运行 HABS.Setup 算法,将公共参数 params 提供给 A,并按以下步骤进行:

– 密钥生成:挑战者 C 运行 HABS.KeyGen 算法,生成密钥对 (pkis, skis) 和 (pkuj , skuj) (其中 j 用于用户 uj,j ∈{1, 2})。C 将签发者公钥 pkis 发送给对手 A。
– 签发:挑战者 C 在公钥 pkuj (j ∈{1, 2})和属性集合 S(S=S1=S2)上运行 HABS.Issue 算法,获得凭证 Cj,并仅将属性集合 Sj 发送给 A。
– 展示查询:A 可任意多次发起请求,以获取 HABS.Show 算法在用户 uj(仅向 C 提供索引 j)上针对某些消息 mjk、谓词 Υjk 以及由 A 选定的属性集合 S′ jk(其中 S′ jk ⊂Sj)的执行结果。A 收到返回的呈现令牌 Σjk。

随后,在第二阶段,A 可以选择以下游戏之一:
PP-游戏 –用于证明匿名性属性。A 选择 j ∈{1, 2},并生成一条消息 m、一个谓词 Υ 以及一个属性集合的子集 Sjk(k ∈{1, 2}),使得 Sjk ⊂Sj, Sj1 = Sj2, Υ(Sjk) = 1,且三元组 (m, Υ, Sjk) 在展示查询阶段从未被输出过。随后 A 将 m、Υ 和 Sjk 发送给 C,C 选择一个随机比特 b ∈{1, 2},在 m、Υ、属性 Sjb 和 skuj 上运行 HABS.Show。C 将获取的呈现令牌 Σjb 返回给 A。如果对手 A 能够猜出 b 的值,即用于推导该呈现令牌所使用的属性集合 Sj b,则其赢得该游戏。

MS-游戏 –用于证明多示证性质。对手 A 选择 j ∈{1, 2} 并生成一条消息 m、一个谓词 Υ 以及一个属性集合 S′,使得 S′ ⊂ S, Υ(S′)= 1。注意三元组(m, Υ, S′)在展示查询阶段从未被输出过。A 随后将 m, Υ和 S′ 发送给

挑战者 C,其选择一个随机比特 b ∈{1, 2},运行 HABS.Show,作用于(m, Υ)、属性集合 S′和私钥 skub。C将呈现令牌 Σb 发送回 A。如果对手 A 能够猜出 b的值,即生成该呈现令牌的用户 ub,则该对手赢得游戏。
IS‐游戏 –用于证明签发‐展示性质。对手 A 生成一条消息 m和一个谓词 Υ,使得 Υ(S)= 1,并且三元组(m, Υ, S)在展示查询阶段从未被输出过。A 随后将 m, Υ 和 S 发送给挑战者 C,后者选择一个随机比特 b ∈{1, 2},对用户 ub在 m, Υ, S和 skub上运行 HABS.Show。C 将 A Σb 以及凭证 C1 和 C2 发回。如果对手 A 能够猜出 b的值,即该呈现令牌对应的是哪个凭证 Cb,则该对手赢得游戏。

4.2.3 匿名性移除

我们的 HABS 系统应满足可检验性属性,这意味着 trace 算法能够为每个已验证的元组(m, Υ,Σ,pkis)返回实际用户的真实身份。由于不可伪造性 4.2.1 节已经涵盖了匿名性移除的子情况,本节仅关注 IA-游戏引导对手 A 成功通过 HABS.Show ↔ Verify 过程,而检查员却无法追踪签名发起者的身份。

IA-游戏的形式化定义如下:在第一阶段,第一阶段,挑战者 C 运行 HABS.Setup 和 HABS.KeyGen 算法,以获取签发者、检查员和编号为 1 的用户 u1 的密钥对。它将公共参数 params 以及密钥对 (pku1, sku1) 连同一个谓词 Υ 和一条随机消息 m 一起提供给对手 A。

Keygen :对手 A 运行 HABS.KeyGen 算法,以获取密钥对(pku1, sku1)。
Issue :对手 A 向 C 请求,以获得 HABS.Issue 算法在公钥 pku1 和属性集合 S(例如 Υ(S)= 1)上的执行结果。他将收到凭证 C。
Show-Query :A 可以多次请求 HABS.Show,输入包括谓词 Υ、私钥 sku1、消息 m 以及其属性子集 Si(其中 Υ(S)= 1)。每次请求 i 都会生成一个签名 Σi。

然后,在第二阶段中,C 要求对手提供一个针对消息 m 和谓词 Υ 的有效但不可追踪的签名。为此,A 运行 ForgeProof,对手 A 尝试计算一个签名 Σ ∗,使得 HABS.Verify(m, Υ,Σ,pkis)= 1 且 HABS.trace(Σ, skins)= ⊥ 或 k(k= 1)。

如果在 IA-游戏中,HABS.Inspec 过程返回接受的概率是可忽略的,则称该 AC 方案抗检查滥用攻击。

5 具体构造

在本节中,我们给出一个具体的基于属性的签名方案,该方案满足第3节中介绍的特性,并可用于设计安全的匿名凭证系统。

5.1 数学背景

我们首先在第5.1.1节介绍访问结构。然后,在第5.1.2节介绍双线性映射。最后,我们介绍安全假设。

5.1.1 访问结构

定义6 (访问结构 [1]) 。设 $ P={P_1, P_2,\cdots, P_n} $ 为一个参与方集合,若集合族 $ \mathcal{A} \subseteq 2^{{P_1,P_2,\cdots,P_n}} $ 满足单调性:
$$
\forall B, C \subseteq 2^{{P_1,P_2,\cdots,P_n}}, \quad B \in \mathcal{A}, B \subseteq C \Rightarrow C \in \mathcal{A}
$$
即若 $ B \in \mathcal{A} $ 且 $ B \subseteq C $,则 $ C \in \mathcal{A} $。

访问结构是 $ {P_1, P_2,\cdots, P_n} $ 的非空子集所构成的集合族 $ \mathcal{A} $;即 $ \mathcal{A} \subseteq 2^{{P_1,P_2,\cdots,P_n}}\backslash{\emptyset} $。其中属于 $ \mathcal{A} $ 的集合称为授权集,不属于 $ \mathcal{A} $ 的集合称为非授权集。

请注意,在近期的 ABS 方案中,参与方被视为属性。

定义7 (线性秘密共享方案(LSSS)[1]) 。如果一个在集合 $ P={P_1, P_2,\cdots, P_n} $ 上的秘密共享方案 $ \Pi $ 满足以下条件,则称其为线性的(在 $ \mathbb{Z}_p $ 上):
1. 每个参与方的份额构成一个在 $ \mathbb{Z}_p $ 上的向量;
2. 存在一个具有 $ l $ 行的矩阵 $ M $,称为 $ \Pi $ 的共享生成矩阵。对于每个 $ i \in [1, l] $,我们令函数 $ \rho $ 定义将矩阵 $ M $ 的第 $ i $ 行标记为 $ \rho(i) $ 的参与方。当我们考虑列向量 $ \mathbf{v}=(v_1,\cdots, v_k)^T $ 时,其中 $ v_1 = s \in \mathbb{Z}_p $ 是要共享的秘密,而 $ v_t \in \mathbb{Z}_p $ 中的 $ t \in [2, k] $ 是随机选取的,则 $ M \cdot \mathbf{v} $ 是根据 $ \Pi $ 得到的 $ s $ 的 $ l $ 个份额所组成的向量。份额 $ \lambda_i = (M \cdot \mathbf{v})_i $ 属于参与方 $ \rho(i) $。

假设 $ \Pi $ 是访问结构 $ \mathcal{A} $ 的 LSSS。设 $ S $ 为一个授权集,例如 $ S \in \mathcal{A} $,且 $ I \subseteq {1, 2,\cdots, l} $ 被定义为 $ I = {i:\rho(i) \in S} $。如果 $ {\lambda_i} {i\in I} $ 是根据 $ \Pi $ 对秘密 $ s $ 的有效份额,则存在可在多项式时间内计算的常数 $ {w_i \in \mathbb{Z}_p} {i\in I} $,使得 $ \sum_{i\in I} \lambda_i w_i = s $ [1]。

我们注意到,任何单调布尔公式都可以转换为 LSSS 表示。通常,布尔公式用于描述访问策略,而等效 LSSS 矩阵用于签名和验证签名。我们必须指出,定义7中的标记矩阵也称为 单调跨度程序 [16]。

定义8 (单调跨度程序 (MSP) [16,19]) 。一个单调跨度程序(MSP)是一个元组 $ (K, M, \rho, \mathbf{t}) $,其中 $ K $ 是一个域,$ M $ 是一个 $ l \times c $ 矩阵($ l $ 是行数,$ c $ 是列数),$ \rho:[l] \to [n] $ 是标签函数,$ \mathbf{t} $ 是目标向量。MSP 的大小是行数 $ l $。

由于 $ \rho $ 是将 $ M $ 的每一行 $ i $ 标记为参与方 $ P_{\rho(i)} $ 的函数,每个参与方可被视为关联到一个或多个行。对于任意参与方集合 $ S \subseteq P $,由与 $ S $ 中参与方相关联的行组成的子矩阵记为 $ M_S $。

矩阵 $ M $ 的生成空间,记为 $ \text{span}(M) $,是由 $ M $ 的行所生成的子空间,即所有形如 $ \mathbf{v} \cdot M $ 的向量。若 MSP 满足以下条件,则称其计算访问结构 $ \mathcal{A} $:
$$
S \in \mathcal{A} \iff \mathbf{t} \in \text{span}(M_S)
$$
换句话说:
$$
\mathcal{A}(S)= 1 \iff \exists \mathbf{v} \in K^{1\times l}: \mathbf{v}M= \mathbf{t}
$$

5.1.2 双线性映射

设 $ \mathbb{G}_1 $、$ \mathbb{G}_2 $ 和 $ \mathbb{G}_T $ 为三个素数阶 $ p $ 的循环群。设 $ g_1 $、$ g_2 $ 分别为 $ \mathbb{G}_1 $ 和 $ \mathbb{G}_2 $ 的生成元。双线性映射 $ \hat{e} $ 是一个映射 $ \hat{e}: \mathbb{G}_1 \times \mathbb{G}_2 \to \mathbb{G}_T $,满足以下性质:(i) 双线性:对所有 $ g_1 \in \mathbb{G}_1, g_2 \in \mathbb{G}_2 $;(ii) 非退化性:$ \hat{e}(g_1, g_2) \ne 1 $;以及 (iii) 存在一个高效算法可计算任意 $ g_1 \in \mathbb{G}_1 $ 和 $ g_2 \in \mathbb{G}_1 $ 的 $ \hat{e}(g_1, g_2) $。

5.1.3 复杂性假设

对于我们的构造,我们考虑以下复杂性假设 :

q-迪菲-赫尔曼指数问题 (q-DHE) – 设 $ \mathbb{G} $ 为一个素数阶 $ p $ 的群,且 $ g $ 是 $ \mathbb{G} $ 的一个生成元。q‐DHE 问题是指:给定一个元素元组 $ (g, g^1,\cdots, g^q, g^{q+2},\cdots, g^{2q}) $,其中 $ g^i = g^{\alpha^i} $,且 $ i \in {1,\cdots, q, q+ 2,\cdots, 2q} $ 和 $ \alpha \leftarrow_R \mathbb{Z} p $,不存在能够计算缺失群元素 $ g^{q+1} = g^{\alpha^{q+1}} $ 的高效概率算法 $ \mathcal{A} {qDHE} $。

计算性迪菲-赫尔曼假设 (CDH) – 设 $ \mathbb{G} $ 为一个素数阶 $ p $ 的群,且 $ g $ 是 $ \mathbb{G} $ 的一个生成元。CDH 问题是指:给定元素元组 $ (g, g^a, g^b) $,其中 $ {a, b} \leftarrow_R \mathbb{Z} p $,不存在能够计算 $ g^{ab} $ 的高效概率算法 $ \mathcal{A} {CDH} $。

5.2 概述

在本节中,我们回顾 HABS 的流程和算法。我们的方案由以下定义的七个算法组成:

Setup :该算法以安全参数 $ \xi $ 为输入,输出公共参数 $ \text{params} $。如第4.1节所述,我们假设公共参数包含检查者公钥,并将其作为所有 HABS 算法的辅助输入。全局公共参数 $ \text{params} $ – Setup 算法首先生成一个非对称双线性群环境,例如 $ (p, \mathbb{G} 1, \mathbb{G}_2, \mathbb{G}_T, \hat{e}) $,其中 $ \hat{e} $ 是一个非对称配对函数,例如 $ \hat{e}: \mathbb{G}_1 \times \mathbb{G}_2 \to \mathbb{G}_T $。同时生成随机生成元 $ g_1,{u_i} {i\in[1,U]} \in \mathbb{G} 1 $(即;$ U $ 是跨度程序支持的最大属性数量)以及 $ g_2 \in \mathbb{G}_2 $,并连同 $ \alpha \in \mathbb{Z}_p $ 一起生成。令 $ h_1 := g_1^\alpha \in \mathbb{G}_1 $ 且 $ h_2 := g_2^{-\alpha} \in \mathbb{G}_2 $。令 $ H $ 为一个密码学哈希函数。我们系统的全局参数如下:
$$
\text{params} = {\mathbb{G}_1, \mathbb{G}_2, \mathbb{G}_T, \hat{e}, p, g_1,{u_i}
{i \in[1,U]}, g_2, h_1, h_2, H}
$$
我们注意到检查员的密钥是 $ \text{skins} = \alpha $。

KeyGen – 该算法为每个参与实体输出一对私钥和公钥。在我们的方案中,每个实体(即签发者和用户)都拥有一对私钥和公钥。也就是说,用户拥有一对密钥 $ (\text{sku}, \text{pku}) $,其中 $ \text{sku} $ 是从 $ \mathbb{Z} p $ 中随机选取的,$ \text{pku} $ 是二元组 $ (X_u, Y_u) = (g_1^{\text{sku}}, \hat{e}(g_1, g_2)^{\text{sku}}) $。签发者拥有一对密钥和公钥 $ (\text{skis}, \text{pkis}) $。签发者的密钥 $ \text{skis} $ 定义为 $ \text{skis} = (s {is}, x_{is}) $,其中 $ s_{is} $ 是从 $ \mathbb{Z} p $ 中随机选取的,且 $ x {is} = g_1^{s_{is}} $。签发者的公钥 $ \text{pkis} $ 是二元组 $ (X_{is}, Y_{is}) = (\hat{e}(g_1, g_2)^{s_{is}}, h_2^{s_{is}}) $。

Issue :该算法由签发者执行,用于根据预共享的属性集合 $ S \subset S $($ S $ 称为属性全集)向用户签发凭证。属性集合 $ S $ 定义如下:$ S = {a_1, a_2,\cdots, a_N} $,其中 $ N $ 为属性数量。

Issue 算法的输入包括用户公钥 $ \text{pku} $、属性集合 $ S $ 以及签发者私钥 $ \text{skis} $。它输出凭证 $ C $,定义为 $ C = (C_1, C_2, C_3,{C_{4,i}} {i\in[1,N]}) = (x {is} \cdot [X_u H(S)^{-1}] \cdot h_1^r, g_1^{-r}, g_2^r,{u_i^r}_{i\in[1,N]}) $,其中 $ H(S) = H(a_1)H(a_2)\cdots H(a_N) $,$ r $ 是由签发者随机选择的一个整数,而 $ u_i^r $ 表示与属性 $ a_i $ 相关联的密钥,其中 $ i \in [1, N] $。

Obtain :该算法由用户执行。它以凭证 $ C $、用户公钥 $ \text{pku} $、签发者公钥 $ \text{pkis} $ 以及属性集合 $ S $ 作为输入。所获取凭证的正确性由公式1给出,如下所示:
$$
\hat{e}(C_1, g_2) \stackrel{?}{=} X_{is} \cdot \hat{e}(X_u H(S)^{-1}, g_2) \cdot \hat{e}(h_1, C_3) \tag{1}
$$

Show :该算法由用户执行,以向验证者进行认证。也就是说,当用户想要访问某项服务时,他会向验证者发送请求。随后,验证者会发送其展示策略。该展示策略由一条随机消息 $ m $、一个谓词 $ \Upsilon $ 以及必须揭示的属性集合组成。用户需针对谓词 $ \Upsilon $ 对其属性子集 $ S $ 满足条件的情况下对消息 $ m $ 进行签名。如第3节所述,消息 $ m $ 在每次认证会话中均应不同。

下文中,我们用 $ S_R $ 表示向验证者公开的属性集合,用 $ S_H $ 表示未公开的属性集合,例如 $ S = S_R \cup S_H $。

令签名谓词 $ \Upsilon $ 可由一个 LSSS 访问结构 $ (M, \rho) $ 表示,即 $ M $ 是一个 $ l \times k $ 矩阵,且 $ \rho $ 是一个将矩阵 $ M $ 的每一行映射到一个属性的单射函数。Show 算法输入用户密钥 $ \text{sku} $、凭证 $ C $、属性集合 $ S $、消息 $ m $ 和谓词 $ \Upsilon $,使得 $ \Upsilon(S) = 1 $。显示过程如下:

  1. 用户应首先以以下方式对其凭证 $ C $ 进行盲化:用户首先随机选择一个整数 $ r’ \in \mathbb{Z} p $,并设置
    $$
    C’_1 = C_1 \cdot h_1^{r’} = x
    {is} \cdot X_u H(S)^{-1} \cdot h_1^{r} \cdot h_1^{r’} = x_{is} \cdot X_u H(S)^{-1} \cdot h_1^{r+r’}, \
    C’ 2 = C_2 \cdot g_1^{-r’} = g_1^{-(r+r’)}, \quad C’_3 = C_3 \cdot g_2^{r’} = g_2^{r+r’}
    $$
    然后,用户对访问策略中所需的每个属性关联的秘密值进行盲化,使得:$ \forall a_i \in S, u’_i = u_i^r \cdot u_i^{r’} = u_i^{r+r’} $。因此,新的盲化凭证 $ C’ $ 表示元组 $ (C’_1, C’_2, C’_3, C’
    {4,i}) = (x_{is} \cdot X_u H(S)^{-1} \cdot h_1^{r+r’}, g_1^{-(r+r’)}, g_2^{r+r’}, u_i^{r+r’}) $。

  2. 由于用户的属性 $ S $ 满足 $ \Upsilon $,用户可以根据定义 8 找到一个向量 $ \mathbf{v} = (v_1,\cdots, v_l) $ 以满足 $ \mathbf{v}M = (1,0,\cdots,0) $。

  3. 对于每个属性 $ a_i $,其中 $ i \in [1, l] $,用户首先计算 $ \omega_i = (C’ 3)^{v_i} $。然后,他计算 $ B = \prod {i=1}^l (u’_{\rho(i)})^{v_i} $。

  4. 之后,用户选择一个随机的 $ r_m $ 并计算数对 $ (\sigma_1, \sigma_2) = (C’_1 \cdot B \cdot g_1^{r_m m}, g_1^{r_m}) $。需要注意的是,用户可能并不拥有 $ \Upsilon $ 中提到的每个属性的秘密值。但在这种情况下,$ v_i = 0 $,因此该值并不需要。

  5. 最后,用户使用其密钥(如 $ A = g_2^{\text{sku} H(S_H)^{-1} r_m} $)对未揭示的属性计算累加器。然后,他输出一个展示凭证 $ \Sigma $,其主要包括关于谓词 $ \Upsilon $ 对消息 $ m $ 的签名,使得 $ \Sigma = (\Omega, \sigma_1, \sigma_2, C’_1, C’_3) $ 的向量 $ \mathbf{v} $ 中承诺元素值的集合。

Verify :该算法由验证者执行。它以签发者公钥 $ \text{pkis} $、呈现令牌 $ \Sigma $、已揭示属性的集合 $ S_R $、消息 $ m $ 以及对应于 $ (M_{l\times k}, \rho) $ 的签名谓词 $ \Upsilon $ 作为输入,输出一个比特 $ b \in {0, 1} $。验证者按如下步骤进行操作:

首先,验证者检查收到的已揭示属性集合 $ S_R $,并计算一个累加器 $ A_R $,例如 $ A_R = \sigma_2^{H(S_R)^{-1}} $。然后,验证者从 $ \mathbb{Z}_p $ 中随机选择 $ k - 1 $ 个值,分别记为 $ \mu_2,\cdots, \mu_k $,并设置向量 $ \boldsymbol{\mu} = (1, \mu_2,\cdots, \mu_k) $。

因此,验证者计算 $ \tau_i = \sum_{j=1}^k \mu_j M_{i,j} $,其中 $ M_{i,j} $ 是矩阵 $ M $ 的一个元素。

最后,验证者检查所接收的呈现令牌的正确性(公式2):
$$
\hat{e}(\sigma_1, g_2) \stackrel{?}{=} X_{is} \hat{e}(A_R, A) \hat{e}(C’ 2, h_2) \prod {i=1}^l \hat{e}(u_{\rho(i)} h_1^{\tau_i}, \omega_i) \hat{e}(\sigma_2, g_2^m) \tag{2}
$$

Inspec :该算法由检查员执行,权威机构在持有私钥 $ \text{skins} $ 的情况下进行。检查员可以解密 Elgamal 密文 $ (C’ 1, C’_2) $,通过计算 $ \Delta^ = C’ 1 \cdot (C’_2)^\alpha $。然后,检查员使用发行者表来查找条目 $ (u {j^ }, \text{pk}_j, Y {u_j} H(S)^{-1}) $,使得 $ \hat{e}(\Delta^ , g_2) \cdot [X_{is}]^{-1} = \hat{e}(X_u H(S)^{-1}, g_2) $。此类检查程序的有效性证明通过证明解密正确完成,利用了对 $ \text{skins} $ 的知识(公式 3)。
$$
\hat{e}(\Delta^
, g_2) \cdot X_{is}^{-1} \stackrel{?}{=} \hat{e}(X_u^{-H(S)}, g_2) \tag{3}
$$

6 安全分析

在本节中,我们首先证明 HABS 满足第4.2节中定义的安全要求。然后,我们讨论支持多个颁发者的扩展。

6.1 主方案的安全性

我们主要方案 HABS 的安全性依赖于以下定理 :

定理1. 正确性 – HABS 是正确的,如果对于所有 $ (\text{params}) \leftarrow \text{Setup}(\xi) $,所有公钥和私钥对 $ {(\text{pkis}, \text{skis}),(\text{pku}, \text{sku})} \leftarrow \text{KeyGen}(\text{params}) $,所有属性集合 $ S $,所有凭证 $ C \leftarrow \text{Issue}(S, \text{skis},\text{pku}) $,所有声明谓词 $ \Upsilon $ 满足 $ \Upsilon(S) = 1 $,所有呈现令牌 $ \Sigma \leftarrow \text{Show}(C, \text{sku}, m, \Upsilon) $ 以及所有证明 $ \Gamma \leftarrow \text{trace}(\text{skins}, \sigma,\text{pkis}) $,均有 $ \text{Obtain}(C, \text{sku},\text{pkis},S) = 1 $, $ \text{Verif}(\Sigma, m, \Upsilon,\text{pkis}) = 1 $ 且 $ \text{judge}(\Gamma) = 1 $。

定理2. 不可伪造性 – HABS 在 CDH、q-DHE 和 DLP 假设下满足不可伪造性要求。

定理3. 隐私性 – HABS 满足关于匿名性和不可链接性属性的隐私要求。

定理4. 匿名性消除 – 我们的基于属性的凭证系统 HABS 实现了针对 IA-游戏的检查功能。

有关详细的安全性证明,请参阅 http://www-public.tem-tsp.eu/∼laurenm/ABS-AC/securityanalysis.pdf

6.2 支持多签发者的同态性

如第3.3节所述,当用户请求多个权威机构针对其属性签发凭证时,不同会话通过用户的公钥相互关联。为了满足 AC 方案在多个签发会话之间的不可链接性,需要设计一种新的 ABS 颁发流程,这促使我们扩展方案以支持在签发流程中使用假名系统和公钥掩码,如下所述。此外,我们的构造被证明具有同态性质,有助于定义一种新的 HABS.agg 算法,以及一种修改后的 HABS.verify 算法。

Assumptions – 为支持多个颁发者,需要额外的假设:(i)所有签发权威机构 $ \text{AA}_j $ 共享相同的公共参数 $ \text{params} $,但拥有不同的密钥对 $ (\text{skis}_j, \text{pkis}_j) $,(ii)公共参数 $ \text{params} $ 包含与可能由不同签发者认证的属性相关的秘密 $ u_i $,(iii)用户从每个权威机构获得一个假名 $ \text{nym}_j $,并使用户能够以不同的身份向签发者进行认证。为了保持所获取凭证的一致性(即 $ C_1 $),每个假名 $ \text{nym}_j $ 应依赖于用户私钥和相关签发权威机构 $ \text{AA}_j $ 以及 HABS.issue 应结合 Chase 和 Chow [7] 以及 Chase 等 [8] 的工作来隐藏用户公钥。

Homomorphism Construction

– 为简便起见,以下推理仅限于两个签发者 $ \text{IS}_i $ 和 $ \text{IS}_j $,但可轻松扩展至 $ n $ (不同) 签发者,其中 $ n \ge 2 $。假设一个用户从两个不同的属性认证机构 $ \text{IS}_i $ 和 $ \text{IS}_j $ 处收到两个签名的属性集。

用户分别从 $ \text{IS} i $ 和 $ \text{IS}_j $ 接收 $ C_i = \text{HABS.Issue}(\text{skis}(i),S_i) $ 和 $ C_j = \text{HABS.Issue}(\text{skis}(j),S_j) $。属性集合由 $ S_i = {a {i,1},\cdots, a_{i,n_i}} $ 和 $ S_j = {a_{j,1},\cdots, a_{j,n_j}} $ 表示,其中 $ n_k $ 是集合 $ S_k $ 和 $ k \in {i, j} $ 中的属性数量 $ N $。

其思想是聚合凭证 $ C_i $ 和 $ C_j $,以形成覆盖属性 $ S = S_i \cup S_j $ 的新 $ C_R $。我们定义聚合算法 agg 如下:

agg ——该算法以两个凭证 $ C_i $ 和 $ C_j $ 作为输入,分别对应属性集合 $ S_i $ 和 $ S_j $,以及签发者 $ \text{pkis}_i $ 和 $ \text{pkis}_j $ 的公钥。它输出一个最终的签名承诺 $ C_R $,其中 $ C_R $ 是对这两个属性集合 $ S_i $ 和 $ S_j $ 的并集的签名。我们注意到,聚合算法必须满足 正确性 同态性 性质。

回想一下,从签发者 $ \text{IS} k $ 获取的凭证 $ C_k $ 表示为 $ C_k = (C_1, C_2, C_3,{C {l,4}} {l\in[1,n_l]}) (k) = (x {\text{is} k}[X_u H(S_k)^{-1}] h_1^{r_k}, g_1^{-r_k}, g_2^{r_k},{u_l^{r_k}} {l\in[1,N]}) $,其中 $ k \in {i, j} $ 和 $ n_l $ 是签发者 $ \text{IS}_k $ 认证的属性数量。

让我们定义以下定理以定义聚合算法 :
定理5 。 考虑第5.2节中定义的算法 HABS.Issue, HABS.Obtain, HABS.Show 和 HABS.Verify 。设 HABS.agg 为聚合算法,满足:
$$
\text{agg}(C(i), C(j),S_i,S_j,\text{pkis}_i,\text{pkis}_j) = \text{HABS.Issue}(\text{pku},S_i \cup S_j), a.\text{skis}_i + b.\text{skis}_j) \tag{4}
$$
其中 $ a $ 和 $ b $ 是用户基于并集 $ S_i \cup S_j $ 计算出的两个整数。

该定理及同态性质直接来源于以下引理1,该引理表达了 $ H(S_i \cup S_j)^{-1} $ 基于 $ H(S_i)^{-1} $ 和 $ H(S_j)^{-1} $,以便将 $ C_{1,S_i\cup S_j} $ 用 $ C_1(i) $ 和 $ C_1(j) $ 表示。

引理1 。 给定哈希函数 $ H $,对于任意属性集合 $ S_i $ 和 $ S_j $,存在两个整数 $ a $ 和 $ b $,使得 $ H(S_i \cup S_j)^{-1} = aH(S_i)^{-1} + bH(S_j)^{-1} $。

证明 。参考贝祖引理,最大公约数满足以下性质 :
$$
\gcd(H(S_i),H(S_j)) = bH(S_i) + aH(S_j) \tag{5}
$$
其中 $ a $ 和 $ b $ 是两个非零整数($ a $ 和 $ b $ 称为贝祖系数)。此外,最大公约数和最小公倍数满足公式6,使得
$$
\gcd(H(S_i),H(S_j)) \ast \text{lcm}(H(S_i),H(S_j)) = H(S_i)H(S_j) \tag{6}
$$
因此,使用公式6,我们得到:
$$
\text{lcm}(H(S_i),H(S_j))^{-1} = \frac{\gcd(H(S_i),H(S_j))}{H(S_i)H(S_j)} = \frac{bH(S_i) + aH(S_j)}{H(S_i)H(S_j)} = bH(S_j)^{-1} + aH(S_i)^{-1} \tag{7}
$$
另一方面,我们将 $ H(S_i \cup S_j) $ 写作如下:
$$
H(S_i\cup S_j) = \prod_{a_k \in S_i \cup S_j} H(a_k) = \text{lcm}\left(\prod_{a_k \in S_i} H(a_k), \prod_{a_k \in S_j} H(a_k)\right) = \text{lcm}(H(S_i),H(S_j)) \tag{8}
$$

6.3 同态性证明

为了证明关于并集运算符的同态性质,我们首先将 $ [C_1(i)]^a \cdot [C_1(j)]^b $(表示为 $ R_S $)表示为 $ S_i \cup S_j $、$ \text{skis} i $ 和 $ \text{skis}_j $ 的函数,如下所示:
$$
\begin{aligned}
R_S &= [x
{\text{is} i} \cdot [X_u H(S_i)^{-1}] \cdot h_1^{r_i}]^a \cdot [x {\text{is} j} \cdot [X_u H(S_j)^{-1}] \cdot h_1^{r_j}]^b \
&= g_1^{a.s
{\text{is} i} + b.s {\text{is} j}} \cdot [X_u^{aH(S_i)^{-1} + bH(S_j)^{-1}}] \cdot h_1^{a.r_i + b.r_j} \
&= g_1^{a.s
{\text{is} i} + b.s {\text{is} j}} \cdot [X_u H(S_i\cup S_j)^{-1}] \cdot h_1^{a.r_i + b.r_j}
\end{aligned}
$$
类似地,我们可以写出生成的凭证 $ C_R $ 的元素,使得 $ C_R = (C
{1,S_i\cup S_j}, C_{2,S_i\cup S_j}, C_{3,S_i\cup S_j},{C_{l,4,S_i\cup S_j}} {l\in[1,N]}) $,其中
$$
\begin{aligned}
C
{1,S_i\cup S_j} &= [C_1(i)]^a \cdot [C_1(j)]^b = x_{\text{is} i}^a \cdot x {\text{is} j}^b \cdot [X_u H(S_i\cup S_j)^{-1}] \cdot h_1^{a.r_i + b.r_j} \
C
{2,S_i\cup S_j} &= [C_2(i)]^a \cdot [C_2(j)]^b = g_1^{-(a.r_i + b.r_j)} \
C_{3,S_i\cup S_j} &= [C_3(i)]^a \cdot [C_3(j)]^b = g_2^{a.r_i + b.r_j}
\end{aligned}
$$
且 $ {C_{l,4,S_i\cup S_j}} {l\in[1,N]} = {u_l^{a.r_i + b.r_j}} {l\in[1,N]} $(即;$ N $ 为最大属性数量)。

聚合凭证 $ C_{1,S_i\cup S_j}, C_{2,S_i\cup S_j}, C_{3,S_i\cup S_j},{C_{l,4,S_i\cup S_j}} {l\in[1,N]} $ 的形式与单个凭证如 $ C_i $ 类似,因此通过应用完全相同的 HABS Show 算法可得到聚合呈现令牌 $ \Sigma_R $。所获取的 $ \Sigma_R $ 如下: $ \Sigma_R = (\Omega_R,\sigma {1,R},\sigma_{2,R},C’ {1,R},C’ {2,R},A,S_R) $。

6.4 正确性证明

我们展示验证者如何依赖聚合的呈现令牌 $ \Sigma_R $ 来认证用户($ u $),根据其访问策略 $ \Upsilon $,例如 $ \Upsilon(S_i \cup S_j) = 1 $,其中 $ S_k $ 表示由签发者认证的属性集合 $ \text{IS} k $,$ k \in {i, j} $。利用配对函数 $ \hat{e} $ 的性质,我们可以轻松证明等式9的正确性:
$$
\hat{e}(\sigma
{1,R}, g_2) \stackrel{?}{=} X_{\text{is} i}^a X {\text{is} j}^b \hat{e}(A_R, A) \hat{e}(C’ {2,R}, h_2) \prod_{i=1}^l \hat{e}(u_{\rho(i)} h_1^{\tau_i}, \omega_i) \hat{e}(\sigma_{2,R}, g_2^m) \tag{9}
$$
其中 $ a $ 和 $ b $ 是引理 1 中定义的两个整数。

根据与公式2的等价性,我们可以认为 $ D = a.r_i + b.r_j + r’ $ 表示量 $ R = r + r’ $。因此,为了证明公式9的正确性,我们用 $ \Delta $ 表示量 $ \hat{e}(\sigma_{1,R}, g_2) $:
$$
\begin{aligned}
\Delta &= \hat{e}(x_{\text{is} i}^a x {\text{is} j}^b \cdot X_u H(S_i \cup S_j) \cdot h_1^D \cdot \prod {i=1}^l (u_{\rho(i)})^{D v_i} \cdot g_1^{r_m m}, g_2) \
&= \hat{e}(x_{\text{is} i}, g_2)^a \cdot \hat{e}(x {\text{is} j}, g_2)^b \cdot \hat{e}(X_u H(S_i \cup S_j), g_2) \cdot \hat{e}(h_1^D, g_2) \cdot \hat{e}(g_1^{r_m m}, g_2) \cdot \hat{e}\left(\prod {i=1}^l u_{\rho(i)}^{D v_i}, g_2\right) \
&= X_{\text{is} i}^a \cdot X {\text{is}_j}^b \

基于分布式模型预测控制的多个固定翼无人机一致控制(Matlab代码实现)内容概要:本文围绕“基于分布式模型预测控制的多个固定翼无人机一致控制”展开,采用Matlab代码实现相关算法,属于顶级EI期刊的复现研究成果。文中重点研究了分布式模型预测控制(DMPC)在多无人机系统中的一致控制问题,通过构建固定翼无人机的动力学模型,结合分布式协同控制策略,实现多无人机在复杂环境下的轨迹一致和稳定协同飞行。研究涵盖了控制算法设计、系统建模、优化求解及仿真验证全过程,并提供了完整的Matlab代码支持,便于读者复现实验结果。; 适合人群:具备自动控制、无人机系统或优化算法基础,从事科研或工程应用的研究生、科研人员及自动化、航空航天领域的研发工程师;熟悉Matlab编程和基本控制理论者更佳; 使用场景及目标:①用于多无人机协同控制系统的算法研究与仿真验证;②支撑科研论文复现、毕业设计或项目开发;③掌握分布式模型预测控制在实际系统中的应用方法,提升对多智能体协同控制的理解与实践能力; 阅读建议:建议结合提供的Matlab代码逐模块分析,重点关注DMPC算法的构建流程、约束处理方式及一致协议的设计逻辑,同时可拓展学习文中提及的路径规划、编队控制等相关技术,以深化对无人机集群控制的整体认知。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值