基于自主可控操作系统平台的电力监控系统安全防护技术

2022-08-09 00:53徐延明周立东
浙江电力 2022年7期
关键词:公钥证书程序

徐延明,许 艾,刘 刚,李 维,周立东

(1.北京四方继保自动化股份有限公司,北京 100085;2.北京四方继保工程技术有限公司,北京 100085)

0 引言

近几年,随着网络技术和软件技术的飞速发展,特别是电网公司对自主可控操作系统的不断需求,直接影响电网企业核心业务系统迭代更新的进度和安全[1-3]。随着电网公司加大对电力基础设施的投资,变电站一、二次设备国产化也在稳步推进,电力二次系统的安全性也越来越受到重视[4-6],因此,自主可控的操作系统必须具有高度可信性和安全性。Linux操作系统的全球性、开放性为电力系统提供了极大便利,基于开源的Linux系统研发自主可控的操作系统是各大国产操作系统公司首先考虑的方案[7]。

电力监控系统是国家电网公司重要系统之一,已建成以网络专用、横向隔离及边界防护为主的网络安全纵深防护体系。而近年来,网络攻击手段层出不穷,以“震网”“火焰”[8-9]等恶意代码为主要技术手段的攻击对能源等工控系统造成了极大危害,其破坏力极强,破坏过程也非常隐蔽,能够突破现有的“隔离、检测、查杀”等安全防护措施[10]。必须针对以上网络安全漏洞进行有效的防护,否则会造成设备误动、拒动,严重威胁电网的安全稳定运行。

本文提出基于自主可控操作系统平台的电力监控系统关键程序安全防护机制,基于国密算法与证书对电力监控系统的进程、动态库及组件等实现安全调用与验证,从而保证系统文件、数据的完整性和可用性。

1 电力监控系统安全现状

近几年,由于国内外安全形势日益严峻,我国越来越重视电力基础设施的安全,电力监控系统安全防护是以“安全分区、网络专用、横向隔离、纵向认证”[11]为防护策略,其核心内容是加强边界防护。采用基于边界保护的物理隔离无法有效抵抗高级病毒软件的入侵[12]。有关文献在电力监控系统通信安全方面进行了不少的研究[13-14],为后来研究者提供了大量的理论依据与实践成果,但电力监控系统本体安全方面的研究仍很少见。

国产自主可控操作系统大多基于Linux内核构建,ELF作为Linux下最主要的可执行二进制文件格式成为了病毒及各种恶意代码的攻击目标。入侵通过直接修改ELF文件的方法来实现,而Linux系统本身并不会对执行的代码进行完整性和合法性检测,因而让很多病毒程序以及木马程序有机可乘。电力监控系统程序、动态库、组件等基于代码签名验证是一种能够有效防止病毒以及其他恶意代码入侵的方法。因此,提出了一种基于ELF 文件格式的代码签名验证机制,通过提供更加灵活的分级验证方式,进一步提高验证效率,并且使系统在安全性与效率方面取得平衡。以自主可控操作系统为平台,采用操作系统内核对文件签名验证的安全机制,同时结合国产密码算法与调度数字证书安全技术,可实现电力监控系统本体安全。

2 SM2算法签名验证技术

近几年,中国密码管理局相继颁布了一系列国产密码算法标准,一些研究机构、大学及公司企业也依据标准研发了相应的算法,其中比较常用的有SM2、SM3、SM4 算法[15-17]等。这些算法都属于商业密码算法,其中SM2 是非对称算法,SM3是哈希算法,SM4是对称算法。

SM2 算法有多种用法,其中数字签名算法应用最为广泛,具体应用是由签名者通过算法对数据生成签名值,并由验证者通过算法验证签名值的真实性。签名者拥有私钥和公钥各一个,私钥用来产生签名,公钥用来验证签名。验证者获得签名者的公钥可以验证签名值。SM2 签名算法的应用要与SM3算法配合实现,可以通过SM3算法对待签名数据包计算杂凑值,再利用SM2 签名算法对杂凑值计算签名值。图1 是SM2 算法数字签名验证过程。

图1 数字签名及验证过程

调度证书系统是电力系统关键基础安全系统,能够为电力系统中的用户、关键网络设备、服务器提供数字认证服务。调度证书为电力系统与网络关键环节实现高强度的身份认证和安全数据传输提供了安全技术保证。图2所示为调度证书系统架构。

图2 调度证书系统

调度证书系统是基于PKI(公钥基础设施体系)[18]中的一个电力行业应用,而PKI是用来实现基于公钥密码体制的密钥和证书的产生、管理、存储、分发和撤销等功能。本文基于调度证书系统提供的调度证书与国密算法相结合来实现电力监控系统的本体安全,即在自主可控操作系统平台上,采用操作系统内核安全机制实现对电力监控系统中的程序、动态库及组件的安全签名与验证,确保电力监控系统安全的启动与运行,保证电力监控系统的完整性、可追塑性。

3 自主可控操作系统软件保护技术

近两年,随着电力二次系统的升级改造,国产自主可控操作系统受到电网公司的青睐并被大力推广应用,因此操作系统的安全机制也越来越被重视。在信息安全领域,数据的完整性、机密性及有效性是安全通信的三要素,可利用公钥密码安全机制来解决机密性、完整性和有效性问题。

本章主要从操作系统文件的代码签名验证、基于调度证书身份标识认证技术两方面阐述基于自主可控操作系统的软件保护技术。

3.1 自主可控操作系统特征

国内自主可控安全操作系统的厂家比较多,本节简要介绍在电力领域应用较广泛的凝思安全操作系统,其与普通Linux系统在安全性、功能方面具有不同的安全特征。

1)四权分立系统管理

传统Linux操作系统由一个超级用户管理,它具有超越系统所有限制的特权。凝思安全操作系统去除了超级用户,将系统管理功能分配给4个固有用户完成,即系统管理员、安全管理员、网络管理员和审计管理员。

2)可信进程白名单技术

凝思安全操作系统也研发了可信进程白名单安全技术。其借鉴可信计算技术原理,以软可信根的方式度量操作系统上运行的应用程序,具有白名单属性的进程可正确运行,有效杜绝了病毒入侵。

3)热备与互备

凝思安全操作系统提供多种热备、互备及服务自动切换机制。当单点服务器发生故障时,互备/热备服务器能够自动接管相应的服务,保证整个网络系统服务的连续,提高灾害发生情况下的可生存性。

凝思安全操作系统在行业应用领域提供了更多的安全特性,借鉴了等保2.0 规范的有关要求,更加适合在国内电力能源等领域的应用。

3.2 代码签名文件结构设计

Linux ELF 文件格式是一种用于二进制文件、可执行文件、目标代码、共享库的标准文件格式。ELF 文件格式灵活、可拓展、跨平台,它支持不同的字节序和地址大小,因此不会排除任何特定的CPU和指令集体系结构。ELF文件能满足可链接、可加载、可执行三大基本功能。ELF 文件由ELF 文件头、程序头部表、段、段名字符串表和段头部表组成,程序头部表用于描述0个或者多个内存段,段头部表用于描述0 个或多个段。ELF文件结构如图3所示。

图3 ELF文件结构

通过图3 可以看出,常规的ELF 文件没有签名数据段,本文根据安全需求设计出如图4所示的安全ELF文件格式,即在ELF文件尾增加签名数据段,通过增加签名数据段,在程序启动或加载过程中对程序的完整性进行安全验证,符合安全规则的程序允许启动运行。

图4 ELF文件安全结构

3.3 基于证书的签名验证流程设计

电力监控系统的核心程序和模块均以ELF 文件的方式存在。为确保系统的完整性、安全性,基于调度证书和国密算法对给定的可执行程序进行签名加固,同时应用Linux内核的安全机制对可执行程序的启动进行安全验证,只有合法、安全与完整的程序才可以启动。

3.3.1 基于数字证书签名的流程设计

为了实现电力监控系统关键程序、模块及动态库的安全可信,采用调度证书系统签发各环节证书,确保环节节点身份的真实性,同时结合国密算法SM2、SM3 对关键文件实施签名,确保电力监控系统核心模块程序的完整性、安全性。基于证书文件签名流程主要包括4 个部分,如图5所示。

图5所示的文件签名过程总体流程如下:

图5 文件签名流程

1)采用调度证书系统为自主可控操作系统平台签发平台证书,平台证书主要用于标识操作系统平台身份的真实性,同时也可以验证在平台上运行的电力监控系统身份的真实性。

2)电力监控系统若要在自主可控操作系统平台上安全运行也必须签发标识自己身份的证书,因此可基于操作平台证书为二级证书签发电力监控系统证书,电力监控系统中的核心程序、模块及动态库均采用监控系统证书签名,实现文件及整个监控系统的完整性和安全性。

3)采用国密算法SM3 对文件的程序代码段进行散列计算,通过SM2 算法的私钥对散列值进行签名得到签名值,把签名值作为单独的节附加到ELF文件的尾部。

4)将电力监控系统公钥证书作为单独的节附加到ELF 文件的尾部,用于验证步骤3)中生成的签名值。

上述4 个步骤详细阐述了ELF 文件的签名过程。另外,为了验证ELF 文件尾附加的电力监控系统公钥证书的真实性,则需操作系统平台证书对电力监控系统公钥证书进行验证,确保电力监控系统关键程序、模块及文件在操作系统平台中安全、完整地运行。

3.3.2 基于数字证书验证流程设计

操作系统执行或加载ELF 文件时,内核首先将ELF文件载入内存,解析出文件被保护信息(代码、数据等)对应的签名值与监控系统公钥证书,内核中的验证模块计算出被保护信息的摘要,再使用监控系统公钥证书对签名值进行验证,若验证成功,则ELF 文件未被篡改,ELF 文件的完整性是可以保证的。另一方面,内核中的验证模块还需要验证ELF 文件中监控系统公钥证书的合法性和真实性,同样内核验证模块使用内核信任的内置操作系统平台证书对监控系统公钥证书中的签名值进行验证,若验证成功,则说明ELF 文件是可信的、安全的,内核便开始启动并运行这个可执行程序。

在ELF 文件验证模块中,还有以下3 点需要注意:格式检查,判断该二进制文件是否符合ELF 格式,跳过所有非ELF 格式的文件;自身签名验证,如果文件符合ELF格式,则按ELF格式取出其中附带的数字签名并验证;依赖签名验证,如果ELF 文件依赖其他(共享对象)文件,则对其所有的依赖进行数字签名验证。

在ELF文件运行之前,还需对文件进行验证,若ELF 文件没有被签名或者签名验证失败则应停止运行本程序,若签名验证成功则可以正常运行。图6所示为ELF文件验证流程。

图6 文件验证流程

4 实验验证

为了更好地论证上述技术方案的可行性,以下从不同角度进行实验验证。

4.1 ELF文件运行验证

本实验主要用于验证两种情况的ELF 文件,一种是带有正确签名的ELF 文件可以正常运行;另一种是ELF文件未签名,运行失败。根据3.2.2节所述的验证流程,带签名的ELF 文件通过验证并正常运行,如图7所示。

图7 ELF文件正常运行

没有签名的ELF 文件未通过验证,打印错误信息,并中断程序的执行,如图8所示。

图8 ELF文件运行失败

4.2 算法抗攻击安全性测试

本文采用了国密算法SM2和SM3对文件的完整性进行保护。通过查阅有关文献可以得知,王小云教授等公布了MD5碰撞的新方法,利用该方法用普通PC机在几分钟内即可找到MD5的碰撞,因此MD5已不再安全[19-20]。采用国密算法SM2和SM3 比国际算法RSA 与MD5 在安全性与效率方面都有很大提升。本文对RSA、SM2、MD5 及SM3算法基于文件签名进行多次测试,结果如表1所示。

表1 算法比较

通过表1 可以看出,RSA 公钥算法的密钥长度有128/256字节,输出数据的长度为128/256字节,但在安全性和执行速度方面都比较低;MD5的执行速度比较快,但它的安全性比较低。因此,本文采用SM2和SM3算法,在安全性和运算效率方面均有一定的优势。

4.3 ELF文件启动效率验证测试

操作系统调用ELF 文件时,首先要验证ELF文件是否完整、可信,即带签名信息的ELF 文件与不带签名信息ELF 文件在启动时的时间开销存在差异,如表2所示。

表2 ELF文件执行时间比较

根据表2可以看出,没有签名验证的执行时间基本稳定在90~100 μs,加入签名验证机制后,系统调用的执行时间与程序代码段长度相关,比如tar 程序的代码段特别长,因此需要更长的时间来分配内存、计算哈希并验证。通过实验结果可以得出,基于自主可控操作系统上运行的电力监控系统的关键程序、模块及动态库可以实施签名,在这些模块启动时,由于加入了签名信息会有一定的延时,但程序启动并不是很频繁,因此在工程应用中可参考对关键模块、动态库进行签名。

5 结语

本文从自主可控操作系统文件的代码签名验证、为操作系统与电力监控系统签发身份证书以及基于国密算法与调度证书相结合的方式共同实施对电力监控系统的关键程序、模块及动态库文件签名,确保在自主可控操作系统平台上运行的电力监控系统的完整性及安全性。未采用签名认证的电力监控系统模块、被非法篡改的文件、被非调度证书系统签发的证书签名的模块都将被操作系统内核程序拦截,不能启动执行。

根据实验结果,采用国密SM2、SM3 算法与调度证书可以确保电力监控系统关键程序和模块的完整性、安全性及可用性。带签名文件在启动执行时会有一定的延时,但由于程序启动并不频繁,因此,在实际工程实施过程中可考虑对关键程序和模块实施签名认证,以保证电力监控系统的本体安全。

猜你喜欢
公钥证书程序
WJCI 收录证书
CSCD收录证书
收录证书
给Windows添加程序快速切换栏
收录证书
试论我国未决羁押程序的立法完善
神奇的公钥密码
“程序猿”的生活什么样
国密SM2密码算法的C语言实现
基于身份的聚合签名体制研究