[发明专利]一种基于区块链的设备组网认证方法有效
| 申请号: | 201810654157.4 | 申请日: | 2018-06-22 |
| 公开(公告)号: | CN108833081B | 公开(公告)日: | 2021-01-05 |
| 发明(设计)人: | 邓文平;王宝生;黄金;李东星;彭伟;盖方宇;郦苏丹;陈红艳 | 申请(专利权)人: | 中国人民解放军国防科技大学 |
| 主分类号: | H04L9/06 | 分类号: | H04L9/06;H04L9/08;H04L9/32 |
| 代理公司: | 长沙中科启明知识产权代理事务所(普通合伙) 43226 | 代理人: | 任合明 |
| 地址: | 410003 湖*** | 国省代码: | 湖南;43 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 基于 区块 设备 组网 认证 方法 | ||
1.一种基于区块链的设备组网认证方法,其特征在于包括以下步骤:
第一步,基于HyperledgerFabric部署区块链网络,区块链网络包含多个客户端、多个提交节点和多个共识节点,提交节点间相互连接,共识节点间相互连接;客户端初始化提交节点中的智能合约的时候会指定背书策略,背书策略指定了提交节点的一个子集用于执行背书功能,执行背书功能的提交节点又称为背书节点;客户端与背书节点、共识节点相连,客户端向背书节点发起交易提案,接收并验证背书节点返回的背书结果,并将交易提案和通过验证的背书结果发送给共识节点;共识节点与客户端、提交节点相连,共识节点根据客户端发送的交易提案和通过验证的背书结果生成区块,将区块发送给提交节点;每个提交节点都维护有一条相同的区块链,存储在账本中,提交节点接收共识节点生成的区块,对区块做出验证后将其加入到区块链中,并根据仿真交易结果更新帐本中的世界状态;交易提案是一个请求,内容包括请求类型和因子;交易提案包括注册交易提案、设备组网交易提案、token更新交易提案3种,因子有设备注册因子、组网因子、token更新因子3种;
客户端部署在将要进行组网认证的设备上,客户端安装有软件开发包、保密存储单元、ID即身份标识号生成模块、秘钥生成模块、配置信息读取模块和哈希值计算模块;ID生成模块生成设备ID,并将设备ID发送至保密存储单元;秘钥生成模块生成公钥和私钥,将公钥和私钥发送至保密存储单元;配置信息读取模块从系统配置文件中读取设备配置信息,将设备配置信息发送至哈希值计算模块;哈希值计算模块接收配置信息读取模块发送的设备配置信息,计算设备配置信息哈希值,将设备配置信息哈希值发送至保密存储单元;保密存储单元接收并存储设备ID、公钥、私钥和设备配置信息哈希值,供软件开发包读取;软件开发包对智能合约进行初始化,指定背书策略;读取保密存储单元存储的设备ID、公钥、设备配置信息哈希值,生成交易提案并根据背书策略将交易提案发送给各背书节点,并接收各背书节点发来的仿真交易结果和背书签名,验证仿真交易结果是否一致且背书签名是否符合背书策略,若仿真交易结果一致且背书签名符合背书策略,则将交易提案和仿真交易结果以消息形式广播给所有共识节点;背书签名是背书策略的一种表现形式,背书策略是软件开发包指定交易提案必须由背书节点进行签名的策略,通过背书签名表示交易提案通过背书策略,交易提案可信;
提交节点中安装有账本、背书模块、提交模块和智能合约;所有的提交节点都维护一个相同的账本,账本中包括区块链和世界状态;区块链包含区块ID,时间戳,前一区块哈希值,Merkle根哈希值,区块大小、交易计数、交易信息,交易信息记录交易提案;世界状态是一个键值数据库,世界状态的数据存储格式由用户根据业务逻辑自行定义,世界状态中存储区块链网络中每一个设备的状态信息,状态信息指设备ID、公钥以及token即令牌;世界状态随着区块链中交易的执行进行更新;背书模块接收客户端发来的交易提案,进行仿真交易,将仿真交易结果发送给发起交易提案的客户端;提交模块接收共识节点生成的区块,对区块做出验证后将区块加入区块链中;智能合约是管理区块链网络中的客户端、提交节点和共识节点间相互作用或交易的软件,客户端通过调用智能合约设置和查询账本;智能合约接收客户端发送的交易提案,读取账本中的世界状态,根据世界状态仿真执行交易,并将仿真交易结果发送给背书模块;智能合约包括注册模块、查询模块、身份认证模块、token生成模块、token查询模块和token更新模块;token是用于身份认证的令牌,带有时间戳,在一定时间内有效;注册模块接收注册交易提案,按注册交易提案对设备身份信息进行注册,将查询请求发送给查询模块,将注册交易提案结果发送给背书模块;查询模块从注册模块、身份认证模块、token查询模块接收查询请求,查询世界状态的信息,将世界状态的信息发送给注册模块、身份认证模块、token查询模块;身份认证模块与查询模块、token生成模块、token查询模块、token更新模块相连,对设备进行身份认证;token生成模块从身份认证模块接收组网请求,生成token,将token发送给背书模块;token更新模块从身份认证模块接收token更新请求负责更新token,将更新后的token发送给背书模块;
共识节点上安装有共识服务模块,共识服务模块接收客户端发送的交易提案和仿真交易结果,对一段时间内的交易提案按时间顺序进行排序,并将这些交易提案打包成区块广播至所有提交节点的提交模块,且共识节点根据共识算法生成账本,把账本广播给所有的提交节点;
第二步,客户端的软件开发包初始化提交节点中的智能合约,指定背书策略,方法是:
2.1软件开发包指定背书策略;
2.2客户端使用软件开发包的初始化命令即init命令远程启动背书节点上的智能合约,完成智能合约初始化;
第三步,设备在区块链网络上进行信息注册,方法是:
3.1客户端向背书节点发送注册交易提案,方法是:
3.1.1客户端的ID生成模块为设备生成ID,并将设备ID发送至保密存储单元;
3.1.2客户端的配置信息读取模块从系统配置文件中读取设备配置信息,并将设备配置信息发送至哈希值计算模块;
3.1.3客户端的哈希值计算模块计算设备配置信息哈希值,并将设备配置信息哈希值发送至保密存储单元;
3.1.4客户端的密钥生成模块生成公钥和私钥,将公钥发送至保密存储单元和哈希值计算模块,将私钥发送至保密存储单元;
3.1.5客户端的软件开发包读取保密存储单元中的设备ID、设备公钥以及设备配置信息哈希值,将这3个值组成设备注册因子;
3.1.6客户端的软件开发包根据设备注册因子和用户指定的请求类型生成注册交易提案,注册交易提案是一个请求智能合约进行设备信息注册的请求,由请求类型和设备注册因子组成,请求类型标明是注册请求;
3.1.7客户端的软件开发包向背书策略指定的所有背书节点发送注册交易提案;
3.2背书策略指定的所有背书节点的智能合约并行仿真执行注册交易提案并与客户端交互,方法是:
3.2.1智能合约中的注册模块从客户端接收注册交易提案;
3.2.2注册模块向查询模块发送查询账本的查询请求;
3.2.3查询模块查询帐本,获取当前的世界状态,并将当前的世界状态发送给注册模块;
3.2.4注册模块根据当前的世界状态仿真执行注册交易提案,生成包含执行返回值、读操作集合和写操作集合的仿真交易结果,并将仿真交易结果发送至背书模块;所述读操作集合指从世界状态中读取设备ID对应信息的操作的集合,所述写操作集合包括将设备ID、公钥、配置信息哈希值写入账本中世界状态的操作的集合;
3.2.5背书模块为仿真交易结果进行背书签名;
3.2.6背书模块将仿真交易结果、背书签名作为注册交易提案结果返回给客户端;
3.3客户端验证注册交易提案结果并与共识节点交互,方法是:
3.3.1客户端的软件开发包检验注册交易提案结果中的背书签名,确定仿真交易结果是否来自背书策略指定的背书节点集合,若符合背书策略,转步骤3.3.2,否则显示错误信息,转第七步;
3.3.2客户端的软件开发包对比各背书节点生成的仿真交易结果,若仿真交易结果一致,转步骤3.3.3,否则返回错误信息,转第七步;
3.3.3客户端的软件开发包将注册交易提案和仿真交易结果广播给区块链网络中所有的共识节点;
3.4共识节点生成区块并与提交节点交互,方法是:
3.4.1共识节点的共识服务模块对于接收到的注册交易提案按照时间顺序进行记录;
3.4.2共识节点的共识服务模块将注册交易提案按照区块的数据结构生成一个区块:其中区块ID是区块的编号;前一区块哈希值是指与新生成区块相连的上一个区块的Merkle根哈希值;时间戳记录新生成区块生成的系统时间;Merkle根哈希值是将交易信息中的交易提案通过Merkle Proof方法合并而成;区块大小记录新生成区块的大小;交易信息记录共识节点收到的注册交易提案;
3.4.3共识节点的共识服务模块检验仿真交易结果中的读操作集合、写操作集合是否正确,若正确,转步骤3.4.4,否则,返回错误结果,转第七步;
3.4.4共识节点的共识服务模块将新生成的区块和通过检验的仿真交易结果广播给区块链网络中所有的提交节点;
3.5提交节点更新账本,方法是:
3.5.1提交节点的提交模块将新区块加入区块链中;
3.5.2提交节点的提交模块根据仿真交易结果中的写操作集合更新世界状态,方法是:若世界状态中不存在该设备ID对应的存储记录,则创建一条该设备ID对应的存储记录,若世界状态中已存在该设备ID对应的存储记录,则用仿真交易结果中的设备ID、公钥、配置信息哈希值替换该存储记录;
3.5.3提交模块向客户端的软件开发包发送注册交易提案以及仿真交易结果已被加入账本的通知;
第四步,客户端通过请求智能合约生成设备组网token,方法是:
4.1客户端的软件开发包向背书节点发送设备组网交易提案,方法是:
4.1.1软件开发包用私钥对设备配置信息哈希值进行加密;
4.1.2软件开发包根据设备ID、私钥加密的设备配置信息哈希值生成组网因子,组网因子即设备ID和私钥加密的设备配置信息哈希值组成的二元组;
4.1.3软件开发包根据请求类型和组网因子生成设备组网交易提案,设备组网交易提案是请求智能合约进行设备组网的请求,包括请求类型和组网因子,请求类型标明是组网请求;
4.1.4软件开发包向背书策略指定的所有背书节点发送设备组网交易提案;
4.2背书策略指定的所有背书节点并行生成设备组网token,方法是:
4.2.1智能合约的身份认证模块接收软件开发包发送的设备组网交易提案;
4.2.2查询模块查询设备组网交易提案中的设备ID对应的设备注册信息是否存在于世界状态中,若存在,转步骤4.2.3,若不存在,返回错误信息,转第七步;
4.2.3背书节点的身份认证模块对设备进行身份认证,方法是:
4.2.3.1身份认证模块用公钥对设备组网交易提案中的私钥加密的设备配置信息哈希值进行解密;
4.2.3.2身份认证模块将解密出来的设备配置信息哈希值与查询模块读取到的世界状态中的配置信息哈希值进行对比,若两者匹配说明身份认证通过,将设备组网交易提案发送给token生成模块,转步骤4.2.4;若不匹配说明身份认证未通过,返回错误信息,转第七步;
4.2.4智能合约的token生成模块生成设备组网token,方法是:
4.2.4.1token生成模块从身份认证模块接收设备组网交易提案;
4.2.4.2token生成模块采用JSON网页令牌标准RFC 7519中的token生成方法生成设备组网token;
4.2.5token生成模块将设备组网token发送给背书模块,背书模块将背书签名和设备组网token作为设备组网交易提案结果发送给客户端的软件开发包;
4.3客户端检验设备组网交易提案结果并与共识节点交互,方法是:
4.3.1客户端的软件开发包验证背书签名,确定设备组网交易提案结果是否来自背书策略指定的背书节点集合,若符合背书策略,转步骤4.3.2,否则显示错误信息,转第七步;
4.3.2客户端的软件开发包对比各背书节点生成的设备组网交易提案结果,若设备组网交易提案结果一致,转步骤4.3.3,否则返回错误信息,转第七步;
4.3.3客户端的软件开发包将设备组网交易提案和设备组网交易提案结果广播给区块链网络中所有的共识节点;
4.4共识节点生成区块并与提交节点交互,方法是:
4.4.1共识节点的共识服务模块对接收到的设备组网交易提案按照时间顺序进行记录;
4.4.3共识节点的共识服务模块将设备组网交易提案按照区块的数据格式生成一个区块,区块中的交易信息记录设备组网交易提案;
4.4.2共识服务模块检查组网交易提案结果中设备组网token是否符合token的格式要求,若符合要求,转步骤4.4.4,若不符合要求,则返回错误结果,转第七步;
4.4.4共识服务模块将新生成的区块和通过验证的设备组网token广播给区块链网络中所有的提交节点;
4.5所有提交节点并行更新账本并向客户端的软件开发包发送设备组网交易提案以及设备组网交易提案结果已被加入账本的通知,方法是:
4.5.1提交模块将新区块加入区块链中;
4.5.2提交模块将设备组网token存入世界状态;
4.5.3提交模块向客户端的软件开发包发送设备组网交易提案以及设备组网交易提案结果已被加入账本的通知;
第五步,世界状态中具有设备组网token的设备间进行组网通信,方法是:
5.1已有设备组网token的设备A向已经接入网络的设备B发送通信请求,通信请求包含设备A的ID、设备A的组网token和设备B的ID;
5.2设备B验证设备A的设备组网token是否有效,方法是:
5.2.1设备B的客户端的软件开发包向任意一个背书节点发送设备A的设备组网token的查询请求;
5.2.2背书节点的智能合约从设备B接收设备A的设备组网token的查询请求,对设备B的身份进行验证,若背书节点的世界状态中存在设备B的注册信息和组网token,并且组网token的时间戳在有效期内,转步骤5.2.3,否则返回错误信息,转第七步;
5.2.3智能合约向设备B的客户端返回设备A的组网token;
5.2.4设备B的客户端的软件开发包验证设备A的组网token,若设备A发送的通信请求中的设备组网token和世界状态中存储的设备组网token一致,并且设备A的组网token在有效期内,转步骤5.3,若设备A组网token过期,返回错误信息,转第六步;
5.3设备B响应设备A的通信请求,设备A开始与设备B通信,通信结束后转第七步;
第六步,组网token过期的设备更新过期设备组网token,方法是:
6.1若组网token过期的设备需要再次接入网络,则组网token过期的设备通过客户端的软件开发包向所有背书节点发送token更新交易提案,token更新交易提案是一个请求智能合约更新设备组网token的请求,包括请求类型和token更新因子,请求类型标明是token更新请求,token更新因子包括设备更新token所需要的信息,包括设备ID和过期的设备组网token;
6.2背书节点的智能合约执行token更新交易提案并与客户端交互,方法是:6.2.1查询模块查询该设备ID在世界状态中的信息,若世界状态中存在该设备的注册信息和设备组网token,转步骤6.2.2,否则返回错误信息,转第七步;
6.2.2智能合约对比token更新交易提案中的设备组网token和世界状态中的设备组网token,若这两个token一致,转步骤6.2.3,否则返回错误信息,转第七步;
6.2.3智能合约中的token生成模块为该设备生成新的设备组网token,并将新的设备组网token发送给背书模块;
6.2.4智能合约中的背书模块为新的设备组网token进行签名,并将设备组网token和背书签名作为token更新交易提案结果发送给客户端的软件开发包;
6.3客户端验证token更新交易提案结果并与共识节点交互,方法是:
6.3.1客户端的软件开发包验证token更新交易提案中的背书签名,确定token更新交易提案结果是否来自背书策略指定的背书节点集合,若符合背书策略,转步骤6.3.2,否则显示错误信息,转第七步;
6.3.2客户端对比各背书节点生成的设备组网token,若设备组网token一致,转步骤6.3.3,否则返回错误信息,转第七步;
6.3.3客户端将token更新交易提案和新的设备组网token广播给区块链网络中所有的共识节点;
6.4共识节点生成区块并与提交节点交互,方法是:
6.4.1共识节点的共识服务模块对接收到的token更新交易提案按照时间顺序进行记录;
6.4.2共识节点的共识服务模块将组网交易提案按照区块的数据格式生成区块,区块中的交易信息记录token更新交易提案;
6.4.3共识节点的共识服务模块检查token更新交易提案结果中的设备组网token是否符合token的格式要求,若符合要求,转步骤6.4.4,若不符合要求,则返回错误结果,转第七步;
6.4.4共识节点的共识服务模块将新生成的区块和通过验证的设备组网token广播给区块链网络中所有的提交节点;
6.5区块链网络中所有的提交节点并行更新账本并向客户端的软件开发包发送token更新交易提案以及token更新交易提案结果已被加入账本的通知,方法是:
6.5.1提交节点的提交模块将新区块加入区块链中;
6.5.2提交节点的提交模块将设备组网token存入世界状态;
6.5.3提交模块向客户端的软件开发包发送token更新交易提案以及token更新交易提案结果已被加入账本的通知;
第七步,结束。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国人民解放军国防科技大学,未经中国人民解放军国防科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810654157.4/1.html,转载请声明来源钻瓜专利网。





