隐私保护信用系统设计

隐私保护信用系统

1 引言

几十年来,客户和商家一直享受着以信用卡和借记卡等形式存在的塑料货币带来的便利。塑料货币使客户免去了每天携带大量现金的麻烦,一两张薄薄的塑料卡片就足以完成大多数交易。此外,使用塑料货币还可以精确支付金额,而无需找零金属硬币。另一方面,由于所有来自客户的付款都会直接进入银行账户,商家无需担心如何安全保管现金,也无需亲自匆忙将现金存入银行账户。

为了鼓励使用信用卡,银行和商家经常开展联合促销活动,使客户在选择刷卡支付时可享受额外折扣。由于具有如此巨大的优势和便利性,与信用卡/借记卡相关的交易变得极为流行,并持续增长。根据凯捷咨询和苏格兰皇家银行发布的《全球支付报告》2015[13],借记卡和信用卡交易的增长率分别为11.5%和9.6%。

便利性伴随着用户隐私的代价。在信用卡系统中,银行通常会生成一份月度交易记录,明确列出客户消费的金额。因此,银行了解每一笔交易的详细信息,包括交易日期和金额、参与方等。银行可以据此推断出关于客户的大量敏感信息,例如他们常去的餐厅或近期的旅行计划。银行可能会利用这些信息构建客户的完整个人档案,并借此获利,例如将其出售给他人。

密码学电子现金[14]被发明用于支持电子支付系统中的交易隐私。电子现金系统的典型工作流程如下:用户从银行提取硬币,然后使用这些硬币向商家进行支付。商家将在稍后某个时间将硬币存入其银行账户。隐私要求规定,银行无法推断出商家刚刚存入的硬币的原始所有者是谁。可转让电子现金系统[8,17,23,24]允许一枚硬币在系统内流通,而传统电子现金系统仅允许一枚硬币被花费一次。在可转让电子现金系统中实现匿名性比在传统系统中更为困难。

然而,电子现金系统在本质上类似于借记卡系统,因为用户永远无法花费超过其支付能力的金额。而信用卡系统则为用户提供了购买当前无法负担的商品的灵活性。因此,一个很自然的问题是:是否存在一种电子化的、同时具有匿名性的信用卡系统对应物?乍一看,这个问题的答案显然是否定的。信用卡系统本质上需要记录交易金额,以便银行能够实时检查用户是否已耗尽其信用额度。银行还需要知道总交易金额以向用户收费。电子现金系统所提供的匿名性似乎与信用卡系统的这些功能需求相矛盾。

本文旨在解决基于信用的支付系统与电子现金系统之间看似固有矛盾的需求。我们的目标是保护用户隐私,即使是在某一时间段内的总消费金额方面,银行仍能从用户处获得足够的还款。此外,我们力求尽可能保留基于信用的支付系统的各项功能,如逾期利息收取、信用额度更新、月度支付结算等。这一问题尚未受到广泛关注。正如我们将要解释的,目前尚无现有工作能够完全解决此问题。

1.1 相关工作

大多数早期的电子支付系统都是中心化的,Karma+[15]和比特币[22]是显著的例外,但它们并未保护用户隐私。文献中已考虑过具有一定隐私程度的支付机制。Asokan et al.详细介绍了当时最先进的电子支付系统[3]。早期的研究[6,19]仅保护信用卡信息不被第三方或商家获取,但无法防止银行获取。

Low et al.提出了一种信用卡系统,甚至可向银行提供持卡人匿名性[21],但他们的方案假设存在多个可信方,并且仅提供典型信用卡系统中的部分功能(例如,没有消费报告或错误纠正服务)。Androulaki 和贝尔洛文[2]确定了匿名信用卡系统的一组属性,包括隐私、可部署性、不可伪造性和不可转让性。此外,这些系统应提供费用报告服务、错误纠正服务、损失恢复服务以及特殊利率优惠。请注意,其隐私级别为每笔交易。银行掌握每个时间段内个人用户的总支出情况。

1.2 我们的成果

我们提出了两种隐私保护信贷系统,可向银行隐藏个人用户的支出。我们的系统满足电子现金的传统安全要求,例如双花识别,同时也满足信贷系统特有的其他要求。具体而言,我们的系统允许灵活控制个人用户的利率和信用额度,并能防范错误收费和少收费。

我们的第一个系统相对轻量级,因为它基于传统的(不可转让的)电子现金系统[14]和(动态)群签名[7]构建。这种效率伴随着一个轻微的限制,即所有用户必须共享相同的还款到期日。我们的第二个系统利用了匿名可转让电子现金[5,25]系统以及(非交互式)零知识证明[9,18],能够克服上述限制。

1.3 论文结构

本文的其余部分组织如下:第2节介绍了必要的符号,并引入了我们的系统的基本构建模块,包括群签名、(可转让的)电子现金系统和零知识证明系统。然后在第3节描述了系统模型,并在第4节提出了两种不同的隐私保护信用系统的构造方法。

2 预备知识

2.1 动态群签名

一个动态群签名方案[7]涉及一个可信方,用于初始公共参数生成,以及两个权威机构(签发者和揭示者)和若干潜在用户,这些用户可以动态地加入群组,每个用户都有唯一的身份 i ∈ N。用户的另一个名称是签名者,因为他们代表群组进行签名。

任何人都可以成为签名的验证者,或验证签名归属于某个特定签名者的证明。针对我们的应用,我们提出一个简化的定义,其中群管理员同时担任签发者和揭示者。我们还要求一种声明算法,该算法可能不是典型(动态)群签名方案中的标准算法。该声明算法允许签名者之后声明已签发签名的署名权。

定义1。 一个动态群签名方案包含以下PPT算法:

– (gpk, ik, ok) ← GKg(1λ):群管理员在设置阶段生成群公钥gpk、签发密钥 ik和打开密钥ok。

– (upki, uski) ←(JoinI(ik), JoinU(gpk)):用户通过与签发者执行加入协议来加入群组。若成功,用户和签发者将在注册表reg上注册公钥upki,同时用户获得秘密签名密钥uski。

– σ ← GSig(uski, m):用户可使用签名密钥uski对消息 m生成群签名 σ。

– (accept/reject) ← GVf(gpk m, σ):验证者可以使用群公钥gpk验证消息 σ上的签名 σ。

– (i, τ) ← Open(ok{upk}, m, σ):揭示者可访问注册表reg。利用打开密钥ok,揭示者可以获得对消息 m上有效签名 σ的打开结果,该结果指向用户 i,并附带关于打开正确性的证明 τ。

– (accept/reject) ←Judge(gpk, upki, m, σ, τ):裁判者可以验证针对消息 m上有效签名 σ的打开结果 i的正确性证明 τ。

可以从任何可问责的环签名方案构建一个动态群签名方案[10,20]。

一个动态群签名方案应满足正确性(签名和打开的正确性)以及以下安全属性:

匿名性。 除了揭示者之外的所有参与方组成的联盟无法区分其选择的两个签名者中哪一个签署了其选择的目标消息。

可追溯性。 如果签发者是诚实的,则无法生成一个其打开结果不指向任何已注册成员的签名。

不可诬陷性。 除诚实用户外的所有参与方组成的联盟无法生成可追溯至该诚实用户的签名。

2.2 电子现金系统

一个(离线)电子现金系统[11]通常涉及三种参与者:用户、银行和商家。

定义2。 一个电子现金系统由以下八个概率算法组成:

– Pgen(1λ) 在输入安全参数 1λ时输出系统参数 pp,该参数是其余算法的默认输入。

– 存在两个密钥生成算法,KGenB() 和 KGenU()。(pkB, skB, L) ← KGenB(pp) 和 (pkU, skU) ←KGenU(pp) 分别生成银行 B和用户 U的密钥对。KGenB() 算法还额外将已存款项列表L初始化为空列表。

– 提现(U(pkB, skU, n) B(pkU, skB, n)):这是用户 U从银行 B提取包含 n枚硬币的钱包W的协议。换句话说, W是用户输出。该银行维护一个包含pkU的数据库DB。如果此协议失败(例如由于任一方输入错误),则两个输出都将变为错误消息。

– 花费协议(U(W, skU, pkM, pkB) M(skM, pkB)):这是用户将钱包W中的一个硬币转移给商家的协议。双方获得该硬币的序列号S和有效性证明,用户 additionally 输出更新后的钱包W。

– 存入协议(M(skM, s, π,pkB) B(pkM, skB, L)):这是商家 M将一枚硬币(s, π) 存入银行 B账户的协议。每当诚实商家通过与任意用户执行花费协议获得(s, π)时,该硬币将被银行接受。银行会将该硬币(s, π)添加到其已花费硬币列表L中。商家端收到一个空字符串,或在发生错误时收到一个表示错误的消息。

– (pkU,ΠG) ←识别协议(pp s, π1, π2):该算法利用一个序列号 s以及该币的有效性证明 π1和 π2来识别双花者,这些证明可能由恶意商家提交。算法输出一个公钥pkU和一个证明ΠG。如果提交 π1和 π2的商家并非恶意,则该证明可作为证据,表明公钥pkU是已注册的、对币 s进行了双重支付的用户的公钥。

– (接受/拒绝) ←VfGuilt(pp s, pkU,ΠG):该算法允许任何人验证公钥为pkU的用户因对硬币 s进行双重支付而被证实有罪的证明pkU。如果验证通过,则输出accept;否则输出 reject。

上述方案被称为紧凑型电子现金系统[11]因为钱包大小相对于其所持有的硬币数量而言是恒定的。类似的思想已被用于构建可追踪签名方案[16],该方案构成了群签名的扩展概念。还有其他电子现金方案旨在最小化消费协议所需的带宽[4]。下面我们描述电子现金系统的安全属性。

正确性。 如果花费协议由诚实用户和诚实银行执行,则用户不会输出错误消息,银行也不会输出错误消息。如果花费协议由诚实用户与诚实商家执行,则商家会接受该硬币。

余额。 任何用户和商家的联盟所花费的硬币数量都不可能超过他们从银行提取的数量。

双花者识别。 该属性保证,以高概率,双花者可由识别算法识别。具体而言,识别算法输出一个密钥 pkU 和证明 ΠG,使得 VfGuilt 接受。

用户匿名性。 从隐私的角度来看,该属性确保银行即使与任何恶意用户联盟和商家联盟合作,也无法获知用户花费的任何信息,除非这些信息可通过环境获得的“侧信道” 信息获取。

免罪性。 免罪性确保恶意银行无法诬陷无辜用户进行双重支付。免罪性分为两个级别。弱免罪性意味着诚实用户不会被指控对其硬币进行了双重支付。强免罪性放宽了用户必须诚实这一限制,也就是说,保护范围扩展到了可能已经对某些硬币进行了双重支付的用户。强免罪性可防止某位已对部分硬币进行双重支付的用户被指控额外的、其并未进行双重支付的硬币。

2.3 可转让的电子现金系统

在可转让的电子现金系统[5]中,存在两种类型的参与方:银行 B和用户 Ui。商家也可以被视为用户。由于其语法与基本电子现金系统大致相似,我们仅在下方强调主要区别。为简洁起见,我们直接使用 skB表示银行的私钥 B,而不分别区分其用于取款和存入协议的组成部分。

定义3。 可转让的电子现金方案是一种电子现金系统,具有以下差异(参见,定义 2)。

– 银行与用户之间执行一个额外的注册协议:Registration(B(skB, pkU) U(skU, pkB))。协议结束后,用户将收到一个证书 certU,该证书将成为后续花费协议和存款协议输入的一部分。如果发生错误,双方均输出 ⊥。

– 花费协议 Spend(U1(c, skU1, certU1, pkB) U2(skU2, pkB)) 在花费用户 U1 与从 U1 接收硬币 c 的 U2 之间执行。(此处没有商家。)协议结束时, U1 要么将硬币 c 标记为已花费,要么在出错时输出 ⊥。 U2 要么输出一枚硬币 c′,要么输出 ⊥。

– 存款协议 Deposit() 和识别协议 Identify() 被合并为一个单一协议: Deposit(U(c, skU, certU, pkB) B(skB, pkU, L))。这是用户U 向银行存入硬币 c 的协议。该协议包含三个子程序:

  1. 首先,检查硬币 CheckCoin 检查硬币 c 是否一致,若不一致则输出 ⊥。

  2. 若 c 通过检查硬币 CheckCoin,银行运行检查双重支付 CheckDS,输出所存硬币的序列号 s。银行检查列表 L是否已包含 s 的条目。若无, B 将 s 添加到列表L中,为 U 的账户入账并更新列表L。

  3. 若该硬币已被双重支付,则对两枚硬币运行检测双重支付 DetectDS 子程序,并输出 (pkU,ΠG),其中 pkU 是被指控用户的公钥, ΠG 是证明拥有公钥 pkU 的注册用户进行了双重支付的证据。 ΠG 不应泄露关于该硬币本身的任何信息。

现在我们描述可转让电子现金系统的安全属性。同样,我们将重点突出其与普通电子现金系统的显著区别。

正确性和不可伪造性。 这两个概念分别类似于电子现金系统中的正确性和余额属性,区别在于,在可转让电子现金系统中,商家被视为普通用户。

双花者识别和免罪性。 这两个属性与普通电子现金系统中的属性相同。

匿名性。 可转让电子现金系统中的匿名性比不可转让的系统更为复杂,因为硬币可以多次来回转让。早期的研究[5,8,12]定义了三种互不兼容的匿名性概念。

– 先观察后接收的完全匿名性意味着,当攻击者控制银行时,无法将其作为对抗性用户或银行收到的硬币与先前(被动)观察到的诚实用户之间的转账关联起来。

– 先花费后观察的完全匿名性确保当攻击者控制银行时,无法将两个诚实用户之间(被动)观察到转移的硬币与其此前作为“合法”用户已拥有的硬币进行关联。

– 先花费后接收的完全匿名性意味着当银行是诚实的时,攻击者在再次收到其先前拥有的同一枚硬币时无法识别该硬币。Spend-then-receive* 确保尽管攻击者在控制银行时能够判断其是否收到了之前拥有的硬币,但不应能够获知在此期间拥有过该硬币的用户的身份信息。

2.4 非交互式零知识

一个非交互式零知识(NIZK)证明系统[9],针对一个NP语言 L,允许证明者生成一个证明 π,以表明实例 x属于 L,而无需泄露见证。

一个NIZK证明系统应满足完备性、可靠性和零知识性。完备性指出,由诚实的证明者生成的证明应当始终被接受。可靠性要求即使存在恶意且计算能力无限的证明者,也无法使诚实验证者错误地相信非实例 x属于该语言。零知识性要求存在一个高效模拟器,能够在不知道相应见证的情况下模拟出实例的有效证明。

3 系统模型

在现实世界信用卡系统中,除了客户和商家之外,一笔交易背后还涉及多个实体。为简化起见,我们将所有这些实体统称为银行。我们的目标是构建一种隐私保护型信用卡系统涉及一个银行、一个用户组和一组商家。具体来说,我们首先描述了预期的功能性以及安全性和隐私属性。

3.1 功能

一个隐私保护型信用卡系统由一组高效的算法和协议组成,这些算法和协议由银行、用户和商家执行。商家可以被视为用户的一个子集。其语法如下:

– 设置阶段:

• pp ← Pgen(1λ),(pkB, skB, BB,数据库DB) ← KGenB(pp),(pkM, skM) ←KGenM(pp),(pkU, skU) ←KGenU(pp):银行、用户和商家基于可信第三方生成的公共参数pp分别运行各自的密钥生成算法。银行还维护一个所有实体均可匿名访问的公共公告板,以及一个由银行私有保存的数据库DB。

• (DB′, κ) ←(JoinB(skB,数据库DB ),JoinU(skU, )):用户通过与银行进行加入协议来加入系统。如果成功,银行将向该用户发放一张信用卡 κ,然后将其数据库更新为DB′。单个用户的信用额度由外部机制确定。

– 交易阶段:

• (r,(κ′, r)) ←(AuthM(skM, n),AuthU(skU, κ, n)):用户通过参与授权协议,向商家授权支付。如果用户在 κ中拥有足够的信用额度计数,则支付成功。在此情况下,用户的信用额度计数减少 n。用户和商家均获得该交易的交易收据r r。

• (BB′,⊥) ←(BatchB(skB,BB),BatchM(skM, R)):商家在收集一组交易收据r后,通过与银行进行批量处理协议来获得支付。如果成功,银行将公共公告板从BB更新为BB′。

与电子现金系统一样,当多个商家将交易收据批量提交给银行时,银行可以使用Identify()算法来检测双花事件。

• (BB′,(κ′, R′)) ←(RepayB(skB, BB n),RepayU(skU, κ, R, n)):用户可以通过与银行执行还款协议提前偿还债务。如果成功,用户将获得更新后的信用卡 κ’,其信用额度计数增加 n,且银行会更新公共公告板。

• st ←追踪(skU, BB r):在可追踪方案中,用户可以追踪之前的 从银行维护的公共公告板上移除交易

– 结算阶段:

• (⊥, κ′) ←(SettleB(skB, ρ, , ′), SettleU(skU, κ, , ′)):在用户的还款到期日,用户与银行执行一个结算协议,其中银行就用户未偿还的信用额度收取利息 ρ ,并向用户发放一组新的信用额度。根据已偿还的支付金额和利率,原始信用额度 可以在更新后的信用卡 κ′ 中更新为新的 ′ 。用户的利率和信用额度(决定发放的信用数量)再次由外部机制确定。

隐私保护信用系统

4 构建信贷系统

我们提供了两种隐私保护信贷系统的构造,二者均基于匿名电子现金系统构建。其基本思想是将电子现金系统中的硬币用作信用额度。换句话说,信贷系统中的用户会被发放一个钱包,其中包含的硬币数量等于该用户的信用额度。用户在使用该信贷系统进行支付时,只需转移部分硬币即可给商家,商家之后可以将硬币存回银行并结算交易。

当用户偿还债务时会出现问题。一个直接的解决方案是让用户从银行购买硬币,然后将其添加到钱包W中。在还款到期日,用户通过零知识证明钱包 W中的硬币数量大于信用额度。注意,这要求匿名电子现金系统具有可转让性。这构成了我们第二种构造的基础。

现有的匿名可转让电子现金系统通常与不可转让的系统相比效率较低。我们的第一种构造方法转而使用一种带有动态群签名的匿名(不可转让)电子现金系统。一次支付现在由若干硬币以及相同数量的群签名组成。前者如上所述存入银行,后者则由银行发布在公共公告板上。为了偿还债务,用户认领公告板上属于自己的群签名。在还款到期日,银行只需打开所有未认领的签名,并向相应的用户收取利息。最后,银行向所有用户发放新的电子现金钱包。

为了隐藏每个用户的支出,我们期望用户通过匿名通信通道以小额分批偿还债务,并将实物货币匿名转移给银行。这样,不同用户的支付在银行看来是无法区分的,因此银行只知道所有用户的总支出。

4.1 从群签名和电子现金系统

我们首先利用群签名和电子现金系统构造一个轻量级信用系统。在此轻量级构造中,所有用户的还款到期日均相同。电子现金系统中的银行同时担任群签名方案中的群管理员和揭示者角色。

设置阶段

– pp ← Pgen(1λ):银行或可信第三方运行 pp ← ECash.Pgen(1λ) 以生成公共参数。

– (pkB, skB, BB, DB) ← KGenB(pp):信用系统中的银行为电子现金系统中的银行生成密钥对 (pkB, skB, L) ← ECash.KGenB(pp),以及为群签名方案生成签发和打开密钥对 (gpk, ik, ok) ← GSig.GKg(1λ)。它初始化一个空的签名集合 Σ := φ,并将公共公告板设置为 BB ← (Σ,L)。同时初始化一个空的数据库 DB := φ。

– (pkM, skM) ←KGenM(pp), (pkU, skU) ← KGenU(pp):信用系统中的商家和用户作为电子现金系统的用户,通过 (pkU, skU) ←ECash.KGenU(pp) 生成各自的密钥对。

– (DB′, κ) ←(JoinB(skB, DB ), JoinU(skU, )):为了加入系统,银行通过群加入协议将用户注册到群中。(upki, uski) ← GSig.(JoinI(ik), JoinU(gpk)),并通过(W, pkU) ← ECash.Withdraw(U(pkB, skU, ))向用户发放金额等于其信用额度 的电子现金系统钱包。协议终止后,银行将条目(pkU, upki)插入数据库DB,用户获得信用卡 κ:=(uski, W)。

交易阶段

– (R, (κ′, R)) ←(AuthM(skM, n), AuthU(skU, κ, n)):当拥有足够信用时,用户通过执行花费协议Spend(U(W, skU, pkM, pkB)) n次,将电子现金系统中的 n枚硬币转移给商家以支付金额 n。该协议的输出是一组序列号 S和一组证明 Π,用以声明这些硬币的有效性。随后,用户对每个序列号与有效性证明组成的对生成 n个群签名。记群签名的集合为 Σ。元组 r=(S, Π,Σ)作为交易收据r。

– (BB′,⊥) ←(BatchB(skB,BB),BatchM(skM, R)):在当天结束时,商家通过使用存入协议Deposit(M(skM, S,Π,pkB) B(pkM, skB, L))将硬币存回银行,从而批量处理交易收据r,同时展示一组群签名 Σ′={σ ← GSig(uski,(s, π))},该签名对所存硬币的序列号及有效性证明进行签名。银行验证所有收到的签名,若有效,则将这些签名 Σ′={σ}添加到集合S中,并将(S,Π)添加到列表L中。

– st ←追踪(skU, BB r):一旦签名被发布到集合 Σ中,用户可以通过查找他们在公告板上先前发布的群签名 Σ,来追踪其记录在收据 r=(S,Π,Σ)中的先前交易。

– 银行还可以运行电子现金系统的识别和追踪算法来抓获双重支付者。

– (BB′, (κ′, R′)) ←(RepayB(skB, BB n), RepayU(skU, κ, R, n)):为保护隐私,用户将未偿费用分成小笔金额 n进行偿还。为此,用户声明列表L Σ中某些先前交易对应的 n个签名,并通过外部机制(例如物理方式)匿名支付金额 n。一旦签名被声明,用户便从列表L R中移除相应的交易收据r,银行则从序列号集合SΣ中移除这些签名。

结算阶段

– (⊥, κ′) ←(SettleB(skB, ρ, , ′), SettleU(skU, κ, , ′)):在还款到期日,银行通过 (i, τ) ← Open(ok{upk},(s, π) σ) 打开与已花费硬币 {(s, π)} 对应的 Σ 中所有未认领签名 σ,以追踪尚未还清债务的用户。然后向这些用户收取利息。最后,银行根据加入协议,向用户重新发放电子现金钱包,其中包含数量等于其(可能已更新)信用额度的硬币。

4.2 来自可转让的电子现金系统

接下来,我们描述一种来自匿名可转让电子现金的构造。在此信用系统中,每个用户的还款到期日可能不同。

设置阶段

– pp ← Pgen(1λ):银行或可信第三方运行 pp ← ECash.Pgen(1λ) 以生成公共参数。

– (pkB, skB, BB, DB) ← KGenB(pp):信用系统中的银行通过底层电子现金系统执行 (pkB, skB, L) ← ECash.KGenB(pp) 生成密钥对,并将公共公告板设置为 BB := L。

– (pkU, skU) ←KGenU(pp):信用系统的商家和用户作为电子现金系统的用户,通过 (pkU, skU) ←ECash.KGenU(pp) 生成各自的密钥对。

– (DB′, κ) ←(JoinB(skB, DB ), JoinU(skU, )):为了加入系统,银行通过执行 (W, pkU) ←ECash.Withdraw(U(pkB, skU, ) B(pkU, skB, )) 向用户发放一个电子现金钱包,其中包含等于用户信用额度 的硬币数量,从而完成用户注册。协议终止后,银行将条目 pkU 插入数据库DB,用户获得信用卡 κ:= W。

交易阶段

– (R,(κ′, R)) ←(AuthM(skM, n),AuthU(skU, κ, n)):当用户有足够的信用时,为了支付金额 n,用户通过执行 n 次花费协议 Spend(U(c, skU, certU,pkB) M(skM,pkB)),将电子现金系统中的 n 枚硬币转移给商家。商家的输出为 n 枚硬币,这些硬币也作为交易收据。

– (BB′,⊥) ←(BatchB(skB,BB),BatchM(skM, R)):在当天结束时,商家通过使用存入协议Deposit(M(c,skM, certM, pkB) B(skB, pkM,列表L))将硬币退还给银行,从而批量处理交易收据。在此过程中,任何双花者都将被识别,并相应地更新列表L。

与之前的构造不同,由于电子现金系统的匿名性,银行在公共公告板上发布的信息对用户而言是不可关联的,这不幸导致该构造无法被追踪。

– (BB′, (κ′, R′)) ←(RepayB(skB, BB n), RepayU(skU, κ, R, n)):为了保护隐私,用户将未偿费用分成小额度 n进行偿还。为此,银行通过生成一个新密钥对(pkM, skM) ← ECash.KGenU(pp),创建一个新的虚拟商户,并通过(W, pkM) ←电子现金取款(U(pkB,skM, n) B(pkM,skB, n))操作取出包含n枚硬币的新钱包W。随后,在通过外部机制确认支付后,银行通过执行花费协议Spend(U(c, skU, certU, pkB) M(skM, pkB))共n次,将虚拟商户中的所有硬币转移给请求的用户。

结算阶段

– (⊥, κ′) ←(SettleB(skB, ρ, , ′), SettleU(skU, κ, , ′)):在还款到期日,仅存在两种情况:(1) 存储在信用卡 κ中的钱包W内的硬币数量 n大于或等于其原始信用额度 ;(2) 钱包W中的硬币数量 n小于其信用额度。在第一种情况下,用户可以选择通过零知识方式证明该钱包包含足够的硬币。否则,用户需通过存入协议Deposit(U(c, skU, certU, pkB) B(skB, pkU, L))将钱包W中的所有硬币存入银行。随后,银行根据利率 ρ以及存入金额向用户收取利息,并向用户发放一个新钱包作为新信用卡κ′,可能附带新的信用额度 ′。

4.3 安全分析

From Group Signature and E-Cash Systems. 如果存在一个攻击者能够破坏我们系统的余额属性,那么它也能够破坏电子现金系统的余额属性。

为了隐藏消费模式,如果所有用户都诚实支付了其全部债务,银行将不会公开任何签名。银行所知晓的关于用户支出的唯一信息是所有用户的总支出金额,因为他们被分配了相同的还款到期日。

对于交易的匿名追踪,公共公告板仅包含由群内不同用户生成的一系列签名。只要底层的动态群签名方案具备匿名性,我们的系统就能在用户追踪其交易时确保匿名性。

对于欠费抵抗,一旦所有用户在截止日期前申领了其签名,公告板上剩余的未认领签名将由银行打开,以追踪尚未结清债务的用户。由于动态群签名方案的可追溯性,仍存在债务的用户将被追溯出来,银行可以对这些用户采取外部机制。

如果存在一个攻击者能够破坏我们系统的误收费抵抗性,则该攻击者必须能够生成一个签名以及一个被裁判者接受的证明。因此,动态群签名方案的不可诬陷性将被破坏。

来自匿名可转让电子现金系统。 如果一个用户联盟花费的金额超过了他们的集体信用额度,那么其中至少有一个用户花费的硬币数量超过了其提取的硬币数量。因此,对于任何破坏余额属性的攻击者,我们都可以构造出一个破坏可转让电子现金系统不可伪造性的攻击者。

我们声称,在我们的系统中,银行只知道被分配到同一还款到期日的每个用户组的总支出金额。这意味着当银行收到一枚硬币时,它并不知道是谁支付了这枚硬币。假设我们的系统在这一属性上是不安全的,即银行能够识别出接收硬币的付款人,那么通过直接归约,我们可以构造一个能够破坏可转让电子现金系统的花费和接收* 属性的攻击者。

我们的系统提供欠费抵抗。在还款到期日,如果用户以零知识方式证明其钱包中的硬币数量超过其信用额度,则说明该用户必然已经还清所有债务。否则,可以构造一个针对证明系统可靠性的攻击者。另一种欠费情况是用户向银行存入的硬币数量超过其所拥有的数量。这种情况可分为两个子情况。在第一个子情况中,用户生成一些伪造的币,并将这些伪造的币存入银行。这会破坏可转让电子现金系统的不可伪造性。在第二个子情况中,用户将同一枚硬币存入两次。这会破坏可转让电子现金系统的安全性,因为它未能实现对双花者的识别。

对于误收费抵抗,我们必须考虑两种情况。第一种情况是银行和任何商户联盟可以通过声称某些已支付的硬币无效来指控用户未完全偿还债务。当用户是诚实的且所有硬币在系统中均可转让时,这意味着这些无效硬币是由一些能够破坏我们系统余额属性的用户所花费的。因此这种情况不会发生。第二种情况是银行和商家指控用户进行双重支付。由于可转让电子现金系统的免罪性,这种情况也不会发生。

5 结论

本文研究隐私保护信用系统,旨在保护信用卡用户的交易隐私免受银行的窥探。我们提出了两种不同的构造方法,使得银行既无法知晓交易金额,也无法获知交易中参与者的身份。这两种构造的主要构建模块分别是动态群签名方案和匿名可转让电子现金系统。我们的系统保留了典型信用卡系统中的大多数理想特性,例如个性化信用额度、利率控制等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值