论文总结:A trustworthy industrial data management scheme based on redactable blockchain(基于可编辑区块链的工业物联网数据管理机制)

1.背景

\qquad工业物联网的数据安全涉及到收集、传递、存储和分析等方面,如果数据安全无法保障,那么物联网上的各种设备的安全性也无法被保障。例如在2015年

\qquad可编辑区块链技术也已经被提出,可编辑区块链采用了变色龙哈希。可编辑区块链依据陷门管理方式划分为两种:集中式可编辑区块链和分布式可编辑区块链。集中式可编辑区块链当中有一个管理者对陷门进行管理,但但这种情况下如果管理者被攻击,则陷门的安全也无法保障,并且管理者也有可能成为不诚实的;而分布式可编辑区块链指的是将陷门管理权限下放给不同的实体,这些实体共同管理陷门,这种管理方式缺陷是如果其中一个节点不诚实,那么就有可能提供恶意的陷门片段,导致陷门恢复失败。

2.相关工作

\qquad传统的工业数据管理应用出现了安全和效率的瓶颈,区块链的出现有助于突破这个瓶颈。由于区块链具有去中心化、可追溯和数据不可变的特点,和区块链相关的工业数据管理方案被不断提出,但他们都忽视了区块链上的有害数据治理问题。

\qquad可编辑区块链最早于2016年被提出,该方案采用了变色龙哈希,采用这种哈希函数的原因是避免哈希值因为区块链数据的修改而改变。

\qquad本文指出:集中式可编辑区块链当中的集中式陷门管理者在工业物联网环境下不存在,并且集中式可编辑区块链中的陷门管理者需要面对被攻击的风险。如果采用分布式区块链则会导致陷门回复过程中消耗大量的算力,这对于物联网设备来说不能接受。

3.本文方案简介和前置知识

3.1变色龙哈希

\qquad变色龙哈希是一种带有陷门的哈希函数,设计变色龙哈希时需要满足:拥有两个信息x′x'x′和xxx且x≠x′x \neq x'x​=x′的情况下仍然有H(x′)=H(x)H(x')=H(x)H(x′)=H(x),其中H()H()H()代表的含义是变色龙哈希函数。变色龙哈希函数的基本结构分为以下四个方面:

\qquad(1)初始化:需要构造安全参数λ\lambdaλ以及两个大质数ppp和qqq并满足q∣(p−1)q|(p-1)q∣(p−1),输出是一个乘法群Zp∗Z_{p}^{*}Zp∗​,其中生成元为λ\lambdaλ,阶数为qqq。

\qquad(2)密钥生成:私钥为x∈Zq∗x \in Z_{q}^{*}x∈Zq∗​ ,公钥为y≡gxmodpy \equiv g^{x} mod py≡gxmodp。

\qquad(3)哈希计算:选取一个随机数rrr,利用前两步的生成元、公钥对信息mmm进行哈希计算得到Hash(y,m,r)=gmyrHash(y,m,r)=g^{m}y^{r}Hash(y,m,r)=gmyr。

\qquad(4)构造碰撞:针对一个新的信息m′m'm′,构造一个新的随机数r′=(m−m′+xr)x−1r'=(m−m′+xr)x^{-1}r′=(m−m′+xr)x−1,使得Hash(y,m′,r′)=Hash(y,m,r)Hash(y,m',r') =Hash(y,m,r)Hash(y,m′,r′)=Hash(y,m,r)。

3.2密钥共享

\qquad本方案采用的是Shamir密钥共享,这种方案的优势是将密钥分发给nnn个人,而恢复密钥的时候只需要ttt个人(满足t<nt < nt<n)即可恢复密钥。Shamir密钥共享方案用于本方案的陷门恢复部分。

\qquad(1)初始化:生成随机两个大素数ppp和qqq,需要满足q∣(p−1)q|(p−1)q∣(p−1),并设定密钥持有者人数nnn和门限值ttt,门限值作用是规定有恢复密钥需要ttt个人。

\qquad(2)密钥分配:密钥分发过程中,ttt个人随机选取属于自己的aia_{i}ai​,其中i∈[0,t−1]i \in [0,t-1]i∈[0,t−1],并且a0a_{0}a0​是被共享的密钥,密钥片段分配时,首先需要计算表达式f(x)=a0+a1x+a2x2+⋅⋅⋅+at−1xt−1f(x)=a_{0}+a_{1}x+a_{2}x^{2}+\cdot\cdot\cdot+a_{t-1}x^{t-1}f(x)=a0​+a1​x+a2​x2+⋅⋅⋅+at−1​xt−1,每个人都需要随机选择xi(i∈[1,n])x_{i}(i \in [1,n])xi​(i∈[1,n]),密钥片段将会以(xi,f(xi))(x_{i},f(x_{i}))(xi​,f(xi​))的形式保存。

\qquad(3)密钥恢复:当有ttt个密钥片段持有者时,通过拉格朗日插值多项式进行密钥恢复,多项式为:F(x)={∑i=1t(yi∏1≤j≤t,j≠i(x−xj)(∏1≤j≤t,j≠i(xj−xi))−1)}mod(p)F(x)=\left\{\sum_{i=1}^{t}\left(y_{i} \prod_{1 \leq j \leq t, j \neq i}\left(x-x_{j}\right)\left(\prod_{1 \leq j \leq t, j \neq i}\left(x_{j}-x_{i}\right)\right)^{-1}\right)\right\} \bmod (p)F(x)={∑i=1t​(yi​∏1≤j≤t,j​=i​(x−xj​)(∏1≤j≤t,j​=i​(xj​−xi​))−1)}mod(p),恢复的结果就是a0a_{0}a0​。

####4.系统模型

4.1模型概述和攻击概述

\qquad整个系统分为四个角色:管理者、密钥生成中心(KGC)、陷门片段持有者和执行者,管理者职责是进行初始化(创建区块链并进行参数设置),区块链创建完成后系统管理者将会退出系统;密钥生成中心是一个可靠的第三方实体,这个实体只负责陷门生成并进行陷门片段的分发,陷门持有者都是诚实的,他们持有陷门片段,确保区块链上的数据安全。执行者的作用是当完整的陷门恢复之后,对可编辑区块链上的数据进行修改。

\qquad整个系统分为七个算法,分别是:初始化(Setup)、陷门生成(TrapdoorGen)、公钥生成(PKGen)、哈希计算(CHash)、恢复陷门(VerRestore)、恢复陷门的备份方法(AltRestore)和碰撞构造(Forge)。

\qquad哈希计算需要事先知道系统参数(生成元)、公钥和随机数,之后利用变色龙哈希函数进行计算。

\qquad陷门恢复需要满足至少有ttt个陷门片段持有者,此时调用陷门恢复算法就可以恢复完整的陷门。

\qquad陷门恢复的备份方法是在陷门回复(VerRestore)失效的情况下进行使用的,这就增强了系统的鲁棒性。

\qquad碰撞构造算法输入旧的信息、新的信息、旧的随机数以及生成元,输出的元素是新的随机数,新的随机数满足公式Hash(y,m′,r′)=Hash(y,m,r)Hash(y,m',r') =Hash(y,m,r)Hash(y,m′,r′)=Hash(y,m,r)。

\qquad在攻击模型中,需要满足的前提条件是:双链结构是安全的并且陷门片段持有者事先已经选定且不会受到攻击。

4.2系统的实现方法


\qquad首先,系统的管理者将会构建用于监管的区块链和可编辑区块链,之后KGC将会创建陷门,并将陷门片段发放给陷门持有者,这些陷门持有者将会生成公钥,当陷门持有者恢复陷门和做出决定的时候,这些决定将会被写入监管区块链,当决定通过后,执行者才会去编辑区块链信息。

\qquad系统分为三个阶段:区块链初始化阶段(off-chain setup phase)、密钥初始化阶段(on-chain setup phase)和数据管理阶段。on-chain被翻译成密钥初始化阶段是因为这一阶段区块链已经创建完毕。

\qquad区块链初始化阶段:这一阶段分为两个算法Setup和TrapdoorGen,Setup算法作用是生成可编辑区块链和用于监管的区块链,以及系统所需要的两个大素数p,qp,qp,q和生成元ggg,这三个参数将写入两条链的智能合约当中。TrapdoorGen负责陷门的生成,陷门生成后,将按照Shamir共享的方式进行陷门片段的分发,陷门片段表示为xix_{i}xi​,陷门T=∏i=1nxiT=\prod^{n}_{i=1}x_{i}T=∏i=1n​xi​,而Shamir表达式当中的a0a_{0}a0​的值为TTT。

\qquad密钥初始化阶段:该算法负责系统公钥的生成,公钥生成需要陷门片段和生成元的参与,第一个门限片段持有者进行运算y1=gx1modpy_{1}=g^{x_{1}} \bmod py1​=gx1​modp,y2y_{2}y2​的计算又与y1y_{1}y1​直接相关,y2y_{2}y2​的计算方式为y2=y1x2y_{2}=y_{1}^{x_{2}}y2​=y1x2​​,即y2=gx1x2y_{2}=g^{x_{1}x_{2}}y2​=gx1​x2​,由此可得y=yn=g∏i=1nximodpy=y_{n}=g^{\prod_{i=1}^{n} x_{i}} \bmod py=yn​=g∏i=1n​xi​modp,yyy作为公钥将会被记录到可编辑区块链中作为公共参数。

\qquad数据管理阶段:分为两个部分,分别是哈希计算和数据编辑。

\qquad哈希计算的公式是CHash⁡(m,r,y,p,g)=gmyrmodp\operatorname{CHash}(m, r, y, p, g)=g^{m} y^{r} \bmod pCHash(m,r,y,p,g)=gmyrmodp,为了将数据存储在区块链上,数据首先会以事务的形式进行广播,矿工之后会在事务池当中选取事务,并将这些事务封装成块进行广播,上链之前先利用变色龙哈希进行区块的正确性验证,验证通过后上链。

\qquad恢复陷门(VerRestore)算法流程如下:1. 第一个陷门持有者将自己的陷门x1x_{1}x1​和f(x1)f(x_{1})f(x1​)发布到监管区块链上,假设当前陷门片段有误,此时就可以假设x’1x’_{1}x’1​和f(x1′)f(x'_{1})f(x1′​)。2.之后就需要计算y1′y'_{1}y1′​,并和监督区块链上的y1y_{1}y1​进行比较,如果y1≡y1′y_{1} \equiv y'_{1}y1​≡y1′​则说明陷门片段正确可以进行下一步。3.按照公式yi′=g∏j=1ixj′modpy_{i}^{\prime}=g \prod_{j=1}^{i} x_{j}^{\prime} \bmod pyi′​=g∏j=1i​xj′​modp进行递推求解验证陷门片段的正确性。4.如果最后的计算结果和yyy一致,则说明陷门正确,可以恢复到完整的陷门。

\qquad恢复陷门的备份方法(AltRestore)只会在其中一个陷门片段失效了以后运行,剩下的陷门持有者将先公布自己的正确陷门片段,之后将会利用Shamir密钥恢复的思想恢复陷门TTT,求解公式是KaTeX parse error: Undefined control sequence: \substack at position 48: …\right) \prod_{\̲s̲u̲b̲s̲t̲a̲c̲k̲{l=1 \\ l \neq …

\qquad碰撞构造:对于一个新的信息m′m'm′,需要计算一个新的随机数r′r'r′满足CHash⁡(r,m,y)=CHash⁡(r′,m′,y)\operatorname{CHash}(r,m, y)=\operatorname{CHash}\left( r^{\prime},m^{\prime}, y\right)CHash(r,m,y)=CHash(r′,m′,y),r′r'r′计算公式是r′=(m−m′+Tr)⋅T−1modqr^{\prime}=\left(m-m^{\prime}+T r\right) \cdot T^{-1} \bmod qr′=(m−m′+Tr)⋅T−1modq,之后将会对m′m'm′和r′r'r′进行广播,对信息m′m'm′和哈希值进行验证,如果哈希值不变且信息m′m'm′符合规范,则可以在区块链上进行修改。

5.安全性分析

\qquad本方案的安全性来自于两个方面:离散对数问题和对错误陷门的恢复。

\qquad离散对数问题:如果敌手需要获取陷门片段xix_{i}xi​,那么敌手需要获得yiy_{i}yi​、yi−1y_{i-1}yi−1​和ppp,根据VerRestore算法,敌手如果只是知道了yi−1y_{i-1}yi−1​以前的公钥片段是不足以求解,同理,如果敌手知道了yi+1y_{i+1}yi+1​以后的公钥片段,因为这一片段必然包含yiy_{i}yi​,从而也无法进行陷门片段xix_{i}xi​的求解。即便是直接从监管区块链上获取了yiy_{i}yi​、yi−1y_{i-1}yi−1​和ppp,敌手也会因为计算困难而导致无法获取陷门xix_{i}xi​。

\qquad陷门的恢复:通过计算yi=yi−1ximodpy_{i}=y_{i-1}^{x_{i}} \bmod pyi​=yi−1xi​​modp即可排查出陷门片段的错误。本文将陷门恢复的情况分为了三类:(1)恶意的陷门持有者THiTH_{i}THi​提供了错误的陷门片段(xi,f(xi))(x_{i},f(x_{i}))(xi​,f(xi​))(2)恶意的陷门持有者THiTH_{i}THi​没有及时提供陷门片段(xi,f(xi))(x_{i},f(x_{i}))(xi​,f(xi​))(3)恶意的陷门持有者做出了错误的决定。针对第一种情况,错误的陷门片段会被及时发现不会造成严重的危害;针对第二种情况,该陷门持有者被标记为恶意实体并进行陷门修复方法;针对第三种情况,大部分的陷门持有者都是诚实的,个别的错误决定不会影响最终结果。

\qquad由图可以得知,执行者部分采用了集中式的设计,整个系统只有一个执行者实体,为了防止写入有害数据,陷门片段持有者将会对修改进行验证,如果执行者无法修改数据,那么陷门片段持有者将会拒绝修改数据并更换执行者。

6.实验数据

\qquad随着陷门片段持有者数量的增加,公钥生成时间也会随之增加。

\qquad两个陷门恢复机制所需时间并不一致,因为在VerRestore的情况下,所有的陷门片段持有者都要参加恢复陷门,而AltRestore因为只需要不超过一半的陷门片段持有者参与,所以后者花费的时间比前者少。

\qquad而当陷门持有者数量一定时,发现恶意行为的时间会随着恶意陷门片段持有者的数量增加而减少,因为恶意陷门片段持有者比例增加,系统就会更早的触发陷门恢复机制。

\qquad随着恶意陷门片段持有者数量增加时,陷门恢复过程有可能无法排除掉所有的恶意陷门片段持有者,因此剩下的陷门片段持有者将会花费更多的时间进行陷门恢复,总时延增加。

7.展望

\qquad整个方案最大的问题就是效率问题,递推求解完整陷门时间会越来越长,这种递推求解和共识机制没有关系,建议是重新设计算法。其次就是陷门片段持有者的监管问题,需要针对共识机制和声望机制进行改进。

论文总结:基于可编辑区块链的工业物联网数据管理机制相关推荐

  1. 基于区块链的工业物联网环境下大数据时代的发布处理[DMIIoT]

    Blockchain-Based Massive Data Dissemination Handling in IIoT Environment 大数据环境下的数据分析背景 IIoT环境的区块链 II ...

  2. 论文《基于区块链技术的物联网数据感知与自动交易系统设计与实现》学习报告

    <基于区块链技术的物联网数据感知与自动交易系统设计与实现> 相关介绍 智能合约模型 数据感知与交易系统架构设计 系统网络架构 系统总体架构设计 平平台区块链层的实现 1.Fabric 区区 ...

  3. 基于区块链技术的数据资产管理机制研究

    点击上方蓝字关注我们 基于区块链技术的数据资产管理机制研究 赵明1, 董大治2 1 海军装备部,北京 100841 2 中国人民解放军91001部队,北京 100841 摘要:使用区块链技术可以保证数 ...

  4. 基于机器学习、人工智能和区块链技术的物联网安全

    物联网安全:基于机器学习.人工智能和区块链技术的挑战和解决方案 背景介绍 物联网 IoT基础设施 物联网协议 IoT 应用 物联网面临的攻击 三种技术下的物联网安全调研 区块链 机器学习 人工智能 物 ...

  5. 白硕 | 基于区块链的众包社区激励机制

    本文整理自白硕老师在 YOCSEF 武汉专题论坛:"人工智能遇到区块链,是惊鸿一瞥还是天长地久?"的报告. 很高兴有这个机会跟大家交流.我先讲几个案例作为引子.第一个案例与知识图谱 ...

  6. 基于c#的区块链编程_C#编程之C#区块链零基础入门,学习路线图

    本文主要向大家介绍了C#编程之C#区块链零基础入门,学习路线图,通过具体的内容向大家展示,希望对大家学习C#编程有所帮助. 一.1分钟短视频<区块链100问>了解区块链基本概念 http: ...

  7. (区块链溯源)基于NFC的区块链物流溯源跟踪防伪

    1. 技术背景 现有的溯源跟踪技术主要有如下几种类型: (1)RFID无线射频技术,即在产品包装上加贴一个带芯片的标识,产品在业务流程中的信息可以被记录,并从芯片中读取完整 的信息: (2)二维码,即 ...

  8. 密码极客波卡生态系列分享会第一期:如何基于波卡开发区块链项目

    2020年10月20日,密码极客发起了第一期[波卡生态系列分享会].我们非常荣幸邀请到了Parity亚洲区技术总监贾瑶琪博士做客密码极客大咖直播间,为大家讲解<如何基于波卡开发区块链项目> ...

  9. ExoPlanets 一款基于以太坊区块链的太空探索加密游戏

    ExoPlanets 是一款基于以太坊区块链的太空探索加密游戏. 游戏让你拥有一个ExoPlanet,让你在它上进化出生命来达到太空探索的能力,并扩展到银河系的更小的资源行星上.整个游戏中都是通过令人 ...

最新文章

  1. TOJ--3456--数学题
  2. 揭秘人工智能、机器学习和深度学习的神秘面纱
  3. 【143】360云盘资源
  4. 【Java 基础篇】【第一课】HelloWorld
  5. Mongodb WiredTiger存储引擎特性
  6. IP地址的分类及各类IP的最大网络数、网络号范围和最大主机数
  7. springboot中使用RedisTemplate操作redis遇到的问题
  8. lamp兄弟连视频笔记
  9. 华北水利水电C 语言实验11,华北水利水电大学C语言实验11.doc
  10. java plug机制_插件机制 - OpooPress - 基于 Java 的静态博客生成器
  11. SQL Server数据库-限制返回行数
  12. python--笔记
  13. C#中获得窗体的句柄
  14. LintCode—删除链表中倒数第n个节点(174)
  15. FreeImage的学习资料汇总
  16. 怎样用eclipse新建一个android项目?用eclipse新建android项目出错?请看下面
  17. 基于Linux利用PPP实现4G模块联网
  18. jmeter录制脚本后请求太多_使用Jmeter录制web脚本
  19. 基于阿里云Aliddns动态域名解析的客户端PHP实现与服务器端(包含C与PHP)实现
  20. 运放参数的详细解释和分析-part18,压摆率(SR)

热门文章

  1. 苹果公司CEO:混蛋乔布斯
  2. MHD-S210W全向麦克风
  3. protobuf详细介绍和使用
  4. hive--解决使用not in之后返回数据为空的问题
  5. 每一个被别人吃得死死的人,其实是…
  6. challenge是什么意思_英语单词学习-challenge是什么意思_翻译_用法_例句
  7. 存储过程中的关键字--AS、GO的含义
  8. Word中并排放置图片的方法
  9. C++关于string类的模拟实现
  10. 苹果系统怎样修改mac地址?