如何破解半匿名指纹识别方案
1. 匿名指纹识别方案概述
匿名指纹识别方案旨在保护用户隐私,让用户在购买数据时保持一定程度的匿名性。系统提供的匿名程度很大程度上取决于参与系统的用户数量,就像在人群中容易迷失一样,在单个注册中心(RC)注册时,人群规模越大,匿名性越好。同时,在 RC 注册还能防止他人知晓用户在哪个商家购物。
在这种模型下,匿名指纹识别方案的构建必须确保攻击者无法将从不同子协议(注册和指纹识别)执行中获得的信息关联起来,从而成功识别买家。更确切地说,攻击者关联这些子协议视图的成功概率不应显著优于纯粹的猜测。这里的攻击者也包括商家(M)和 RC 的勾结。
2. 被攻击方案的详细流程
2.1 系统设置
- 假设数据项长度为 n 位,每个数据项有标记版本和未标记版本两种。
- 商家 M 为每个位(子项)itemi 准备两个版本 item0i 和 item1i(仅在包含标记的位位置不同)。
- M 使用位承诺方案(关于异或操作是同态的)对 item0i 和 item1i 进行承诺,并存储结果 com0i 和 com1i 以供后续使用。
- M 向 RC 发送签名和带时间戳的消息文本,其中包含数据项的描述以及数据项中 l < n 个位位置的标记列表。
2.2 注册
- 假设买家 B 和 RC 拥有类似 ElGamal 的公钥。
- B 使用秘密 s1 计算假名 y1,发送给 RC 并证明她知道 s1。
- 如果验证通过,RC 为 y1 颁发证书 cert 并发送给 B。
2.3 指纹识别
对于 i = 1, · · ·, n,执行以下步骤:
1. M 对 (item0i, item1i) 对进行置换,并将结果 (item(0)i, item(1)i) 存储在他的购买记录中。
2. M 和 B 运行 [CGT95] 中的承诺遗忘传输协议(COT)。协议开始时,M 输入他的两个秘密位 item(0)i 和 item(1)i 的承诺 com(item(0)i) 和 com(item(1)i),B 输入对一个位 bi 的承诺 com(bi),该位指示她想了解的秘密。协议不应向 B 透露另一个秘密(即 item(¯bi)i)的任何信息,也不应向 M 泄露 bi 的任何信息。协议给 B 的输出是指纹子项 item∗i := item(bi)i 及其承诺 com∗i = com(item∗i)。
3. B 使用注册时生成的秘密 s1 对 com∗i 进行签名,并将其与证书 cert(关于假名 y1)一起发送给 M 进行验证。
2.4 识别
找到重新分发的副本 itemred 后:
1. M 使用适当的相似度度量检索与 itemred 足够相似的数据项销售对应的所有签名承诺。
2. M 向 RC 和所有购买过该数据项副本的假名买家发送 itemred 的签名副本。
3. 对于所有可疑的假名买家,M 执行以下操作直到找到叛徒:
- 使用抛硬币协议,M 和假名买家就 l1 ≤ l < n 个位位置达成一致。协议重复执行,直到得到的位置包含 l2 ≤ l3 ≤ l1 个标记。
- 假名买家打开与商定的 l1 个位位置对应的承诺。如果所有 l3 个打开的承诺与 itemred 中的相应位值匹配,则 M 将此视为重新分发的证据。否则,买家被宣布无罪并获得新的指纹数据项。
4. M 将打开的签名承诺发送给 RC 请求识别。重新分发的证据包括打开的承诺、步骤 2 中发送给 RC 的签名 itemred 以及系统设置中发送给 RC 的标记位置。
下面是该方案流程的 mermaid 流程图:
graph LR
classDef startend fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px;
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
classDef decision fill:#FFF6CC,stroke:#FFBC52,stroke-width:2px;
A([开始]):::startend --> B(系统设置):::process
B --> C(注册):::process
C --> D(指纹识别):::process
D --> E(识别):::process
E --> F{是否找到叛徒}:::decision
F -->|是| G([结束]):::startend
F -->|否| D
3. 方案分析
3.1 匿名性和信任模型
该方案提供的匿名性较弱,商家 M 和 RC 的勾结可以通过证书 cert 和公钥 y1 轻松识别买家。类似的方案 [Dom98, DJ98] 也是半匿名的。
为了改进半匿名方案,可以使用 k 出 m(k < m)的信任模型,即 k 个注册中心执行买家的注册,这样可以降低不诚实商家识别买家的机会。此外,原方案中商家需要信任 RC,因为在系统设置中他向 RC 发送了标记位置列表。一个简单的解决方法是让 M 在系统设置中仅对这些位置进行承诺(例如通过时间戳),在识别子协议中再向 RC 透露所需的子集(即 l3)。
3.2 安全问题
3.2.1 买家无安全保障
指纹识别子协议对买家不安全,商家 M 可以在指纹识别步骤 2 中为每个 i 输入相同版本的子项 itemi(例如 item0i),从而知道哪个指纹项分配给了哪个买家,这可能导致不诚实的商家错误地指控诚实的买家叛国。买家由于不知道子项的两个版本,无法识别 M 的作弊行为。
一种克服此攻击的方法是,在指纹识别(或纠纷)期间,买家要求商家以切割选择的方式打开输入到 COT 的一些承诺对,并验证商家是否行为得当。但并非所有对都能打开,并且与识别相关的参数(如 l3)必须相应调整,这将导致更大的参数和更昂贵的系统。
3.2.2 无勾结容忍性
该方案不具备勾结容忍性,而这是指纹识别方案应具备的重要属性。可以使用现有的勾结容忍方案来派生一个安全(且高效)的无勾结容忍构造。例如,[PS96] 中提出的构造:商家 M 选择标记列表,买家 B 使用对称指纹识别方案中的通用代码对其身份进行编码,然后她向商家零知识证明她正确构造了代码。如果不考虑代码结构的假设(即不需要勾结容忍性),则不需要零知识证明。
为了实现勾结容忍性,[Dom99] 提出了基于智能卡的方法。但该方法存在一些问题,如假设买家 B 和商家 M 完全信任智能卡,而智能卡的抗篡改能力仅提供有限的安全性,并且为了实现勾结容忍的编码和嵌入识别信息,智能卡需要处理大量数据,可能会迅速超出其处理存储和带宽容量。
3.3 效率问题
该方案虽然旨在降低匿名指纹识别方案的计算复杂度,但忽略了一个关键的效率参数——轮复杂度。在指纹识别子协议的步骤 3 中,买家 B 必须顺序签署指纹子项的承诺并发送给商家 M,因为否则她会在未签名(承诺)的情况下获得指纹子项。这种顺序操作不切实际,因为算法的轮复杂度与数据项的位长度 n 呈线性关系。
此外,在识别子协议的步骤 2 中,M 必须联系所有假名买家,这也是不现实的做法,其他匿名指纹识别方案都试图避免这种情况。
下面是该方案存在问题及改进建议的表格:
|问题|描述|改进建议|
|----|----|----|
|匿名性弱|商家和 RC 勾结可轻松识别买家|使用 k 出 m 信任模型,让 M 仅对标记位置进行承诺|
|买家无安全保障|商家可作弊指控买家|买家要求商家以切割选择方式打开承诺对并验证|
|无勾结容忍性|方案不具备勾结容忍性|使用现有勾结容忍方案派生构造,或改进智能卡方法|
|效率问题|轮复杂度高,联系所有买家不现实|优化协议以降低轮复杂度,改进识别方法|
4. 攻击类似方案
另一个匿名指纹识别方案 [DJ98] 也存在诸多问题,既不安全也不公平,下面来详细分析。
4.1 方案流程
4.1.1 系统设置
商家 M 将数据项拆分为 n 个不相交的子项 itemi(1 ≤ i ≤ n),长度相同。其中 u < n 个子项 itemi(i = 1, · · ·, u)包含一个标记,即存在两个略有不同的版本 item′i(标记为 0)和 item′′i(标记为 1)。
4.1.2 注册
与之前的方案相同,买家 B 使用秘密 s1 计算假名 y1,最终获得注册中心 RC 颁发的关于 y1 的证书 cert。
4.1.3 指纹识别
该过程类似于安全合同签署协议:
1. B 向 M 发送 (y1, cert)、数据项描述文本以及使用秘密密钥 s1 对文本的 ElGamal 签名 sig,M 验证 cert 和 sig。
2. 对于 i = 1, · · ·, l(l < u < n),M 使用 [BPT85] 中的 1 - 2 遗忘传输(OT)协议发送两个消息(item′i, item′′i)中的一个,B 获得输出(指纹)子项 item∗i。
3. B 使用秘密密钥 s1 对哈希值 hash∗(l) = H(item∗(l)) 进行 ElGamal 签名 sig∗(l),其中 item∗(l) = item∗1∥item∗2∥· · · ∥item∗l,B 将 sig∗(l) 和 hash∗(l) 发送给 M,并向他零知识证明 hash∗(l) 是根据 OT 的输出正确计算的。
4. 对于 i = l + 1, · · ·, u,类似步骤 3 进行操作,计算 item∗(u) = item∗l + 1∥item∗l + 2∥· · · ∥item∗u 和 sig∗(u) 并发送给 M 进行验证。
5. M 向 B 发送 itemu + 1∥itemu + 2∥· · · ∥itemn。
下面是该方案指纹识别流程的 mermaid 流程图:
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(OT 传输):::process
C --> D(签名并发送):::process
D --> E(后续签名并发送):::process
E --> F(发送剩余子项):::process
F --> G([结束]):::startend
4.2 方案存在的问题
4.2.1 半匿名性
与之前的方案一样,RC 和 M 的勾结可以通过 cert 和公钥 y1 轻松识别买家。
4.2.2 买家无安全保障
在指纹识别子协议的步骤 2 中,M 可以为每个 i 输入相同版本的子项 itemi,从而知道哪个指纹项与哪个买家关联。
4.2.3 无公平交换
在指纹识别子协议中,B 获得一定数量的指纹子项后需要向 M 发送签名。但在消息交换中,M 可能会被确定性地欺骗。例如,买家 B1、B2 和 B3 勾结(或同一买家使用不同假名)购买相同数据项。B1 执行指纹识别协议,获得子项 itemi(i = 1, · · ·, l)后在步骤 3 发送签名 sig∗(l) 之前退出协议;B2 类似操作,但在发送签名 sig∗(u) 之前退出;B3 正常执行协议。然后勾结者将子项组合,使得前 l 个标记子项来自 B1,i = l + 1, · · ·, u 的标记子项来自 B2,其余来自 B3,这样就生成了一个没有签名的标记项,使得叛国证明变得不可能。
5. 结论
对一些匿名指纹识别方案的分析表明,这些方案最多只能提供较弱的匿名性,即使是半匿名构造也不安全,容易受到攻击。主要存在匿名性弱、买家无安全保障、无勾结容忍性和效率低下等问题。针对这些问题,给出了一些改进建议,如使用 k 出 m 信任模型、让买家验证商家承诺、使用现有勾结容忍方案派生构造以及优化协议以提高效率等。未来在设计匿名指纹识别方案时,需要更加注重这些方面,以提高方案的安全性和实用性。
下面是对这些方案问题及改进方向的总结列表:
-
匿名性方面
:采用 k 出 m 信任模型,减少商家和 RC 勾结识别买家的可能性。
-
安全保障方面
:让买家有方法验证商家的操作,防止商家作弊。
-
勾结容忍性方面
:使用现有方案派生构造或改进智能卡方法来实现勾结容忍。
-
效率方面
:优化协议,降低轮复杂度,改进识别方法,避免联系所有买家。
超级会员免费看
2153

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



