SpeedyChain: A framework for decoupling data from blockchain for smart cities (MobiQuitous ’18)
粗略一看,本文应该是针对智能汽车的数据共享。采用的是可追加的区块链结构:存储在transactions里的数据和区块头分离。
介绍场景:汽车之间会分享数据,数据的验证必须低延迟,并且要保护敏感信息。现在的实现数据integrity和veracity的方法还有以下问题:
- 集中。依赖集中的掮客,broker。例如制造商,并且不能适用于超大规模的网络。
- 缺乏隐私。
- 数据脆弱性。联网汽车的数据存储在传统的集中式数据库中,篡改数据(例如信号灯)会有严重后果。
使用SpeedyChain时,有定期更新密钥的操作。还采用了设备访问级别。
SpeedyChain动态管理密钥。
采用的区块链架构:
采用的是可追加区块链的模型。每个区块下面可以追加transaction,在区块头中包括了签名,GPS信息,访问控制级别等信息。

每个区块只有在RSI收到见证者验证后才创建,意味着车辆确实再所claim的区域中。(那么如果离开了这个区域,原来的Block Header怎么办?)
数据的处理和产生过程:

设备Device首先从环境中读取数据,然后给自己读取到的数据签名,创建transaction,然后发送给gateway。 这里gateway负责维护区块链。如果在gateway所保存的区块链中,有一个区块和这个设备相关,就验证签名,验证成功后gateway会添加到leader上然后发送给其他peers。(如果环境中的数据被不止一个device收集到然后发送给了同一个gateway或者不同的gateway怎么办?)
SpeedyChain框架:
涉及到的实体主要是车辆,RSI和SP。车辆一般产生两种数据,用来被其他车辆或者城市使用,例如交通报告。第二种是服务数据,发送到SP或者车辆所有者的数据,例如用来监视车辆特定部分。
框架中区块链由RSI和SP进行管理,车辆本身对自己的传感器收集数据,进行签名然后发送给最近的RSI。RSI完成验证后将相应的transaction添加到车辆所对应的区块的ledger里。如果是新车辆就创建新区块。车辆仅维护Merkle树。
为了避免Sybil攻击,要确认车辆是真正的车辆。采用基于位置的证明。

在这种情况下,如果RSI作恶怎么办?默认RSI是可信的。
车辆如果无法连接到RSI,会让周围的车辆转发。如果周围的车辆不转发怎么办?
密钥更新的时候,车辆通过在区块链中存储新的区块头。(怎么存储?怎么改?)车辆要周期性更新Merkle树。岂不是开销很大?
SpeedyChain的安全性。
- Sybil攻击。文章称车辆在处理transaction之前会验证transaction的产生者,因此可以抵抗。为什么验证就可以抵抗了?
- 修改数据。任何peer都可以对交易进行检查来检测内容的篡改。是否有悖区块链的本质?
- 恶意RSI。受影响的RSI只会不处理数据,但是不会篡改数据,因为无法篡改,采用了签名算法。