本文的实质贡献是提出了在仅区块链存储加密数据的指针,结合数字签名提供认证性,使用去中心化的数据存储结构存储加密数据提供保密性
Users should own and control their data without compromising security or limiting companies’ and authorities’ ability to provide personalized services.
Introduction
用户对于企业收集的个人信息没有控制权、对于企业如何使用信息不知情
相关工作:
OpenPDS,在密文上直接操作
$k$匿名要求每条记录中的敏感信息至少和其他$k-1$条记录不可区分,跟进工作有l-diversity,t-closeness
差分隐私
- FHE
本文贡献:
- 将区块链与链下存储相结合,构造了一个聚焦于隐私的个人信息管理平台
- 阐述了未来区块链可能成为一种重要的可信计算资源
The Privacy Problem
聚焦于移动平台用户使用第三方服务时在隐私方面的忧虑,这些第三方持续收集用户信息,用户不知情也无权掌控,因此主要解决的隐私问题有以下三类:
- 数据拥有权:用户拥有并且控制个人数据,系统将用户作为数据的拥有者,服务作为委托权限的客体
- 数据透明性和可审计性:用户可以了解数据如何收集并且如何加工
- 细粒度的访问控制:任何时刻用户都可以更改权限集或者撤回之前已经收集的数据的权限;该方案的一个应用就是改善移动端应用程序现有的权限日志,用户接口依然相同,访问控制策略将会在区块链上安全地存储,只有用户可以更改
Proposed Solution
本方案有3类实体:
- 手机用户:下载并且使用应用
- 服务:应用程序的提供者,为商业目的请求对用户个人数据进行处理
- 节点:维护区块链和一个分布式的私有键值对形式的数据库以换取奖励
尽管用户在系统中仍然是匿名的,可以将服务配置文件存储在区块链上并且验证身份;
区块链接受两种类型的交易:
- $T_{access}$用于访问控制管理
- $T_{data}$用于数据存储和取回
考虑以下实例:用户安装使用本平台保护隐私的应用程序,用户第一次登录,一个新的共享的身份将会被建立并且和相关联的权限一起通过$T_{access}$交易发送给区块链。手机手机的敏感信息在用共享的密钥加密后通过$T_{data}$发送给区块链,随后路由到链下的键值存储数据库,链上只保留了一个指向数据的指针
服务和用户都可以通过$T_{data}$上的数据指针来访问数据,区块链验证数字签名属于用户还是服务。用户可以通过发出$T_{access}$交易和新的权限集来更改已经授予服务的权限或者收回对之前存储的数据的访问权。可以开发dashboard提供了对数据和权限的概览
链下键值存储是Kademilia的实现,一个分布式的哈希表(DHT),使用LevelDB增加了一致性和区块链的接口。DHT由一个网络中的节点维护(大概率和区块链网络中的节点不重合),执行检验过的读/写交易。数据在节点之间充分地随机化并且复制,来确保高可用性。值得注意的是,可以考虑替代链下的存储解决方案。中心化的云服务器可能可以用来存储数据,虽然增加了对第三方可信度的要求,但是带来了扩展性和易于部署的好处
The Network Protocol
Building Blocks
Identities
在区块链中用户可以生成任意多个匿名身份来保护隐私。
复合身份是两方或者更多人共享的身份,其中至少一个参与者属于拥有者,其他人权限受限,作为客体。协议1阐述了对于一个拥有者和一个客体的实现,实际就是两者共享同一个对称加密私钥,拥有各自的签名公私钥;同时此时要求了两者之间是secure channel
对外来看,复合身份是一个2元组
完整的身份包括
Blockchain Memory
区块链的存储空间$L:\{0,1\}^{256}\to \{0,1\}^N$,假设存储在其他区块链中的标准敌手模型下是不可篡改的
Policy
用户$u$给予服务$s$的的一系列权限记作$POLICY_{u,s}$,当服务忠实执行协议且正确地标记数据,任何类型的数据都可以进行安全地存储。
Auxiliary Functions
$Parse(x)$将发送给交易的消息进行反序列化,该消息包含了$CheckPolicy(pk^{k}_{sig},x_p)$
首先将给定消息的公钥做哈希寻找到数据指针,在存储上找到该指针对应的消息,将找到的消息反序列化后如果公钥确实是主体公钥或者客体公钥,但是该客体的权限属于权限集中,则返回1;此处暗示了$L[\mathcal{H}(pk^{u,s}_{sig})]=L[\mathcal{H}(pk^{s,u}_{sig})]$
Blockchain Protocols
协议3是链上节点收到$T_{access}$时执行的,类似的,协议4是链上节点收到$T_{data}$时执行的
$T_{access}$交易允许用户通过发送$POLICY_{u,s}$更改已经赋予服务的权限集,发送空集撤销所有之前赋予的权限。当发送一条新的复合身份的$T_{access}$交易时,该消息将被理解为用户注册服务
具体来看,将消息反序列化之后得到的主体公钥和收到的公钥对比,若相同则修改对应的指针位置存储的消息,相当于修改了权限
对于$T_{data}$交易执行读写操作,有了之前的$CheckPolicy(pk^{k}_{sig},x_p)$,可以判断该用户或服务能够获得数据访问权。
将收到的消息反序列化之后得到了加密后的数据,权限和读写标识;进行权限判断:如果此时判断为真,则取出对应的两个公钥以及权限集,私以为原文伪代码有误,此处应为$\gets Parse(L[\mathcal{H}(pk^{k}_{sig})])$,若此时需要写,则计算$c$对应的指针并添加到之前的指针集合内,再修改$DHT$对应的位置为$c$;若此时只读,可能只传一个指针,判断$h_c\in L[a_{xp}]$(此处记号和伪代码不同)
Privacy and Security analysis
假设:
区块链不可随意篡改
假设需要足够大的互不信任的平等网络
- 假设用户安全地保管密钥
在以上模型下,只有用户能够控制自己的数据,区块链去中心化的本质结合了数字签名的交易确保了敌手无法伪装为用户或者腐化网络,否则暗示了敌手能够伪造数字签名或者控制网络中的大多数资源。类似地,敌手无法获得公开账本上的任何信息,因为链上只存储了指针。
敌手控制1个或多个DHT节点无法学习到任何原始数据,因为被对称密钥加密了,该密钥的拥有者和DHT节点不重合。注意到尽管数据完整性无法保证,因为单个节点可以修改本次的复制或者以拜占庭的方式修改,本方案仍然可以通过对数据进行充分的分布和复制来最小化风险。
为每个符合身份生成新的密钥对保证了在敌手获得了加密和签名密钥后,只有一小部分数据会被损害。获得这两个密钥其中一个,数据仍然是安全的。注意在实践中我们可以进一步将身份分开来限制该复合身份密钥泄露带来的影响。比如每1k条消息换一次密钥。
Discussion of future extensions
稍微偏题来呈现可能的未来区块链的扩展
From storage to Processing
本文的实质贡献是提出了在仅区块链存储加密的数据的指针,该方案适合于存储和随机查询。对于处理数据效率不高。存在的问题是服务可以存储之前查询过的信息来进行未来的分析。
为解决上述问题可以采用秘密分享结合MPC的方法来计算任何函数[BGW88],下图展示了在本文框架下MPC如何与区块链结合。考虑电子选举和投票的一个例子。投票结束后提交了后端的代码来聚合结果。网络随机选取节点的子集和一个解释程序来将代码转化为MPC协议,结果将被存储在公开账本上无法被篡改但是任何人可以看到选举结果。
左上角的方案是不安全的方案;本文提出的方案实际是一部分随机节点先计算正确的结果再把结果采用秘密分享广播出去,存储在链上(感觉没有任何意义)
比特币假设所有节点都是平等不可信的,节点在合作决策过程中的能力取决于算力,节点$n$的权重$trust_n \propto resources(n)$,导致了女巫攻击(PoW是抵抗女巫攻击的吧)、过度的能源消耗和高时延。PoW的思想是投入了大部分资源的节点不太可能作弊,采用类似的思想可以设计出方案来使得好的行为得到奖励。将每个节点好的和坏的行为统计起来采用sigmoid function转换为一个概率:
其中$\alpha$是步长。采用这样的思想可以给可信的节点更多权重并且更高效地计算区块。因为在该系统中获取权限花费很多时间,该设计应当抵抗女巫攻击。当然还存在其他攻击,比如节点增加信誉只为了日后作恶。可以采用随机选择一些绝点来对每个区块投票,采用相同权重多数赢得方式投票。可以防止某些节点权重过高。
Conclusion
个人信息和敏感信息不应该被第三方来掌握,用户可以拥有自己的数据而不损害安全或者限制自己在企业获得个性化服务的能力。
法律法规应该在区块链中编程并被自然执行,账本可以作为法律证据。
Thoughts
- 链上存储公钥和加密后的指针
- 公钥用于进行签名认证
- 指针用于读取加密后的数据
- 链下采用分布式数据结构DHT存储加密数据
- 面向移动端,提供了应用权限管理和撤销的机制
- 对于未来的看法比较有启发性
- 目前的系统服务读了原始数据之后可以自行保存用于后续分析
- 采用MPC,服务只能得到函数结果,无法得到原始数据
- 提出了采用信用管理来替代PoW
- 目前的系统服务读了原始数据之后可以自行保存用于后续分析
To be done
- 后续的论文跟进
- 找一下具体实现
- 伪代码的一些问题
- $L[\mathcal{H}(pk^{u,s}_{sig})]=L[\mathcal{H}(pk^{s,u}_{sig})]$
- 标蓝的部分
- PoW和sybil
- 文献的实验类型和工程实践