王 浩 杨 剑 刘 杰 王 平
(重庆邮电大学自动化学院网络控制技术与智能仪器仪表教育部重点实验室,重庆 400065)
WIA-PA(wireless networks for industrial automationprocess automation)是基于 IEEE STD 802.15.4-2006 的标准,用于工业过程测量、监视与控制的无线网络系统[1]。该规范是我国自主研发的、用于工业过程自动化的无线网络规范,现已成为IEC国际标准。
WIA-PA网络支持两层网拓扑结构。第一层是网状结构,由网关设备及路由设备构成;第二层是星型结构,由路由设备、现场设备和手持设备构成。用于系统管理的网络管理者和安全管理者在实现时可位于网关设备或主控计算机。本文中,安全管理者由主控计算机担任。同时,一种类型的物理设备可以担任多个逻辑角色。在星型和网状结合的两层拓扑结构中,网关设备可以担任网关、网络管理者以及安全管理者的角色;路由设备可以担任簇首的角色;现场设备和手持设备只能担任簇成员的角色。
作为一个开放系统,WIA-PA存在潜在的安全风险[1],必须采取一定的安全措施,以保证WIA-PA用户的安全操作,保护系统内部的资源和维持正常的生产秩序。本文针对WIA-PA网络的实际应用中的安全问题,分别提出了入网认证方案和密钥更新方案。
单向散列链是一个散列值序列{x1,…,xj,…,xm}[4],序列中各元素满足:
散列函数(映射)F满足以下属性:①给定xj-1和G,很容易计算出xj;②若未给定G,而给定了xj-1,则很难计算出 xj,若给定了 G,未给定 xj-1,也很难计算 xj。
在该散列链里,如果要对一个给定的散列值xj进行认证,可以采用如下方法:①已知 xj-k,由式(1)对xj-k重复计算 k次后得到 x'j,将其与 xj进行比较;②已知xj+k,由式(1)对xj重复计算k次后将得到的x'j+k与xj+k进行比较。
在本方案里,称G为生成因子,第一次计算时参数x0称为种子,散列链的每一个元素xj称为链密钥。同时给出公共散列链的定义,对于节点u和节点v,若u拥有散列链Ci,同时v从Ci提取一个或多个链密钥,则称u和v共享一个公共散列链Ci。
对于需要进行安全认证的网络,所有节点都有与信任中心分别共享唯一加入密钥(KJ)。该加入密钥在部署网络前通过手持设备等安全方式写入节点设备[1]。WIA-PA网络拓扑结构如图1所示。
图1 WIA-PA网络拓扑结构Fig.1 Topology structure of WIA-PA network
对于单跳加入网络的节点,如图1中的节点A,当信任中心收到A的入网请求后,发起对节点A的认证请求,在收到节点A的认证响应后对A进行认证。节点A的认证响应包含安全信息,安全信息由式(2)采用F函数计算得到。单跳节点入网过程如图2所示。
式中:Sinfo为计算得到的安全信息;Paddr为设备的唯一标志地址;Tdevicetpte为设备的类型,路由设备或现场设备;|为字符串连接符号。
图2 单跳节点入网认证Fig.2 Authentication of one hop node
图2中,通信报文用原语表示,Auth.resp和Join.resp报文由密钥加密保护。
节点A首先发送入网请求Join.req,其中包含自己的唯一标志和设备类型,信任中心根据网络属性判断是否对A认证,需要认证时保存A的标志和类型,发起认证请求Auth.req。A收到认证请求,根据式(2)计算安全信息Sinfo并响应信任中心Auth.resp。信任中心收到A的认证响应,查询与A预共享的KJ,由式(2)计算安全信息并与Sinfo比较,如果不等,拒绝A加入网络;否则,回复入网响应 Join.resp,置结果 Rresult为1,告知节点A入网成功。
对于多跳入网的节点,如图1中节点B或节点C通过中间节点A加入网络,其认证过程如图3所示。
图3 多跳节点入网认证Fig.3 Authentication of multi-hop node
节点B发送入网请求Join.req,中间节点A发起认证请求Auth.req。B利用与信任中心预共享的KJ,根据式(2)生成Sinfo,并由式(3)计算给信任中心的数据ET1,然后发送认证响应Auth.resp。
式中:KJB为B与信任中心共享的加密密钥;E为加密算法,采用对称加密,算法在此不作要求。
A收到B的认证响应报文不做处理,构造关于B的入网请求报文Join.req,包含B的标志Paddr_B和ET1,并发送给信任中心。
信任中心收到来自于A的报文后,首先判断A是否为经过认证的在网节点,如不是,则丢弃该报文;如是,则解析报文,并根据Paddr_B查找与B共享的KJ,解密ET1获得B的入网信息。采用同样的方法认证B,如果认证成功,根据如下公式计算给A的密文ET2和给B的密文ET3,并构造报文Join.resp发送给节点A。
式中:IB_trust(IA_trust)为节点B(A)是否可信的标志,1表示可信,0表示不可信。
节点A在收到信任中心的入网响应报文后,首先解密ET2,根据IB_trust判断B是否可信,不可信则不予处理,可信则根据Paddr_B将ET3转发给B。
当节点B收到来自A的响应报文时,对ET3进行解密,并根据IA_trust判断节点A是否可信,不可信则从新选择路径入网,可信则由Rresult判断加入网络是否成功。
当节点A与信任中心之间是多跳链路时,节点A已入网,即确保了该链路是安全链路,节点A只需通过此链路转发数据即可,无需对链路中节点再次认证。
本方案在网络形成时确保了所有入网节点的合法性,保障了网络的整体安全性。虽然节点的入网时间短暂,但由于节点和网络所在区域环境恶劣,存在各种威胁的可能性,如非本网络节点、恶意攻击节点等,故假定所有入网节点都不可信,通过信任中心认证的节点才视为本网络的合法节点。
对于单跳入网,由信任中心认证节点。因信任中心与节点间共享唯一安全的加入密钥,通过认证则表明节点合法。
对于多跳认证,假如节点B是恶意节点,因A、B之间没有共享材料,节点A不能够认证B,所以将B的认证信息发送给信任中心,信任中心认证B失败,即可告知节点A节点B不可信,且发送给A的报文由KJA加密保护;A得知B不可信则可拒绝与B通信。假设A是恶意节点,而B的安全认证信息由KJB加密,A在短时间内无法破解篡改,如果它把认证信息发送给信任中心,也会被信息中心发现其不可信,此时A便获取了合法节点的唯一标志和设备类型,但并不足以构成危害或者试图伪装加入网络。不管A是否转发认证信息,节点B在规定时间内未收到信任中心的入网响应,可认为其为恶意节点,从而选择其他路径入网。假若节点A和B同为恶意节点,也会因无法伪造加入密钥而被拒绝加入网络。同时,该认证方案在单跳入网时由信任中心发起认证请求,多跳入网时由中间节点而不是由信任中心发起认证请求,减小了信任中心和中间节点的通信次数和网络的通信开销。节点入网跳数与网络报文数的关系如图4所示。
图4 节点入网跳数与网络通信报文数关系Fig.4 Relationship between the numbers of hops and network communication messages
由图4可以看出,本方案和无需认证的入网相比只增加了两次通信,即两条报文,即第一跳的发起认证请求和认证响应,并且随着跳数的增加,通信量并没有显著增加;当由信任中心对入网的节点发起认证时通信次数显著递增且递增率大于本方案。对于大规模网络的形成,网络中将有大多数节点需多跳入网,本方案能够有效降低通信消耗,减小整体网络的组网时间。
节点入网后,由信任中心为入网成功的节点分发相应的密钥并周期性地更新密钥。一旦有节点受损或者网络受到威胁,信任中心将立即剔除受损节点并更新密钥,或者当节点检测到密钥暴露时主动发起密钥更新服务。为确保节点通信中数据的安全,密钥的分发和更新必须正确而且安全有效,即密钥在传输中不被截取破解或经篡改后继续发送、发送方合法。本节给出密钥更新详细方案,会话密钥采用单向散列链模式,更新报文附带校验信息,从而保证数据包和密钥本身的正确性和数据来源的合法性。
信任中心生成一系列单向散列链并构成密钥池。所有散列链共用一个种子(seed),对于散列链Ci,假设其生成因子为Gi,则该散列链的第j个链密钥生成如式(6)所示。
式中:Fj(seed,Gi)=F[Fj-1(seed,Gi),Gi](1≤j≤M)。
为了生成密钥池,信任中心随机生成一个种子,并选择L(等于网络节点个数)个不同的生成因子(这里我们选用与每个节点预共享的加入密钥),通过反复执行上述散列链生成过程,生成L个散列链,同时删除种子。最终的密钥池将由L个散列链组成,其中每个散列链包含M个链密钥。密钥池的组成如图5所示。
图5 密钥池的组成Fig.5 Composition of the dongle pool
对于入网成功的节点,信任中心分发密钥给每个节点,与每个节点共享唯一的公共散列链,分发密钥加密密钥(key encryption key,KEK)时由加入密钥保护,分发数据密钥(data encryption key,KED)则由KEK保护。当网络到达密钥更新周期时,信任中心对网络节点进行密钥更新,节点的密钥更新过程如图6所示。
图6 节点的密钥更新过程Fig.6 The updating process of node dongle
为保证密钥更新过程的安全及来源的合法性,信任中心一开始对节点分发密钥,即选择图5中的对应密钥链,将该密钥链的最后一个链密钥KM及其他信息D1(如密钥类型、密钥长度等)装入报文P1(P1=KM|D1),并生成该报文的校验值MIC(P1)发送给节点。密钥更新报文格式如图7所示。节点先校验报文的正确性,然后对报文进行解密,获得会话密钥KM;在随后密钥更新过程中,信任中心依次发送 KM-1、KM-2等。
图7 密钥更新报文格式Fig.7 The message format of dongle update
节点密钥更新流程如图8所示。
图8 节点密钥更新流程图Fig.8 Flowchart of the dongle update
密钥更新时,节点接收到第(i+1)次更新报文Pi+1时,首先校验该报文是否正确,若不正确,直接回复更新密钥失败响应;否则,解密报文,获得KM-i。采用加入密钥并根据 K'M-i+1=F(KM+i,KJ)计算K'M-i+1,比较 K'M-i+1和已存储的第 i次的密钥 KM-i+1,如果相等,表明为合法的信任中心发送,未经过篡改,将已存储的 KM-i+1替换为 KM-i,作为会话密钥;如果不等,则表明受到攻击,即报文来源不可信且KEK已暴露,此时,应向信任中心汇报。
在本方案中,密钥更新过程在不增加通信开销的情况下,只需节点进行一次散列函数运算,即可以实现数据报文的完整性、数据的机密性、数据本身的正确性和数据来源的合法性。本方案散列链的使用保证了所更新的密钥的安全性和有效性,与文献[5]相比,本方案增加了对数据源的认证。这是因为网络中只有信任中心和节点共享唯一公共散列链,在确保数据新鲜性的情况下可以认定该数据为信任中心所发送。根据散列链的特性——单向性[9],攻击者即使破获了当前使用的会话密钥,在未知密钥链种子和加入密钥的情况下,不可能通过计算得到后续的会话密钥,而且也不可能获得散列链的种子。
由于节点的加入密钥是在网络部署前通过安全方式写入节点设备的,可认为是安全的,所以可以确保随后发送的密钥加密密钥是安全可靠的。由于密钥加密密钥也需进行周期性更新[1],密钥加密密钥可以采用该方案中单向密钥链的形式进行下发和更新。
本文从以下四个方面分析该方案的效率。
①当网络中有新节点加入时,首先对其进行认证,认证通过,信任中心随机生成种子,并用该节点的加入密钥生成密钥链,然后进行密钥的分发和更新。
②当有节点离开时,网络管理者删除与该节点共享的公共散列链,不影响网络中的其他节点正常通信,但离开的节点为簇首节点时,如果启用冗余簇首[7],信任中心更新与冗余簇首共享的公共散列链即可。
③存储量及通信开销,该方案中节点只需存储三种类型的密钥,与文献[2]和[5]比较,本方案没有增加存储量和通信开销。
④生命周期,密钥链长度M期望值的选取根据式(7)计算。
式中:Tlifetime为节点可以有效工作的存活时间;Tupdatecycle为密钥更新周期;δmax为由网络状况预测节点遭遇攻击(含通信故障)的最大次数。
采用式(7)可解决链密钥在节点生命结束前用尽而无法进行后续密钥更新的问题,链密钥的长度M则满足了网络中节点的生命存活期。
当密钥更新节点已知如下信息:节点收到报文Pi并获得链密钥KM-i+1,丢失(d-1)次密钥更新报文,丢失期间KEK没有改变,暂存了更新密钥丢失期间所有不能解密的报文,收到正确的密钥更新报文Pi+d,则节点将依次做出如下处理:①解密报文 Pi+d,得到KM-i-d+1;②对 KM-i-d+1进行 d 次散列运算,分别得到K'M-i+1,K'M-i,…,K'M-i+d+1;③判断 K'M-i-d+1是否与KM-i+1相等,若不等,更新密钥失败,否则进入④;④可以确认所有更新密钥正确,依次用②中的密钥对相应期间的数据报文进行解密。
综上所述,该方案在特定期间内可以容忍一部分密钥更新报文的丢失,具有较好的容忍性,允许最大丢失个数由KEK的更新周期以及节点能够暂存的最大报文数量决定。
本文针对WIA-PA网络,提出了一种入网认证方案。在假定网络形成时所有节点都不可信情况下,保证了所有入网节点的合法性,并使用单向散列函数,提出了一种安全的密钥更新方案。这既保证了更新密钥的安全性,也保证了密钥来源的合法性,实现了消息认证和消息源的认证;同时,还具有较好的密钥更新报文丢失容忍性。经过分析,充分说明了该方案实现了对密钥的有效更新,大大增强了网络的安全性。该方案在保证网络安全通信的同时,对节点存储空间和通信量要求较低,并具有较好的可扩展性和灵活性,适合WIA-PA网络。
[1]工业无线网络 WIA 规范[S].ICS 25.040,2008.
[2]韩瑞,刘枫.一种WIA-PA网络的密钥分配方案[J].计算机测量与控制,2010,18(1):186 -188.
[3]梁炜,张晓玲.WIA-PA:用于过程自动化的工业无线网络系统结构与通信规范[J].仪器仪表标准化与计量,2009(2):30-36.
[4]苏忠,林闯,任丰原.无线传感器网络中基于散列链的随机密钥预分发方案[J].计算机学报,2009,32(1):30 -42.
[5]田丰,王交峰,王传云,等.无线传感器网络随机密钥预分配改进方案[J].计算机应用,2008,28(6):1388 -1391.
[6]王华,刘枫,杨颂华.工业无线网络WIA-PA网络研究与设计[J].自动化与仪表,2009,24(7):1 -4.
[7]张丹,刘枫.WlA-PA 冗余簇首机制[J].计算机工程,2010,36(3):257 -259.
[8]Perrig A,Szewczyk R,Tygar J D,et al.SPINS:security protocols for sensor networks[J].Wireless Networks,2002,8(5):521 - 534.
[9]Bellare M,Canetti R,Krawczyk H.Keying hash functions for message authentication[J].Advances in Cryptodogy-Crypto’96,Lecture Notes in Computer Science,1996,1109:1 -15.
[10]Perrig A,Canetti R,Song D,et al.Efficient and secure source authentication for multicast[J].Network and Distributed System Security symposium,2001:35 -46.
[11]Perrig A,Canetti R,Tygar J D,et al.Efficient authentication and signing of multicast streams over lossy channels[C]∥Proceedings of the 2000 IEEE Symposium on Security and Privacy,Berkeley,CA,USA,2000:56-74.