一种基于区块链的工业互联网身份认证方法
技术领域
本发明属于工业互联网安全技术领域,涉及一种基于区块链的工业互联网身份认证方法。
背景技术
工业互联网是将互联网技术融入工业领域中更大的机器设备,利用软件分析技术充分释放机器的潜能,从而更好地提高生产效率。未经认证的终端接入工业互联网会带来巨大的安全隐患。工业互联网中大多数终端由于环境的限制,不具备较高的安全配置;现有认证方案对证书颁发机构(CA)的信任度过高,CA易遭到黑客入侵,过往这些平台都有一套独立的注册、登录、认证和权限管理的系统,每一个用户在系统中都充当不同的角色,并拥有不同的权限,这种中心化系统给人们带来的弊端有以下几点:
(1)如果有多个系统需要进行登录、认证,管理员的维护和管理的成本将会大增加,并随着规模的增加,维护难度会增加。
(2)用户必须记住自己的多个账号、密码,如果账号很多,使用起来将非常不便捷。
(3)容易被黑客攻击,带来损失。
(4)中心化系统不可信,管理员可以随时篡改数据。
目前,虽然有将区块链技术应用到身份认证领域的,但都是应用到一般的互联网领域,没有针对工业互联网的身份认证的技术。传统的认证技术大多不适合直接用在工业互联网终端,在工业互联网环境下的通信需要更高的安全性保障,研究工业互联网环境下终端的身份认证方案尤其重要。
发明内容
有鉴于此,本发明的目的在于提供一种基于区块链的工业互联网身份认证方法,解决传统身份认证方法不能较好地直接应用于工业互联网的问题(具体将传统由客户端与服务器端直接通信进行身份验证转移到了区块链上,减少了服务器端存储用户身份表单的负载压力,同时避免了服务器端用户身份信息泄露所带来的种种问题),用于提高系统安全性,又满足一定的吞吐性能要求。
为达到上述目的,本发明提供如下技术方案:
一种基于区块链的工业互联网身份认证方法,包括:
1)构建工业互联网的轻量级身份认证架构,具体构建两条区块链,即主链由认证管理机构CMF各节点和用户节点构成;侧链由各个工业互联网服务提供商IISP构成。主链与侧链通过接口进行通信。
2)区块共识方法,具体包括以下步骤:
S1:用户节点登录上链后,在全网广播注册、认证消息;
S2:区块链CMF节点出块时间间隔内,CMF根据各个节点的信用值从大到小生成出块节点名单,由每轮的记账节点将各节点选举结果作为交易发布记录到区块链网络中;
S3:CMF记账节点监听网络,完成用户节点的注册、认证工作;用户节点注册完成后,记账节点向其他CMF普通节点广播用户信息,各普通节点收到消息后存入本地授权用户表单;用户节点认证完成后,由CMF记账节点生成Token同时发送给用户节点和相应的IISP;
S4:用户凭借从CMF获取的Token与相应的IISP建立连接,获取服务。
进一步,所述步骤S1中,注册消息包括消息的类型、用户的id和用户的权限标识;用户的注册信息在全网广播时用CMF的公钥进行加密。
进一步,所述步骤S1中,认证消息包括消息的类型、用户的id和请求获得服务的编号,其中请求获得服务的编号对应侧链中工业互联网服务提供商(IISP)的id。
进一步,所述步骤S2中,CMF各节点处保存有三种表单,分别是获取IISP服务身份凭证表单、身份授权表单和IISP地址与编号映射表单。
进一步,所述步骤S2中,定义工业互联网CMF节点信誉值为v,节点上次出故障的时间为LT,当前时刻时间为T,近期节点故障次数为n,则工业物联网节点信誉值为:
其中,κ、
μ分别表示节点上次信誉值、最近一次节点故障、近期节点故障所占的权值比重(即上次节点信誉值越高,上次节点故障时间越旧,近期节点故障越少,本次节点信誉值就越高,当选记账节点的优先级越高)。若CMF节点的信誉值低于80分,则取消其出块资格,待其信誉分回复至80分恢复其出块资格。节点的信誉值评分受最近一次出错的时间及一段时间的出错次数影响,该架构CMF各节点初始信誉值为100分,同时100分为信誉值的上限。
CMF各节点完成共识过程后,若最终共识结果与自身的判断不同,则刷新本节点最近一次故障时间LT和近期故障次数n,继而刷新本节点当前时刻节点信誉值v。
进一步,所述步骤S3中,用户节点注册过程中,若CMF记账节点收到了用户注册消息,记账节点的共识算法具体包括以下步骤:
(1)本轮记账节点将收集的数据打包按时间戳排序放入区块,将区块发布给相邻CMF节点,CMF节点之间相互传递区块,CMF节点验证区块的合法性,若合法则向记账节点回复“确认||区块ID||确认节点ID”报文;
(2)若本轮记账节点收到超过CMF节点总数2/3的回复报文,则记账节点单独验证该区块的合法性,若区块通过记账节点的验证,则记账节点向全网广播“接收区块+区块ID”报文;
(3)各个节点将记账节点向全网广播的报文记录到本地日志中,将从中获得用户消息写入本地授权用户表单中,记账节点集合中的节点将该区块连接到区块链中。
进一步,步骤(2)中,对区块的验证具体包括以下步骤:
a)检查区块的ID是否合法,即区块ID从前往后按顺序排列;
b)检查本区块头中前一区块哈希摘要是否与前一区块哈希值相同;
c)检查时间戳是否合法,即当前区块链UNIX时间戳必须严格大于前n个区块时间戳中值。
进一步,所述步骤S3中,用户节点认证工作过程中,若CMF记账节点收到了用户请求认证消息,记账节点的共识算法具体包括以下步骤:
(1)本轮记账节点将收集的数据打包排序放入区块,将区块发布给相邻CMF节点,CMF节点之间相互传递区块,CMF节点比对本地授权表单验证区块的合法性,若合法则向记账节点回复“确认||区块ID||确认节点ID”报文;
(2)若本轮记账节点收到超过CMF节点总数2/3的回复报文,则记账节点单独验证该区块的合法性,除基本的区块验证外,优先选择确认节点信誉值最高以及区块备选区时间戳靠前的区块,若区块通过记账节点的验证,则记账节点向用户和其对应的IISP颁发Token,分别用各自的公钥加密;其中对IISP借助主链与侧链的接口向侧链广播,使相应IISP接受消息。
进一步,CMF完成用户节点注册请求具体包括:CMF中被选举出本轮记账的节点负责监听网络,将收到的消息用CMF私钥将其解密,若收到的消息类型为“注册”,则对比本地表单,若匹配则将用户身份信息加入本地的用户身份授权表单,并将“注册成功”的消息回复用户;若不匹配,则丢掉该消息。
CMF完成用户节点认证请求具体包括:CMF中被选举出本轮记账的节点负责监听网络,将收到的消息用CMF私钥将其解密,若受到的消息类型为“请求认证”,则对比本地的用户身份授权表单,若匹配对用户和其申请服务的IISP颁发Token,该Token分别使用用户节点的公钥和IISP的私钥进行加密;若不匹配,则丢掉该消息。
进一步,工业互联网服务提供商(IISP)提供服务具体包括:各IISP节点监听网络,IISP节点将CMF发来的Token保存在其数据库中,并将该Token设置到session中,用户节点每次请求的时候都要统一拦截,并将用户节点传递的Token和服务器端session中Token进行对比,如果相同则放行,不同则拒绝。
进一步,侧链与主链通信具体包括:
主链上CMF记账节点每次完成用户节点身份认证后,向用户节点和IISP颁发Token,在主链上向用户节点广播,通过与主链与侧链的接口,在侧链向IISP节点广播Token。
侧链上的IISP节点监听网络,随时等待接收从主链广播过来的Token。
本发明的有益效果在于:本发明结合了区块链去中心化、不可篡改的特点,通过将区块链技术与工业互联网结合,能够很好的避免工业互联网传统身份认证中用户私钥丢失、证书被恶意篡改、IISP服务器负载压力过大等问题,能较好的适用于工业互联网应用场景,并满足工业互联网对吞吐性能的要求。本发明采用主链+侧链的结构,一方面解决了各个工业互联网服务提供商身份验证接口的兼容性问题,另一方面也减缓了传统由一条区块链负载全部功能的压力。
本发明的其他优点、目标和特征在某种程度上将在随后的说明书中进行阐述,并且在某种程度上,基于对下文的考察研究对本领域技术人员而言将是显而易见的,或者可以从本发明的实践中得到教导。本发明的目标和其他优点可以通过下面的说明书来实现和获得。
附图说明
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作优选的详细描述,其中:
图1为本发明所述的基于区块链的工业互联网的身份认证方法系统结构图;
图2为本发明所述的基于区块链的工业互联网身份认证方法流程图;
图3为本发明应用于工业互联网认证管理机构节点区块确认方法流程图。
具体实施方式
以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需要说明的是,以下实施例中所提供的图示仅以示意方式说明本发明的基本构想,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。
请参阅图1~图3,图2为一种基于区块链的工业互联网身份认证方法,适用于工业互联网的轻量级身份认证架构(如图1所示)和区块共识方法。本架构需要搭建两条区块链:主链和侧链。主链由用户节点和认证管理机构(CMF)构成;侧链由工业互联网服务提供商(IISP)构成。主链与侧链通过接口进行通信。
该身份认证方法具体包括以下步骤:
步骤1:用户节点注册,具体为:
(1)用户节点登录上链后,向全网广播“注册消息”,该消息包括消息的类型、用户的id和用户的权限标识,该消息使用CMF的公钥加密。消息的类型分为注册、请求认证两种。用户的id即为用户节点的以太坊地址,唯一。用户的权限标识表示用户能够获得的IISP服务的权限。用户节点凭借权限标识比对CMF本地表单,CMF记账节点完成对用户节点授权,并将用户id、权限、过期日期写入本地授权身份表单,并向其他区块广播共识。
(2)CMF完成用户身份注册后,回复使用用户公钥加密“注册成功”消息给用户,用户收到消息,获知已完成身份注册。其中用户的公钥为用户的以太坊地址。
步骤2:用户节点认证,具体为:
(1)用户节点登录上链后,向全网广播“认证消息”,该消息包括消息的类型、用户的id和请求的服务,该消息使用CMF的公钥加密。
(2)CMF验证通过后会向全网广播使用用户公钥加密的Token,该Token同时会通过主链与侧链的接口,发送给侧链上的对应的IISP。
(3)用户用私钥解密Token后,使用Token与对应的IISP建立连接,获取服务。
步骤3:区块链出块时间间隔内,CMF根据各节点的信誉度评分生成候选节点域名单,信誉度越高出块顺序越靠前。
定义工业互联网CMF节点信誉值为v,节点上次出故障的时间为LT,当前时刻时间为T,近期节点故障次数为n,则工业物联网节点信誉值为:
其中,κ、
μ分别表示节点上次信誉值、最近一次节点故障、近期节点故障所占的权值比重(即上次节点信誉值越高,上次节点故障间隔时间越久,近期节点故障越少,本次节点信誉值就越高,当选记账节点的优先级越高)。若节点的信誉值低于80分,则取消其出块资格,待其信誉分回复至80分恢复其出块资格。节点的信誉评分由受最近一次出错的时间及一段时间的出错频率影响,该系统初始时各节点信誉值为100分,同时100分为信誉值的上限。
记账节点出块顺序确定后,在接下来的时间内CMF将根据出块顺序轮流委派记账节点,最后将记账节点选举结果作为交易发布记录到区块链中。
CMF记账节点之间的共识算法具体如下:
CMF采用改进委托权益证明+拜占庭容错算法(DPOS+BFT),并且由大型的机构运营节点,其信息也相对透明,例如运营节点的地点、运营的情况等等。
(1)节点数量固定21个,各节点信息透明。每个节点有信誉属性,包括其节点信誉值、最近一次的出错时间和一段时间的出错次数。其中节点的信誉值受最近一次的出错时间和一段时间的出错次数影响。
(2)固定出块顺序,出块顺序受各节点信誉值影响,若某节点信誉值过低则不安排出块。每个节点跟接力棒一样,一个个往下接力出块。每个节点不能还没轮到它出块的时候,就出块。都是必须轮到再出块。如果出现出块故障,则刷新该节点的信誉属性,并会跳过这个节点。
在本实施例中,设置21个节点作为区块链中的共识节点构成认证管理设施(CMF),CMF各节点对每个用户的身份注册、身份认证进行节点投票,将信息上链;对成功通过验证的用户颁发证书(Token),并将Token同样转发给服务提供商,供工业互联网服务提供商对用户进行身份认证,对其提供服务。
若CMF记账节点收到了用户注册消息,图3为一种基于区块链的工业互联网认证管理机构节点区块确认方法,则步骤具体如下:
(1)本轮记账节点将收集的数据打包排序放入区块,将区块发布给相邻CMF节点,CMF节点之间相互传递区块,CMF节点比对本地授权表单验证区块的合法性,若合法则向记账节点回复“确认||区块ID||确认节点ID”报文。
(2)若记账节点收到超过CMF节点总数2/3的回复报文,则记账节点单独验证该区块的合法性,除基本的区块验证外,优先选择确认节点信誉值最高以及区块备选区时间戳靠前的区块,若区块通过记账节点的验证,则记账节点向全网广播“接收区块+区块ID”报文。其中,对区块的验证主要包括以下步骤:
a)检查区块的ID是否合法(即区块ID从前往后按顺序排列);
b)检查本区块头中前一区块哈希摘要是否与前一区块哈希值相同;
c)检查时间戳是否合法(即当前区块链UNIX时间戳必须严格大于前n个区块时间戳中值);
(3)各个节点将用户的注册信息记录到本地授权用户表单中,记账节点集合中的节点将该区块连接到区块链中。
若CMF记账节点收到了用户请求认证消息,则具体步骤如下:
(1)本轮记账节点将收集的数据打包排序放入区块,将区块发布给相邻CMF节点,CMF节点之间相互传递区块,CMF节点比对本地授权表单验证区块的合法性,若合法则向记账节点回复“确认||区块ID||确认节点ID”报文。
(2)若本轮记账节点收到超过CMF节点总数2/3的回复报文,则记账节点单独验证该区块的合法性,除基本的区块验证外,优先选择确认节点信誉值最高以及区块备选区时间戳靠前的区块,若区块通过记账节点的验证,则记账节点向用户和其对应的IISP颁发Token,分别用各自的公钥加密。其中对IISP需借助主链与侧链的接口向侧链广播,使相应IISP接受消息。
步骤4:IISP获取Token,具体如下:
各个IISP的节点在侧链全网监听,若收到来自CMF的Token,用私钥解密后将其保存在本地数据库,并将该Token设置到session中,客户端每次请求的时候都要统一拦截,并将客户端传递的Token和服务器端session中的Token进行对比,如果相同则放行,不同则拒绝。
最后说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本技术方案的宗旨和范围,其均应涵盖在本发明的权利要求范围当中。