APP下载

基于机密计算的工业信息系统应用研究

2022-04-07

水电站设计 2022年1期
关键词:机密网关密钥

宋 健 蛟

(中国电建集团成都勘测设计研究院有限公司,四川 成都 610072)

0 前 言

随着国家“十四五”规划的全面启动与“新基建”战略的提出,关键信息基础设施的智能化建设已经在国内全面实施。在关键信息基础设施中,工业系统无疑是最为关键的信息系统。其不仅在工业生产、数据采集、生产安全监测与预警等方面起到了决定性作用,而且关系着国家的发展和社会的稳定。例如,能源信息管理系统就是工业系统中使用较为普遍的信息系统,一个大型的省级能源信息系统具有很好的“承上启下”的作用,不仅涉及省级和各市州能源相关部门、企业数据的采集、汇总、监督、预警等,而且承担了国家、地区以及其他类型的工业信息的互联互通功能。因此,一个大型的能源管理信息系统可以构建能源信息的统一管理、统一分析,其不仅可以对各级系统进行统一的日常监管,还可以对异常变化进行预警,同时还能完成突发事件的响应,为决策定制提供依据。以四川省能源信息系统为例,系统网络拓扑结构如图1所示。

工业企业信息的互联互通,打破了之前各系统原有的“封闭安全性”,关于工业信息系统的安全性也成为了人们关注的热点。工业信息系统主要应用在电力、石油、核工业、化工等众多与国家稳定、国计民生息息相关的产业中,如若系统遭受黑客攻击,将直接影响国家安全与社会稳定。2010年6月,震网病毒被世人所熟知,这款专门针对核工业系统的病毒对伊朗的核工业基地造成了致命的打击,直接破坏了伊朗的核进程,同时也让世界认识到了工业系统安全的重要性[1]。已有大量的研究文献表明,工业系统正在成为或者已经成为了黑客攻击的首选目标[2],工业信息系统正在成为地缘政治博弈的新战场。过去几年,全球多个工控系统遭受了黑客的攻击,涉及电力、能源、核工业等15个行业。其中,在美国、委内瑞拉等国家的工业信息系统因遭受大规模的网络攻击造成了大范围的停工停产事故,产生了巨大的经济损失和恶劣的社会影响。而在中国,每年针对工业系统的恶意嗅探高达几千万件[2],因此,中国的工业网络正在面临非常严峻的安全形势。

图1 系统网络拓扑示意

传统系统的信息安全是围绕信息的机密性开展防范的,遵从机密性、完整性与可用性的优先级规则。但是,针对工业系统的攻击往往是以破坏其可用性为最终目的,因此,工业信息系统以保护系统可用性为最主要的目标,遵循可用性、完整性、机密性的优先级规则[3]。同时,工业系统具有“计算能力弱、存储资源不足、能量资源有限”等特点[4],这就造成针对传统信息系统的常规安全技术措施并不适用于工业信息系统。现阶段,工业信息系统的攻击主要是针对数据和控制指令的监听与非法篡改[5]。然而,由于现有的绝大多数信息系统采用的是基于边界的安全防护手段,黑客想要绕过边界安全设备,从而完成对数据的窃取和控制指令的修改是十分困难的。因此,黑客针对数据和控制指令的攻击首先需要进入系统内部,其次再完成对通信数据的劫持与篡改。不幸的是,黑客想要进入系统内部的方法有很多,常用的方法有:①黑客通过社交工程手段获取到内部用户的账号和口令,从而可以伪装成内部用户;②黑客通过其他手段,将恶意木马植入到系统内部,从而绕过边界安全设备,完成从内部发起的攻击;③黑客本身就是系统的特权用户或者超级管理员,从而可以轻而易举地对系统造成破坏。无论是通过对现有的工业系统安全案例进行充分总结,还是从信息安全的角度来看,从系统内部发动的网络攻击往往最为致命,破坏力也最强。因此,有效抵抗来自系统内部的攻击是目前工业信息系统亟待解决的问题。

1 机密计算

1.1 机密计算概述

众所周知,数据在信息系统中主要有3种形态,分别是存储状态、传输状态以及使用状态。目前,针对前两种状态的数据,已经有成熟的安全技术与数据加密方法对相关数据进行保护,但是,对于正处于使用状态的数据,并没有成熟、安全的方法进行防护。如果数据需要从存储状态或者传输状态转变成即将参与计算的运行状态时,其需要首先离开安全的存储环境或者完成数据解密后,才能参与计算。如果此时,数据进入一个危险的计算环境或者黑客突然出现并且窃取了相关数据,那么之前所有的安全措施都将会失效,数据的机密性则会遭到直接的破坏。由此,机密计算技术应运而生。

机密计算是将需要运行的数据隔离到一个受信任的执行环境,这个环境是一个严格基于硬件的执行环境,其通过预留的安全接口,将相关计算请求放置在安全区内进行运算。通过对处理器和内存的保护,机密计算可以保证运行程序在信任环境内安全执行,用以防止来自环境外部对运行代码的查看以及修改。机密计算可以将数据始终保持在强隔离的状态,从而保障了数据的安全性。机密计算可以简单抽象为一个黑盒,即将运行的数据放入受信任执行环境中,相关应用及用户需要将数据参与的运算加载至环境中,然后环境将运行结果返回给应用及用户,整个过程中外部应用或用户拿不到任何数据,如图2所示。

图2 机密计算示意

机密计算的引入,可以解决很多场景中“互不信任”的问题,例如组织之间的数据融合、密态数据库、多方协同计算、密钥管理系统、区块链中智能合约的隐私和机密性保护、AI数据训练中隐私保护的问题等。机密计算不仅可以保护高敏感数据(医疗档案、能源信息)等,还能协助保护与系统安全相关的关键数据(如访问控制列表、加密密钥、口令)。目前,很多厂家都推出了机密计算的解决方案,例如Intel 推出了SGX及MKTME,ARM推出了Trustzone,RISC-V推出了Keystone。SGX的特点是将内存地址划分为安全容器,从而有效保护地址内存中数据的安全性[6]。Trustzone主要的原理是通过采用时分复用的CPU,构造出两个界域,将CPU在一段时间内专门提供给某个特定的应用程序,针对安全性更好的数据进行相关运算,确保了运算数据的机密性[7]。

1.2 secGear计算框架

虽然目前各大IT厂商都推出了机密计算相关产品,但每个解决方案从原理和对外提供的接口都不相同,优缺点十分明显。例如,SGX在安全内存中嵌入了单独的汇编指令集来完成操作,通过EENTER、EEXIT等指令集进行enclave的进出和内存操作,这就使得SGX的并发性较差。而Trustzone主要通过总线对CPU时间片进行切换,它的部署方式则是需要在代码中完成相关定义,而交互方式则是需要通过SMC的指令通信,这就造成Trustzone的并发性比SGX还要差,但是由于Trustzone并不需要单独的机密计算芯片,所以其在实现机密计算的成本方面要远低于SGX。由于机密计算涉及的行业领域众多,每个应用场景对于机密计算的需求也各不相同,所以造成机密计算的兼容性差、维护成本高等问题。为此,华为公司独立自主研发出了自己的机密计算产品——secGear,用以解决这些问题。secGear可以通过全新的指令集与访问控制机制,实现不同程序间的运行隔离性,从而保障关键服务器的加解密代码、数据的机密性与完整性不被恶意程序破坏。

secGear框架包含Base Layer、Middleware Layer和Service Layer 3层架构,Service Layer层主要作为密钥管理服务。在这一层,secGear可以通过enclave提供相关增强应用,完成可靠的、安全性高的密钥生成与管理服务,解决很多应用程序在密钥处理时产生的成本高、安全性低的问题,常用的密钥管理方法虽然可以提供数据的加密保护,但是密钥本身的安全性并没有充分考虑,secGear可以将密钥加密后存储。因此,secGear在这层可以提供密钥的管理和权限控制等多重保护。Middleware Layer主要提供了密钥管理的接口、密钥交换协议、安全链路协议。在这一层架构中,secGear可以提供非常多的中间件,方便程序员在开发的过程中实现无感知编程。Base Layer主要作为代码辅助的中间生成工具,提供数据的密封和认证功能。secGear在这一层架构中提供enclave接口,使得用户可以开发出相应的安全程序,secGear架构如图3所示。

图3 secGear 架构示意

2 基于机密计算的网络安全结构设计

2.1 网络安全结构描述

在本文中,我们将工业信息系统的内网引入机密计算框架,以期完善传统的工业信息系统网络结构,增强安全性[8](见图4)。

(1)首先找到工业网络中通信线路汇聚最多或者较多的网络节点处,在图中定义为网关。这里的网关在实际的网络结构中可以不称作网关,凡是在网络拓扑中处于关键位置的汇聚节点,都可以等同于这里的网关。之所以需要找到网关,是因为机密计算服务器的部署成本较高,为了最大化提高整个网络的安全性能,降低部署成本,所以需要将机密计算服务器部署在整个工业系统中最为关键的位置。

图4 基于机密计算的网络示意

(2)在网关处,通过旁路连接的联通方式,将搭载secGear的机密计算服务器与网关旁路连接。这里之所以不采用直连的网络连接方式,是因为机密计算为了保障数据安全,需要建立enclave[9],这里会有一些额外的计算开销与通信开销,采用旁路连接的方式,可以减少由于机密计算服务器建立enclave对网络可用性造成的影响。

(3)在secGear机密计算框架中存放安全关键参数以及相关安全配置信息,例如网络通信主密钥、网络存储主密钥、访问控制列表、恶意代码特征库、异常行为库等。

(4)当用户需要访问工业终端时,首先需要向网关发送请求,通过内网链路将相关请求和参数传递给网关。

(5)网关在拿到相关参数后,将与安全相关的参数送入secGear机密计算服务器,例如:访问目标节点、代码特征、行为特征等。

(6)secGear在拿到相关参数后,在自己的受信任执行环境内对预执行代码进行相关特征的比对,对用户的访问行为与恶意行为特征进行比对,判断用户预访问的目标节点是否在其本来具有的访问控制列表中,完成相关加密密钥的读取,在受信任执行环境内完成数据的加密计算,最后将相关计算结果、行为特征判断结果、权限判断结果通过密钥完成加密后,返回给网关。

(7)网关在拿到secGear返回的结果后,决定是否允许用户访问相关工业终端。只有所有判断都符合安全规则的前提下,才能允许用户从终端处获取相关工业数据或者发送相关控制指令。

2.2 机密计算环境的设计与实现

2.2.1 国密SM3

目前,国家推出了《中华人民共和国密码法》,推广商用密码的应用已经成为了国家信息安全战略中的重要一环。因此,在本文中,我们使用了国产SM3算法,实现了基础的哈希算法,在secGear机密计算框架内自主实现了SM3算法。SM3算法适用于商用密码应用中的数字签名和验证,是在SHA-256基础上改进实现的一种算法。其采用Merkle-Damgard结构,消息长度为512位,摘要值长度为256位[10],SM3算法2012年被采纳为行业标准,2016年正式上升为国标,相关信息如表1所示[11]。由表1可以看出,国密算法的实现已经是国家相关信息安全战略中至关重要的一环。

2.2.2 基于secGear框架的设计与实现

本文采用MySQL作为数据库产品,所有设计到隐私的字段均首先在secGear机密计算框架中进行加密,再将加密后的密文存储至数据库中,用以保护数据的安全性。flask sqlalchemy在flask框架内使用MySQL命令对数据库进行增、删、改、查等操作。本文通过将一些关键步骤调用secGear框架,最大限度平衡了安全性与可用性。通过C++在secGear框架中编写了SM3、RSA等基础操作组件,部分实现代码如图5所示。

表1 SM3对应的国家/行业标准

2.3 安全性分析

在现有的工业系统网络结构中,一旦内部网络发起安全攻击,整个工业系统安全性将会遭受致命打击。针对内部特权用户、数据的监听与篡改以及恶意代码感染等攻击方法,现有的工业系统网络结构不能有效抵抗。现提出基于机密计算技术的工业系统网络安全结构,能够有效抵抗这几类攻击,相关安全性分析如下。

2.3.1 特权用户攻击

一旦超级管理员或者相关特权用户转变成黑客,即可试图发起对内网系统的攻击。在现有的工业系统中,用户的访问控制列表、行为特征库、恶意代码库都可以被特权用户更改,从而使现有的安全措施失效,完成内网攻击。在该安全架构中,由于所有安全关键信息秘密保存在secGear服务器中,特权用户对secGear服务器保存的安全信息不能读取,更不能更改,最大限度限制了特权用户的权利。因此,这种网络安全结构可以抵抗特权用户攻击。

2.3.2 内部恶意代码攻击

在现有的安全案例中,网关可以通过U盘、建立的私有VPN通道感染外部的恶意代码,例如震网病毒、网络蠕虫病毒等。在现有的工业系统中,一旦内部感染了恶意代码,恶意代码通过提权等方式可以首先破坏恶意代码的特征库,从而完成对整个内网的绝对控制,读取相关机密数据。在此网络安全结构中,由于恶意代码存储在secGear中,因此恶意代码库不能被读取,更不能被非法篡改。其次,由于机密数据存储在secGear中,因此外部应用程序无法读取到相关内存地址,从而保障了机密数据的安全性。因此,这种网络安全结构可以抵抗内部恶意代码攻击。

图5 secGear内SM3部分实现代码

2.3.3 数据的监听与篡改

现有的工业系统都是明文存储数据的加密通信密钥,如果黑客进入到了系统内部,获取了相关通信密钥,那么他就可以完成对内网数据的监听与篡改,从而达到对工业系统完成破坏的目的。在此网络安全结构里针对数据的加密/解密密钥机密存储在secGear中,由于其从不离开相关受信任的执行环境,因此,黑客无法拿到相关密钥,从而不能完成对内网数据的监听与篡改。

3 结 论

基于机密计算的工业信息系统网络安全结构,通过首选国产的机密计算技术secGear来辅助完成网络拓扑结构的部署,同时实现了过程SM3算法替代了其他哈希算法。其次,通过采用旁路连接的网络通信方式,最大限度保障了工业信息系统的可用性,最后通过安全性分析,证明了该网络安全结构可以有效抵抗来自内部系统的特权用户攻击、恶意代码攻击以及数据的监听与篡改,证明了该网络安全结构相较于之前的传统拓扑结构可以提高网络安全性。未来的研究将会继续完善机密计算的使用,争取能够为推广机密计算技术提供理论依据。

展开全文▼
展开全文▼

猜你喜欢

机密网关密钥
基于FPGA的工业TSN融合网关设计
幻中邂逅之金色密钥
幻中邂逅之金色密钥
一种主从冗余网关的故障模式分析与处理
密码系统中密钥的状态与保护*
TPM 2.0密钥迁移协议研究
基于6LoWPAN的嵌入式多网关系统设计与实现
天地一体化网络地面软网关技术及其应用
爱宠大机密
魔法洞大探险之四 机密,机密!