论文部分内容阅读
摘要:在当今主流的嵌入式系统安全解决方案中,存在着运行效率、安全性、可移植性和跨平台性等问题。文章针对这些问题,在“和欣”操作系统下,应用XML-Glue设计模式及面向构件技术,提出了开发具有跨平台、可定制等特性的自适应安全构件。安全构件既能运行在不同的嵌入式系统平台上,又能运行在传统的桌面计算平台上。文中介绍了安全构件的设计理念,并给出了其总体架构和详细设计。
关键词:“和欣”操作系统;构件技术;XML-Glue;安全构件
0 引言
现在越来越多的嵌入式系统如车载系统、掌上电脑以及智能手机等,在人们生活中起着巨大的作用,并将提供越来越多的服务功能,包括即将可能出现的电子商务,如手机银行、手机炒股、手机期货交易和移动电子政务等。但是,这些嵌入式系统也都面临着越来越多的安全问题,甚至可能造成巨大的损失(例如,据估计,“I Love You”病毒引起全世界范围内十亿美元的财政损失)。
由于各种各样的限制,嵌入式系统的安全实现与桌面计算机系统有很大的不同,不同的系统对于安全性的要求不同,同一系统的不同应用对于安全性的要求也不尽相同。对于嵌入式系统,要求安全解决方案能够适应不同的外部运行环境,并提供尽可能全面灵活的安全应用基础加密服务。
基于以上情况,本文在“和欣”嵌入式操作系统下,应用了XML-Glue设计模式及面向构件技术,提出了开发具有跨平台,可定制等特性的自适应安全构件,为问题的解决提供了新的思路。
1 主流安全解决方案存在的问题
安全服务是操作系统的核心功能之一。在Windows系统中,以CryptoAPI为基础的安全体系保证了Windows系统本身的安全性。在主流的嵌入式操作系统中,WinCE 3.0通过提供安全服务的集成功能集,使企业能够在日益增长的网络世界中不断扩展,无须牺牲安全性。Embedded Linux上的安全通信一般都使用OpenSSL,它是用于安全通信的最著名的开发库,可以提供消息摘要,文件的加密和解密,数字证书,数字签名和随机数字等一系列服务。但是,这些主流的安全解决方案,也都存在一些问题。
1.1 运行效率
由于嵌入式系统与桌面计算机系统在安全处理能力、成本方面的差距,并且嵌入式操作系统安全解决方案面临着不可靠的环境和复杂的设计过程,因此桌面系统的安全实现方式不能直接照搬到嵌入式系统中。在上面的解决方案中,很多加密手段都涉及复杂的算法,对大量数据加密时经常产生大量的运算消耗。除了对算法本身进行优化之外,在算法的实现过程中,不同的设计和细节编码以及实现方式都会对其运行速度带来巨大的影响。编制一种运行速度可以接受的算法,对于程序员而言往往会是很困难的事。
1.2 安全性
密码算法并不能永远保证不会被破解,即使是暂时没有破解的算法,也不能保证它在若干年内安全无事。对没有采用动态构件技术的安全软件,灵活地更换算法往往是极其困难的。
1.3 可移植性和跨平台性
和所有的软件一样,安全软件必须能在不同的平台上运行。每开发一个软件都针对不同的平台编写安全技术的底层代码,工作量是无法想象的。要让使用不同平台的用户传递的信息都能得到安全保护,必须开发出可移植和跨平台的安全软件。
对于上述问题的解决方案就是:构件化地开发安全软件。在软件开发中,构件化方法开发出灵活、面向对象同时尽可能高效的软件构件库,从而将安全软件的开发人员从繁琐的底层算法编写中彻底地解放出来。
2 “和欣”操作系统与XML-Glue设计模式
2.1 “和欣”操作系统
“和欣”操作系统是完全面向构件的操作系统,它所提供的功能模块全部基于构件技术,都是可拆卸的构件,应用系统可以按照需要剪裁组装,或在运行时动态加载必要的构件。在面向构件的操作系统平台上,很容易开发并部署系统级的构件,以此来扩充操作系统的功能。
“和欣”操作系统中的构件“ezCOM”,与微软的COM兼容,又对微软的COM进行了扩展,并且在简单性上优于COM。
2.2 XML-Glue设计模式 基于构件的软件开发一个很重要的方面是动态连接不同构件的机制。大多数时候,定义构件连接的语言与开发实现构件的语言相同。但是,一种新的动态链接构件的机制正在兴起,利用这种机制,系统应用架构与构件的实现能够完全分离,这样的分离大大降低了构件维护的代价。在这种机制中,动态解释型语言,扮演了类似于胶水的角色,它将不同系统之间的构件动态“粘合”在一起,来共同完成应用需求。
XML-Glue是“和欣”操作系统上的一个Rich Client应用的MVC(Model-View-Controller)设计模式,其核心思想是使用XML和其他脚本语言描述应用,由CAR构件封装应用的逻辑,然后由XML-Glue完成二者的组装,形成一个完整的应用。XML-Glue分为里外两层,内部由顶至底分为三层。
外层是XML-Glue运行环境,负责初始化和释放XML-Glue应用所需资源。
内部顶层是脚本语言及其配套设施。这一层相当于提供了对MVC中View的支持。XML/JavaScript/Other Scripts提供,多种描述XML-Glue应用的形式,让开发人员能够灵活利用各种脚本语言。脚本适应器负责将其对应脚本代码中弱类型方法的参数转换为CAR中的强类型方法的参数,而在构件方法返回的时候将返回值封装成脚本可识别的数据类型。
内部中层SCI是脚本语言与CAR构件系统通信的桥梁。这一层相当于提供了对MVC中Controller的支持。
内部底层CAR构件系统。它是服务的提供者。这一层相当于提供了对MVC中Model的支持。
3 安全构件在“和欣”操作系统上的实现
3.1 安全构件与“和欣”操作系统
安全构件的提出是与“和欣”操作系统紧密关联的,安全构件在“和欣”操作系统上更能够发挥其作用。实际上安全构件本身就是一个ezCOM构件,能够充分地实现安全构件的灵活性。
安全构件的设计充分考虑了操作系统的平台差异性,遵循设计的开发封闭原则,应用了XML-Glue设计模式和面向构件的设计思想,最终达到构件化,跨平台,可定制的设计目标。
3.2 安全构件的总体应用架构
安全构件的总体应用架构如图3所示。
位于架构最底层的是操作系统提供的服务接口。安全构件以C语言函数的方式,利用条件编译等技术,对各个不同操作系统平台所提供的多线程,同步,时间,动态链接等服务进行了封装,使得不同平台之间的差异在C函数这个表现层次上尽量一致;通过C++的封装,形成被上层的安全引擎所管理的安全服务类对象(这里的抽象封装是系统内部的,对于安全构件的 用户是透明的,仅仅是为了能够向上层提供更方便的面向对象服务)。再使用ezCOM技术对下层的C++服务类进行进一步的封装(这里的抽象和封装是完全面向服务的,是对下层C++服务类的重新组合)。每一个Engine提供了一个或一组相关的加密服务,Engine的接口严格按照PKCS#系列工业标准进行设计。这些对象属于某一个Provider实体,作为CSP(加密服务的提供者),它管理着一组分别实现各种类型的安全功能的安全引擎。最后应用程序通过调用服务提供者的接口,实现诸如数字签名和安全邮件的高级安全功能。
3.3 安全构件的内部结构
安全构件内部依据面向构件的设计思想,实现了构件主体ESC与加密服务提供CSP的模块分离。这从系统组件模块的角度进一步增强了构件的灵活性。
安全构件可以基于不同操作系统平台提供相应的CSP,如基于Linux或“和欣”操作系统的CSP,或者根据用户需求提供定制的CSP,如在嵌入式操作系统中提供裁剪过的CSP。主体ESC对这些CSP进行管理,用户可以在构件初始化时,通过配置文件加载指定的CSP,还可以在运行时,动态地加载CSP,只需要提供实现了CSP的程序模块路径名即可。这样我们可以针对不同操作系统平台和不同的应用需求,提供不同的CSP,每个CSP的接口完全相同,但底层实现不同。因此可以做到不改变用户程序的前提下,动态地加载,升级或更换CSP,从而达到自适应的目标。
整个构件在设计上分为三层结构,分别为Client,Host和Provider。
Client部分是用来向用户提供一系列加密服务的,即所要调用安全构件的应用程序,它能够使用安全构件中所提供的所有功能,也能选择其所需要的功能。它是联系用户和系统的组成部分。
Host为中间层,它的一个功能是通过加载所需要的provider和其上的接口,获取provider提供的服务;另一个功能是向用户提供它所得到的provider的spi接口,通过spi接口用户可以调用所要的功能。
Provider是一个包或包集,是安全构件中所有功能的具体实现。它的一系列的功能是通过spi接口提供给外部使用,这一层对于用户来说是透明的,也就是说用户不必关心其功能具体怎样实现。ESC体系可以容纳多个Provider同时运行,并且可以动态地加载所需模块,为嵌入式系统节省资源,同时也符合构件化的思想。
4 结束语
“和欣”操作系统是国家863项目,它是基于构件、中间件技术的因特网操作系统,及跨操作系统的构件、中间件运行平台。本文利用其XML-Glue设计模式和构件技术在“和欣”操作系统上构造了一个跨平台的、可定制的、自适应的安全构件模型。
本文从理论设计角度给出了安全构件的模型,并介绍了其初步实现技术。该构件已经在实际系统中有所应用,但其实用性还有待考验,需要进一步研究扩展。
关键词:“和欣”操作系统;构件技术;XML-Glue;安全构件
0 引言
现在越来越多的嵌入式系统如车载系统、掌上电脑以及智能手机等,在人们生活中起着巨大的作用,并将提供越来越多的服务功能,包括即将可能出现的电子商务,如手机银行、手机炒股、手机期货交易和移动电子政务等。但是,这些嵌入式系统也都面临着越来越多的安全问题,甚至可能造成巨大的损失(例如,据估计,“I Love You”病毒引起全世界范围内十亿美元的财政损失)。
由于各种各样的限制,嵌入式系统的安全实现与桌面计算机系统有很大的不同,不同的系统对于安全性的要求不同,同一系统的不同应用对于安全性的要求也不尽相同。对于嵌入式系统,要求安全解决方案能够适应不同的外部运行环境,并提供尽可能全面灵活的安全应用基础加密服务。
基于以上情况,本文在“和欣”嵌入式操作系统下,应用了XML-Glue设计模式及面向构件技术,提出了开发具有跨平台,可定制等特性的自适应安全构件,为问题的解决提供了新的思路。
1 主流安全解决方案存在的问题
安全服务是操作系统的核心功能之一。在Windows系统中,以CryptoAPI为基础的安全体系保证了Windows系统本身的安全性。在主流的嵌入式操作系统中,WinCE 3.0通过提供安全服务的集成功能集,使企业能够在日益增长的网络世界中不断扩展,无须牺牲安全性。Embedded Linux上的安全通信一般都使用OpenSSL,它是用于安全通信的最著名的开发库,可以提供消息摘要,文件的加密和解密,数字证书,数字签名和随机数字等一系列服务。但是,这些主流的安全解决方案,也都存在一些问题。
1.1 运行效率
由于嵌入式系统与桌面计算机系统在安全处理能力、成本方面的差距,并且嵌入式操作系统安全解决方案面临着不可靠的环境和复杂的设计过程,因此桌面系统的安全实现方式不能直接照搬到嵌入式系统中。在上面的解决方案中,很多加密手段都涉及复杂的算法,对大量数据加密时经常产生大量的运算消耗。除了对算法本身进行优化之外,在算法的实现过程中,不同的设计和细节编码以及实现方式都会对其运行速度带来巨大的影响。编制一种运行速度可以接受的算法,对于程序员而言往往会是很困难的事。
1.2 安全性
密码算法并不能永远保证不会被破解,即使是暂时没有破解的算法,也不能保证它在若干年内安全无事。对没有采用动态构件技术的安全软件,灵活地更换算法往往是极其困难的。
1.3 可移植性和跨平台性
和所有的软件一样,安全软件必须能在不同的平台上运行。每开发一个软件都针对不同的平台编写安全技术的底层代码,工作量是无法想象的。要让使用不同平台的用户传递的信息都能得到安全保护,必须开发出可移植和跨平台的安全软件。
对于上述问题的解决方案就是:构件化地开发安全软件。在软件开发中,构件化方法开发出灵活、面向对象同时尽可能高效的软件构件库,从而将安全软件的开发人员从繁琐的底层算法编写中彻底地解放出来。
2 “和欣”操作系统与XML-Glue设计模式
2.1 “和欣”操作系统
“和欣”操作系统是完全面向构件的操作系统,它所提供的功能模块全部基于构件技术,都是可拆卸的构件,应用系统可以按照需要剪裁组装,或在运行时动态加载必要的构件。在面向构件的操作系统平台上,很容易开发并部署系统级的构件,以此来扩充操作系统的功能。
“和欣”操作系统中的构件“ezCOM”,与微软的COM兼容,又对微软的COM进行了扩展,并且在简单性上优于COM。
2.2 XML-Glue设计模式 基于构件的软件开发一个很重要的方面是动态连接不同构件的机制。大多数时候,定义构件连接的语言与开发实现构件的语言相同。但是,一种新的动态链接构件的机制正在兴起,利用这种机制,系统应用架构与构件的实现能够完全分离,这样的分离大大降低了构件维护的代价。在这种机制中,动态解释型语言,扮演了类似于胶水的角色,它将不同系统之间的构件动态“粘合”在一起,来共同完成应用需求。
XML-Glue是“和欣”操作系统上的一个Rich Client应用的MVC(Model-View-Controller)设计模式,其核心思想是使用XML和其他脚本语言描述应用,由CAR构件封装应用的逻辑,然后由XML-Glue完成二者的组装,形成一个完整的应用。XML-Glue分为里外两层,内部由顶至底分为三层。
外层是XML-Glue运行环境,负责初始化和释放XML-Glue应用所需资源。
内部顶层是脚本语言及其配套设施。这一层相当于提供了对MVC中View的支持。XML/JavaScript/Other Scripts提供,多种描述XML-Glue应用的形式,让开发人员能够灵活利用各种脚本语言。脚本适应器负责将其对应脚本代码中弱类型方法的参数转换为CAR中的强类型方法的参数,而在构件方法返回的时候将返回值封装成脚本可识别的数据类型。
内部中层SCI是脚本语言与CAR构件系统通信的桥梁。这一层相当于提供了对MVC中Controller的支持。
内部底层CAR构件系统。它是服务的提供者。这一层相当于提供了对MVC中Model的支持。
3 安全构件在“和欣”操作系统上的实现
3.1 安全构件与“和欣”操作系统
安全构件的提出是与“和欣”操作系统紧密关联的,安全构件在“和欣”操作系统上更能够发挥其作用。实际上安全构件本身就是一个ezCOM构件,能够充分地实现安全构件的灵活性。
安全构件的设计充分考虑了操作系统的平台差异性,遵循设计的开发封闭原则,应用了XML-Glue设计模式和面向构件的设计思想,最终达到构件化,跨平台,可定制的设计目标。
3.2 安全构件的总体应用架构
安全构件的总体应用架构如图3所示。
位于架构最底层的是操作系统提供的服务接口。安全构件以C语言函数的方式,利用条件编译等技术,对各个不同操作系统平台所提供的多线程,同步,时间,动态链接等服务进行了封装,使得不同平台之间的差异在C函数这个表现层次上尽量一致;通过C++的封装,形成被上层的安全引擎所管理的安全服务类对象(这里的抽象封装是系统内部的,对于安全构件的 用户是透明的,仅仅是为了能够向上层提供更方便的面向对象服务)。再使用ezCOM技术对下层的C++服务类进行进一步的封装(这里的抽象和封装是完全面向服务的,是对下层C++服务类的重新组合)。每一个Engine提供了一个或一组相关的加密服务,Engine的接口严格按照PKCS#系列工业标准进行设计。这些对象属于某一个Provider实体,作为CSP(加密服务的提供者),它管理着一组分别实现各种类型的安全功能的安全引擎。最后应用程序通过调用服务提供者的接口,实现诸如数字签名和安全邮件的高级安全功能。
3.3 安全构件的内部结构
安全构件内部依据面向构件的设计思想,实现了构件主体ESC与加密服务提供CSP的模块分离。这从系统组件模块的角度进一步增强了构件的灵活性。
安全构件可以基于不同操作系统平台提供相应的CSP,如基于Linux或“和欣”操作系统的CSP,或者根据用户需求提供定制的CSP,如在嵌入式操作系统中提供裁剪过的CSP。主体ESC对这些CSP进行管理,用户可以在构件初始化时,通过配置文件加载指定的CSP,还可以在运行时,动态地加载CSP,只需要提供实现了CSP的程序模块路径名即可。这样我们可以针对不同操作系统平台和不同的应用需求,提供不同的CSP,每个CSP的接口完全相同,但底层实现不同。因此可以做到不改变用户程序的前提下,动态地加载,升级或更换CSP,从而达到自适应的目标。
整个构件在设计上分为三层结构,分别为Client,Host和Provider。
Client部分是用来向用户提供一系列加密服务的,即所要调用安全构件的应用程序,它能够使用安全构件中所提供的所有功能,也能选择其所需要的功能。它是联系用户和系统的组成部分。
Host为中间层,它的一个功能是通过加载所需要的provider和其上的接口,获取provider提供的服务;另一个功能是向用户提供它所得到的provider的spi接口,通过spi接口用户可以调用所要的功能。
Provider是一个包或包集,是安全构件中所有功能的具体实现。它的一系列的功能是通过spi接口提供给外部使用,这一层对于用户来说是透明的,也就是说用户不必关心其功能具体怎样实现。ESC体系可以容纳多个Provider同时运行,并且可以动态地加载所需模块,为嵌入式系统节省资源,同时也符合构件化的思想。
4 结束语
“和欣”操作系统是国家863项目,它是基于构件、中间件技术的因特网操作系统,及跨操作系统的构件、中间件运行平台。本文利用其XML-Glue设计模式和构件技术在“和欣”操作系统上构造了一个跨平台的、可定制的、自适应的安全构件模型。
本文从理论设计角度给出了安全构件的模型,并介绍了其初步实现技术。该构件已经在实际系统中有所应用,但其实用性还有待考验,需要进一步研究扩展。