一种基于数字证书的软件安全分发方案

2019-11-12 02:18许庆光李孟君
网络安全技术与应用 2019年11期
关键词:服务端客户端证书

◆丁 涵 许庆光 李孟君

(海军研究院 北京 100841)

软件作为信息系统的核心,决定着信息系统的安全。当前,软件的运行和开发环境从传统静态封闭的状态变成互联网环境下动态开放的状态。越来越多的软件漏洞和缺陷被发现并被恶意攻击者利用。如果不能保证软件来源的可信性及传输过程的安全性,即使在信息系统内部做了很多防护措施,仍会导致防护措施形同虚设。本文提出一种基于数字证书的软件安全分发方案,保证软件在下载、安装和使用过程中的安全性。

1 软件安全分发系统结构

软件安全分发系统拓扑结构如图1所示。

图1 软件安全分发系统拓扑结构

软件安全分发系统包括数字证书认证机构(CA)、源服务器、软件发布系统服务端和软件发布系统客户端组成。CA负责证书库的建立和维护、设备及用户证书的签发和管理、证书撤销列表的发布和管理;源服务器负责对基于不同Linux发行版本的操作系统及不同处理器架构的平台上运行的软件进行统一的管理;软件发布服务端是用户终端下载软件的唯一来源,负责软件资源的检测、录入和分发;用户终端运行软件发布系统客户端,负责对软件发布服务端下发的软件资源进行验证、安装、更新和卸载。

软件发布系统服务端架构如图2所示。

图2 软件发布系统服务端架构

软件发布系统服务端由软件安全检测模块、证书管理模块、软件管理模块、访问控制权限管理模块和软件发布模块组成。其中软件安全检测模块负责对通用软件进行恶意行为检测,避免将病毒、木马、蠕虫引入信息系统内部。软件管理模块负责软件资源的录入。证书管理模块负责对用户平台的用户证书进行管理。访问控制权限管理模块负责对每个软件资源设置对应用户可读、可执行的权限。软件发布模块负责对软件资源进行集中发布或授权发布。

软件发布系统客户端架构如图3所示。

软件发布系统客户端由用户注册模块、软件下载管理模块、软件安装模块、软件运行监视模块和软件资源库组成。其中用户注册模块负责向服务端上报用户的身份信息,包括终端唯一标识号、用户名、口令、用户身份证书、IP地址等。软件下载管理模块负责对服务端分发的资源进行下载存储。软件安装模块负责对软件资源进行验证并安装。软件运行监视模块负责监视软件行为,阻止越权等非法操作,保证软件实时行为符合预期。

图3 软件发布系统客户端架构

2 关键技术

2.1 证书管理

为了便于验证用户身份的合法性,需要进行证书管理。证书管理模块由证书数据库、证书业务管理模块和自身证书分发模块组成。用户在软件发布系统服务端注册信息时向服务端提交用户身份证书,软件发布系统服务端提取用户身份证书序列号后建立与用户名之间的对应关系表,再与用户身份证书一并录入证书数据库中。证书业务管理模块提供证书查询、证书导入、证书更新、证书撤销、证书状态管理等服务。管理员可通过证书查询服务根据证书序列号查询到对应的证书;可通过证书导入服务将离线用户的身份证书导入到数据库中;可通过证书更新服务、证书撤销服务同步更新证书数据库中的信息;证书状态管理服务对证书的使用状态(如更新、撤销)进行实时状态更新,为服务端在检测用户身份证书有效性和合法性提供依据。当软件发布系统服务端自身的设备身份证书更新时,需要通过在线分发或离线导出的方式将证书提供给所需节点。

2.2 软件开发阶段管理

目前软件之所以频频遭受攻击,引发无数安全问题,其根本原因在于软件在设计之初没有或无法充分考虑软件自身运行环境及外来干扰的复杂性,导致软件存在设计缺陷或漏洞,在面临异常环境时无法按照预期行为轨迹运行,从而造成软件行为可信性无法得到保证,可能会出现如下问题:

(1)软件停止运行或无法完成指定的功能;

(2)软件(特别是重要控制软件)运行异常导致安全事故;

(3)软件漏洞被利用,导致软件运行时的系统被非法控制。

因此,为了确保软件的安全性,不仅要确保软件数据完整性,必须还要确保软件行为的完整性,即软件在实际运行过程中所产生的行为与软件预期行为是一致的,或者说其行为没有被非法启动和终结,也没有被非法改变。

软件进程是软件行为完整性认证的主体。软件进程在运行过程中,不可避免地要读取、写入或执行各类客体。在对这些客体进行操作的过程中,为了确保软件行为的完整性,避免出现预期之外的行为,必须对这些客体进行相应的认证和控制。这就需要在软件的开发阶段对软件的安全性进行严格的管控。基于这方面考虑,需要制定软件安全标签声明,能够有效反映软件的特征信息,并保证其完整性和真实性,内容包括软件的完整性信息和授权操作表(包括读、写、执行等操作行为)。由软件开发单位在软件开发结束后生成,作为软件在分发、安装和运行过程进行检测和鉴别的依据。

2.3 软件入库阶段管理

根据软件用途的不同,可将软件类型分为三类,一是通用软件,二是专用软件,三是系统软件。通用软件为面向系统内所有用户的常用应用软件,如办公软件或工具软件;专用软件为面向系统内部分用户的软件,如一些业务系统软件;系统软件为操作系统镜像文件及升级包。

对于通用软件,在入库前可采用基于沙箱的行为检测方法或其他方法进行恶意代码检测,只有通过检测的软件才可录入至软件发布系统服务端。对于专用软件,只有包含软件可信标签声明的软件才可录入至软件发布系统服务端。

为了能够对不同类型、不同版本的软件进行统一管理,软件录入信息主要包括:软件类型标识、软件名称、描述信息、软件版本、提交人、录入日期等等。

2.4 软件分发阶段管理

对于类型为通用软件的软件,软件发布系统服务端可以采用对软件签名发布的方式进行集中分发,在软件发布之前利用自身设备身份证书对应私钥对软件资源及录入信息进行签名,发布时将软件与签名打包下发至用户。

对于类型为专用软件和系统软件的软件,由于其适用范围不同,需要由软件发布系统服务端进行授权分发,实现授权分发主要从两方面考虑:一是用户登录软件发布服务器后只能看到对应该用户的软件列表,无法查看到其他用户的软件列表;二是从其他平台上复制过来的软件也不能被安装。

针对第一种问题,可以在服务端选择软件发布对象的同时设置用户访问控制权限列表,对每个软件资源设置对应用户可读、可执行的权限,在服务端与客户端在线连接的情况下,客户端登录服务端只能访问到允许该用户可读、可执行的软件资源。软件发布系统服务端访问控制框架图如图4所示。

用户在登录软件发布系统服务端时,软件发布系统服务端先对用户的身份信息进行验证,验证通过后根据用户的身份查询用户访问权限表,获得该用户可以访问的软件资源信息,再将与该用户对应的软件资源通过交互界面提供用户查看或安装。

针对第二种问题,服务端在进行软件发布时,对软件资源签名前在软件安装包的附加信息上添加指定客户端的终端唯一标识信息字段,当软件安装包在线安装或离线导入到客户端时,客户端可通过检查安装包附加信息,比对本地终端标识与安装包附加信息中终端标识的一致性判断是否进行安装操作,保证软件部署的安全性。

2.5 软件安装阶段管理

软件在安装前需要对其来源进行验证,基本思想是采用用户终端存储的发布系统服务端的设备身份证书公钥和CA公钥验证软件的签名,再解析软件安装包中的附加信息,根据基本信息中的软件类型和终端标识判断是否为本机要安装的软件,验证通过后才允许安装过程继续,否则安装失败。

图4 软件发布系统服务端访问控制框架图

针对在Linux操作系统运行的软件,在验证通过后先判断该软件在安装前是否存在某些依赖软件尚未安装的情况,如果存在,用户终端连接源服务器,下载安装包清单列表数据,该数据除了记录每个软件包的依赖关系之外,还记录了软件包所放置在源服务器中的容器位置。用户终端根据列表数据从软件所存放的目录下载所需要的依赖软件,验证软件签名后先进行依赖软件的预安装,再安装实际需要的软件。

2.6 软件运行阶段管理

软件在运行期间,客户端对软件的实际运行状态与安全标签声明中的授权操作表进行比对,一旦发现存在违反访问原则且与授权操作表不符的行为,会及时阻止软件的非预期行为,进而保障系统中的软件实际行为符合预期,确保系统的动态可信。

3 结束语

通过设计基于数字证书的软件安全分发方案,能够为不同操作系统下的用户提供软件资源可信保障,有助于实现网络环境下软件分发安装过程的可信、可控,提升软件分发过程中的安全性,避免终端或服务器因安装未经授权软件或被篡改软件的软件而引起的安全威胁,为后续开展软件全生命周期集中管理和维护研究工作奠定基础。

猜你喜欢
服务端客户端证书
你的手机安装了多少个客户端
“人民网+客户端”推出数据新闻
——稳就业、惠民生,“数”读十年成绩单
WJCI 收录证书
CSCD收录证书
收录证书
收录证书
新时期《移动Web服务端开发》课程教学改革的研究
基于三层结构下机房管理系统的实现分析
基于三层结构下机房管理系统的实现分析
媒体客户端的发展策略与推广模式