1.本发明涉及工业互联网标识解析、数据安全、加密认证和边缘数据共享领域,具体是一种基于主动标识与区块链技术相结合的工业边缘侧数据共享系统。
背景技术:
2.工业互联网是信息通信技术与工业经济融合的新模式、新生态网络基础设施,也是我国工业向数字化、网络化、智能化转型发展的重要基石。据统计,2020年中国工业互联网市场规模总量已达6712.7亿元,根据有效数据预测截止2021年底工业互联网市场规模可达上万亿元,伴随着工业互联网建设进程的推进,以及资金的大量介入,工业互联网的发展成为了全国乃至全球关注的焦点。
3.虽然近年来我国制造业发展稳健,但是由于我国制造业体量庞大,设备信息化、智能化水平整体滞后,且由于设备多、产线长致使设备数据共享难、存储难,设备数据缺乏“主动性”,数据传输与存储缺乏安全性,导致工厂内生产效率低下,工厂外运转调度不及时。一些设备由于接口不开放,数据不共享,导致工厂设备之间数据无法共享,设备状态难以同步,企业内部存在严重的“数据孤岛”,这一系列问题严重制约着我国工业互联网的发展。
4.现有的数据共享方法主要分为两类,第一类是采用第三方数据库共享方法,主要通过将不同设备和平台产生的数据存入数据库,实现跨域、跨平台和跨系统的访问,但是该方法过多依赖平台的主动性,需要通过发送采集指令才能实现设备数据的被动采集和回传,且数据存储的安全无法得到保障,数据很容易被非法篡改;第二类是通过内存共享方式,在设备完成数据采集后,将数据传入设备的共享内存资源池,其他设备、软件或平台通过访问内存资源池实现跨软件、跨设备和跨区域的数据共享,但是该方法过于耗费设备端存储资源,且一旦控制数据被黑客截取,工厂设备和系统很容易遭受攻击,严重可导致设备停产和工厂停工,致使经济损失。面对工厂设备数据主动性缺乏,安全性低及工厂内外区域化数据共享机制的缺乏,如何打破工厂设备之间的“数据孤岛”,保障数据安全,实现工厂内外区域化设备间的数据安全共享,成为了工业互联网数据安全共享中亟待解决的技术难题。
技术实现要素:
5.本发明的目的是提供一种基于主动标识与区块链技术相结合的工业边缘侧数据共享系统,所述数据共享系统存储工厂设备数据;工厂设备端通过数据共享系统查询工厂设备数据;
6.所述数据共享系统包括若干主动标识模块、工厂密钥管理中心、若干路由网关、若干边缘侧设备和区块链;
7.所述工厂密钥管理中心为主动标识模块、边缘侧设备分发公私密钥对;
8.所述主动标识模块与工厂设备一一绑定;
9.所述主动标识模块接收绑定工厂设备的设备数据dt
x
,并为设备数据dt
x
打上标识编码;
10.所述主动标识模块对设备数据dt
x
进行加密,得到数据enc_dt
x
=md5(dt
x
);
11.所述主动标识模块通过路由网关将数据传输至边缘侧设备;
12.所述边缘侧设备与路由网关一一对应;
13.所述边缘侧设备通过路由网关与主动标识模块进行数据交互;
14.所述边缘侧设备接收数据{enc_dt
′
x
,dt
′
x
},假定enc_dt
x
=enc_dt
′
x
,并用md5算法对数据dt
′
x
进行加密运算,得到数据enc_dt
″
x
;对比分析enc_dt
′
x
和enc_dt
″
x
,如果相等则存储数据于本地内存,不相等则舍弃;
15.每台路由网关接入的设备量为n为工厂设备数量;r为路由网关数量;
16.所述区块链包括block#0区块和若干子区块;其中,block#0区块由全节点q建立;子区块由边缘侧设备节点建立;
17.所述block#0区块包括区块版本号version_id、当前区块哈希值cur_hash0、上一个区块哈希值pre_hash0、时间戳ts0、根哈希值m_root0、当前区块的数字签名cur_sign0、区块数据data0;所述区块数据data0包括设备实时状态ets、上位机控制指令etk、设备标识号et
l
、当前时间et
t
、数据大小etd、确认数量etc;
18.所述边缘侧设备下载和校验block#0区块,校验通过后,存储block#0区块;
19.所述边缘侧设备节点接收其他所有边缘侧设备传输的设备数据,并生成子区块;所述子区块的区块体数据时间间隔t
p
=t
curtime-t
lastime
;t
curtime
为当前时刻;t
lastime
表示与当前时刻相差t
p
的时刻;
20.所述边缘侧设备节点ey收到的数据为i条,数据内容记为{dt
y1
,dt
y2
…
dt
yi
};
21.所述边缘侧设备节点ey对数据进行两两哈希运算,得到merkle root,从而生成子区块;
22.子区块将上一个区块的哈希值pre_hash
m-1
置入本区块头,使用私钥s
ey
对e-mty进行数字签名,记为然后将数据{dt
y1
,dt
y2
…
dt
yi
}、版本号version_id、上一个区块的哈希值pre_hash
m-1
、本区块哈希根e_mty、数字签名sign
ey
、当前时间戳ts
cur
打包至区块,并通过网络发送给其他边缘侧设备节点eq,q∈{1,2
…
k},q≠y;
23.所述边缘侧设备节点ey将数据发送至其他边缘侧设备节点后,与其他边缘侧设备节点完成共识计算,将达成共识的节点对应的子区块加入区块链并广播全网;
24.加入的子区块包括区块头和区块体;所述区块头包括版本号version_id、上一个区块的哈希值pre_hash
m-1
、本区块哈希根e_mty、数字签名sign
ey
、当前时间戳ts
cur
;所述区块体包括数据{dt
y1
,dt
y2
…
dt
yi
}。
25.工厂设备端通过数据共享系统查询工厂设备数据的步骤包括:
26.1)工厂设备av通过绑定的主动标识模块bv向区块链的边缘侧设备节点e
vx
提交查询请求,请求内容包括<<inquire,ts,user_id,permission_id,conditionv>,p
vx
,keyv>;其中inquire为查询请求;ts是时间戳;user_id是查询方的设备标识编码b
idw
∈{b
id1
,b
id2
…bidn
};permission_id为查询权限码;conditionv为查询条件;p
vx
是边缘侧设备节点e
vx
的公钥信息;keyv为查询节点用p
vx
加密查询条件后的数据;v∈{1,2
…
n};e
vx
∈{e1,e2…ek
};
27.2)边缘侧设备节点e
vx
接收到请求后,通过user_id查询本地数据库确定是否该设备属于本节点所辖区域的设备,若不是,则舍弃该请求,若是,则通过私钥解密查询条件,判定需查询数据的时间范围是否在t时间之内,若不是,则边缘侧设备转发信息<<inquire,ts,user_id,permissionid,conditionv>,pq,key
qv
,e
idv
>数据至全节点q查询;其中pq为全节点公钥,key
qv
为公钥pq加密的查询条件,e
idv
,为边缘节点的id编号;
28.3)所述全节点q通过判断permission_id权限、解密查询条件并开始匹配查询,若是则通过permission_id判断查询节点的查询权限,e
vx
匹配查询请求和查询权限后进行数据查询,最终返回查询结果至主动标识模块bv的缓存区,bv将数据传输至工厂设备端;
29.进一步,所述设备数据包括设备实时运行状态、设备编号、产品数据。
30.进一步,所述主动标识模块包括通信模块、供电模块、标识记录模块、数据存储模块、数据计算模块、证书认证模块、安全网关;
31.所述通信模块用于接收绑定工厂设备的设备数据、与路由网关进行数据交互;
32.所述供电模块为通信模块、标识记录模块、数据存储模块、数据计算模块、证书认证模块、安全网关供电;
33.所述标识记录模块为设备数据打上标识编码;
34.所述数据存储模块存储标识编码和设备数据;
35.所述数据计算模块用于对设备数据进行编码和解码;
36.所述证书认证模块用于验证数字证书;
37.所述安全网关用于缓存标识编码和设备数据;
38.进一步,还包括工厂数据服务中心q;
39.所述工厂数据服务中心为主动标识模块分配标识编码;主动标识模块的标识编码唯一且禁止更改;
40.所述工厂数据服务中心包括数据服务中心数据库和标识记录模块;
41.所述数据服务中心数据库存储工厂设备数据和标识编码
‘
42.所述标识记录模块存储标识编码。
43.进一步,密钥经过了工厂ca中心认证,所有经ca中心认证的公钥和颁发的数字证书均合法。
44.将公钥{p
e1
,p
e2
…
p
en
}在ca中心进行认证,ca中心为每个边缘侧设备颁发数字证书,记为c
e1
,c
e2
…cek
。
45.进一步,边缘侧设备节点对block#0区块进行校验的步骤包括:
46.1)验证区块block#0的数字签名cur_sign0,e1,e2…ek
通过e0的公钥p
e0
解密分别获得消息摘要集合m={m1,m2…
mk};
47.2)边缘侧设备节点e1,e2…ek
分别计算区块数据data0的哈希值得到集合
48.3)将集合m和集合m
′
的元素进行逐一对比,如果相等则将初始区块block#0分别存储于本地边缘侧节点。
49.进一步,工厂权威数据服务中心q记录了边缘侧节点的所有id;q节点拥有经ca中心认证公钥pq和ca中心颁发的数字证书cq;
50.q节点定时随机选取一个节点编号e_idu,u∈{1,2
…
k},并对选取的编号进行哈希运算得到hash(e_idu),q节点用私钥sq对该编号进行加密运算得到e_sidu=sm2(hash(e_idu),sq);u∈{1,2
…
k_};相邻两次的编号的选取不能相同;
51.2)q节点将e_sidu向所有边缘侧节点发送,各边缘侧节点通过q节点公钥pq解密e_sidu,并与自身节点编号比较,若相同,则该节点负责记录该时间段的数据,若不同,则舍弃。
52.进一步,计算得merkle root的步骤包括:
53.1)对数据内容做基于国密sm3算法的hash运算,enode0j=hash(dt
yj
),j∈1,2
…
i,enode0j为第y个边缘侧节点运算的第j个数据哈希值;
54.2)相邻两个hash块串联再做hash运算,enode1
(j 1)/2
=hash(enode0j enode0
j 1
),j=1,3,5
…
i-1;若i为奇数,则末端树节点采用enode1
(j 1)/2
=hash(node0j)运算;
55.3)重复步骤2),直到生成最终的merkle root,记为:e_mty=enodez
(j 1)/2
,其中z=[log
2 i 1]为树的高度。
[0056]
进一步,所述边缘侧设备节点ey将数据发送至其他边缘侧设备节点后,与其他边缘侧设备节点完成共识计算的步骤包括:
[0057]
1)所述边缘侧设备节点ey将数据发送至其他边缘侧设备节点;
[0058]
2)其他边缘侧设备节点完整收到节点ey发出的消息后,将回复节点e
y“边缘侧节点标识编号 确认收到”的消息;
[0059]
边缘侧节点eq收到信息后,通过第y个边缘侧节点公钥p
ey
验证签名sign
ey
的有效性,若验证失败,舍弃本区块消息,否则eq节点计算merkle root值e_mt
′y,然后取出解签后的数字摘要同时对e_mt
′y进行哈希运算得到hash(e_mt
′y),最后对比和hash(e_mt
′y)两值大小,不等则舍弃,相等则eq节点验证通过;验证通过后,eq节点返回“边缘侧节点标识编号 区块编号 验证成功”,ey节点将对回复消息进行过滤、去重和统计,对验证成功的节点数量的统计结果记为f,且f<k。如果f≥k/2 1,则代表节点之间达成共识,相反则未达成。
[0060]
本发明的技术效果是毋庸置疑的,本发明提供一种基于主动标识与区块链结合的工业边缘区域化数据共享系统,实现工厂内设备之间的数据互联互通,同时增强数据主动能力,防止数据恶意篡改,提高工厂的产线生产效率。本发明可以增加设备数据的主动性,解决工厂区域化设备之间数据共享问题,防止黑客入侵篡改共享数据。
[0061]
本发明通过工业互联网标识对设备主动标识模块进行唯一标识编码,并通过标识编码与设备编码进行了一对一映射,实现了数据表的安全隔离,保障了实体数据的数据安全;本发明通过采用区块链技术与工业互联网标识技术相结合的方式解决了设备数据在数据共享过程中的安全性、和数据可信性问题;
[0062]
本发明中采用设备区域化处理机制并对边缘侧节点进行了轻量化处理,不仅保障了边缘侧设备节点的数据处理能力,还降低了边缘侧设备大容量数据的存储压力;
[0063]
本发明在数字认证过程中采用第三方ca机构颁发的数字证书进行认证,使用了公钥、私钥、数字签名,完全保证了认证流程中的可信性和数据的安全与准确性,采用国密算法(非对称加密算法sm2、摘要算法sm3等)实现系统核心单元自主可控,核心算法不依赖于
国外,不仅有更高的安全性,还降低了重要信息泄露的风险。
[0064]
在新区块生成并上链的过程中,本发明采用权威节点随机数分配法完成边缘侧节点的共识计算,避免了因类似工作量证明达成共识机制带来的资源浪费和损耗。
附图说明
[0065]
图1为,基于主动标识与区块链结合的工业边缘区域化数据共享系统的架构图;
[0066]
图2为基于主动标识与区块链结合的工业边缘区域化数据共享系统的流程图;
[0067]
图3为设备主动标识模块结构图;
[0068]
图4为区块数据结构图;
[0069]
图5为共识计算的流程图。
具体实施方式
[0070]
下面结合实施例对本发明作进一步说明,但不应该理解为本发明上述主题范围仅限于下述实施例。在不脱离本发明上述技术思想的情况下,根据本领域普通技术知识和惯用手段,做出各种替换和变更,均应包括在本发明的保护范围内。
[0071]
实施例1:
[0072]
参见图1至图5,一种基于主动标识与区块链技术相结合的工业边缘侧数据共享系统,所述数据共享系统存储工厂设备数据;工厂设备端通过数据共享系统查询工厂设备数据;
[0073]
所述数据共享系统包括若干主动标识模块、工厂密钥管理中心、若干路由网关、若干边缘侧设备和区块链;
[0074]
所述工厂密钥管理中心为主动标识模块、边缘侧设备分发公私密钥对;
[0075]
所述主动标识模块与工厂设备一一绑定;
[0076]
所述主动标识模块接收绑定工厂设备的设备数据dt
x
,并为设备数据dt
x
打上标识编码;
[0077]
所述主动标识模块对设备数据dt
x
进行加密,得到数据enc_dt
x
=md5(dt
x
);
[0078]
所述主动标识模块通过路由网关将数据传输至边缘侧设备;
[0079]
所述边缘侧设备与路由网关一一对应;
[0080]
所述边缘侧设备通过路由网关与主动标识模块进行数据交互;
[0081]
所述边缘侧设备接收数据{enc_dt
′
x
,dt
′
x
},数据enc_dt
x
=enc_dt
′
x
,并用md5算法对数据dt
′
x
进行加密运算,得到数据enc_dt
″
x
;对比分析enc_dt
′
x
和enc_dt
″
x
,如果相等则存储数据于本地内存,不相等则舍弃;每台路由网关接入的设备量为n为工厂设备数量;r为路由网关数量;
[0082]
所述区块链包括block#0区块和若干子区块;其中,block#0区块由全节点q建立;子区块由边缘侧设备节点建立;
[0083]
所述block#0区块包括区块版本号version_id、当前区块哈希值cur_hash0、上一个区块哈希值pre_hash0、时间戳ts0、根哈希值m_root0、当前区块的数字签名cur_sign0、区块数据data0;所述区块数据data0包括设备实时状态ets、上位机控制指令etk、设备标识号
et
l
、当前时间et
t
、数据大小etd、确认数量etc;
[0084]
所述边缘侧设备下载和校验block#0区块,校验通过后,存储block#0区块;
[0085]
所述边缘侧设备节点接收其他所有边缘侧设备传输的设备数据,并生成子区块;所述子区块的区块体数据时间间隔t
p
=t
curtime-t
lastime
;t
curtime
为当前时刻;t
lastime
表示与当前时刻相差t
p
的时刻;
[0086]
所述边缘侧设备节点ey收到的数据为i条,数据内容记为{dt
y1
,dt
y2
…
dt
yi
};
[0087]
所述边缘侧设备节点ey对数据进行两两哈希运算,得到merkleroot,从而生成子区块;
[0088]
子区块将上一个区块的哈希值pre_hash
m-1
置入本区块头,使用私钥s
ey
对e_mty进行数字签名,记为然后将数据{dt
y1
,dt
y2
…
dt
yi
}、版本号version_id、上一个区块的哈希值pre_hash
m-1
、本区块哈希根e_mty、数字签名sign
ey
、当前时间戳ts
cur
打包至区块,并通过网络发送给其他边缘侧设备节点eq,q∈{1,2
…
k},q≠y;
[0089]
所述边缘侧设备节点ey将数据发送至其他边缘侧设备节点后,与其他边缘侧设备节点完成共识计算,将达成共识的节点对应的子区块加入区块链并广播全网;
[0090]
加入的子区块包括区块头和区块体;所述区块头包括版本号version_id、上一个区块的哈希值pre_hash
m-1
、本区块哈希根e_mty、数字签名sign
ey
、当前时间戳ts
cur
;所述区块体包括数据{dt
y1
,dt
y2
…
dt
yi
}。
[0091]
工厂设备端通过数据共享系统查询工厂设备数据的步骤包括:
[0092]
1)工厂设备av通过绑定的主动标识模块bv向区块链的边缘侧设备节点e
vx
提交查询请求,请求内容包括<<inquire,ts,user_id,permission_id,conditionv>,p
vx
,keyv>;其中inquire为查询请求;ts是时间戳;user_id是查询方的设备标识编码b
idw
∈{b
id1
,b
id2
…bidn
};permission_id为查询权限码;conditionv为查询条件;p
vx
是边缘侧设备节点e
vx
的公钥信息;keyv为查询节点用p
vx
加密查询条件后的数据;v∈{1,2
…
n};e
vx
∈{e1,e2…ek
};
[0093]
2)边缘侧设备节点e
vx
接收到请求后,通过user_id查询本地数据库确定是否该设备属于本节点所辖区域的设备,若不是,则舍弃该请求,若是,则通过私钥解密查询条件,判定需查询数据的时间范围是否在t时间之内,若不是,则边缘侧设备转发信息<<inquire,ts,user_id,permission
id
,conditionv>,pq,key
qv
,e
idv
>数据至全节点q查询;其中pq为全节点公钥,key
qv
为公钥pq加密的查询条件,e
idv
为边缘节点的id编号;
[0094]
3)所述全节点q通过判断permission_id权限、解密查询条件并开始匹配查询,若是则通过permission_id判断查询节点的查询权限,e
vx
匹配查询请求和查询权限后进行数据查询,最终返回查询结果至主动标识模块bv的缓存区,bv将数据传输至工厂设备端;
[0095]
所述设备数据包括设备实时运行状态、设备编号、产品数据。
[0096]
所述主动标识模块包括通信模块、供电模块、标识记录模块、数据存储模块、数据计算模块、证书认证模块、安全网关;
[0097]
所述通信模块用于接收绑定工厂设备的设备数据、与路由网关进行数据交互;
[0098]
所述供电模块为通信模块、标识记录模块、数据存储模块、数据计算模块、证书认证模块、安全网关供电;
[0099]
所述标识记录模块为设备数据打上标识编码;
[0100]
所述数据存储模块存储标识编码和设备数据;
[0101]
所述数据计算模块用于对设备数据进行编码和解码;
[0102]
所述证书认证模块用于验证数字证书;
[0103]
所述安全网关用于缓存标识编码和设备数据;
[0104]
还包括工厂数据服务中心q;
[0105]
所述工厂数据服务中心为主动标识模块分配标识编码;主动标识模块的标识编码唯一且禁止更改;
[0106]
所述工厂数据服务中心包括数据服务中心数据库和标识记录模块;
[0107]
所述数据服务中心数据库存储工厂设备数据和标识编码
‘
[0108]
所述标识记录模块存储标识编码。
[0109]
密钥经过了工厂ca中心认证。所有经ca中心认证的公钥和颁发的数字证书均合法。
[0110]
将公钥{p
e1
,p
e2
…
p
en
}在ca中心进行认证,ca中心为每个边缘侧设备颁发数字证书,记为c
e1
,c
e2
…cek
。
[0111]
边缘侧设备节点对block#0区块进行校验的步骤包括:
[0112]
1)验证区块block#0的数字签名cur_sign0,e1,e2…ek
通过e0的公钥p
e0
解密分别获得消息摘要集合m={m1,m2…
mk};
[0113]
2)边缘侧设备节点e1,e2…ek
分别计算区块数据data0的哈希值得到集合
[0114]
3)将集合m和集合m
′
的元素进行逐一对比,如果相等则将初始区块block#0分别存储于本地边缘侧节点。
[0115]
工厂权威数据服务中心q记录了边缘侧节点的所有id;q节点拥有经ca中心认证公钥pq和ca中心颁发的数字证书cq;
[0116]
q节点定时随机选取一个节点编号e_idu,u∈{1,2
…
k},并对选取的编号进行哈希运算得到hash(e_idu),q节点用私钥sq对该编号进行加密运算得到e_sidu=sm2(hash(e_idu),sq);u∈{1,2
…
k};相邻两次的编号的选取不能相同;
[0117]
2)q节点将e_sidu向所有边缘侧节点发送,各边缘侧节点通过q节点公钥pq解密e_sidu,并与自身节点编号比较,若相同,则该节点负责记录该时间段的数据,若不同,则舍弃。
[0118]
计算得merkle root的步骤包括:
[0119]
1)对数据内容做基于国密sm3算法的hash运算,enode0j=hash(dt
yj
),j∈1,2
…
i,enode0j为第y个边缘侧节点运算的第j个数据哈希值;
[0120]
2)相邻两个hash块串联再做hash运算,enode1
(j 1)/2
=hash(enode0j enode0
j 1
),j=1,3,5
…
i-1;若i为奇数,则末端树节点采用enode1
(j 1)/2
=hash(node0j)运算;
[0121]
3)重复步骤2),直到生成最终的merkle root,记为:e_mty=enodez
(j 1)/2
,其中z=[log
2 i 1]为树的高度。
[0122]
所述边缘侧设备节点ey将数据发送至其他边缘侧设备节点后,与其他边缘侧设备节点完成共识计算的步骤包括:
[0123]
1)所述边缘侧设备节点ey将数据发送至其他边缘侧设备节点;
[0124]
2)其他边缘侧设备节点完整收到节点ey发出的消息后,将回复节点e
y“边缘侧节点标识编号 确认收到”的消息;
[0125]
边缘侧节点eq收到信息后,通过第y个边缘侧节点公钥p
ey
验证签名sign
ey
的有效性,若验证失败,舍弃本区块消息,否则eq节点计算merkle root值e_mt
′y,然后取出解签后的数字摘要同时对e_mt
′y进行哈希运算得到hash(e_mt
′y),最后对比和hash(e_mt
′y)两值大小,不等则舍弃,相等则eq节点验证通过;验证通过后,eq节点返回“边缘侧节点标识编号 区块编号 验证成功”,ey节点将对回复消息进行过滤、去重和统计,对验证成功的节点数量的统计结果记为f,且f<k。如果f≥k/2 1,则代表节点之间达成共识,相反则未达成。
[0126]
本发明采用工业互联网主动标识技术进行设备数据上传,采用区块链技术进行设备数据加密、认证、存储、共享和安全防护,采用设备区域化划分方法降低边缘侧设备计算压力。本发明涉及的数据和设备均已完成时间同步,通信节点由边缘侧设备组成的轻量化节点和工厂数据服务部门组成的全结点构成,通过两种不同节点的协同工作共同实现数据的安全共享,有效防止篡改攻击,保障设备数据安全,
[0127]
实施例2:
[0128]
一种基于实施例1所述系统的主动标识与区块链技术相结合的工业边缘侧数据共享方法,步骤包括:
[0129]
步骤1、设备区域化与设备主动标识
[0130]
步骤1.1设备区域化
[0131]
由于工厂设备多、产线长,所有设备同时运转将产生海量的数据,如果将众多设备数据上传至某几台边缘侧设备,则可能会导致边缘侧设备算力下降,数据共享效率低下,本发明为均衡边缘侧设备压力,增强数据共享效率,将设备数据进行区域化管理。假定工厂内部设备数量为n,记为a1,a2…an
,假定工厂路由网关数量为r,记为g1,g2…gr
,则每台路由网关接入的设备量为将路由网关与所连设备有序排列,且路由网关与边缘侧设备节点一一对应,如图1所示。
[0132]
步骤1.2主动标识模块设计
[0133]
由于现有设备不具有主动标识功能,为了让工厂原有设备具有主动标识功能,需为设备加装主动标识模块,主动标识模块包含有线/无线通信模块、供电模块、标识记录模块、数据存储模块、数据计算模块、证书认证模块、安全网关等,如图3所示。每个设备均需配备主动标识模块。记主动标识模块为b1,b2…bn
,工厂数据服务中心为q(该中心为数据可信源,具有绝对安全性,其分发给节点的数据和指令具有权威性、不可更改性,后不再赘述)根据工业互联网标识编码要求提前为每个主动标识模块分配唯一的标识编码b
ia1
,b
id2
…bidn
,并将标识编码数据写入数据服务中心数据库和标识记录模块且标识编码数据禁止更改。
[0134]
步骤1.3标识模块密钥生成和证书颁发
[0135]
工厂密钥管理中心为每个主动标识模块分发经sm2国密算法加密的公私密钥对,分别记为{p
b1
,s
b1
},{p
b2
,s
b2
}
…
{p
bn
,s
bn
},并将这些公钥{p
b1
,p
b2
…
p
bn
}在工厂ca中心(后文简称:ca中心)进行认证,ca中心为每个主动标识模块,记为c
b1
,c
b2
…cbn
,至此所有经ca中心认证的公钥和颁发的数字证书均合法,后续步骤所依赖的公钥和数字证书均合法,且不再
赘述。
[0136]
步骤1.4设备与标识模块绑定
[0137]
如图2s01,设备a1,a2…an
与主动标识模块b1,b2…bn
逐个进行绑定,得到(ab1),(ab2)
…
(abn),设备端将实时状态、设备编号、产品数据等传入主动标识模块,经无线/有线通讯模块传入至安全网关,并对传入数据进行暂时缓存,最终将数据上传至至边缘侧设备存储,如图1所示。
[0138]
步骤2、设备与边缘侧节点的数字认证
[0139]
步骤2.1公钥认证和证书颁发
[0140]
如图2 s02,假定架设于工厂的边缘侧设备数量为每台边缘侧设备分别记为e1,e2…ek
,每个边缘侧设备的编号依次记为e_id1,e_id2…
e_idk,工厂密钥管理中心为每个架设于工厂内部的边缘侧设备分发经sm2国密算法加密的公私密钥对,分别记为{p
e1
,s
e1
},{p
e2
,s
e2
}
…
{p
en
,s
en
},并将公钥{p
e1
,p
e2
…
p
en
}在ca中心进行认证,ca中心为每个边缘侧设备颁发数字证书,记为c
e1
,c
e2
…cek
。
[0141]
步骤2.2设备与边缘侧节点数字验证
[0142]
当主动标识模块b1向边缘侧设备节点e1发送消息时,b1需要对e1的数字证书c
e1
进行验证,记ca中心的公钥为p
ca
,b1使用p
ca
验证数字签名,确认e1公钥p
e1
的有效性,如果公钥p
e1
有效,则b1通过e1的公钥p
e1
加密需要发送的报文数据给边缘侧设备节点e1,在e1收到消息后,使用自己的私钥s
e1
解密报文。如果边缘侧设备节点e1需要向主动标识模块b1发送报文时,以同样的方式进行验证,在此不再赘述。该步骤为后续数据加密传输奠定基础,其他除b1,e1节点以外的节点通信均依据此方法进行数字验证。
[0143]
步骤3、边缘侧节点区块创建和数据校验
[0144]
步骤3.1初始区块的创建
[0145]
如图2 s03,全节点(工厂数据服务中心)e0由工厂密钥管理中心分发经sm2国密算法加密的公私密钥对{p
e0
,s
e0
},并在ca中心完成对公钥p
e0
的认证,获取数字证书c
e0
。本发明所建立的区块链中,由e0建立第一个区块block#0,其他节点均从全节点下载第一个区块,后续生成的新区块在完成节点共识后逐一添加至block#0区块之后形成区块链。block#0包含区块版本号version_id、当前区块哈希值cur_hash0、上一个区块哈希值pre_hash0、时间戳ts0、根哈希值m_root0、当前区块的数字签名cur_sign0、区块数据data0(包含字段:设备实时状态ets、上位机控制指令etk、设备标识号et
l
、当前时间et
t
、数据大小etd、确认数量etc,),如图4所示,后续所有区块与block#0区块中包含的数据字段一致,由于该区块为初始区块,则pre_hash0的值为0,数据中所有字段也为0。
[0146]
步骤3.2边缘侧节点下载初始区块
[0147]
在全节点e0完成block#0区块创建后,边缘侧节点开始下载block#0,并对所下载的区块进行校验。首先,验证区块block#0的数字签名cur_sign0,e1,e2…ek
通过e0的公钥p
e0
解密分别获得消息摘要集合m={m1,m2…
mk},同时,e1,e2…ek
分别计算区块数据data0的哈希值得到集合希值得到集合然后将m和m
′
两集合进行逐一对比,如果相等则将初始区块block#0分别存储于本地边缘侧节点。
[0148]
步骤3.3主动标识模块数据上传与校验
[0149]
当边缘侧节点完成初始区块下载后,需由主动标识模块上传数据至边缘侧节点,假定主动标识模块a
x
,x∈{1,2
…
n}在1分钟内所采集的数据为dt
x
,将数据dt
x
用md5算法加密运算得到enc_dt
x
=md5(dt
x
/),边缘侧节点ey,y∈{1,2
…
k}采用同样的算法计算上传数据得到并得到结果enc_dt
′
x
,对比分析enc_dt
x
和enc_dt
′
x
,如果相等则存储数据于本地内存,不相等则舍弃。
[0150]
步骤4、区块的生成、广播与共识
[0151]
步骤4.1选取记账节点
[0152]
工厂权威数据服务中心q记录了边缘侧节点的所有id,且q节点拥有经ca中心认证公钥pq和ca中心颁发的数字证书cq。q节点定时(间隔1分钟)随机选取一个节点编号e_idu,u∈{1,2
…
k},且相邻两次的编号的选取不能相同,选取编号后q节点对该编号进行哈希运算得到hash(e_idu),q节点用自己的私钥sq对该编号进行加密运算得到e_sidu=sm2(hash(e_idu),sq),同时q节点将e_sidu向所有边缘侧节点发送,各边缘侧节点通过q节点公钥pq解密e_sidu,并与自身节点编号比较,若相同,则该节点负责记录该时间段的数据,若不同,则舍弃,假定当前所选边缘侧节点的编号e_idu所对应的边缘侧设备节点为ey。
[0153]
步骤4.2区块数据哈希运算
[0154]
在完成步骤3.3的数据上传后,除ey节点的k-1个节点,都将该时间段内数据发送到ey节点,边缘侧节点ey将生成区块,区块体所包含的数据时间间隔t
p
为1分钟,即t
p
=t
curtime-t
lastime
(t
curtime
:当前时刻,t
lastime
:与当前时刻相差t
p
)。此时,记边缘侧节点ey,y∈{1,2
…
k}收到的数据为i条,数据内容记为{dt
y1
,dt
y2
…
dt
yi
},将数据进行两两哈希运算,计算过程为:step1:对数据内容做基于国密sm3算法的hash运算,enode0j=hash(dt
yj
),j∈1,2
…
i,enode0j为第y个边缘侧节点运算的第j个数据哈希值;step2:相邻两个hash块串联再做hash运算,enode1
(j 1)/2
=hash(enode0j enode0
j 1
),j=1,3,5
…
i-1;若i为奇数,则末端树节点采用enode1
(j 1)/2
=hash(node0j)运算;step3:重复step2递归运算,直到生成最终的merkle root,记为:e_mty=enodez
(j 1)/2
,其中z=[log
2 i 1]为树的高度,计算流程如图4所示。
[0155]
步骤4.3区块生成与广播
[0156]
如图2 s04,在生成merkle root后,记当前区块为第m个区块,将上一个区块的哈希值pre_hash
m-1
置入本区块头,使用私钥s
ey
对e_mty进行数字签名,记为然后将数据{dt
y1
,dt
y2
…
dt
yi
}、版本号version_id、上一个区块的哈希值pre_hash
m-1
、本区块哈希根e_mty、数字签名sign
ey
、当前时间戳ts
cur
打包至区块,并通过网络发送给其他边缘侧节点eq,q∈{1,2
…
k},q≠y。
[0157]
步骤4.4区块共识
[0158]
当其他节点完整收到节点ey发出的消息后,将回复节点e
y“边缘侧节点标识编号 确认收到”的消息。边缘侧节点eq收到区块后,首先通过第y个边缘侧节点公钥p
ey
验证签名sign
ey
的有效性,验证失败,舍弃本区块消息,否则eq节点开始以步骤4.1的计算方式计算merkle root值,计算结果记为e_mt
′y,然后取出解签后的数字摘要同时对e_mt
′y进行哈希运算得到hash(e_mt
′y),最后对比和hash(e_mt
′y)两值大小,不等则舍弃,相等则eq节点验证通过,此时eq节点返回“边缘侧节点标识编号 区块编号 验
证成功”,此时ey节点将对回复消息进行过滤、去重和统计,对验证成功的节点数量的统计结果记为f,且f<k。如果f≥k/2 1,则代表节点之间达成共识,相反则未达成,如图5所示。
[0159]
步骤5、区块上链与存储
[0160]
如图2 s05,在完成共识计算后,将区块加入区块链并广播全网,加入的区块包括区块头:版本号version_id、上一个区块的哈希值pre_hash
m-1
、本区块哈希根e_mty、数字签名sign
ey
、当前时间戳ts
cur
打包至区块头,区块体:数据{dt
y1
,dt
y2
…
dt
yi
}。由于边缘侧设备属轻节点,其存储能力有限,本发明中仅将当天数据全量保存,过去的数据均只保存区块头,而数据服务中心q将作为全节点保存全量数据,同时利用灾备节点q
′
对数据进行备份。
[0161]
步骤6、边缘侧节点数据共享
[0162]
步骤6.1数据共享查询
[0163]
如图2 s06,在区块完成上链后,若设备av,v∈{1,2
…
n}需要依赖其他设备最近状态以确定本设备的生产进度,则av设备将通过绑定的主动标识模块bv向本区域的边缘侧设备节点e
vx
,e
vx
∈{e1,e2…ek
}提交查询请求,请求内容包括<<inquire,ts,user_id,permission_id,conditionv>,p
vx
,keyv>,其中inquire为查询请求,ts是时间戳,user_id是查询方的设备标识编码b
idw
∈{b
id1
,b
id2
…bidn
},permission_id为查询权限码,conditionv为查询条件(主要指被查询的设备编号和时间),p
vx
是边缘侧设备节点e
vx
的公钥信息,keyv为查询节点用p
vx
加密查询条件后的数据。
[0164]
步骤6.2共享结果获取
[0165]
边缘侧设备节点e
vx
接收到请求后,首先,通过user_id查询本地数据库确定是否该设备属于本节点所辖区域的设备,若不是,则舍弃该请求,若是,则通过私钥解密查询条件,判定需查询数据的时间范围是否在24小时之内,若不是,则边缘侧设备转发查询请求并附上边缘节点的id编码,即发送<<inquire,ts,user_id,permission
id
,conditionv>,pq,key
qv
,e
idv
>数据至全节点q查询,其中pq为全节点公钥,key
qv
为公钥pq加密的查询条件,e
idv
为边缘节点的id编号,全节点q通过判断permission_id权限、解密查询条件并开始匹配查询,若是则通过permission_id判断查询节点的查询权限,e
vx
匹配查询请求和查询权限后进行数据查询,最终返回查询结果至主动标识模块bv的缓存区,bv将数据传输至设备端。
转载请注明原文地址:https://tc.8miu.com/read-4053.html