CanDID是一个用于发放和管理凭证的框架,由两个子系统组成:支持凭证发放的身份系统和用于恢复与凭证相关的丢失密钥的密钥恢复系统。
密钥恢复系统可用于任何密钥的存储,但我们将其整合到CanDID中有两个原因:(1)良好的密钥恢复对于安全使用CanDID凭证至关重要;(2)密钥恢复系统架构利用了与凭证发放系统相同的工具。两个子系统共同的系统目标是:1)使用遗留凭证:允许用户利用现有系统中的凭证。2)去中心化:不暴露单点故障。3)成员隐私:提供成员隐私,即隐藏用户的真实世界身份。
CanDID依赖于一组称为CanDID委员会的分散节点。出于方便起见,我们假设两个子系统使用相同的委员会,但如果需要,它们可以是不同的。现在,我们逐一检查每个子系统,指定其目标并解释如何实现这些目标。
A. 身份系统
图2是CanDID身份子系统的关键组件和工作流程的视觉概述。我们在本小节的讨论中反复引用它。
目标:CanDID身份系统的总体目标是将常用的遗留数据转换为可应用的分散凭证。尽管消费CanDID凭证的不同应用程序可能具有不同的要求,但它们通常共享共同的要求,包括:
1)唯一性:包含去重用户标识属性的规定,适用于选举等应用。
2)不可转移性:包括防止用户转移其凭证的预防措施。
3)追溯能力:提供一种机制,基于已知的真实世界身份来跟踪和吊销用户身份。
4)成对隐私:允许用户生成成对的DID [72],即每个应用程序的不同DID - 以防止跨服务的身份相关性。
为了实现这些目标,CanDID依赖于像DECO和TownCrier这样的分散Oracle方案,以从遗留Web帐户创建凭证,例如在Alice的SSN上。 CanDID委员会节点根据需要充当端口协议中的验证器。(例如,DECO依赖于验证器,但TownCrier没有。)
a)唯一性和不可转移性:即使使用安全创建的凭证,实现我们的唯一性和不可转移性目标仍然具有挑战性。实现唯一性很困难,因为给定凭证属性是私有的,因此隐藏在CanDID委员会之外,用户启动端口过程以生成任意数量的凭证没有内在障碍。缺乏每个用户凭证的唯一性可能在许多情况下具有问题,例如在匿名投票系统中。
不可转移性具有挑战性,因为不存在技术障碍,可以阻止用户向串通方公开私钥。这已经是一个严重的问题,因为凭据定期在地下网络市场上出售 [40],但当前的DID建议并未解决这个问题。 CanDID通过使系统Sybil抵抗来解决这两个挑战-唯一性和不可转移性。Sybil-resistance是通过基于一个或多个属性去重来实现的。例如,基于SSN的去重将确保最多有一个伪名与相关的SSN属性“123-45-6789”相对应。为了执行去重,委员会节点维护目标用户属性(例如SSN)的秘密共享表。加入系统的新用户提供了一些先前证明各种属性的预凭证(pre-credentials)。在CanDID中,先前的凭证是尚未被去重的任何凭证。在给定用于去重的属性(例如,SSN)的预凭证的情况下,委员会使用隐私保护的MPC去重协议来检查已发行凭证中是否存在这些属性。仅在确认用户声称的属性是唯一的情况下,系统才会向其发放新的Sybil-resistant凭证,称为主凭证。图2描述了此过程。使系统Sybil-resistance有助于阻止凭证转移。每个用户只能在CanDID中获得一个主凭证,从而不鼓励出售或转移。对于相同原因,其他威慑措施,例如暂时吊销被滥用的凭据,盗窃的凭据的吊销可以有效。
关键设计问题是哪些属性可以进行去重。我们主要关注真正独特的标识符,例如在美国的社会安全号码(SSN)中进行去重。使用唯一标识符允许高效的MPC去重协议,使这种方法非常实用。 CanDID可以使用每个子人口的不同唯一标识符,例如美国的SSN和印度的Aadhaar。
大多数,但并非全部的世界人口都有这些标识符。我们在第VII节中介绍的MPC技术原则上可以改编为对常用标识符进行去重,例如名称和地址,这些标识符具有“模糊”性,即容易出错。但是,该方法的计算量非常大,因此可行性是未来工作的问题。
在去重之后发出的主凭证通常不包含用户在与应用程序交互时要使用的所有属性。例如,投票需要一个年龄凭据。 CanDID委员会随后可以为此目的发出基于上下文的凭据。如图2所示,用户提供预凭证(例如“年龄”)和其主凭证以获取所需的凭据。基于上下文的凭证继承了主凭证的Sybil-resistant属性-每个上下文只发出一个凭证。此步骤的挑战在于确保预凭证属于持有主凭证的同一人。否则,用户可能会购买便宜的盗窃帐户 [53] 来证明任意要求。 CanDID