0引言
电力二次系统是指各级电力监控系统和调度数据网络以及各级管理信息系统和电力数据通信网络构成的大系统,也是电力异构二元复合网络的关键节点。当电力信息网受到有意或者无意攻击时,信息网的故障可能会通过电力二次系统穿越信息网边界,波及电力物理网,进而导致故障在电力网出现连锁反应,在一些极端情况下,故障在两者之间交替传播,严重威胁电网安全运行。
随着电力二次系统安全防护系统工作的深入开展,众多学者在安全防护体系方面做了大量的研究工作。然而,现行支撑电力信息网的电力二次系统都具有自己的安全防护体系,对用户身份认证、资源授权、安全审计、用户管理等难以统一。一方面,当用户角色以及资源需要改变时,电力公司业务运作变得不够顺畅,导致业务流程被割裂,需要过多的人工介入,效率下降,数据一致性降低,使电力二次应用系统失去了应有的作用。另外一方面,安全防护体系公钥算法大多采用RSA算法。随着全球范围内密码技术的发展和计算能力的提升,现有的基于1024bit的RSA算法的密码体系已不能满足当前和今后的安全应用需求,尽管增加RSA算法密钥长度可以提高原有系统的安全性,但是密钥长度的增加会导致加解密速度降低、硬件实现复杂、基于RSA的传输协议在实际应用中存在不可忽视的时延,影响了服务质量,除此之外,欧美等国也限制密钥长度大于1024bit的RSA程序出口。全面采用国产通用算法,这是国家的要求,建立和发展基于国产通用算法的商用密码支撑体系和应用体系是关系国家信息安全的重要措施。2011年国家密码管理局下发了《关于做好公钥密码算法升级工作的函》(国家密码管理局函〔2011〕7号),规定2011年7月1曰以后投入运行并使用公钥密码的信息系统应使用SM2算法;同时,规定从2011年2月28日起在建和拟建公钥密码基础设施的电子认证系统和密钥管理系统应使用SM2算法,新研制的含有公钥密码算法的商用密码产品必须支持SM2算法,实现SM2算法逐步取代RSA算法,建立基于国产算法的密码支撑体系。因此,针对电力公司这种关系国计民生、社会稳定的企业,更加需要采用国产算法密码支撑体系,增强电力信息网的安全,防止有害信息和恶意攻击对电力网的干扰而引发的重大生产事故,保证电力生产和调度自动化系统的安全运行。
为此,本文提出了一种基于SM2算法密码体系的安全支撑平台的设计和实现方案。由于当前处于RSA算法向SM2算法过渡的时期,为了节约用户的硬件投资,减少系统的管理工作量,该平台同时支持RSA和SM2两种算法的密码体系混合使用,这样既不影响现有的业务,又可以满足政策的要求,并逐步淘汰RSA算法的密码体系,最终符合国家密码管理局密码管理规范的要求。基于该方案设计开发的安全支撑平台已经在某省级电网成功投入应用。
1椭圆曲线加密
椭圆曲线密码学(ellipticcurvecryptography,ECC)是基于椭圆曲线离散对数问题的一种公钥密码算法,国产SM2算法是具有中国自主知识产权并由国家密码管理局发布的公钥密码算法,是ECC算法的一种。相对于RSA算法,SM2算法具有以下优点:①安全性能提高,160bit的SM2算法的安全性与1024bit的RSA算法相当,而210bit的SM2算法的安全性则与2048bit的RSA算法相当在速度方面,不论是在密钥生成、认证及密钥协商方面,SM2算法相比RSA算法都有非常突出的优势;③存储空间小,SM2算法的密码一般为192〜256bit,RSA算法的密码一般需要为1024〜096bit;©国产算法,无国外可利用的后门。SM2算法和RSA算法的安全性能和速度性能如表1和表2所示,其中破译所需时间的单位年表示运算速度为106次/s的计算机连续运行一年。
为了提高电力二次系统认证平台的安全性,现行的及下一代认证平台和密钥管理系统必须使用国产SM2算法。下文涉及的加密设备(USBKey及加密卡)中都内置SM2算法,实现对用户身份的认证,杜绝密钥在客户端内存中出现的可能性。
2安全支撑平台的设计
针对电力二次系统缺乏集中管理和审计,本文设计了一种安全支撑平台,通过在电力二次系统之前部署一个这样的安全支撑平台作为应用网关,由平台提供安全可靠的身份认证、严格有效的访问控制与权限管理以及进行安全审计日志记录,并对用户信息及系统资源进行管理等功能。安全支撑平台系统结构和部署如图1所示。图中所示的轻量目录访问协议(LDAP)数据库用来存取用户信息和访问控制策略信息;①,②,③分别表示可信的第三方证书授权中心(CA)为用户、管理员和安全支撑平台颁发公钥证书;©表示安全支撑平台身份认证模块查询用户信息;⑤表示安全支撑平台授权管理模块查询用户角色信息表示安全支撑平台安全审计模块查询用户访问日志信息;⑦表示安全支撑平台资源管理模块查询电力二次系统的资源域等相关信息。用户通过电力信息网访问电力二次系统应用服务时,首先要通过安全支撑平台的身份认证并根据用户角色确定其访问权限后,才能访问相应的电力二次系统应用服务。系统管理员通过电力信息网来配置安全支撑平台和用户信息,完成添加、删除用户等操作,第三方CA为用户、管理员和服务器颁发公钥数字证书(PKC),并提供证书撤销列表(CRL)服务。LDAP数据库一方面为安全支撑平台提供用户信息和访问控制策略,另一方面实时更新CRL以确保用户身份的有效性。MySQL数据库一方面存储审计日志以及各个电力二次系统应用授权码等相关信息,另一方面实时更新应用授权码等信息,确保电力二次系统与用户身份映射的有效性。
安全支撑平台应用WebServices技术将身份认证、授权管理、安全审计及用户管理等功能封装为Web服务,利用LDAP数据库存储的用户身份、角色和访问控制等信息和MySQL数据库存储安全审计曰志以及各个电力应用系统的信息,方便电力二次应用系统的整合集成调用,从而实现统一认证、统一管理、统一授权和统一审计。
3安全支撑平台中SM2算法的应用
3.1 存在的问题
上述构建的安全支撑平台要支持国家商用SM2算法的数字证书,需要考虑两个方面的内容,即电力公司的公钥基础设施(PKI)系统是否可以发放支持SM2算法的数字证书,以及电力二次应用系统是否可以使用支持国家商用SM2算法的数字证书。对于是否可以发放支持国家商用SM2算法的数字证书,主要与可信第三方CA中心关联;对于是否可以使用支持国家商用SM2算法的数字证书,主要与数字证书和电力系统应用业务的整合集成相关。
1) 电力公司PKI系统是否可以发放支持SM2算法的数字证书。目前根据国家商用密码建设来看,支持SM2椭圆曲线算法的加密卡和USBKey以及加密设备的标准调用接口、证书格式等相关的标准规范基本制定完成,对于发放支持SM2椭圆曲线算法的数字证书的条件已完全具备。
2) 电力二次系统是否可以使用支持国家商用SM2算法的数字证书。现有基于RSA算法的安全支撑平台与电力应用系统集成整合,可以细分为客户端和服务器端两个部分:①对于客户端而言,应用环境是基于浏览器/服务器(B/S)架构,用户通过IE浏览器访问系统资源时,通过调用Microsoft定义的加密应用程序接口(CryptoAPI)调用加密服务提供者(CSP)组件接口,对客户端USBKey硬件加密设备进行调用,实现客户端的加密、解密、签名、验证等操作丨②对于服务器端(安全支撑平台或电力二次应用系统)而言,其Web服务器(例如Apache、互联网信息服务(IIS)等)可以通过安全套接层(SSL)协议与客户端实现传输信息的加解密,间接地实现身份认证,服务器一般调用标准的PKCS#11接口实现硬件加密卡的访问,提供加密、解密、签名、验证的服务。然而CSP和PKCS#11两类标准的接口中每个密码算法均是以国际标准化组织(ISO)建立的对象标识符(OID)值来进行区分,应用系统通过传递不同的OID值对不同的密码算法进行应用。因为国家密码管理局颁布的SM2算法是中国自有算法,加之Microsoft的Windows操作系统的垄断,SM2算法还没有被CSP和PKCS#11等标准接口包容,电力二次应用系统无法利用SSL安全传输通道传递算法OID值的方式实现对SM2算法的调用,使得支持SM2算法的数字证书无法直接在上述应用环境中使用,进而给现有安全支撑平台升级实现SM2算法带来了相应的困难。
3.2 解决方案
电力二次系统业务资源需要操作系统作支撑,然而主流的办公操作系统是Microsoft的Windows操作系统。Windows操作系统目前还不支持SM2算法数字证书的OID值,所以要求Windows操作系统支持中国颁布的SM2算法数字证书,使SM2算法数字证书得到全面的应用还比较困难。针对SM2算法数字证书的特殊性,结合对原有数字证书系统进行少量代码改造的原则,在客户端通过国家密码局颁发的加密设备应用接口规范实现客户端USBKey的调用,通过浏览器插件的方式实现接口包的下载,而不再借助Microsoft的CSP接口或国际PKCS#11标准接口。在服务器端,因为SSL协议不支持SM2算法,如果安全传输通道继续采用SSL协议,需要而且只能对OpenSSL(支持SSL协议的一种开源软件库)进行改造,虽然通过改造OpenSSL可以实现安全支撑平台升级SM2算法数字证书,但是会带来以下两个问题。
1) 改造OpenSSL需要修改大量源代码,工程量极大,而且这种方案只针对Apache架构的服务器,对IIS服务器或者其他服务器不适用。
2) 基于SM2算法的加密卡是国家密码管理局制定的接口标准,OpenSSL需要调用PKCS拈11标准接口的加密设备,因此,需要对加密接口进行相应的转换,需要相应组件对加密设备进行调用。
鉴于上述情况,加密通道不采用标准的SSL协议实现,而是基于组件技术自行设计安全传输通道,实现现有的安全支撑平台升级支持SM2算法。通过这种改变调用的方式,从而使电力应用系统可以使用SM2椭圆曲线算法的数字证书。
基于组件的开发技术是以嵌入后可立即使用的即插即用型概念为核心,以可重用为目的设计、封装的软件技术。通过采用安全组件技术改变对加密设备的调用方式,完成电力二次应用系统的PKI系统升级,实现SM2算法的数字证书。下面重点介绍客户端、应用系统及安全支撑平台部署相关安全组件的设计。
3.2.1客户端的iMidWare安全组件
iMidWare安全组件主要实现对SJK1134型USBKey进行调用完成用户身份认证,主要功能包括:建立用户端与平台的可信会话,管理用户认证会话及重定向,实现对加密设备的访问。
客户端部署iMidWare安全组件之后,客户端如图2所示包括SJK1134型USBKey和iMidWare安全组件、浏览器。
3.2.2电力二次应用系统的iAccount安全组件
iAccount安全组件主要实现对SJK0817-B型加密卡调用和对访问用户进行身份认证。iAccount组件为各种电力二次应用系统提供安全可靠的应用接入开发接口,是实现各种异构电力二次应用信息系统的基础。iAccount组件主要实现建立电力应用服务器与安全支撑平台的可信加密通信,管理用户认证会话及重定向,维护用户认证用户信息,为电力应用系统提供安全审计接口及资源授权接口。
系统管理员将电力应用服务资源映射成应用授权码,并将应用授权码存储于安全支撑平台及电力二次应用系统中,当用户对服务发起访问时,Account组件通过资源授权接口将应用授权码传递给安全支撑平台进行验证,确保授权用户能合法访问。
电力二次应用系统部署iAccount安全组件之后,电力二次应用系统如图3所示,包括SJK0817-B型加密卡、iAccount安全组件、电力二次应用系统Web服务资源。
3.2.3安全支撑平台及iServer安全组件
iServer组件是Web服务提供者对服务请求者的身份验证的接口程序,是一个能够处理用户访问的底层服务程序模块,主要实现处理用户对计算机或网络资源访问的请求,对用户身份和操作授权进行验证,通过检索资源授权库来决定用户的资源访问权限,同时对用户在电力应用系统中的活动进行行为记录。
部署iServer安全组件之后,安全支撑平台如图4所示,包括SJK0817-B型加密卡、iServer安全组件、核心服务模块。核心服务模块除了包括AAAA服务引擎之外,还包括支撑服务程序。支撑服务程序是其他基本功能模块的安全控制程序,负责其他模块之间的调度,同时又是远程网络安全访问的提供者。
3.3安全支撑平台的升级
采用SM2算法的安全支撑平台进行单点登录设计时,通过客户端浏览器部署iMidWare组件,安全支撑平台部署iServer组件,电力二次应用系统部署iAccount组件,实现自行设计安全传输通道替换原有安全支撑平台两个链路上的SSL协议加密通道,完成安全支撑平台升级,支持SM2算法数字证书。
1) 安全支撑平台与客户端的安全传输通道。客户端通过iMidWare组件和统一安全支撑平台Server组件,替换这条链路上的SSL协议加密通道。两者在安全传输通道进行双向身份认证,安全支撑平台将根据当前用户会话信息、用户基本信息、随机序列值等生成一次性凭证票据,由安全支撑平台证书签名后传递给用户端iMidWare安全组件。
2) 安全支撑平台与电力应用系统的安全传输通道。为了达到平台升级支持SM2算法,在安全支撑平台与电力应用系统分别部署iServer组件和iAccount组件,电力应用系统调用iAccount安全套件的证书认证接口来首先验证一次性凭证签名的合法性以及应用授权系统授权码的合法性。验证通过,安全支撑平台将用户属性信息和应用扩展信息(如账号、组织、单位等)签名加密后返回给电力二次应用系统。
基于SM2算法的安全支撑平台的架构及访问流程如图5所示。
1) 访问用户在客户端插入带SM2算法的USBKey,通过HTTP协议及数字证书登录电力二次系统,发起对电力二次系统的访问。
2) 电力二次系统服务器调用iAccount 套件证书,认证接口判断此访问是否经过认证,如没有通过认证,通知客户端的iMidWare组件自动重定向至安全支撑平台。
3) 安全支撑平台将根据提交的SM2算法数字证书验证用户,检查CRL、证书有效性、用户角色、用户权限等信息,并在认证日志中记录用户名、IP地址、时间、电力二次系统名称、登录方式、认证状态等信息。
4) SM2算法数字证书认证通过后,安全支撑平台将根据当前用户会话信息、用户基本信息、随机序列值等由服务器证书签名生成一次性凭证,传递给客户端。
5) 客户端通过iMidWare组件自动重定向客户端至电力二次系统,并提交这个一次性签名凭证。
6) iAccount套件证书认证接口首先验证一次性签名凭证,验证通过以后,将应用授权码和一次性签名凭证传递给安全支撑平台,以验证当前会话用户访问签名凭证的合法性以及电力二次应用系统授权码的正确性。
7) 验证通过后,安全支撑平台获取用户信息并进行加密,将加密用户信息签名后返回给电力二次应用系统,随即销毁一次性签名凭证。应用系统得到签名的用户信息后,验证该信息的真实性,通过后,解密用户信息,然后根据该用户信息登录电力二次系统。
8)确认用户身份,允许用户正常访问。
4集成应用及功能测试
该平台已在多个某省级电网投入运行,下面以为电网公司的电力营销支撑系统(包括营销信息管理系统、客户服务管理系统、营销质量管理系统、营销决策支持系统等)及周边的其他电力应用信息系统(负荷管理信息系统、能量采集系统等)构建“大营销”背景下的电力营销综合应用平台为例,说明安全支撑平台是如何在实际应用中解决多个电力信息系统集成问题,并对集成整合后的电力营销综合应用平台进行前后台功能测试。
电网公司的营销支撑系统及周边信息系统按照图5所示,分别调用lAccount组件接口,实现营销支撑系统及周边异构信息系统集成,完成电力营销综合应用平台的建设。构建的电力营销综合应用平台如图6所示。
4.1集成整合前台登录测试
本文是基于数字证书的认证方式对访问用户进
行身份认证,对电力营销综合应用平台进行前台登录测试,主要是验证访问合法用户是否能正常登录电力营销综合应用平台、防止非法用户进入,验证是否可以实现SM2数字证书的认证方式和用户在登录及操作时产生的用户信息能否正常保存在数据库中。通过获取链路中数字证书的公钥参数值,即OID值1.2.156.197.1.301(如附录A图A1所示),说明构建的电力营销综合应用平台可以升级实现SM2数字证书认证方式。
4.2 安全支撑平台功能测试
安全支撑平台借助于Web方式,对平台的身份认证、授权管理、安全审计、用户管理等功能进行测试,验证是否达到预期设计的安全应用需要。
4.2.1后台登录测试
安全支撑平台的后台登录测试主要包括对合法用户的正常识别和杜绝非法用户,其认证的Web界面如附录A图A2所示。通过查看平台的审计中心的访问认证日志(如附录A图A3所示),用户在访问电力应用系统或者安全支撑平台时,必须先通过安全平台的认证,才能对相应的资源进行访问和操作。
4.2.2 授权管理测试
安全支撑平台的授权管理测试包括资源域的添加、资源域的编辑、资源域状况等内容。授权管理通过管理员对用户角色添加资源域,实现资源的访问权限控制,其授权的Web界面如附录A图A4所示,对用户授权的资源经测试用户能正常访问,反之则不能访问。
4.2.3安全审计测试
安全支撑平台的安全审计功能测试主要包括查看和管理访问认证、资源授权等日志功能。经测试合法的安全审计员可以查看访问用户对系统资源的访问情况或管理员对用户授权管理情况等日志,而非审计人员不能操作安全审计中心的任何资源,进而无法篡改审计日志。附录A图A3描述了访问认证曰志情况,图A5描述了资源授权日志情况。
4.2.4 用户管理测试
安全支撑平台用户管理功能测试主要包括对角色管理、用户组管理及用户信息管理功能进行测试,用户管理员通过角色管理模块为系统管理员提供增加新角色、删除角色、修改现有角色的描述等操作。
实践表明,安全支撑平台为电力二次系统安全防护监管提供了有效的技术手段。一方面,运行人员可以通过安全支撑平台全面掌握电力二次系统安全状态,及时发现安全隐患;另一方面,安全支撑平台为电力二次系统提供了完备的、标准化的基础信息,便于进行安全审计。
5结语
通过统一安全支撑平台,将每个区目前分散的各个电力二次应用系统进行异构集成整合,实现用户统一身份认证、统一管理和统一授权以及统一审计,既能有效地保护电力二次应用系统又极大地简化了应用中访问控制和权限管理系统的开发与维护,并减小了管理成本和降低了复杂性。其次,本文采用国产SM2公钥算法,安全性更高,保证国家层面上的信息安全。因此,本设计既满足了电力二次系统的安全管理,又实现了信息安全产品的国有化,具有重要的现实意义。