本发明涉及工业物联网信息存储领域,具体涉及一种基于区块链的工业物联网信息安全存储方法。
背景技术
区块链技术的核心优势是去中心化,能够通过运用数据加密、时间戳、分布式共识和经济激励等手段,在节点无需互相信任的分布式系统中实现基于去中心化信用的点对点交易、协调与协作,从而为解决中心化机构普遍存在的高成本、低效率和数据存储不安全等问题提供了解决方案。
工业物联网中处理的是流式数据。流式数据是实时的、连续的,一旦被攻击,所有流式数据信息都会被窃取,随着大数据和物联网的结合,传统的中心化数据存储方法和传统主/从模式分布式存储方法已不能满足工业物联网信息的安全需求。
技术实现要素:
针对现有技术中的上述不足,本发明提供的一种基于区块链的工业物联网信息安全存储方法解决了现有物联网数据存储安全性低的问题。
为了达到上述发明目的,本发明采用的技术方案为:
提供一种基于区块链的工业物联网信息安全存储方法,其包括以下步骤:
s1、为物联网中的各个实体生成秘钥对,秘钥对包括公钥和私钥;
s2、将发送方的公钥和消息同时作为哈希函数的输入,得到消息认证码;
s3、根据发送方的私钥对消息认证码进行签名,将签名后的消息认证码保存到存储节点i,并在中心节点处生成存储位置信息副本;
s4、采用每个验证节点验证签名后的消息认证码对应的存储位置信息,若验证成功则进入步骤s5,否则舍去签名后的消息认证码并结束信息存储;
s5、根据签名后的消息认证码与存储位置信息副本生成元数据;
s6、将生成的元数据散列得到哈希值构成区块体;
s7、根据上一区块的哈希值和时间戳信息生成区块头,将区块头和区块体结合形成区块;
s8、将形成的区块记录到全局区块链,并通知所有验证节点同步本地区块链状态,完成工业物联网信息的存储。
进一步地,步骤s2的具体方法为:
根据公式
得到消息认证码hmac(pk,si);其中pki为密钥分发机构为发送方生成的公钥;si为发送方发送的消息;h是散列函数;ostr和istr分别是两个指定的字符串;⊕表示异或;|表示连接。
进一步地,步骤s4的具体方法为:
采用每个验证节点验证签名后的消息认证码对应的存储位置信息,若超过一半的验证节点检索到相同的存储位置信息,则验证成功,同时发送广播消息通知其他未完成检索的验证节点终止检索过程,否则舍去签名后的消息认证码并结束信息存储。
本发明的有益效果为:本发明利用分布式存储系统存储网络中的海量数据,将每段时间内不同网络节点的数据交互视为一次“交易”,并采用非对称加密技术对重要数据进行加密后作为一个区块,然后根据时间顺序将区块通过哈希值与前一区块相连,保证数据的不可篡改,实现了对工业物联网信息的安全存储。
附图说明
图1为本发明的流程示意图;
图2为本发明的分布式存储模型的构架示意图。
具体实施方式
下面对本发明的具体实施方式进行描述,以便于本技术领域的技术人员理解本发明,但应该清楚,本发明不限于具体实施方式的范围,对本技术领域的普通技术人员来讲,只要各种变化在所附的权利要求限定和确定的本发明的精神和范围内,这些变化是显而易见的,一切利用本发明构思的发明创造均在保护之列。
如图1所示,该基于区块链的工业物联网信息安全存储方法包括以下步骤:
s1、为物联网中的各个实体生成秘钥对,秘钥对包括公钥和私钥;
s2、将发送方的公钥和消息同时作为哈希函数的输入,得到消息认证码;
s3、根据发送方的私钥对消息认证码进行签名,将签名后的消息认证码保存到存储节点i,并在中心节点处生成存储位置信息副本;
s4、采用每个验证节点验证签名后的消息认证码对应的存储位置信息,若验证成功则进入步骤s5,否则舍去签名后的消息认证码并结束信息存储;
s5、根据签名后的消息认证码与存储位置信息副本生成元数据;
s6、根据sha-256散列算法将生成的元数据散列得到哈希值构成区块体;
s7、根据上一区块的哈希值和时间戳信息生成区块头,将区块头和区块体结合形成区块;
s8、将形成的区块记录到全局区块链,并通知所有验证节点同步本地区块链状态,完成工业物联网信息的存储。
步骤s2的具体方法为:根据公式
得到消息认证码hmac(pk,si);其中pki为密钥分发机构为发送方生成的公钥;si为发送方发送的消息;h是散列函数;ostr和istr分别是两个指定的字符串;⊕表示异或;|表示连接。
步骤s4的具体方法为:采用每个验证节点验证签名后的消息认证码对应的存储位置信息,若超过一半的验证节点检索到相同的存储位置信息,则验证成功,同时发送广播消息通知其他未完成检索的验证节点终止检索过程,否则舍去签名后的消息认证码并结束信息存储。
如图2所示,在本发明的一个实施例中,步骤s1之前还包括步骤s0:构建去中心化的分布式存储模型,该分布式存储模型包括:
区块链层,用于但不限于校正每个验证节点的本地元数据区块链状态;
验证层,用于但不限于收集用户的签名信息、元数据信息、验证用户签名信息、构造元数据区块和记录新区块;
存储层,用于但不限于存储数据,且在存储过程中产生元数据,元数据包括数据副本位置信息和副本数。
本发明在具体实施过程中,存储层采用传统的分布式存储系统,为了操作方便,本实例使用hdfs(hadoopdistributedfilesystem)存储数据,在存储的过程中产生元数据,元数据包括数据副本位置信息,副本数等。验证层在物联网网络中选区若干个验证节点(nodeforverification,nv),考虑到节点的算力问题,本实例中选取了7个物理节点作为验证节点(n1-n7)。每个节点都将区块链副本保存在本地存储,同时维护本地区块链的状态(localstate)。区块链层用于保存区块链的全局状态(globalstate),所有7个验证节点通过查询该层来同步本地区块链状态,达到区块链状态一致。
在实际的工业网络环境中,并不是所有数据都需要进行保存,为了实验方便,将实验网络中的节点设置成仅有两个状态,记为true和false。数据发送方记为sender_addr,数据接收方记为receiver_addr(其中addr为节点在网络中的ip地址),通信数据设置为字符串:changethestatetotrue/false。实验网络中的网络地址为(192.16.10.0/24)。下面取ip地址为192.16.10.8的发送方发送给ip地址为192.16.10.215的接收方的字符串s:changethestatetotrue为例说明数据处理过程。
由密钥分发机构为sender_8生成的公钥pk8采用公式
生成此数据的消息认证码hmac(pk8,s8)。由密钥分发机构为sender_8生成的私钥pk8对得到的消息认证码进行签名,得到签名后的消息认证码sigi:ewirrfy90zohbnaryybtx4fohs9vmmfgel7dtvot50nknkytxfraopccuz2xho9il88028bt7rdo9lmbqbbuncp2iieeju+hgrjwfai7f48wnffc1padkggfcxbgxjbtnzkoteptd/lwuyuzff8ux4twdbrxuugm8c07wkio0mc=。
将签名后的消息认证码sigi保存到存储节点i(8),并中心节点生成存储位置信息副本loci(loc8);将消息认证码sigi发送到验证层进行验证,若验证通过则将消息认证码sigi(sig8)与当前节点存储位置消息副本loci构成元数据<sigi,loci>,再散列得到哈希值hashi(hash8)构成区块体。
由上一区块的哈希值和时间戳信息生成区块头,将区块头和区块体结合形成区块mbi(mb8),并将形成的区块mbi记录到全局区块链,通知所有验证节点同步本地区块链状态,完成工业物联网信息的存储。
综上所述,本发明利用分布式存储系统存储网络中的海量数据,将每段时间内不同网络节点的数据交互视为一次“交易”,并采用非对称加密技术对重要数据进行加密后作为一个区块,然后根据时间顺序将区块通过哈希值与前一区块相连,保证数据的不可篡改,实现了对工业物联网信息的安全存储。