数字化车间信息安全机制的设计与实现*
2017-12-22孙砚辉毕筱雪刘劲松
孙砚辉,胡 毅,毕筱雪,刘劲松
(1.中国科学院大学,北京 100049;2.中国科学院沈阳计算技术研究所 高档数控国家工程研究中心,沈阳 110168;3.沈阳高精数控智能技术有限公司,沈阳 110168)
数字化车间信息安全机制的设计与实现*
孙砚辉1,2,胡 毅2,3,毕筱雪1,2,刘劲松1,2
(1.中国科学院大学,北京 100049;2.中国科学院沈阳计算技术研究所 高档数控国家工程研究中心,沈阳 110168;3.沈阳高精数控智能技术有限公司,沈阳 110168)
文章以车间管理系统为基础原型,提出了一种基于AES和MD5的多重加密解决方案。关键技术包括:在通信过程中使用SSL对传输通道进行连接加密,使用自定义的AES算法对网络传输中的数据进行加密,并且在发送端使用自定义的MD5算法对加密后数据生成数字指纹,在接收端同时接收到的加密数据使用MD5生成相同的指纹。通过指纹效验判断数据在传输过程中是否被篡改或丢失。此方案有效地消除了数字化车间管理系统中实时采集数据在端到端的通信传输中被篡改的可能,极大可能的提高了数字化车间管理系统的安全性和可靠性。
数字化车间;数据加密;通讯安全
0 引言
随着IT信息技术与传统自动化技术的不断融合,数字化车间管理系统也越来越趋向信息化和智能化[1-2]。在信息化过程中开始与互联网进行信息交换以此构建成基于工业管理控制的物联网体系,传统工业设备物理上的封闭特性已经被打破,工业系统正面临病毒,木马,网络监听,数据截取等安全威胁。这就给一些不法分子从通过互联网或者企业内部网路获取和篡改以及发送错误的指令到车间管理系统以及工业控制系统提供了可乘之机。
在网络连接过程中,网络连接容易被抓包和监听,通过替包会导致传输中的重要数据丢失或者被篡改。如果数据被篡改,那么车间管理系统将可能接收到错误的控制指令或不法意图的指令,从而导致工业系统故障,产生数据丢失,被篡改的风险,将会造成极大的破坏力和极强的影响力,严重情况下可能导致系统瘫痪或工业设备被远程控制,毁坏以及篡改生产数据信息。如果没有做好必要的安全防护工作,灾难来临时将束手无策,因此解决车间管理系统信息安全问题已经刻不容缓。
1 车间管理系统概述
基于互联网+物联网[3-4]的车间管理系统[5]使得车间管理者可以通过系统客户端远程监控整个车间机床设备的实时运行状态(系统框架如图1所示)。数据采集服务器把实时采集到的各种车床以及工业设备的实时状态数据存储到数据库服务器。车间管理者也可以在通过认证以后登陆到手机移动端的管理系统,在任何地方、任何时间掌握整个车间的工业设备运行状态。
图1 车间管理系统架构图
数据在服务器端与终端之间相互通信的过程中,数据信息很容易被监听或者篡改,会造成信息泄露或显示虚假数据(如果在工控领域可能接收错误的指令信息),从而给工业生产带来巨大危害和损失[6],所以为了保证终端与服务器以及工业设备和管理系统之间网络通信的可靠与数据安全,使用安全的通信连接和可靠的数据加密算法来保证通讯和数据安全非常必要。与此同时合理的使用数字指纹以保证加密数据的完整。
2 车间管理系统安全技术分析与设计
2.1 系统的安全技术分析
2.1.1 数据加密技术方式分析
数据加密技术[7]诞生已久,封建社会时期人们就使用各种数学计算或逻辑混淆的方式达到保存必要信息或物件的作用,例如著名的达芬奇密码。随着计算机的诞生各种适用于计算机信息加密的算法也应运而生。对于数据加密存在多种不同的算法,比较著名的有DES[8],AES[9]等对称算法以及RSA[10]等非对称公钥算法。在本文中我们主要以AES作为数据加密的基础算法。
计算机中数据加密出现在各个应用场景,包括但不限于文件系统,磁盘文件,内存,网络传输及内容片段。文中使用的场景包括但不限于主要以网络传输和内容片段为主的场景。
网络传输中加密数据包括但不限于:自定义协议报文字符串段,发送的文件,音频数据或音轨信号,视频数据。对于网络中发送的数据加密的实现方式如下:如果加密数据为报文字符串片段,那么在发送前对内存中的报文数据进行字符串段加密;如果为文件,则在读取文件后对文件进行加密然后发送,音视频以此类推。对于接收和解密过程与发送类似,先接收数据然后解密。
内存中加密为使用对应技术对指定内存的数据进行加密处理,以此来防止内存数据泄漏。使用的方式可使用自定义函数统一管理敏感内存数据。
2.1.2 网络通讯安全技术分析
网络通讯安全的主要技术方案主要体现在连接加密,连接隔离,以及网络流数据加密。应用的范围包括但不限于以下场景:
①隔离的网络连接,例如银行网络系统;
②安全的网络传输,例如SSL[11];
③网络流数据加密,例如字符串加密。
上述三条中①受限于ISP和设备物理环境影响,因此根据车间管理系统和工业生产设备的应用场景和技术需求,加密分别使用②、 ③项。文中我们使用SSL作为传输安全的技术方案。
SSL可在TCP/IP协议和各种应用层协议之间为通讯数据提供了安全支持。SSL的记录协议建立在第四层可靠的传输协议之上,为底层协议提供数据封装、加密等基本支持。SSL握手协议建立于记录协议之上,用于数据传输时的身份认证等场景。
网络中的数据一般泛指端到端传输的具体数据,使用SSL作为传输安全基础时传输数据也是被加密的,但多数开发会使用开源的SSL作为基础依赖,这种依赖导致原有的加密算法外泄,因此导致在到达接收端后得到密钥的情况下数据还是可能会被截取。因此数据的安全性无绝对可靠的保障。为了解决这个问题很多对安全高度要求的公司开始在元数据上着手。在使用SSL传输数据之前首先将数据使用非标准的加密算法加密。然后在基于SSL传输,双重保护。
2.1.3 指纹与签名摘要技术分析
数字指纹或签名算法是加密算法的一个衍生,用于对数据生成唯一的数字指纹或签名数据,不对数据本身进行加密处理,只生成唯一的指纹密钥,指纹算法具备长度固定,容易计算,抗修改以及碰撞概率小的特征。著名的算法例如MD5和SHA-1。文中主要以MD5作为指纹算法的基础。
MD5的作用是对一段数据产生摘要信息,以防止数据被篡改。MD5产生的摘要就如同人类的指纹,指纹的存在几乎独一无二。因此数字指纹可以保证数据的完整和安全。
2.1.4 加密算法与指纹算法双重加密分析
AES是美国联邦政府采用的区块加密标准,用于取代标准的DES。截至2006年AES已经成为全球对称密钥加密中最流行的算法之一。AES具备三种加密特征:①能最大程度抵抗已知攻击;②与平台无关,加密解密效率快,编解码紧凑;③设计简单。因此选择AES在不会损耗太多终端和服务器性能的情况下同时具备了较为可靠的数据加密方案。AES中混乱的密钥分散是分组密码算法设计的基本依据,抵御已知明文差分和线性攻击,变长密钥是设计重点。
作为标准的加密算法,各大平台或软件语言内部都集成了标准算法。但集成算法也存在一些安全隐患。在逆向工程中通过分析原始程序内存得到密钥数据并不困难,困难的是逆向出原始的算法。虽然AES作为某些场景的标准,但语言继承算法的通用性太强。因此通过源程序得到密钥然后在用语言继承算法尝试解密的数据破解方式仍然可行,并且太过容易。因此为了更好的安全性,需要自行开发或修改AES算法。
MD5算法同样避免使用标准算法或语言集成算法,从而避免指纹被篡改的可能。以此实现从数据到指纹的双重安全。
如果要保证车间管理系统和工业设备的信息化数据和通讯的安全、高效、完整上述方式可最大可能的降低系统资源占用和提供可靠的通讯保障以及数据安全与完整。
2.2 系统的安全设计方案
综合考虑,文中采用多重技术手段以保证不同应用和网络场景的数据安全的同时,给出了不消耗太多系统资源的高效加密方案(车间管理系统的多重加密过程如图2所示):使用SSL实现端到端的套接层加密,在保证传输安全的基础上使用自定义的AES算法对要传输的数据片段或文件进行加密,将加密后的密文使用自定义的MD5生成摘要指纹。
图2 多重加密流程图
AES与MD5的密钥只存在于端,网络传输数据中不存在于任何密钥信息。当收到信息后首先对传输的密文进行指纹计算,然后比对指纹是否正确,如果正确则表明数据未经篡改,否则表示数据丢失或被篡改。
虽然Java是Android系统预设的开发语言,但存在的安全隐患也是显而易见的。逆向编译和使用自带的通用性加密算法都是成为安全隐患的源头。因此使用C++底层库中间件以及自定义算法使用JNI调用是非常必要的手段。模块安全示意图如图3所示。
图3 模块安全示意图
3 多重加密方案实现的关键技术
3.1 SSL加密传输协议层
SSL是一个开放的标准,因此可以自己实现,除此之外还有很多开源的轻量级和重量级的库,例如CyaSSL和OpenSSL[12]。文中以OpenSSL作为SSL开发的基础依赖库。Java使用OpenSSL时,需要使用JNI的方式调用。在标准JDK中只是规定了JCE(Java Cryptography Extension)是一组包,它们提供用于加密、密钥生成和协商以及Message Authentication Code(MAC)算法的框架和实现。它提供对对称、不对称、块和流密码的加密支持,它还支持安全流和密封的对象接口。我们使用以下两种方式处理公钥和私钥:
(1)按流来读取:适合在Android应用中按ID索引资源得到InputStream的方式;
(2) 按字符串来读取:就像代码中展示的那样,将密钥内容按行存储到静态常量中,按String类型导入密钥。
SSL的使用过程如下两点列出:
(1)利用RSA安全传输AES生成密钥所需的Seed(32字节);
(2)利用AES_encrypt/AES_decrypt对Socket上面的业务数据进行AES加密/解密。理论上只需要AES就能保证全部流程,但由于AES加密所需要的AES-KEY是一个结构。这样一个结构,如果通过网络进行传输,就需要对它进行网络编码,OpenSSL里面没有现成的API所以就引入RSA来完成首次安全的传输,保证Seed不会被窃听。同样,只使用RSA也能完成全部流程,但由于RSA的处理效率比AES低,所以在业务数据传输加密上还是使用AES。
在实际的Socket应用开发时,需要将这些步骤插入到Client/Server网络通信的特定阶段。SSL技术方案流程图如图4所示。
图4 SSL技术方案流程图
3.2 AES加解密数据算法的改进
文中第二小节已经对AES算法进行了详细描述,本文仅对AES算法的改进要点做如下陈述:
(1)修改标准算法的安全哈希算法字典长度,随机修改一个基于264范围内的数值。只要不与开源的库中的数值相同即可,修改此值将导致加密结果与标准算法或多数开源库算法产生的结果出现最大可能的差异化,并且无法使用标准算法和开源库算法解密。但从内存中取得字典长度的并不困难,因此为了进一步加强安全,还需要进一步对算法修正。
(2)修改算法置换表,AES包含多种置换,包括但不限于初始置换,逆向初始置换,扩展置换。以及置换选择和位移规则。将出现置换的地方按照数组范围进行混淆,例如{14,4,13,1,2,15,11,8,3, 10,6,12,5,9,0,7 }进行数组置换实现与标准算法和开源算法不同的数组顺序从而产生截然不同的加密结果。
如果算法独立,那么表示无法与标准算法兼容,从而最大可能的提升算法安全。
3.3 MD5指纹摘要算法的改进
算法分析已经在第二小节进行了描述,有关MD5的安全同样存在类似AES的安全隐患。因此与AES采用相同的技术手段来防止MD5通过字典映射获取数据的可能。
MD5作为不可逆算法之一,有着高抗碰撞的特征,但作为通用和开放的标准算法,在开发时选择开源或语言自带算法会让系统安全性大打折扣。开源的算法和语言自带的算法由于其开放性,因此被最多的开发人员使用,也产生了最多的指纹字典。理论上MD5不可逆,但由于其通用特性已经存在很多的MD5指纹映射数据库,因此短数据通过数据字典映射比对的方式很容易得到元数据,因此自定义算法实现细节是必要的手段:
(1)修改置换数组组合,例如:FF(a,b,c,d, x[0],S11,0xd76aa478);
(2)修改输出字节序列。
经过上述技术手段,MD5算法的加密结果将完全不同于标准和开源库所产生的结果,以此防止通过字典碰撞来破解数据的可能。
3.4 系统全局安全技术的优化
在基于自定义的AES和MD5多重加密算法以外,我们需要对应用程序的体系结构做一些改变。带效验的安全函数接口以及受保护的内存地址都是非常必要的手段。程序模块安全设计技术方案如下两点:
(1)封闭的接口环境和App文件指纹效验,使用编译时App宿主文件MD5指纹,写入C++底层库,使用加密算法存储固定的位置,读取到内存时使用内存锁防止指纹密码被第三方程序读取。然后动态加载App宿主文件并产生指纹与保护内存中的指纹对比,若效验通过则开放AES加密接口,否则始终封闭接口函数。
(2)混淆底层代码。使用外围工具对底层生成库文件进行代码混淆加壳,使其PE发生变化,防止通过逆向手段分析底层代码。
通过上述技术手段可以最大可能的提升加密算法的私有化和安全系数的最大化提升。相比较开源算法有着逆向工程难度增加,封闭接口环境和加载模块效验杜绝了非法调用。非标准的加密算法加密的数据无法使用已知算法进行解密。以此最大程度的保护数据安全。系统全局安全技术设计如图5所示。
图5 系统全局安全设计流程图
4 性能测试
将本文的解决方案实现并进行测试,测试机床选用CAK3275 和 YM650,数控设备型号分别为 Faunc 0i 和蓝天数控系统。客户端的模块之一是对机床状态的实时显示,在无线局域网的环境下,对加密之前和加密之后UI界面(图6)。
图6 移动端运行图
系统中的安全设计会导致系统在多个用例中性能损耗,用例分别为SSL传输和加密以及指纹效验环节,有关各个用例性能测试参见下文详细用例环境测试报告。
用例1:SSL传输性能测试,测试环境为VS自带Android虚拟机,虚拟内存2G,分辨率为1920×1080。物理机处理器为intel i7 7700。测试方式为:使用SSL和不使用SSL情况下CPU处理数据效率,和网络发送速率对比。详细数据如表1所示。
表1 SSL使用与性能测试数据
表1中第2列处理数据最大值越大越好,表示CPU在最短的时间处理最多的数据。第3列网络耗时越低越好,表示效率越高。第4列数据长度越小越好,表示网络中数据流越小,速度越快。与此同时,SSL传输会将数据压缩,以减小体积。
测试结果:
CPU处理能力性能损耗为<=8%。
网络性能损耗: <=7%。
用例2:AES加密性能测试,测试环境如用例1一致。测试方式为,使用AES加密特定用户输入数据,然后输出十六进制密文,二进制密文,以及无格式密文和不使用加密的性能测试,测试数据表示处理用户数据所耗时间。详细数据参见表2。
表2 AES加密输出与性能测试数据
表2中第2列原输入表示用户输入数据长度,此数值无定义。第3列十六进制表示以十六进制输出加密密文,此处数值越低越好。第4列与第5列分别表示以二进制和无格式输出密文数据,数值越低越好。第6列为不加密输出,此列仅作标准参考依据。
测试结果为:
十六进制输出损耗:<=9%。
二进制输出损耗:<=25%”。
无格式输出损耗:<=8%。
用例3:MD5指纹效验性能测试,测试环境与用例1一致。测试方式为为数据数据生成指纹和不生成指纹的耗时以及数据数据长度和网络耗时对比。详细数据参见表3。
表3 MD5指纹效验性能测试数据
表3中第二列为使用MD5计算指纹CPU耗时,数值越小越好,第3、5、7列为标准参考数据。第4列为使用MD5后的数据长度,数值越小越好,第6列为使用MD5指纹时网络耗时,数值越小越好。
测试结果为:
使用MD5时CPU资源损耗为<=3%。
网络资源损耗为<=5%。
论证:整体性能损耗比分析结果为单例模式实验整体数据如下:
(1)计算资源损耗<=20%。
(2)网络资源损耗约为15%。
由于单例模式是对单一的场景进行性能测试分析,操作缺乏连贯性,因此CPU时钟存在空置可能,因此组合模式实验整体数据如下:
(1)计算资源损耗<=14%。
(2)网络资源损耗<=10%。
综合测试结果以组合模式为准,由此可见车间管理系统安全方案对于性能和网络损耗不高于15%,因此方案可行。
5 结束语
本文在车间管理系统的基础上,提出了基于AES和MD5多重加密的通信安全的可行方案,实现了工业设备与生产数据采集服务器以及管理客户端App的可靠交互。在不牺牲最大能效比的基础上保证了设备与网络数据的安全与可靠。文中方案使用的场景包括但不限于基于车间管理系统的的安全拓展以及任何需要安全通讯与数据的应用场景。本文以解决现有车间管理系统上的安全隐患为主要目标,以安全流程和模式为创新点。车间管理系统的安全拓展只是作为信息安全的一个缩影,本文以车间管理系统安全拓展模式来提供一个可靠的信息安全方案,可适用于其他需要的场景。随着信息化的越渐渗透人们的生活,数据安全变得越来越敏感,除了传输安全可能还存在存储安全问题,这些都是后期必要的研究方向。
[1] 周翀,张胤. 智能车间设备层网络信息安全防护体系研究[J].工业控制计算机,2016,29(6):61-62.
[2] 王松锋.机床数控系统安全功能的实现[J].装备制造技术,2013(3):180-182.
[3] Wei Z, Shi Q, Jia D. Design and Implementation of an Intelligent Information Integration System Based on Android Mobile Terminals[J]. Computer Science and Electronics Engineering, International Conference on, 2012:161-165.
[4] Peng Fu,Fan Xiao Ping.Research on Safety Monitor System of Coal Mine Based on EPA[J]. Advanced Materials Research,2012,433-440:6128-6133.
[5]罗企,于东,胡毅,等. 基于Android移动终端的车间管理系统的设计与实现[J]. 组合机床与自动化加工技术,2015(10):157-160.
[6]王金环. 工业控制系统中现场数据传输的安全性研究[D].锦州:辽宁工业大学,2015.
[7]朱晓晖. 基于多种加密体制的网络信息传输安全技术的应用研究[D].贵阳:贵州大学,2008.
[8] 宋慧敏. 基于MD5与DES的客户备付金存管系统设计与实现[D].太原:太原理工大学,2014.
[9]袁宗伟. 基于RSA和AES加密系统的网络信息传输的安全技术研究[D].西安:西安电子科技大学,2011.
[10]李宁. 基于DES-RSA混合加密算法的安全传输系统设计和实现[D].长沙:国防科学技术大学,2007.
[11] 张菊. SSL协议研究以及在远程医疗监护中的应用[D].成都:电子科技大学,2009.
[12]秦贞虎. 基于OpenSSL开发的聊天工具的设计与实现[D].成都:电子科技大学,2013.
DesignandImplementationofCommunicationDataSecurityModuleBasedonWorkshopManagementSystem
SUN Yan-hui1,2, HU Yi2,3, BI Xiao-xue1,2, LIU Jin-song1,2
(1.Graduate School of Chinese Academy of Sciences, Beijing 100049, China;2.National Engineering Research Center for High-End CNC, Shenyang Institute of Computing Technology, Chinese Academy of Sciences, Shenyang 110168, China)
This paper is based on the workshop management system, proposing a solution based on AES and MD5 multiple encryption. The key technologies: use SSL to encrypt the transmission channel during communication, use customized AES to encrypt the data in the network transmission and use customized MD5 generates digital fingerprints for encrypted data after encrypting the data at the sending end and generate the same fingerprint using MD5 for incoming encrypted data at the receiving end, through the fingerprint check to determine whether the data in the transmission process is tampered with or lost. This program effectively eliminates the possibility that the data collected by the digital workshop management system in real time is tampered with in the end-to-end communication transmission, which greatly improves the security and reliability of the shop management system.
digital workshop ;data encryption;communication security
TH166;TG659
A
1001-2265(2017)12-0156-05
10.13462/j.cnki.mmtamt.2017.12.039
2017-03-09;
2017-03-22
2016年智能制造综合标准化和新模式应用项目:面向智能制造的数控装备互联互通及互操作标准及试验验证
孙砚辉(1989—),女,河北衡水人,中国科学院大学、中科院沈阳计算技术研究所硕士研究生,研究方向为网络化的数控系统,(E-mail)99300120@qq.com。
(编辑李秀敏)