[0073] 下面结合附图和具体实施方式对本发明的具体实施方案作进一步详细描述和说明。
[0074] 如图1所示,一种轻量级的无证书工业物联网访问控制方法通过本地服务器作为可信第三方,使用基于公钥的挑战应答、令牌和口令实现用户和资源服务器之间的双向认证,并将通信密钥协商融入认证过程,在保证用户认证及密钥协商安全性的同时,有效减少认证过程中的交互轮数。
[0075] 该方法基于以下设置:资源服务器RS与负责其认证的本地中央服务器LCS互相预置有对方的公钥信息,资源服务器RS预置负责其认证的本地中央服务器LCS地址信息,客户应用APP预置根服务器GRS的公钥和地址信息,根服务器GRS预置本地中央服务器LCS的公钥和地址信息;
[0076] 主要包括认证、带资源访问令牌的访问及访问退出三个流程,其中:
[0077] 如图2认证流程包含如下步骤:
[0078] 步骤1:客户应用Client App(APP)向资源服务器Resource Server(RS)发起携带资源访问身份信息的认证请求;其中资源访问身份信息包括客户应用APP身份信息(如客户应用APP的IP地址)、用户身份信息(如用户身份ID)等;
[0079] 步骤2:资源服务器RS接收该认证请求,并生成一个随机数NRS;然后利用本地中央服务器Local Central Server(LCS)的公钥KLCS将随机数NRS、接收到的资源访问身份信息(包括客户应用APP身份信息和用户身份信息)、资源服务器RS的身份标识进行加密,构成身份信息数据包发送给本地中央服务器LCS。
[0080] 步骤3:本地中央服务器LCS接收资源服务器RS的身份信息数据包并用本地中央服务器LCS的私钥 解密数据,生成一个随机数作为认证令牌Authentication Token(AToken)NAToken,并根据资源服务器RS的身份标识从预存的资源服务器公钥数据库中得到对应资源服务器RS的公钥KRS和地址信息;然后将资源访问身份信息(包括客户应用APP身份信息和用户身份信息)、资源服务器RS的地址信息和认证令牌NAToken等存入即将到访用户表中;再利用资源服务器公钥KRS将认证令牌NAToken、随机数NRS进行加密,构成认证令牌数据包发送到资源服务器RS。
[0081] 步骤4:资源服务器RS接收本地中央服务器LCS的认证令牌数据包,用资源服务器RS的私钥 解密数据包,然后将认证令牌NAToken和本地中央服务器LCS的地址信息构成的认证重定向响应包发送给客户应用APP。
[0082] 步骤5:客户应用APP接收资源服务器RS的认证重定向响应包,从中提取本地中央服务器LCS地址信息和认证令牌NAToken。判断客户应用APP的本地存储中是否含有该本地中央服务器LCS的公钥,若不包含则随机生成根服务器GlobalRootServer(GRS)与客户应用APP之间的通信密钥KG‑A,然后利用根服务器GRS的公钥KGRS将KG‑A、本地中央服务器LCS的地址信息进行加密,构成本地中央服务器LCS验证包发送到根服务器GRS,跳转到步骤6;若包含则跳转到步骤8。
[0083] 步骤6:根服务器GRS接收客户应用APP发来的本地中央服务器LCS验证包,用根服务器GRS的私钥 解密验证包,判断接收到的本地中央服务器LCS地址信息是否与预先存储的对应信息一致。若一致则验证通过,并利用通信密钥KG‑A将该本地中央服务器LCS的公钥KLCS进行加密,构成本地中央服务器LCS验证确认包发送到客户应用APP,跳转到步骤7;若不一致则返回错误响应到客户应用APP。
[0084] 步骤7:客户应用APP接收根服务器GRS发回的本地中央服务器LCS验证确认包,用通信密钥KG‑A解密验证确认包,提取本地中央服务器LCS的公钥KLCS,将该公钥KLCS和本地中央服务器LCS地址信息作为一个记录存储到本地;然后生成一个随机数NAPP,并利用KLCS将用户身份信息、客户应用APP公钥KAPP、认证令牌NAToken和随机数NAPP进行加密,构成用户身份认证数据包发送到本地中央服务器LCS,进行用户身份认证,跳转到步骤9。
[0085] 步骤8:客户应用APP根据本地中央服务器LCS的地址信息从本地存储中提取本地中央服务器LCS对应的公钥KLCS,生成一个随机数NAPP;然后利用KLCS将用户身份信息、客户应用APP公钥KAPP、认证令牌NAToken和随机数NAPP进行加密,构成用户身份认证数据包发送到本地中央服务器LCS,进行用户身份认证,跳转到步骤9。
[0086] 步骤9:本地中央服务器LCS接收客户应用APP发送的用户身份认证数据包,先查询该用户身份认证数据包源地址是否在即将到访用户表中,若不存在则返回错误响应到客户应用APP;若存在则用本地中央服务器LCS的私钥 解密该用户身份认证数据包后,查验用户身份认证数据包中的NAToken、用户身份信息是否与本地存储中数据全部一致,若否则验证不通过,则返回错误响应到客户应用APP,若是则验证通过,则本地中央服务器LCS再根据认证令牌NAToken、随机数NAPP、随机数NRS随机生成资源访问令牌Access Token(AccToken)NAccToken、客户应用APP与资源服务器RS通信密钥KA‑RS和资源服务器RS与本地中央服务器LCS通信密钥KRS‑L;然后利用资源服务器公钥KRS将NAccToken、KA‑RS、KRS‑L和NRS等信息进行加密,构成用户认证成功数据包发送到资源服务器RS,跳转到步骤10;同时利用客户应用APP公钥KAPP将NAccToken、KA‑RS和NAPP等信息进行加密,构成用户认证成功响应包发送到客户应用APP,跳转到步骤11;
[0087] 步骤10:资源服务器RS接收本地中央服务器LCS的用户认证成功数据包,利用资源服务器RS的私钥 进行解密,提取并存储资源访问令牌NAccToken、资源服务器RS与本地中央服务器LCS通信密钥KRS‑L和客户应用APP与资源服务器RS通信密钥KA‑RS。
[0088] 步骤11:客户应用APP接收本地中央服务器LCS的用户认证成功响应包,利用客户应用APP的私钥KAPP进行解密,提取资源访问令牌NAccToken和客户应用APP与资源服务器RS通信密钥KA‑RS。
[0089] 如图3带资源访问令牌的访问流程包含如下步骤:
[0090] 步骤1:客户应用APP用通信密钥KA‑RS加密携带资源访问令牌NAccToken的资源访问请求,发送到资源服务器RS。
[0091] 步骤2:资源服务器RS接收客户应用APP的资源访问请求,利用通信密钥KA‑RS解密数据包,从中提取资源访问令牌NAccToken,通过NAccToken索引资源服务器RS中与之对应的资源授权策略,并与请求的资源操作命令进行比对。若该资源操作命令存在于NAccToken对应的资源授权策略中,则资源服务器RS与要请求的资源设备RE进行通讯,发送资源操作请求,跳转到步骤5;若该资源操作命令不存在于NAccToken对应的资源授权策略中,则用通信密钥KRS‑L加密携带资源访问令牌NAccToken的资源授权确认包,发送到本地中央服务器LCS,跳转到步骤3。
[0092] 所述资源授权策略:允许客户应用对目标设备进行的资源操作,如增删改查等基本操作命令,可根据实际使用情况自行设置。
[0093] 步骤3:本地中央服务器LCS接收资源服务器RS的资源授权确认包,用通信密钥KRS‑L解密数据包,提取资源访问令牌NAccToken。然后查询资源授权数据库,确认该客户应用APP是否有权进行该资源访问请求,利用KRS‑L将资源授权结果和与该资源访问令牌对应的资源授权策略进行加密,构成资源授权数据包发送到资源服务器RS。
[0094] 所述资源授权数据库:本地中央服务器LCS中负责存储客户应用APP权限的数据库。
[0095] 步骤4:资源服务器RS接收本地中央服务器LCS的资源授权数据包,利用通信密钥KRS‑L解密,并将资源授权策略保存到内存中。当资源授权结果为允许时,资源服务器RS与要请求的资源设备RE进行通讯,发送资源操作请求,跳转到步骤5;若资源授权结果为不允许时,则返回错误响应到客户应用APP。
[0096] 步骤5:资源设备RE接收资源服务器RS的资源操作请求,返回操作结果到资源服务器RS。
[0097] 步骤6:资源服务器RS接收资源设备RE的操作结果,利用KA‑RS将操作结果加密后发送到客户应用APP。
[0098] 步骤7:客户应用APP接收资源服务器RS返回的操作结果,并用KA‑RS解密。
[0099] 如图4带资源访问令牌的访问退出流程包含如下步骤:
[0100] 步骤1:客户应用APP用通信密钥KA‑RS加密携带资源访问令牌NAccToken的资源访问退出请求,发送到资源服务器RS。
[0101] 步骤2:资源服务器RS接收客户应用APP的资源访问退出请求,利用通信密钥KA‑RS解密数据包,提取资源访问令牌NAccToken,并根据NAccToken释放相关资源。然后用密钥KRS‑L加密携带资源访问令牌NAccToken的资源访问退出请求,发送到本地中央服务器LCS。
[0102] 这里的资源服务器RS根据NAccToken释放相关资源属于常规技术,故不详解。
[0103] 步骤3:本地中央服务器LCS接收资源服务器RS的资源访问退出请求,利用通信密钥KRS‑L解密数据包,提取资源访问令牌NAccToken,并根据NAccToken释放相关资源。
[0104] 这里的本地中央服务器LCS根据NAccToken释放相关资源属于常规技术,故不详解。
[0105] 如图1一种轻量级的无证书工业物联网访问控制系统主要包括客户应用APP,与资源服务器通信的资源设备Resourceequipment(RE),与客户应用APP、本地中央服务器LCS通信的资源服务器RS,与客户应用APP、资源服务器RS通信的本地中央服务器LCS,与客户应用通信的根服务器GRS。其中:
[0106] 所述客户应用APP为定制化的移动或桌面应用程序,用于访问工业物联网中的资源设备RE,预先存储有根服务器GRS的公钥和地址信息。用于参与认证流程、参与带资源访问令牌的访问流程、参与带资源访问令牌的访问退出流程。
[0107] 其中参与认证流程具体包括本地中央服务器LCS的身份认证和用户的身份认证。
[0108] 所述本地中央服务器LCS的身份认证是发送认证请求后接收经资源服务器RS传送的本地中央服务器LCS地址信息和认证令牌NAToken,判断本地存储中是否含有与之对应的公钥KLCS,若不包含则对随机生成的通信密钥KG‑A、本地中央服务器LCS地址信息进行加密,发送到根服务器GRS。若包含则验证通过,根服务器GRS返回验证确认包到客户应用APP;
[0109] 所述用户的身份认证是将用户身份信息、客户应用APP公钥KAPP、认证令牌NAToken等信息加密后构成用户身份认证数据包发送到本地中央服务器LCS。若验证通过,本地中央服务器LCS返回利用客户应用APP公钥KAPP加密资源访问令牌NAccToken、客户应用APP与资源服务器RS通信密钥KA‑RS的用户认证成功响应包到客户应用APP。
[0110] 其中用于参与带资源访问令牌的访问流程,具体包括:
[0111] 客户应用APP接收本地中央服务器LCS的用户认证成功响应包,利用客户应用APP的私钥KAPP解密,提取资源访问令牌NAccToken和客户应用APP与资源服务器RS通信密钥KA‑RS,并利用通信密钥KA‑RS加密携带资源访问令牌NAccToken的资源访问请求,发送到资源服务器RS。接收资源服务器RS返回的资源设备RE操作结果。
[0112] 其中用于参与带资源访问令牌的访问退出流程,具体包括:
[0113] 客户应用APP接收本地中央服务器LCS的用户认证成功响应包,利用客户应用APP的私钥KAPP解密,提取资源访问令牌NAccToken和客户应用APP与资源服务器RS通信密钥KA‑RS,并利用通信密钥KA‑RS加密携带资源访问令牌NAccToken的资源访问退出请求,发送到资源服务器RS。
[0114] 所述资源设备RE也即工业物联网设备或工业设备,例如传感器、执行器等,属于计算资源受限设备;用于接收资源服务器RS的操作命令,并返回操作结果到资源服务器RS。
[0115] 所述资源服务器RS属于计算资源受限设备,预先存储有本地中央服务器LCS的公钥和地址信息;用于向授权客户应用APP提供服务并参与认证流程。
[0116] 所述向授权客户应用APP提供服务具体是通过从客户应用APP资源访问请求中提取出的资源访问令牌NAccToken索引与之对应的资源授权策略,判断请求的资源操作命令是否存在于该资源授权策略中,若存在则与要请求的资源设备RE进行通讯,否则发送资源授权确认包到本地中央服务器LCS,并接收返回的资源授权结果;
[0117] 所述参与认证流程即用户的身份认证具体是接收客户应用APP的认证请求后将身份信息数据包发送到本地中央服务器LCS,接收本地中央服务器LCS返回的认证令牌NAToken,并和本地中央服务器LCS地址信息组成一个认证重定向响应包发送给客户应用APP;客户应用APP验证通过本地中央服务器LCS的身份后,本地中央服务器LCS接收客户应用APP的用户身份认证数据包并返回用户认证成功数据包到资源服务器RS。
[0118] 所述的本地中央服务器LCS存储并统一管理客户应用APP的身份信息、对各资源设备RE的访问权限策略以及各资源服务器RS的公钥、地址信息等信息;用于授权客户应用APP访问资源设备RE并参与认证流程。
[0119] 所述授权客户应用APP访问资源设备RE具体是通过查询资源授权数据库,确认客户应用APP是否有权进行该资源访问请求,并将资源授权结果和与该资源访问令牌对应的资源授权策略发送到资源服务器RS;
[0120] 所述参与认证流程具体包括本地中央服务器LCS的身份认证和用户的身份认证,分别是接收资源服务器RS的身份信息进而生成认证令牌NAToken,然后将NAToken和NRS发送到资源服务器RS;接收客户应用APP发送的用户身份认证数据包,核对验证相关信息后生成用户资源访问令牌NAccToken、通信密钥KA‑RS和KRS‑L,然后将NAccToken、KA‑RS和KRS‑L等信息发送到资源服务器RS,将NAccToken、KA‑RS等信息发送到客户应用APP。
[0121] 所述的根服务器GRS预先存储有本地中央服务器LCS的IP地址、公钥等信息,当系统中添加一个本地中央服务器LCS后,需要在根服务器GRS中添加本地中央服务器LCS的相关信息;用于参与认证流程。
[0122] 所述参与认证流程即认证本地中央服务器LCS,具体是接收客户应用APP发送的本地中央服务器LCS的地址信息,判断是否与预先存储的对应信息一致。若一致则验证通过,并将该本地中央服务器LCS的公钥KLCS发送到客户应用APP。
[0123] 性能测试
[0124] 性能评估方式:将本发明(以下简称LAAS)与现有ACE‑OAuth方案进行比较,性能指标主要针对资源服务器(RS)在身份认证和访问控制中的网络数据传输量、CPU占用率、硬盘占用。
[0125] 实验中为搭建资源服务器模型,利用了Raspberry Pi 3B+,其搭载的Broadcom BCM2837处理器运行频率为1.4GHZ,操作系统为Contiki3.0,内存占用1GB LPDDR2 SDRAM。
[0126] RS服务器上的数据加密操作通过调用wolfssl的加密库实现。为降低硬盘占用,对wolfssl进行了裁剪,只保留了系统实现需要的那部分函数。其中ACE‑OAuth在涉及密钥协商和证书传递的握手协议方面使用了TLS协议进行实现。
[0127] 图5为本发明方案与现有ACE‑OAuth/TLS方案的磁盘占用对比图。磁盘占用由两部分组成,图中黑色部分Libs binary代表调用库的大小,RS binary表示资源服务器核心代码编译后的大小。由于本发明主要调用wolfssl的加密库实现加密操作,相比ACE‑OAuth需要调用整个TLS协议实现,在磁盘占用上由明显的降低。
[0128] 图6为本发明方案与现有ACE‑OAuth/TLS方案一次认证的CPU占用时间(包含内核态和用户态抢占CPU的时间)对比图。在CPU占用率方面主要利用认证过程中对CPU的占用时间进行评估。由图6可以看出,两种方案在内核态(system)下的CPU占用时间一致,但在用户态中,由于ACE‑OAuth实现TLS协议需要一系列的加解密、签名/解签、传递证书等操作,所以在单词认证流程下本发明的CPU占用率明显更低。
[0129] 图7为本发明方案与现有ACE‑OAuth/TLS方案在认证过程中的数据通信量对比图。主要测量了资源服务器RS所接收和发送的数据量,具体有从客户应用发送到资源服务器的数据、资源服务器发送到客户应用的数据、本地中央服务器发送资源服务器的数据和资源服务器到中央服务器的数据。具体测量方法是通过wireshark工具对认证过程产生的流量进行抓包并进行了统计。由图7可以看出,在总数据量方面,ACE‑OAuth在一次认证流程中资源服务器(RS)的总数据传输量约为7200Byte,而相应的本发明LAAS方案约为2400Byte,降低了2/3,本发明中资源服务器(RS)的数据传输量均显著少于ACE‑OAuth的数据传输量。
[0130] 本发明并不局限于上述具体实施方式,本领域技术人员还可据此做出多种变化,但任何与本发明等同或者类似的变化都应涵盖在本发明权利要求的范围内。