安全与隐私计算在国内发展现状

DID 安全与隐私考虑

因为W3C和DIF的DID标准相对成熟,我们主要参考这个标准来描述安全 和隐私的考虑和解决方案或者说应对措施。DID标准由于规定必须用户控制数据 和身份信息,在隐私和安全比传统的数字身份有许多改进。例如没有单点的风险, 也没有中心化的拖库的可能性。但是还是需要考虑新的安全和隐私。这一章就介 绍DID需要考虑的新的隐私和安全。先介绍一下需要用到的技术术语:
DID 标识符
全球唯一的标识符,不需要中心化的注册机构,因为它是通过分布式帐本技 术(DLT)或其他形式的分布式网络进行注册的。

DID主体

DID文档(Document)所涉及的实体。即由DID标识符和DID文档描述的实 体。

DID控制者

能够更改DID文档的实体。一个DID可以有多个控制者。DID控制者由DID 文档顶层的Controller属性表示。需要注意的是DID控制者可能包括DID主体。
DID 文档

描述DID主体的一组数据,包括DID主体可以用来认证自己并证明其与DID 关联的机制,例如公钥和伪匿名生物验证数据。 DID文档可能还包含描述主体 的其他属性或声明。DID文档是基于图形的数据结构,通常使用 JSON-LD 表示, 但是可以使用其他兼容的基于图形的数据格式表示。

DID 方法

有关如何在特定的DLT或者区块链网络上实现特定的DID方案的定义,包括 DID的创建(Create),读取(Read),更新(Update)和删除(Delete)或者 统称为CRUD方法。典型的例子包括uPort, Soverin,Hedera 等等。
DID 读取函数

该函数把DID的标识符和一组元数据作为输入,去匹配对应的DID文档,并 加上附加的元数据返回DID文档。此功能依赖于具体的DID Method 方所定义的 “读取” 操作。
DID 读取者

DID读取者是一种软件和/或硬件组件,它以DID作为输入,并通过执行DID 标识符与DID文档的匹配(利用读取函数)生成合格的DID文档作为输出。
DID 服务端点

服务端点是DID主体提供的网络地址。特定服务的例子可以包括发现服务, 社交网络,文件存储服务和可验证的声明存储库, 数字资产服务。服务端点也可 以由通用数据交换协议(例如可扩展数据交换)提供。

DID 用户代理程序

诸如浏览器或其他Web客户端,或者移动客户端之类的程序,它在DID所 有者(就是DID的主体),DID发行者和DID验证者之间进行通信调解。
DID 发行者
DID发行者可以发行或者创建可验证的凭证,并且进行数字签名,并将该可 验证的凭证传送给DID主体。DID主体拥有DID发行者所发行的凭证。

DID 验证者
对可验证凭证进行验证。这包括检查:凭证是否符合规范;证明方法是否得 到满足,验证过程中需要对于DID发行者提供的凭证和数字签名进行验证,因为 凭证的和数字签名的Hash应该存储在链上,验证者不需要一个中心化的数据库 进行验证。DID验证者可以是DID服务的提供方(Service Provider)或者中继方 (Relaying Party), 对于DID主体提供的凭证进行验证以后,可以提供客户化的服 务。
根据ITEF 的RFC 3552规定,DID做为规范必须在安全方面考虑以下内容:- 哪些攻击不在范围内

  • 协议的弱点和强项。
  • 至少必须考虑以下形式的攻击:窃听,重放,消息插入,删除,修 改和中间人攻击。还必须确定潜在的拒绝服务攻击。- 如果协议包含密码保护机制,则应明确指出数据的哪些部分受到保 护以及保护的内容(即,完整性,机密性和/或端点身份验证等)。 还应该给出一些说明描述密码保护可以受到哪些攻击。应该保密的 数据(密钥,随机种子等)应该清楚地标记。
  • 如果该技术涉及身份验证,尤其是用户与服务器之间的身份验证, 则必须明确指定身份验证方法的安全性。
  • DID的底层的安全,比如区块链, 或者点对点网络的安全不属于DID 安全和隐私的范畴。CSA GCR另外工作小组在以后会做另外的研究。

我们按照上面的要求和其他因素的考虑,总结以下方面的安全考虑。按照可 能的安全威胁和应对措施进行分析:

DID 安全注意事项 : 窃听

威胁:窃听
DID由于没有规定传输中的机密性要求,窃听方可能会在相对应的响应 (Response)DID文档中获取敏感信息。DID请求的详细信息将削弱请求方和响 应方的安全性。
对策:
加密DID文档的某些属性,例如DID主题,服务端点以及授权和委托信息。 利用TLS或IPSec作为DID事务的传输层将提供一定程度的保护。目前,最佳实 践是在需要传输的DID文档里面不写任何诸如PII的敏感信息。

DID 安全注意事项 : 重放攻击

威胁:重放攻击
重放攻击有两种: 1 ) 重放会话(Session)攻击:黑客可能会使用经过验证的身份信息和会 话内容进行重放会话攻击从DID交易方提取资金或进行其他未经授权的活动。

2)硬分叉引发的重放攻击:在两条链(尤其是硬分叉链)上进行相同的 交易。例如,由于最初的BCH和BSV硬分叉没有对重放攻击的限制,因此用户 可以在BCH和BSV链上发起相同的交易,从而导致在两个链上重放交易或者双 化。
对策
1 )会话管理:DID协议未指定任何会话管理要求。一种可能的对策是使 所有DID连接变为无会话(Sessionless)连接。如果在某些应用场景会话是必需 的,则一种可能的设计是允许“一次性使用密码(OTP)“或每次交易的往返都使 用随机数(nonce)作为这个交易的唯一标识符来防止重放攻击。

  1. 硬分叉引发的重放攻击:在每个DID方法规范中,可以在DID文档的 交易上下文中引入命名空间。发送到硬分叉链的交易可以包括命名空间标识符, 以指定交易要使用的硬分叉链,以便只有一个链的矿工可以接受该交易。

DID 安全注意事项:消息操纵

威胁
日食攻击(Eclipse Attack):在极少数情况下,如果区块链的基础层具有相 关漏洞,那么许多矿工可能会阻止,插入,删除或修改DID文档或文档碎片(日 食攻击)。

合谋攻击(Collusion Attack):DID控制者们在不经过DID主体同意的情况 下合谋更改DID文档。
超前运行攻击(Front RUNNING Attack):DID对等方可以支付更高的Gas, 或者矿工(共识节点)可以超前运行某些DID交易(如果DID服务端点可以执行 某些数字资产交换交易),超前运行的效果类似于消息删除。
对策

Eclipse攻击:应对这种攻击的对策是在P2P网络层检查并修复对等点发现方 法,这与基础层DLT技术有关。
合谋攻击(Collusion Attack):当DID所有者或主体丢失密钥时,DID控制 者们可被用于社会恢复。但是,如果DID控制者们合谋,则DID所有者可能会丢 失与DID文档关联的数字资产或凭证。使用时间戳记(BIP 0113)和时间锁定(BIP 65 )可以作为缓解策略。
超前运行攻击:( 1 )带外通信(out of band)是一种对策。这个对策利用 其它非区块链频道,比如利用电子邮件进行预先的交易匹配,匹配完成以后再利 用区块链技术进行链上的点对点定向交易 ( 2 )也可以用可信的中继系统防止超 前运行攻击。可信的中继系统是一个相当于比特币闪电网路的第二层技术(Layer 2 )可以增强性能和隐私,一定程度上防止超前运行攻击。但是不能防止中继系 统本身的超前运行攻击。

DID 安全注意事项 : 中间人攻击

威胁:中间人攻击
恶意用户代理(Malicious User Agent)
用户代理是包含DID文档和私钥的客户端或者数字钱包。恶意用户代理可能 会被用户错误地下载,恶意用户代理可能盗取私钥或者代理可以替换剪贴板中的 目标地址或URI,如果DID交易包括取款,则可能存在风险。

恶意DID读取者(DID Resolver):DID读取者是一种软件和/或硬件组件, 它以DID标识符作为输入,并通过执行DID标识符与DID文档的匹配(利用读取 函数)生成合格的DID文档作为输出。DID读取者本质上是分布式的,不应部署 为中心化的服务。在某些情况下,多个DID读取者程序可能会合谋或被攻击者欺 骗,从而发生中间人攻击。

对策
恶意用户代理:请勿从未经验证的来源下载用户代理应用,例如钱包,交易 所或其他DLT应用,请始终使用双因子验证(2-FA)。使用2-FA并不能保证完 全的防御能力,但会使黑客更难。
同时,我们需要保持用户代理应用应用的更新,防止安全漏洞因为更新不及 时被利用。
恶意DID读取者(DID Resolver):请勿使用未经验证的DID Resolver,如果 可能,请构建和部署自己的Resolver群集,并在DID Resolver群集上加固安全。

DID 安全注意事项 : DID 的 CRUD 安全

威胁:DID 的CRUD
安全 DID文档的创建,阅读,更新,和删除(CRUD)是DID文档的生命周期,具 体如何实现与底层的DLT或者区块链技术有关。每一个具体的定义是由DID Method (方法)来决定。需要考虑的安全威胁包括如下:

  • 创建(Create):DID文档创建的的客户端是否安全?有没有产生弱的私 钥? 用户是否因为操作失误引起私钥的丢失和泄露

  • 阅读(Read 或者 Resolve):未经验证的DID Resolver可能发起中间人 攻击。

  • 更新(Update):经验证的DID Resolver如果合谋串通,则可以恶意更 新DID的元数据或控制者。

  • 删除(Delete):DID文档删除意味着DID标识符与DID文档的关联被删除 了。删除是永久的,不可撤消。因此用户的失误操作会产生不可逆转的 安全风险。

对策:

  • 创建:DID用户代理应用的安全必须经过第三方安全测试防止安全漏洞, 并且对应的应用必须及时更新。同时需要教育终端用户安全使用DID用 户代理应用。

  • 读取:请勿使用未经验证的DID Resolver,如果可能,请构建和部署自己 的Resolver群集,并在DID Resolver群集上加固安全。DID Resolver的代 码应该使用经过第三方安全测试的开源代码。

  • 更新:使用时间戳(BIP 0113)和时间锁定(BIP 65)的相似方法对于更 新进行时间戳的检查和时间锁的审查。防止对DID文档进行未经授权的 更改,在发生更改时监视并积极通知DID主体。这类似于密码重置通知 发送到电子邮件地址来提醒用户关于密码的修改。对于DID文档的修改, 没有中介注册商或帐户提供商可以生成此类通知。但是,如果利用可验 证数据注册表支持更改通知,则可以向DID控制者提供订阅服务。通知 可以直接发送到现有DID文档中列出的相关服务端点。

  • 删除:删除前请仔细检查,或者利用时间戳和控制者多签名的方法防止 单方面的失误。

DID 安全注意事项:密钥和签名到期

威胁:在DID的标识符体系结构中,没有中央授权机构来强制执行密钥或签 名到期策略。因此DID读取者和其他客户端应用程序需要验证密钥在使用时没有 过期。使用过期密钥或丢失密钥会引发安全问题。
对策: 时间戳(BIP 0113)和签名到期时间可以是与DID私钥部分关联的元数据的 一部分,并由DID文档的控制者签名。验证因此可以用于时间戳和到期时间。
由于某些应用场景下可能有合理的理由可以扩展已经过期的私钥,因此可能 需要一种安全的机制使用过期的私钥。

DID 安全注意事项:抵赖攻击( Repudiation)

威胁:如果用户丢失了私钥或被欺骗签名不应该发生的交易,则可能会产生 抵赖攻击。使用过期的密钥或丢失的密钥也会带来抵赖攻击。

对策:对于高价值(High Value)的交易,设置监视并通知DID主体关于交 易的细节。 也可以对于DID文档实现访问控制机制。 如果底层的DLT账本支持 时间戳(BIP 0113),可以利用时间戳增加不可抵赖的能力。防抵赖还有一个重 要措施就是自动或人工审计。

DID 安全注意事项:服务端点 (Service End Point)

威胁 在某些情况下,对于DID服务端点的访问需要具有特权,未经授权的 访问可能是安全的隐患。

对策 需要为服务端点定义身份验证和访问控制。目前的DID规范对服务端 点的身份验证和访问控制没有规划。具体实现需要按照应用场景来决定。

DID 安全注意事项:缓存

威胁 DID文档缓存可能被黑客进行篡改。

对策 缓存的DID文档可以有时间戳和内容的数字摘要(Digest)进行Hash. 使用缓存的DID文档需要对于Hash进行比对。另外,对于DID版本可以检查。 同时,需要注意缓存过期和刷新间隔的处理。

对于缓存的安全保护,也可以采用Intel SGX等技术或者针对分布式缓存系 统的安全进行加固。

DID 安全注意事项:密钥吊销和恢复

威胁虽然不是黑客攻击造成的安全威胁,用户可能不小心泄露DID私钥或 者丢失私钥。
对策可以利用 “社会恢复” (Social Recovery):利用DID的Controller 属性指定可以帮助DID主体进行密钥恢复的DID控制者。

另外一个方法是使用时间戳(BIP 0113)和时间锁定(BIP 65))来吊销和 恢复私钥。也可以利用传统保护私钥的方法来防止私钥丢失,例如利用硬件安全 模 块 (Hardware Security Module) 或 者 可 信 计 算 环 境 (Trusted Execution Environment)和本地安全攻击检测措施。

3.11 DID 安全注意事项:中继方( Relayer )威胁

威胁 中继方或服务提供商可能在没有经过DID主体或者控制者同意的情况 下在中继方本地的服务器存储用户DID文档,从而引发安全和隐私问题。
对策 利用同态加密: 同态加密允许对加密数据进行数学运算(例如,DID文档 中的DID主体和PII数据元素在事务处理中被加密而无需解密)。
利用多方计算,允许多个实体安全地将其数据贡献到组合数据集中以进行基 于DID的交易,同时保持其数据彼此之间的私密性(例如,DID各方可以使用 MPC进行供应链融资)。

也可以利用差分隐私(Differential Privacy): 差分隐私允许通过向聚合查 询结果添加随机化"噪声"来实现,以保护个人的条目,而不会显著改变查询结果。 差分隐私算法保证攻击者能获取的个人数据几乎和他们从没有这个人记录的数 据集中能获取的相差无几。

3.12 DID 安全注意事项:残留风险

威胁 残留风险是企业在尽一切努力确定和消除风险之后仍然存在的威胁。 由于残留风险是未知的,因此许多组织选择接受或者转移残留风险-例如,通过 购买保险将风险转移给保险公司。例如,如果企业使用开源的DID代码,开源 DID代码库更新可能会带来持续的残留风险。

对策 ( 1 )针对使用的开源代码,做好开源软件的生命周期管控,尤其是开源软 件中的安全漏洞,必须及时修复。 ( 2 )业务场景发生变化时需要重新审视残留风险 ( 3 )对于高价值的DID文档,有必要向有执照的保险公司投保。

3.13 DID 隐私注意事项:将个人身份信息( PII )保密

威胁:DID文档,可能帮还个人隐私数据,如果存储到公开的分布式账本就 有隐私泄漏的风险。
对策: 可能帮还个人隐私数据,如果存储到公开的分布式账本就有隐私泄漏的风 险。
如果DID文档需要存储到公开的分布式账本,那么DID文档不能包含任何个 人数据(PII)。
所有个人数据(PII)应保存在服务端点(Service End Point)之内, 对于这些 数据的访问控制,应该由DID主体的决定。

服务端点中的URL不应泄漏个人数据或相关信息,例如包含用户名的URL 如果出现在DID文档中可能无意间泄露DID主体不愿意公开的敏感信息。
在点对点的DID交易中,DID主体可以对于不同的交易方使用不同的DID公 开标识符(Pairwise DID, 按照不同的交易对,分配和使用不同的DID公开标识符), 这样可以最大程度地增加隐私。也可以采用匿名化技术消除PII信息。

因为PII数据不会被存储在不可变的分布式账本上,GDPR和其他有关数据隐 私条例可以得到满足。

3.14 DID 隐私注意事项: DID 标识符的关联风险

威胁:DID,表识符如果多次使用,可能有被关联引起隐私信息泄露的风险。 对策: 像任何类型的全球唯一标识符一样,DID标识符可以用于关联。DID控制者 或者主体可以通过使用成对(Pairwise)的唯一DID标识符来减轻这种隐私风险。
仅当DID主体明确授权其他方之间的关联时,才容许与多方共享Pairwise DID。
在DID主体明确同意下,DID标识符可以作为主体的公开身份发布在区块链 账本上,在这种情况下,DID主体是容许标识符关联的。

3.15 DID 隐私注意事项: DID 文档的关联风险

威胁:DID文档被关联可能引起隐私泄露 对策: 如果可以将对应的DID文档中的数据进行关联,则容易破坏上面提到的 Pairwise DID的反关联风险保护。例如,在多个DID文档中使用相同的公共密钥 描述或DID服务端点可以提供与使用相同的DID标识符一样多的关联信息。因此, Pairwise DID的DID文档还需要使用成对(Pairwise)的唯一公共密钥(Public Key), 并且需要使用成对的唯一服务端点(Service End Point)来增强隐私。但是,唯一 的服务端点可以将两个DID之间的所有流量被双方存储权利,进行时序相关性和类似的分析来增加关联性。因此,端点隐私的更好策略可能是在由许多不同DID 主体控制的数千个或数百万个DID之间共享一个服务端点(Mixer混合器)。

3.16 DID 隐私注意事项:群体隐私

威胁: 当DID主体与群体中的其他主体无法区分时,可以一定程度保留隐私。但是, 当一个DID主体与另一方交往的行为本身可以成为识别的标志时,隐私就会大大 减少。
对策: 可以利用下面的技术增强这方面的隐私:

  1. 团体签名(Group Signature)允许一组实体在掩盖其身份的同时进行交 易,仅揭示了“该团体中的某人”被交易了。
  2. 秘密共享(Secret Sharing)或多重签名(Multiple Signature)方案可以确 保仅在足够数量的实体(例如,五个中的三个)同意时才披露敏感数据。
  3. 零知识证明(Zero Knowledge Proofing )可以在不透露数据的情况下证 明对数据的要求(例如验证DID主体是一个成人,但是不需要透露真正 的年龄)。
  4. 同态加密(Homomorphic encryption)允许对模糊数据进行数学运算(例 如,DID文档中的DID主题和PII数据元素在事务处理中被加密而无需解 密)。
  5. 多方计算(Multi-Party Computation)允许多个实体安全地将其数据贡献 到组合数据集中以进行欺诈检测,同时保持其数据彼此之间的私密性(例 如,DID各方可以使用MPC进行供应链融资)。
  6. 差分隐私:允许通过向聚合查询结果添加随机化"噪声"来实现,以保护 个人的条目,而不会显著改变查询结果。差分隐私算法保证攻击者能获 取的个人数据几乎和他们从没有这个人记录的数据集中能获取的相差无 几。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值