阅读:基于区块链的安全数字孪生信息管理 《EtherTwin: Blockchain-based Secure Digital Twin Information Management》
区块链和任何系统融合会带来可追溯、不需要中心可信节点的优点(相较于传统第三方信任机构),但也会带来一些需要解决的问题:
- 数据如何存储
- 如何进行访问控制
区块链如何存储链外数据??
一种常见的方法是使用分布式哈希表 (DHT),因为它们非常适合分散式范例。
数据项基于路由层在网络中进行内容寻址和复制。
Swarm 等现代 DHT 基于已建立的安全 DHT 路由技术 S/Kademlia Baumgart 和 Mies (2007),并与以太坊等区块链很好地集成。
Swarm 是以太坊官方推出的存储与通讯系统,旨在为 DApp 代码、用户数据,区块链和状态数据提供去中心化和冗余存储,以及为不可追踪的通信提供了底层构造,内置的激励系统通过以太坊区块链上的智能合约实施。
https://www.ethswarm.org/
https://gateway.ethswarm.org/
访问控制
链下的数据采用对称加密(AES-256)形式进行存储。
访问链下数据需要:
- 数据的hash地址
- 数据的加密密钥,设为data_key
那么如何进行访问控制???
对data_key进行ECIES加密。
ECIES(集成加密方案,elliptic curve integrate encrypt scheme)
每个人都有一对公私钥,然后使用自己的密钥和对方的公钥生成密钥(可以看作会话密钥session_key)去加密data_key。
收件方也使用自己的私钥和对方的公钥来生成session_key,去解密data_key
如何进行访问控制(读权限)?
- 我(owner)和你交换公钥,实际上所有的公钥都存储在区块链或者DHT中,我和你只用交换公钥地址即可。
- 在智能合约上判断你是否有权限访问我的数据。
- 判断成功,我用我的私钥和你的公钥生成session_key,然后加密data_key,得到data_key_key。
- 我把数据的DHT地址,data_key_key发给你。
- 你拿到key,用你的私钥和我的公钥生成session_key,解密data_key_key得到data_key
- 你从DHT上下载数据,用key_data解密
实际上,swarm中,数据不能修改删除,只能新增,所以修改的办法就是新增数据,获得新的地址。
https://github.com/sigma67/ethertwin