一种面向云端辅助工业控制系统的安全机制
2021-04-18屠袁飞杨庚张成真
屠袁飞 杨庚 张成真
工业企业为了降低运营成本和相关费用,不断寻求能够提供稳定性,容错性和灵活性的工业系统解决方案.云端辅助的工业控制系统[1]随之出现,即将云计算服务、物联网与传统的数据采集与监控(Supervisory control and data acquisition,SCADA)系统整合,以感知真实世界中不断变化的状态,通过云计算、大数据分析,实现动态的优化控制,甚至可以将其部署在实时闭环的控制回路中[2−5].在整合过程中,新旧技术重叠使用,除具有传统SCADA系统存在的安全问题外,还面临其他来源多样的威胁,包括敌对政府,恐怖组织,内部人士的恶意或意外行为,恶意入侵者,事故和自然灾害等.依赖云通信使得SCADA 系统更加开放,但系统命令和信息也可能在通信过程中被修改,嗅探或丢失.即使一些工业云采用了传统的用户名密码的访问控制机制,进入云中的用户面对系统全部的数据,也可能破坏其他不可访问资源的隐私.更重要的是,在工业系统中执行的逻辑对物理世界有直接的影响,被恶意攻击的系统会对人类的健康安全、环境、设备造成严重的破坏及损失,最知名的莫过于2010年伊朗核系统遭受的Stuxnet病毒事件[6].近年来,世界各国均提出了一些极具参考意义的指标和安全实践指南[7],我国也颁布了《网络安全法》,提出加强关键信息基础设施安全防护,维护国家网络安全.
对此有学者提出通过加密方法来阻止信息泄露,实现隐私保护[8].文献[9]基于稳定性判据设计了一种工业控制系统中加密传输机制的可行性评估模型.
文献[10]对SCADA 网络安全已有的标准规范进行了综述,并使用纵深防御理论对其分别进行了评估.文献[11]采用粒子滤波算法,建立工控系统网络态势感知模型,判断系统是处于“安全态势”还是“危险态势”.文献[12]针对SCADA系统使用的DNP3通信协议的安全问题,使用密码学工具来防止数据在传输的过程中被窃听,保护数据通信的安全,并做了相关性能测试.文献[13]针对工业无线传感器网络中无线介质的开放特性,攻击者可以容易地窃听通信来收集关于传感器的隐私信息这一问题,提出了一种能够支持网络身份验证的假名通信方案.该方案利用代理服务器为每台传感器分配随机ID的方法来匿名通信,但仅支持传感器的一跳范围之内的隐私保护.文献[14]将主流加密算法应用在PLC中,对其性能进行了仿真测试,并在PLC网络中实测了网络吞吐量,结果表明AES算法是目前最适合PLC的加密方法.然而作为一种对称加密算法,如何管理其密钥是必须考虑的问题.
通过上述安全控制措施的确能够检测恶意软件的引入,减轻系统运行威胁,但并没有将攻击者拒之门外.文献[15]表明通过APT攻击,攻击者能够在不引起数据被破坏的情况下,长时间地潜伏在系统中窃取数据.文献[16]指出用户的疏忽也是导致信息泄露的重要因素,因此需要设计一种覆盖所有现场设备的细粒度访问控制方案,防止任何未经授权的访问行为.文献[17]提出应限制对打印机或共享磁盘等公共资源的访问,访问者应包含在网络的已知用户中,并通过认证方法来阻止隐蔽信道.文献[18]针对关键基础设施资产保护问题,采用可信计算方法来限制软件平台上的开放接口,达到保护资产的目的,但并不能提供细粒度的访问控制.变电站安全标准IEC/TS62351-8[19]建议使用认证机制,尤其是基于角色的访问控制(Role-based access control,RBAC)方法[20]来降低整个SCADA网络的复杂性.文献[21]则针对楼宇控制系统中各分布式子系统间的通信安全问题,为用户分配预定访问权限策略的角色,保护资源免受未经授权的访问.文章缺点在于当主体和客体属性的数量变大时,角色的数量呈指数增长.
与RBAC不同,从分布式计算派生的基于属性的访问控制(Attribute-based access control,ABAC)方法为系统中的每个实体分配所谓的“属性”.用属性描述的策略可以表达基于属性的逻辑语义,灵活地描述访问控制策略[22].在基于密文策略(Ciphertext-policy attribute-based encryption,CP-ABE)的方案中[23],密文中嵌入了访问控制结构,即加密之后就确定了哪些用户能够对它进行解密而不需要借助可信服务器来实现这种控制.
本文利用基于属性的加密(Attribute-based encryption,ABE)算法能够有效实现细粒度非交互访问控制[24]的特点,为云端辅助的工业控制系统提出了安全高效的访问控制方案,有效地控制了用户权限,保护了数据隐私.方案能够对云中存储数据进行实时动态地验证来识别损坏数据的行为,确保数据的完整性.并且为现场设备与用户建立了安全的通信连接,通过对用户的严格认证,保证现场控制器获得可信的数据.最后,文章分析了方案的安全性与性能开销,并给出实验结果.
1 预备知识及系统模型
1.1 预备知识
1.1.1 双线性映射
设G1和G2是两个p阶循环群,其中p为一大素数设p为G1的生成元,定义双线性映射e:G1×G1→G2满足如下条件:
1)双线性性:对任意的P,Q∈G1,a,b∈Zp,满足e(Pa,Qb)=e(P,Q)ab.
2)非退化性:e(P,P)=1.
3)可计算性:对任意P,Q∈G1,a,b∈Zp,存在一个有效的多项式时间算法计算出e(P,Q).
1.1.2 线性秘密共享方案
一个基于成员集P的秘密共享方案Π 在Zp上是线性的需要满足一下两个条件:
1)每个成员所分得秘密的一部分构成一个Zp上的矩阵.
2)Π 中存在一个l×(n+1)秘密共享矩阵M.对于i=1,···,l,M的第i行表示第i个成员xi∈P.设一个列向量v=(s,r2,···,rn),其中s∈Zp是待分享的秘密,是随机的,则M·v把秘密s根据Π分成l个部分.(M ·v)i属于成员xi.
1.2 系统模型
如图1所示,云端辅助的工业控制系统一般包含四个实体:SCADA 系统、私有云(Private cloud,PC)、公有云(Public clouds,PubC)以及数据用户(Data consumers,DC).
1.2.1 SCADA系统
SCADA系统作为一个可以监控及控制所有设备的集中式系统,一般包括以下的子系统:人机界面系统,远程终端控制系统(Remote terminal unit,RTU),可编程逻辑控制器(Programmable logic controller,PLC),分布式控制系统(Distributed control system,DCS)等.对现场设备的控制及数据采集功能由PLC等控制系统进行,包括启停电机,读发送设备的状态报告等.SCADA系统将采集到的数据发送到企业私有云平台,并接收来自私有云的指令.
图1 系统模型Fig.1 System model
1.2.2 私有云
私有云是为一个企业单独使用而构建的,能够提供对数据、安全性和服务质量的最有效控制.私有云具有相对安全的优势,但不适合大规模存储.企业在私有云部署授权中心(Key generation center,KGC),根据基于属性的加密方法,生成公钥及主密钥,管理系统中的属性,构建访问策略并以此加密数据,之后再把密文发送到公有云存储.
此外,为防止由于软件错误或配置错误导致的数据损坏,私有云对外包存储的数据进行完整性检查,以确保数据是真实的,或未被未经授权方修改过.
1.2.3 公有云
公有云由第三方提供商为企业提供,包括位置独立的数据存储,无处不在的数据访问,按需的高质量服务,成本低廉,动态扩展性等优势.企业在公有云上完成资源租用、应用托管和服务外包.
在本模型中,我们假设公有云是诚实但又好奇,且易受到攻击的.因此由私有云对数据进行加密后再发送到公有云,用户从公有云中获取密文.由于访问控制策略包含在密文中,只有具备相应属性的用户才能获得访问数据的权限,因此公有云只能对密文进行存储、转发,其自身也没有访问原始数据的权限.此外,公有云接受来自私有云的审核,配合私有云完成存储数据的完整性检查.
1.2.4 数据用户
数据用户一般为企业管理人员、工艺员、操作工、监管部门等.用户向KGC声明其所拥有的属性,获得属性私钥.如果数据用户的属性满足密文中所定义的访问策略,则用户可通过该私钥获得访问公有云中原始数据的权限,对数据进行分析诊断,再将优化后的参数或指令经私有云发送到底层PLC、RTU等设备.
2 系统方案
本文首先在文献[25]的加密算法基础上,提出了一种面向云端辅助工业控制系统的保护用户隐私的访问控制方案.一个支持细粒度属性撤销的ABAC方案由6种多项式时间算法组成:Setup,KeyGen,Encrypt,Decrypt,ReEnc,ReKeyGen.Setup(1λ)→PK,PK,MK:KGC运行初始化算法,输入安全参数1λ,输出公钥PK、PK和主密钥MK.KeyGen(MK,S)→SK:KGC运行私钥生成算法,输入主密钥MK和用户属性集合,输出用户属性私钥SK.Encrypt(PK,K,Λ)→CT:明文数据K的拥有者执行加密算法.算法输入公钥PK,明文K和访问结构Λ,输出密文CT.Decrypt(SK,CT)→K:数据用户执行解密算法.算法输入该用户的属性私钥SK和密文CT,若用户所持有的属性私钥SK满足密文CT中包含的访问结构Λ,算法能够正确输出明文K.ReKeyGen(SK,x)→KGC执行私钥更新算法,算法输入私钥SK的部分组件以及待撤销属性x,输出更新后的用户属性私钥ReEnc(CT,x)→明文数据K的拥有者执行重加密算法.算法输入密文CT的部分组件以及待撤销属性x,输出更新后的密文
如图2所示,某生产企业配方数据的访问策略规定只有工艺部门的技术员、主任或管理部门经理才可以看到其中的具体内容,其逻辑表达式为:{[(工艺部门)AND(技术员OR 主任)]OR[(管理部门)AND(经理)]}.由于配方数据已按上述访问策略被加密,因此其他部门人员就无法对该密文进行解密,从而实现了灵活、细粒度的访问控制.
图2 访问策略Fig.2 Access policy
随着时间的推移,用户属性会发生变化,相应的访问策略也要有变化,此时需通过ReKeyGen算法和ReEnc算法对用户属性私钥及密文进行更新,令被撤销属性的用户不能再访问密文.
2.1 访问控制方案构造
算法1.系统初始化Setup(1λ)
设G,GT是两个阶为大素数p的乘法循环群,g是G的一个生成元,在G中随机选取辅助变量u,定义e:G×G →GT是一个双线性映射.KGC随机选取α,β,a∈Zp.哈希函数H:{0,1}∗→G作为散列到群G一个随机库.
生成系统公钥为:
主密钥为:
算法2.私钥生成算法KeyGen(MK,S)
算法输入主密钥的组件α,gα和用户属性集S,选取随机数t∈Zp,计算输出用户私钥为:
算法3.加密算法Encrypt(PK,K,(M,ρ))
算法输入公共密钥PK,对称加密算法的密钥K,以及LSSS访问结构(M,ρ).令M为一个l×n阶的矩阵,l为用户属性数,n为访问策略中的属性数,函数ρ将M中的每一行映射到一个用户属性.在Zp上随机选择一个矢量vv=(s,y2,···,yn)∈用于分享加密元素s,对i=1,2,···,l,计算λi=Miv,其中Mi为M的第i行,再随机选取r1,···,rl∈Zp,得到密文如下:
算法4.解密算法Decrypt(SK,CT)
算法以属性私钥以及密文为输入,拥有的解密者试图解密,假设用户的属性列表满足访问结构,则存在使得,其中I={i:ρ(i)∈S}解密算法首先计算:
再计算输出明文:
算法5.私钥更新算法ReKeyGen(SK,x)
对任意待撤销属性x,KGC随机选取Vx∈Zp作为其更新值再选取私钥SK的部件Kx按如下公式与新的属性值Vx进行计算:
用˜Kx替代原私钥部件中相对应的Kx算法输出重定义的用户私钥为:
算法6.重加密算法ReEnc(CT,x)
算法选取密文CT的部件Di,及算法5中为待撤销的属性x选取的值Vx按如下公式计算:
此时重加密之后的密文为
2.2 用户读取数据
ABE算法作为一种公钥加密算法,本身较复杂,不适合对大型文件进行加密,而对称加密算法又必须解决安全传递对称密钥的问题,因此本文采用混合加密的方式,首先私有云从密钥空间中随机选取一个对称密钥K,利用对称加密算法AES(K,D)对现场采集数据D进行加密.之后根据ABE 算法,定义该文件的访问结构,调用加密算法3加密上述对称密钥K,得到密钥密文CT,再按照图3的存储格式发送至公有云.
其中PC →PubC表示由私有云至公有云的数据传输.
图3 数据文件的密文格式Fig.3 Format of ciphertext
用户向KGC声明其所拥有的属性,根据算法2获得属性私钥.之后从公有云获取加密数据,利用算法4得到会话密钥K.最后利用会话密钥K解密AES(K,D)得到原始数据D.
2.3 数据完整性检查
用户可以在将数据发送到云端之前对数据进行加密来保护数据,但是它不能防止由于软件错误或配置错误导致的数据损坏或恶意用户的篡改.这就需要对云中存储数据进行完整性检查,以确保租户存储的数据是完整可获取的.通过密码学的挑战应答方式,企业在私有云上部署完整性检查服务,由其对公有云发送挑战信息,通过对公有云响应的严格认证,获得其政策合规性的技术保证.认证过程分为2个阶段:初始化阶段和挑战阶段,以下将详细描述2阶段的过程.
2.3.1 初始化阶段
步骤1.私有云根据算法1生成密钥对{gβ,β}.
步骤2.私有云对密文F进行分块,将其分为F={b1,b2,···,bn},随机选择mi∈Zp,为上述每一数据块生成认证元数据集合Φ={σ1,σ2,···,σn},这里σi=(H(i)·umi)β,H(i)为i对应的哈希运算.
步骤3.私有云将{mi}和{σi}附在密文之后发送到公有云中存储.
2.3.2 挑战阶段
步骤1.私有云作为验证者,周期性地发起完整性验证.从文件F分块中随机选取t个索引编号,并为每一个编号选取一个随机数vi∈Zp,将二者组合形成挑战请求{i,vi}i∈[1,n],并将vi发送到公有云作为挑战.
步骤2.公有云利用其存储的vi做以下运算
然后将{µ,σ}发送给私有云进行验证.
步骤3.私有云接收到{µ,σ}后,判断如下等式是否成立
若等式成立,则认为公有云中存储的数据是完整的.
2.4 用户与私有云的直接通信
通过公有云的分析、优化服务,用户可以更好地掌控生产全局,提供个性化产品的关键参数,优化生产工艺.用户将关键信息提交给私有云,私有云解析产品数据和关键参数,再将数据传输给底层的工业机器人、PLC、RTU控制器开展生产流程.在这一过程中,私有云需对用户进行身份认证,防止恶意用户的攻击,保证系统的安全运行.为此本文提出一种简单且安全的数据通信方案,为Internet上传输的数据提供可互操作的、基于密码学的安全保证,保护了传输数据的机密性、完整性.详细步骤如下:
步骤1.系统根据算法1进行初始化,用户获得KGC发布的属性私钥.
步骤2.用户向私有云提出更新参数Para的请求.私有云从密钥空间中随机选取一个密钥K1,利用算法3加密KT date=K1||datetime,并将加密后的标记发送到用户,并保存H(KT date)运算值.
H(·)表示发送端与接收端协议预先约定的哈希函数,datetime为当前时间.
步骤3.用户得(Encrypt(KT date))|PC→DC后,通过算法4解密密文,并做哈希运算,再发回私有云,供其读取验证:H=H(KT date)|DC→PC.
步骤4.私有云读取用户返回的信息后,比较H与H是否相等.如果相等,私有云和用户便可将标记K1作为双方直接通信的会话密钥进行安全的加密通信.
步骤5.用户按如下格式将参数Para、目标控制器编号IDs、用户编号IDc,当前时间datetime串联并按如下格式发送到私有云.
步骤6.私有云解密消息得到新的参数Para,然后比较(H=H(IDs||IDc||Para))是否与H相等,如果相等,则证明消息的真实性、完整性.
步骤7.私有云将新的参数Para传送到目标控制器中,执行指令.
2.5 对称密钥的有效期
作为一种非对称加密算法,ABE的加解密时间长、速度慢,计算复杂度高.因此在第2.2节用户读取数据一节中,采用ABE算法加密对称密钥,再用对称密钥完成对现场采集数据的加密.由于访问控制策略包含在密文中,只有具备相应属性的用户才能得到对称密钥,从而获得现场数据.在实际使用中,为保证通信的安全,对称密钥在使用一段时间后就应被撤销.私有云可定时更新对称密钥,用户需重新通过KGC的身份认证后才能获得新密钥.在此过程中,密钥的有效期越短,系统的安全性越高,但是系统开销也会增大.
在第2.4节用户与私有云的直接通信一节中,也采用了上述的混合加密方法.在用户发往私有云的参数密文中,包含了当前的传送时间.因此通信双方可约定用户指令的有效时间,当私有云接收用户指令达到约定时间后,即可撤销用于该直接通信的密钥K1.
3 方案分析
3.1 正确性分析
以下对算法4解密过程的正确性进行验证:在没有属性撤销情况下:
当需对某用户的属性x进行撤销时,算法4求解A的过程将分为如下两部分:
若ρ(i)=x:
若ρ(i)=x:
此时:
然后求解下式:
以下对数据完整性验证的式(11)进行证明:
3.2 安全性分析
3.2.1 数据的机密性
本方案中,数据文件的机密性取决于对称加密算法(AES),而对称加密算法的机密性则主要取决于对称密钥K的安全性.密钥K的加密采用了ABE算法,该算法已被证明是安全的,未认证用户(如攻击者)的属性集不满足访问策略,无法在解密过程中恢复e(g,g)ast的值,从而不能访问数据文件.同理,撤销属性的用户所拥有的属性私钥已无法与重加密密文中的组件进行匹配运算,因此也不能成功解密.
本方案利用公有云存储密文数据,一方面它对所存文件的内容是好奇的,另一方面它也会诚实地执行企业私有云安排的任务.公有云除存储密文外,仅负责接受私有云的完整性检查挑战,返回相应的密文数据块,不参与任何与加密相关的行为,也不会获得任何有效的属性私钥,因此其无法解密密文.
3.2.2 抗合谋攻击
基于属性的加密算法最大的挑战是防止合谋用户的攻击.在CP-ABE中,秘密共享值s嵌入在密文中.为了解开密文,用户或者合谋攻击者需要将e(g,g)ast恢复出来.合谋攻击者必须利用密文中的组件Cl,Dl和其他合谋用户的私钥组件L,Kρ(i)做相应的双线性配对运算.但是,每一个用户的私钥都通过一个随机数t唯一生成,每个用户的t不同,因此即使用户合谋,e(P,P)ast的值也不会被恢复.只有当该用户具有的属性满足访问策略时e(P,P)ast值才会被恢复.
3.2.3 数据的完整性
在云存储环境中,由于用户失去了对外包数据的本地控制,会担心数据是否一直正确地存储在云中.为了检测甚至防止这种情况发生,需要定期审核云数据的完整性.因此用户如何验证云数据的完整性成为了云存储中一个关键问题.
该方案通过数据分块、分别编码及抽查文件随机子集技术来确保云服务系统中数据的持有性和可恢复性,能够进行无限多次完整性验证,同时有效地确保了数据的内容不被验证者察知,用户甚至可以将繁琐的数据审计任务交由可信的第三方管理者来完成.
3.2.4 通信认证
大多数SCADA元件不认证发给他们的命令,无论命令是否合法,它们仍将执行发送给他们的任何命令.本方案中,当用户发送指令到现场控制器时,需先通过私有云的认证,才能完成指令更新.在这一过程中,考虑到密钥K1可能会被用户泄露或者被攻击者离线破解来获得,因此随机选取了密钥K1并加入失效时间来保证通信安全.
在SCADA 系统中,拒绝服务攻击是最常见的攻击方式.这种攻击一般不能对系统进行控制,但会降低整个系统的性能,甚至令其故障.攻击者利用大量合理的服务请求来占用过多的服务资源,或频繁发送命令来限制各种SCADA 系统所需的资源,从而导致系统无法执行预定的任务[26].本方案不用实时在线检测用户身份,且采用了随机密钥和失效时间的设置,如果攻击者不能在规定的时间内提交会话密钥,则不能访问系统.对于频繁提交认证请求的攻击者,也可撤销其属性,拒绝访问请求.
3.3 性能分析
3.3.1 通信消息长度
用户访问公有云获取数据时,需首先利用式(9)获取对称加密密钥K,根据式(4)和式(9),可以计算出密钥密文总长度为:
在实际应用场景中,为达到足够的访问属性数目与较低的计算开销,令访问属性数l=10.
式(14)中的每个参数长度是可变的,本方案的评估中,双线性映射e采用基于椭圆曲线上的Tate对,椭圆曲线定义在有限域Fp上,G和GT的阶p是一个20 Byte 的素数.为了达到1 024-bit RSA的安全等级,p应为一个64 Byte的素数,其中GT是一个定义在有限域上的乘法群的p阶子群.设定p为有限域上长度为42.5 Byte的素数,以及有限域上长度为20 Byte 的素数.因此,式(14)计算出的总密文长度可表示为22|p|Byte,大小范围为440 Byte到1 408 Byte.
信道建立后,在下次会话生成之间的通信,由于用户拥有了对称密钥,其通信密文长度可表示为:
其长度为16 Byte.
当用户需与私有云进行通信时,同理根据式(3)和式(11)可计算出私有云与用户之间通信时的密文长度如下:
按照相同的分析方法,从式(16)以计算出总密文长度为22|p|+16 Byte,大小范围为456 Byte 到1 424 Byte.
数据用户成功建立链接之后,其发送到私有云的密文长度为:
此处将IDs和IDc的长度分别设为1 Byte,这已能满足实际使用.从以上分析可见,在用户与公有云建立链接完成认证这一过程中,通信的密文长度为22|p|Byte,建立安全链接后,二者之间通信的密文长度为16 Byte.而在用户与私有云建立链接完成认证的过程中,通信的密文长度为22|p|+16 Byte,建立安全链接后,二者之间通信的密文长度为34 Byte.
各通信阶段的消息长度如表1所示,为了建立安全的通信连接,本方案会形成一个较大的消息密文,但当连接建立之后,用户和云之间通信的消息密文长度会大大缩短.
表1 密文长度Table 1 Length of ciphertext
密文长度与不同安全强度的关系如图4所示,可以看出,在建立通信链接进行认证时,密文长度与安全强度成线性关系,安全强度越高,密文越长当用户完成认证进行数据传输时,密文长度不依赖于安全强度.
图4 密文长度与安全强度关系图Fig.4 Relationship between the ciphertext size and the security level
3.3.2通信消耗
该方案的通信消耗主要集中在用户从公有云获取密文的通信及用户发送指令到私有云的通信,因此密文长度直接影响了通信消耗.
表1可以看出,为了建立安全的通信连接,本方案会形成一个较大的密文长度,但当连接建立之后,用户和公有云之间的通信密文长度会大大缩短,由于密文长度直接决定了通信能量损耗与计算开销,因此在通信相对频繁时,本方案较短的密文长度能够保证更低的能量损耗与更小的计算开销.
3.3.3 计算开销
该节将本方案与传统的基于证书的认证、基于默克尔树的认证和基于身份的认证方法进行比较,分析计算开销.根据文献[27],在主频400 MHz的32位微处理器上计算Tate对大约需要62.04 ms,校验一次ECDSA-160签名需要耗时18.48 ms,由于哈希算法和对称加密算法有着极低的计算开销,此处忽略了哈希算法和对称加密算法的开销.
假设每个数据用户进行N次数据交互,在基于证书的算法中,计算开销主要由两次ECDSA签名认证产生,总开销为2×18.48N=36.96Nms;在基于默克尔树的认证方法中,计算开销主要是一次ECDSA 签名认证,因此开销为18.48Nms;基于身份的认证方法中,计算开销主要为两次Tate对计算,总计算开销为2×62.04N=124.08Nms.本文提出的算法中,数据用户与公有云或私有云通信进行身份认证的计算开销主要为22次Tate对,总开销为22×62.04N=1 364.88Nms,认证完成后,在会话密钥更新之前,用户无需再计算Tate对表2展示了计算开销对比.
从表2可以得出以下结论:在数据传输次数较少时,本方案由于注重安全性认证,因此产生较大的计算开销,在认证完成后,无需再进行重复认证,因此随着数据传输次数的增加(N >11),在相同传输次数条件下,本文方案计算开销低的优势逐步体现.
表2 计算开销Table 2 Computation overhead
3.4 实验仿真
本节通过仿真实验验证算法整体的计算开销.实验采用斯坦福大学开发的基于JAVA的双线性对密码库(PBC Library),椭圆曲线采用Type A:y2=x3+x.实验环境为Inter (R)Core(TM)i5-3230M 2.60 GHz CPU,12.00 GB内存,Windows7 64 bit操作系统.实验中对称加密采用128 bit AES加密算法,不计实际应用中的数据传输延时.实验对算法最关键的初始化、私钥生成、加密、解密这4个步骤进行仿真,结果如图5∼8所示.算法在属性个数不断增加的情况下,消耗时间也随之增加.这是因为随着属性个数增多,算法需生成的属性值、密文组件及需解密的组件均随之增多.
图5 系统初始化时间Fig.5 Setup time
图6 私钥生成时间Fig.6 Private key generation time
图7 加密时间Fig.7 Encryption time
从以上仿真可见,当属性个数达到100,系统仍能够保持一个较短的运行时间,在实际应用中,数据属主可灵活设定访问策略,实现细粒度的访问控制.
图8 解密时间Fig.8 Decryption time
4 结束语
本文为面向云端辅助的工业控制系统的数据传输、存储、访问设计了一种安全机制,利用基于属性的访问控制方法,对用户进行身份授权及认证,为其与控制系统之间建立安全的通信连接,并对存储数据进行完整性检查,解决了数据的机密性、完整性保护问题.通过性能分析并与已有方案的比较,本方案的性能随着数据传输次数的增加(N >11),其优势逐步体现.