面向智能产线的R-ECC身份认证方法①
2020-09-22杨东升高珊珊尹震宇李明时柴安颖廉梦佳
杨东升,高珊珊,尹震宇,李明时,柴安颖,廉梦佳
1(中国科学院大学,北京 100049)
2(中国科学院 沈阳计算技术研究所,沈阳 110168)
随着“工业4.0”及“中国制造2025”的推进,智能制造成为当下工业的发展趋势,而工业物联网智能化生产线作为智能制造的重要一环,更是如今的研究热点.5G 通讯时代的到来,为工业控制由现场转为远程提供了更好的通信基础,平板电脑、手机等的高速发展也为工业物联网的许多控制软件在移动端的部署上奠定了基础.在工业物联网智能生产线的课题研究中,为实现产线状态的实时可视化与远程操作的便携性,将智能产线的客户端部署到移动端上.针对产线的数据采集以及数据集成问题,本课题采用OPC UA 架构,具体的课题环境如图1所示.OPC UA 作为由OPC 基金会提出的最新一代数据集成标准,在工业物联网中发挥着越来越大的价值.在国内,近几年随着工业物联网的不断推进,关于OPC UA 的研究也越来越多.文献[1]设计实现了OPC UA 客户端的搭建,通过客户端与OPC UA 服务器进行通信,实现了OPC UA 规范中的数据读、写、订阅等服务.文献[2]针对目前制造企业信息系统与物理系统严重分离所产生的信息孤岛问题,搭建了一套基于OPC UA 的质量数据监测系统,完成了OPC UA 客户端和服务器的设计与开发.而这些应用软件都是面向资源限制较少的PC 端进行实现的[1,2].
图1 智能产线系统架构
1 OPC UA 安全模型
OPC UA 架构为保证会话的安全性和可靠性,定义了一个分层的安全架构.最上层是应用层,用来以会话的方式在客户端与服务器之间传递信息.会话服务中提供了用户认证和授权,也可以用于对某个产品进行认证和授权;而OPC UA 的会话机制需要运行在安全通道上,通道的安全由通信层来保证,主要通过数字证书签名和加密传输信息的方式来进行客户端与服务器端的双向认证;底层的传输层利用socket 来进行大量信息传输[3,4].该安全架构如图2所示.
图2 OPC UA 安全架构
OPC UA 在建立安全通道时,为保证通信层的安全,其安全模型是基于公钥基础设施(PKI)进行数字证书的管理,数字证书中记录了客户端和服务器的公钥信息、签名信息等,通过权威的第三方机构,即认证中心进行签发[7].而在OPC UA 中利用数字证书进行加密通信目前普遍是利用了RSA 公钥密码体制,在安全通道的创建过程中,利用RSA 算法的公钥和私钥进行加密和解密从而实现客户端和服务器端的双向身份认证,并在身份认证通过即安全通道建立之后派生对称密钥来代替更消耗CPU 非对称密钥,用于加密和签名后续信息.应用层的会话必须建立在通信层安全建立的基础上,以此来保证所传输的用户口令信息的安全性.安全通道的创建如图3所示.
图3 OPC UA 安全通道创建过程
2 面向智能产线移动终端的R-ECC 身份认证方法
本文所提出的面向智能产线移动终端的R-ECC身份认证方法,是在符合OPC UA 安全架构的基础上,基于椭圆曲线密码体制进行密钥协商创建安全通道,并在安全通道的基础上创建会话,实现一次一密,保证客户端和服务器的安全通信.面向智能产线移动终端的R-ECC 身份认证方法的逻辑图见图4.
智能产线移动终端与OPC UA 服务器建立连接过程如下:
先做出一系列假设:E为系统选定的椭圆曲线,G为基点,n为椭圆曲线的阶;h为具有单向性和可碰撞性的哈希函数,f是椭圆曲线上的点到定长二进制的映射函数;移动端标识IDc,私钥dc,公钥Qc=dcG;OPC UA 服务器端标识IDs,私钥ds,公钥Qs=dsG.移动端和服务器都拥有由认证中心颁发的证书,但都还没有获得对方的证书.移动端输入的用户凭证设为用户名id,密码pwd.R-ECC 身份认证方法的认证过程见图5.
图4 面向智能产线移动终端的R-ECC 身份认证方法
图5 R-ECC 身份认证方法的执行过程
(1) 验证OPC UA 服务器应用实例证书.移动端将其客户端标识IDc发送给OPC UA 服务器,获得服务器的响应,该响应中包含了服务器标识IDs以及公钥证书,移动端验证该证书,包括检查证书是否在有效期、验证CA 签名等.
(2) 密钥生成.若服务器证书值得信赖,移动端使用其私钥dc,并从服务器证书中提取服务器公钥Qs,计算得到Q=dcQs=dcdsG,k=f(Q).移动端生成随机数r1,并将IDs⊕r1,移动端应用实例证书发送给服务器;服务器收到移动端的消息,首先验证移动端的证书,若证书可信则通过IDs⊕r1⊕IDs得到r1的值,利用服务器端私钥ds,移动端公钥Qc,计算Q=dsQc=dsdcG,k=f(Q) .服务器选择随机数r2,计算hs=h(k||r1),并且把IDc⊕r2,hs发送给移动端.
(3) 密钥协商.移动端收到服务器的消息,计算h(k||r1)的 值,将其与hs进行比较,若相等,则验证通过,反之不通过.验证通过后,移动端计算hc=h(k||r2),并将hc发送给服务器;服务器收到移动端的消息后,计算h(k||r2)的 值,并将其与hc比较,然后将比较的结果发回给移动端.
没有规范化的程序就难以形成科学的社会福利政策质量评价,严格按法定程序办事可以大大减少决策的随意性和人为因素的干扰,保证政策评价的客观、公正和科学。保证评价程序的规范化,首先,构建程序化的评价体系。根据科学评价的要求严格规范政策评价过程,构建从预测评价、执行评价到结果评价的完整社会福利政策的评价体系;其次,实现政策质量评价的程序化。既要对整个过程的步骤和环节做出相互衔接的制度性规定,同时,也要对每个基本的环节在经验积累的基础上做出具体的操作性规定,特别是对于那些复杂的、涉及全局的政策质量评价,更要每个环节做到细致入微⑤。
(4) 生成会话密钥.若(3)中的比较结果相同,则移动端和服务器均计算K=h(k||r1||r2),作为其以后传输大量信息所使用的的会话密钥.
(5) 加密口令.用户与移动端进行交互,从登陆页面输入用户名和密码,移动端将输入的信息以EK(id,pwd)(EK表示通过会话密钥K进行加密),id⊕h(pwd)的形式发送给服务器.
(6) 验证口令.服务器收到消息后,首先利用会话密钥K对消息进行解密,得到id,pwd的值,查看数据库表中是否有该id,若存在,则利用哈希函数计算h(pwd)的 值,再通过id⊕h(pwd)⊕id计算得到h(pwd),最后再从数据库中取出相应id对应存储的h(pwd)的值,三者进行对比.
(7) 若(6)中三者对比的结果是相同的,则表示验证成功,移动端和服务器建立连接,服务器中的过程信息就可以被移动端成功访问到.
上述认证过程在利用椭圆曲线进行密钥生成时,其理论基础就是椭圆曲线上的点乘运算.而点乘运算在椭圆曲线上面定义为重复相加,即mP=P+P+···+P(m个P),遵循椭圆曲线的加法法则,故点乘运算的结果依然是椭圆曲线上的点[8].如果设G是椭圆曲线上的一个点,则选择一个正整数n与其相乘,则T=nG仍在椭圆曲线上.在已知T和G的情况下,是很难算出正整数n的值的.这就是著名的椭圆曲线离散对数问题.该问题在多项式时间内无法被破解,也就是说即使公钥在消息传递过程中被截获,其计算私钥的时间复杂度也是指数级别的,就算是借助超算资源,也无法在短时间内完成密钥破解.
对应于上述认证过程,此处n就相当于私钥dc或ds,T就相当于公钥Qc或Qs,在图5中智能产线移动端与服务器通信过程中,箭头上的信息即在通信过程中暴露在网络中的信息.可见,在消息传递的过程中,即便公钥被截获,也很难算出私钥的值,再加上异或运算以及哈希函数的验证,这就保证了密钥协商过程中消息传递的安全性.另一方面,在上述认证过程中,由于随机数的加入,使得每次密钥协商得出的会话密钥均不相同,保证用户口令在传输过程中的安全性,且用户口令在存储过程中使用哈希函数进行加密,保证了其存储的安全性.
3 实验与分析
3.1 可行性验证
在Android 系统上进行所提出的身份认证机制的可行性验证.使用开发工具是Android Studio3.0.1,模拟器版本为Nexus 5X API 27 (Android 8.1.0).所用椭圆曲线为elliptic curve 25519,使用SecureRabdom 来获取随机数.通过密钥协商获取到会话密钥以后,使用AES CBC 256 位元加密/解密,使用PKCS5 填充方式,哈希函数h舍弃常用的MD5 而选用SHA-256,因为对于MD5 算法,网上已经有很多可以查询的字典库,安全性不高.如图6给出基于R-ECC 的智能产线移动终端身份认证方法在Android 客户端上的实验结果.
实验结果表明,本文所提出的面向智能产线移动终端的R-ECC 身份认证方法可以Android 上应用,实现智能产线Android 客户端与服务器的安全通信.
3.2 性能分析
3.2.1 安全性分析
(1) 实现双向认证.实验利用所提出的R-ECC 身份认证方法,实现了智能产线移动端和服务器的双向认证,并且通过密钥协商,计算出共享密钥作为OPC UA 会话创建过程中的会话密钥.
(2) 抵抗中间人攻击.本文所提出的R-ECC 身份认证方法是基于ECC 算法,相比于RSA 算法,它的破译难度非常高[9],抗攻击性更强,只截取到中间传输的信息,几乎不可能算出私钥或共享密钥,安全性更高.
(3) 抵抗重放攻击.在密钥协商以及用户认证的过程中,都加入了随机数,使得即使知道了以前的密钥也无法重新使用,有效防止了重放攻击.
(4) 密钥前向安全.由于随机数的加入,使得每一次会话密钥均不相同,如果移动端或者服务器的私钥甚至某次会话密钥被窃取,也无法推断出之前会话的密钥,所以密钥具有前向安全性.
(5) 安全的数据库存储.在用户口令的传输过程中,对用户密码直接进行了加密,并且在数据库中存储的也是用户密码经过哈希运算的值,保证了用户口令的安全性.
图6 可行性实验测试结果
3.2.2 效率分析
(1)移动设备的加解密计算能力有限,内存和联网带宽都受到一定限制,故所提出的面向智能产线移动终端的R-ECC 身份认证方法不再采用OPC UA SDK包中普遍采用的RSA 公钥体制,而是采用基于椭圆曲线的R-ECC 密码体制,不仅提高了系统的安全性,并且在同等安全强度下,其密钥长度要更短,对存储空间的要求更低[10].具体数据见表1.
表1 ECC 和RSA 安全模长(公钥长度)的比较(Bit)
利用Android Studio3.0.1 自带的Android Profiler工具分别对在OPC UA 架构中,基于R-ECC 进行智能产线身份认证以及基于RSA 进行智能产线身份认证两种方案的认证过程中硬件资源消耗做对比.对比方法是两种方案分别进行3 次身份认证连接,记录认证过程中每种资源消耗的增长量,并对每种资源3 次消耗量做均值计算.对比结果表明,基于R-ECC 的智能产线身份认证方法在CPU 资源、内存资源以及网络资源的消耗上都具有一定的优越性.对比结果见表2.
表2 R-ECC 和RSA 两种方案资源消耗对比
(2)在Android Studio3.0.1 中,基于同一安全级别128,同一用户,对所提出基于R-ECC 的智能产线移动终端身份认证方法和OPC UA SDK 包中所采用的基于RSA 的身份认证方法的认证成功时间作对比.通过系统运行日志获取用户认证开始和结束时间,反复进行3 次实验,计算得出认证所需时间,具体数据见表3.
表3 用户认证成功时间测试(ms)
实验结果表明,所提出的基于R-ECC 的智能产线身份认证方法在智能产线Android 客户端中的认证效率较快,适用于移动端.从理论上分析,一方面,ECC 在解密、签名、私钥的处理以及密钥生成速度上,都比RSA 快得多;另一方面,在认证过程中,基于R-ECC的OPC UA 身份认证方法在用户认证过程中除了证书验证,只涉及到两次椭圆曲线上的点乘运算,其他运算都是运算量较小的哈希函数、随机数生成和异或运算,所以基于R-ECC 的面向智能产线移动终端的OPC UA 身份认证方法在移动端上的认证效率是很高的.
4 总结
本文在智能产线移动终端的设计与实现中,应用OPC UA 架构,研究实现了一种面向智能产线移动终端的R-ECC 身份认证方法.该方案在身份认证过程中运用椭圆曲线密码学,并在密钥协商在过程中引入随机数、哈希函数等,不仅降低了OPC UA 架构应用于智能产线时在无线通信中的资源损耗,而且提高了认证的安全性和认证速度.通过实验验证表明,所提出方案在工业物联网智能产线移动终端的课题研究中,适用于Android 客户端与智能产线OPC UA 服务器通信过程的身份认证,实现了移动端与服务器之间的双向认证,安全的消息交换,安全的本地存储,满足移动端轻量级、低功耗以及安全性要求高的特点.本文所提出的R-ECC 身份认证方法也为OPC UA 安全通信的改进提供了新的思路.