2023-3-14 区块链链外数据存储和访问控制 思考


阅读:基于区块链的安全数字孪生信息管理 《EtherTwin: Blockchain-based Secure Digital Twin Information Management》

区块链和任何系统融合会带来可追溯不需要中心可信节点的优点(相较于传统第三方信任机构),但也会带来一些需要解决的问题:

  1. 数据如何存储
  2. 如何进行访问控制

区块链如何存储链外数据??

一种常见的方法是使用分布式哈希表 (DHT),因为它们非常适合分散式范例。

数据项基于路由层在网络中进行内容寻址和复制。

Swarm 等现代 DHT 基于已建立的安全 DHT 路由技术 S/Kademlia Baumgart 和 Mies (2007),并与以太坊等区块链很好地集成。

Swarm 是以太坊官方推出的存储与通讯系统,旨在为 DApp 代码、用户数据,区块链和状态数据提供去中心化和冗余存储,以及为不可追踪的通信提供了底层构造,内置的激励系统通过以太坊区块链上的智能合约实施。

https://www.ethswarm.org/

https://gateway.ethswarm.org/

访问控制

链下的数据采用对称加密(AES-256)形式进行存储。

访问链下数据需要:

  1. 数据的hash地址
  2. 数据的加密密钥,设为data_key

那么如何进行访问控制???

对data_key进行ECIES加密。

ECIES(集成加密方案,elliptic curve integrate encrypt scheme)

每个人都有一对公私钥,然后使用自己的密钥和对方的公钥生成密钥(可以看作会话密钥session_key)去加密data_key。

收件方也使用自己的私钥和对方的公钥来生成session_key,去解密data_key

如何进行访问控制(读权限)?

  1. 我(owner)和你交换公钥,实际上所有的公钥都存储在区块链或者DHT中,我和你只用交换公钥地址即可。
  2. 在智能合约上判断你是否有权限访问我的数据。
  3. 判断成功,我用我的私钥和你的公钥生成session_key,然后加密data_key,得到data_key_key。
  4. 我把数据的DHT地址,data_key_key发给你。
  5. 你拿到key,用你的私钥和我的公钥生成session_key,解密data_key_key得到data_key
  6. 你从DHT上下载数据,用key_data解密

实际上,swarm中,数据不能修改删除,只能新增,所以修改的办法就是新增数据,获得新的地址。

https://github.com/sigma67/ethertwin