基于可扩展密码服务框架的密码服务方法

文档序号:6548707阅读:202来源:国知局
基于可扩展密码服务框架的密码服务方法
【专利摘要】本发明公开了一种基于可扩展密码服务框架的密码服务方法,其实施步骤如下:构建包括跨Ring0~Ring3级别的API层、密码服务交换开关、MPI层和密码模块层的密码服务框架;当应用程序发出密码服务请求时,初始化密码服务框架实例,查询已注册的密码模块并进行完整性验证,将验证通过的密码模块挂接关联到密码服务框架,应用程序通过密码服务框架和密码模块建立会话并获取密码服务,并在使用完密码服务后关闭会话及密码服务框架。本发明能够使得密码服务提供者可以很方便地进行密码模块的扩展、替换以及删除等操作,实现现有密码服务和新型密码服务的即插即用,既能很好地保护密码资源又能灵活动态扩展密码服务框架。
【专利说明】基于可扩展密码服务框架的密码服务方法
【技术领域】
[0001]本发明涉及计算机操作系统的密码【技术领域】,具体涉及一种基于可扩展密码服务框架的密码服务方法。
【背景技术】
[0002]密码技术目前被广泛应用于各类信息系统,其对于信息安全而言至关重要。在应用密码技术时,许多安全应用直接集成密码算法,一些操作系统内核也嵌入各种密码算法,还有许多硬件产商推出了繁杂多样的密码硬件加速设备,跨越PCI卡级、芯片组级、CPU级以及集成密码处理的设备。这种各自为政的局面使安全应用开发效率偏低,妨碍了安全互操作,导致密码服务层次混乱。密码服务框架力图统一各类密码处理资源,包括软件算法和硬件密码加速设备,密码服务框架是应用和密码服务之间的桥梁,它向上为用户提供统一的密码服务调用接口,向下则为密码服务供应商提供统一的密码算法开发接口。
[0003]然而,现有的密码服务框架的各个层次通常位于同一个特权级,甚至与应用位于同一空间,对密码资源缺乏保护,使密码资源与应用一样暴露在攻击者的面前。并且在传统操作系统设计中,密码机制和操作系统的内核安全功能是分离设计的,内核安全得不到密码机制的有效支撑,而密码算法等资源也得不到操作系统的有效保护。这种设计上的脱节,使得攻击者既能够绕开内核安全功能获取密码等敏感资源,也能够绕开密码服务对操作系统实施攻击。另外,现有的密码服务框架在支持新型密码算法或新型密码服务方面还有不足,难以做到透明扩展,即在扩展新型密码服务时,以前的应用也可以调用而不用修改代码。比如,一个应用当前调用指纹识别技术来进行身份鉴别,而当虹膜技术加入到密码服务框架时,该应用能够无缝支持虹膜身份鉴别,而无需修改代码。

【发明内容】

[0004]针对前述的现有技术的密码服务框架对密码资源(算法、密钥等)保护不够,接口不够灵活,难以动态挂载新的密码模块,不支持直接挂载新型密码服务等不足,本发明要解决的技术问题是提供一种使得密码服务提供者可以很方便地进行密码模块的扩展、替换以及删除等操作,实现现有密码服务和新型密码服务的即插即用,既能很好地保护密码资源又能灵活动态扩展密码服务框架的基于可扩展密码服务框架的密码服务方法。
[0005]为了解决上述技术问题,本发明采用的技术方案为:
一种基于可扩展密码服务框架的密码服务方法,其实施步骤如下:
O预先在操作系统中构建可供调用的密码服务框架;所述密码服务框架包括API层、密码服务交换开关、MPI层和密码模块层,所述API层面向密码服务使用者提供密码服务API,所述MPI层面向密码服务提供者提供密码模块MPI,所述密码服务交换开关用于控制密码服务AP1、密码模块MPI之间的映射以及密码服务框架中注册的密码模块管理;所述API层位于CPU特权级最低的Ring3级,所述MPI层和密码模块层则共同位于CPU特权级最高的RingO级,所述密码服务交换开关位于CPU特权级次高级的Ringl级,所述密码模块层则包括用于作为提供密码服务实体的密码模块;
2)当作为密码服务使用者的应用程序发出密码服务请求时,首先初始化一个密码服务框架实例,查询密码服务框架中所有已注册的密码模块,并对已注册的密码模块进行完整性验证,将验证通过的密码模块挂接关联到密码服务框架;
3)应用程序通过密码服务框架和密码模块建立会话,应用程序通过密码服务框架向密码模块请求密码服务,并在使用完密码服务后跳转执行下一步;
4)应用程序通过密码服务框架关闭和密码模块之间的会话,将密码服务框架的各个密码模块卸载取消关联,通过清除密 码服务框架的实例关闭密码服务框架,本次密码服务结束。
[0006]优选地,所述步骤I)预先构建的密码服务框架中,所述密码服务API包括加解密服务AP1、证书服务AP1、数据存储服务API和扩展服务API,所述密码模块MPI包括加解密模块MP1、证书模块MP1、数据存储模块MPI和扩展模块MPI,所述密码模块包括加解密模块、证书模块、数据存储模块和扩展模块,所述密码模块、密码模块MP1、密码服务API三者之间
--对应。
[0007]优选地,所述步骤I)中预先创建的密码服务框架中,所述密码服务AP1、密码服务交换开关之间通过系统调用syscall进行交互,所述密码服务交换开关、密码模块MPI之间通过超级调用hypercall进行交互。
[0008]优选地,所述密码服务交换开关包括加解密服务管理器、证书服务管理器、数据存储服务管理器、扩展服务管理器、模块目录管理子模块、模块管理子模块、会话管理子模块、回调子模块和完整性认证子模块,所述加解密服务管理器用于将加解密服务API映射至加解密模块MPI,所述证书服务管理器用于将证书服务API映射至证书模块MPI,所述数据存储服务管理器用于将数据存储服务API映射至数据存储模块MPI,所述扩展服务管理器用于将扩展服务API映射至扩展模块MPI,所述模块目录管理子模块用于管理密码模块的注册信息,所述模块管理子模块用于为作为密码服务使用者的应用程序定位、加载、卸载所需的密码模块,所述会话管理子模块用于在作为密码服务使用者的应用程序和作为密码服务提供者的密码模块之间建立一个逻辑连接以提供上下文服务以及保障线程安全,所述回调子模块用于为密码模块层下不同服务类的密码模块之间的相互调用提供渠道以降低不同类型密码模块间的依赖性,所述完整性认证子模块用于验证已注册密码模块的完整性。
[0009]优选地,所述步骤I)中的模块目录管理子模块通过多条key-value形式的记录存储密码模块的注册信息,所述key值为密码模块为全局唯一无符号长整型ID值转换成的字符串,且所述密码模块层中加解密模块、证书模块和数据存储模块、扩展模块四类密码模块的全局唯一无符号长整型ID值的取值范围各不相同;所述value值记载密码模块注册信息为密码模块的基本信息、类型信息、令牌信息、扩展令牌信息、扩展密钥信息、扩展机制信息中的一种。
[0010]优选地,所述步骤2)中对每一个注册的密码模块进行完整性验证的详细步骤如下:
2.1)预先在将每一个密码模块注册到密码服务框架时,采用指定的摘要提取算法提取所述密码模块的原始摘要信息,并将所述原始摘要信息和所述密码模块在操作系统中的安装路径信息存储到预设的数据库中;在需要对每一个注册的密码模块进行完整性验证时,从密码服务框架中取出一个尚未进行完整性验证的密码模块作为当前密码模块,跳转执行步骤2.2);
2.2)从所述数据库中取出当前密码模块的原始摘要信息及所述安装路径信息;
2.3)根据所述安装路径信息,采用所述摘要提取算法提取当前密码模块的当前摘要信
息;
2.4)判定当前密码模块的原始摘要信息、当前摘要信息是否相等,如果相等,则表示当前密码模块没有被篡改,判定验证通过;如果不相等,则表示当前密码模块已经被篡改,判定验证不通过。
[0011]优选地,所述步骤3)的详细步骤如下:
3.1)应用程序通过密码服务框架和密码模块建立会话,通过所述会话在应用程序和密码模块之间建立一个用于提供上下文服务以及保障线程安全的逻辑连接,同时应用程序创建一个临时会话对象,所述临时会话对象中包含本次密码服务相关的上下文环境,应用程序不能直接操作所述临时会话对象,而只能通过会话标识符索引临时会话对象来请求密码服务;
3.2)应用程序通过会话标识符索引临时会话对象来请求密码服务,在请求密码服务过程中,如果不同类型的密码模块之间存在依赖性,则通过调用密码服务交换开关的回调子模块来完成应用程序所需的密码服务,并在使用完密码服务后跳转执行步骤4)。
[0012]优选地,所述步骤I)中预先创建的密码服务框架还包括位于CPU特权级最低的Ring3级安装配置工具,所述安装配置工具用于安装新的密码模块并对其进行配置或者卸载某个密码模块;所述安装配置工具设置口令保护机制,所述口令保护机制要求用户操作安装配置工具需要输入正确的用户口令字,只有输入正确的用户口令字后,安装配置工具才进入工作状态;所述安装配置工具在工作状态下,当使用安装配置工具注册新的密码模块,基于密码服务框架中的CA根证书和新的密码模块签发者的证书来进行合法性验证,如果验证合法则采用步骤2)中相同的完整性验证方法对新的密码模块进行完整性验证,如果完整性验证通过,则允许注册新的密码模块,否则如果合法性验证或者完整性验证不通过,则拒绝注册新的密码模块。
[0013]本发明基于可扩展密码服务框架的密码服务方法具有下述技术效果:
1、本发明紧密结合CPU的特权级设计,将密码服务框架的API层位于CPU特权级最低的Ring3级,所述MPI层和密码模块层则共同位于CPU特权级最高的RingO级,所述密码服务交换开关位于CPU特权级次高级的Ringl级,所述密码模块层则包括用于作为提供密码服务实体的密码模块,使操作系统能够很好地保护密码服务框架,特别是保护密码资源免受破坏。在此框架下,密码模块和密码模块MPI运行在CPU的RingO级,攻击者若想窃取或破坏密码算法或密钥等资源,必须从CPU的Ring3穿越到Ringl,再穿越到RingO,难度非常大,从而能够最大程度保护密码资源。并且,密码服务交换开关位于CPU的Ringl,它也得到了较好的防护,因为攻击者若想破坏,也必须从Ring3跨越到Ringl。
[0014]2、本发明的密码服务框架包括API层、密码服务交换开关、MPI层和密码模块层,所述API层面向密码服务使用者提供密码服务API,所述MPI层面向密码服务提供者提供密码模块MPI,所述密码服务交换开关用于控制密码服务AP1、密码模块MPI之间的映射以及密码服务框架中注册的密码模块管理,因此通过密码服务交换开关控制密码服务AP1、密码模块MPI之间的映射,能够更为灵活地进行扩展。一是,针对每一类密码服务,通过各自服务管理器能够同时挂载多个密码模块,可以是硬件,也可以是软件,且每个密码模块的功能集合不必完全相同;二是,可以扩展新型密码服务。利用密码服务交换开关,特别是扩展服务支持,能够把将来的新型密码服务融入到密码服务框架之下,而不需要修改密码服务框架;三是,无论哪种扩展,对应用都是透明的,即应用开发者无需关心密码机制的细节,密码模块开发者也无需关心上层应用的设计,方便地实现了密码服务开发与应用程序开发的分离。
【专利附图】

【附图说明】
[0015]图1是本发明实施例的总体流程示意图。
[0016]图2是本发明实施例中可扩展密码服务框架的框架结构示意图。
[0017]图3是本发明实施例中密码服务交换开关的框架结构示意图。
[0018]图4是本发明实施例中模块目录管理子模块的框架结构示意图。
[0019]图5是本发明实施例中完整性认证子模块的框架结构示意图。
[0020]图6是本发明实施例中密码模块的组成框架结构示意图。
[0021]图7是本发明实施例中密码模块的注册与注销流程图。
【具体实施方式】
[0022]如图1所示,本实施例基于可扩展密码服务框架的密码服务方法的实施步骤如下:
O预先在操作系统中构建可供调用的密码服务框架;密码服务框架包括API层、密码服务交换开关、MPI层和密码模块层,API层面向密码服务使用者提供密码服务API,MPI层面向密码服务提供者提供密码模块MPI,密码服务交换开关用于控制密码服务AP1、密码模块MPI之间的映射以及密码服务框架中注册的密码模块管理;API层位于CPU特权级最低的Ring3级,MPI层和密码模块层则共同位于CPU特权级最高的RingO级,密码服务交换开关位于CPU特权级次高级的Ringl级,密码模块层则包括用于作为提供密码服务实体的密码模块;
2)当作为密码服务使用者的应用程序发出密码服务请求时,首先初始化一个密码服务框架实例,查询密码服务框架中所有已注册的密码模块,并对已注册的密码模块进行完整性验证,将验证通过的密码模块挂接关联到密码服务框架;
3)应用程序通过密码服务框架和密码模块建立会话,应用程序通过密码服务框架向密码模块请求密码服务,并在使用完密码服务后跳转执行下一步;
4)应用程序通过密码服务框架关闭和密码模块之间的会话,将密码服务框架的各个密码模块卸载取消关联,通过清除密码服务框架的实例关闭密码服务框架,本次密码服务结束。
[0023]本实施例中将密码服务框架的接口分为两层,面向密码应用开发的密码服务API和面向密码模块开发的密码模块MPI。密码应用开发者仅需关心密码服务API,不必了解密码模块的细节实现;同样,密码模块开发者只要遵循密码模块MPI编写代码,不需要投入精力了解应用是如何调用密码服务的问题。密码服务API包括密码服务框架的加解密服务接口、证书服务接口、数据存储服务接口和扩展服务接口,提供基于密码设备和证书的各项功能,允许用户通过密码设备和数字证书进行各种操作,适用于安全应用开发者基于密码服务框架来设计和处理各类密码服务和数字证书服务。密码模块MPI为各类密码模块定义了服务接口规范。每一类密码模块MPI都由其对应的密码模块实现,并由上层应用调用。密码模块MPI包括证书模块MP1、加解密模块MP1、数据存储模块MP1、扩展模块MPI。需要说明的是,本实施例的应用程序可以重复步骤3)再次调用密码服务,只有应用程序使用完密码服务后才跳转执行步骤4)。步骤4)应用程序通过密码服务框架关闭和密码模块之间的会话,即调用关闭会话接口释放会话对象,从而释放系统资源,确保不会导致系统资源消耗殆尽,如果应用程序需要再次调用密码服务,需要重新从步骤2)开始。
[0024]如图2所示,本实施例步骤I)中预先创建的密码服务框架中,密码服务AP1、密码服务交换开关之间通过系统调用syscall进行交互,密码服务交换开关、密码模块MPI之间通过超级调用hypercall进行交互。
[0025]如图2所示,本实施例步骤I)预先构建的密码服务框架中,密码服务API包括加解密服务AP1、证书服务AP1、数据存储服务API和扩展服务API,密码模块MPI包括加解密模块MP1、证书模块MP1、数据存储模块MPI和扩展模块MPI,密码模块包括加解密模块、证书模块、数据存储模块和扩展模块,密码模块、密码模块MP1、密码服务API三者之间一一对应。
[0026]本实施例中,MPI层和密码模块层则共同位于CPU特权级最高的RingO级,即加解密模块MP1、证书模块MP1、数据存储模块MPI和扩展模块MPI和密码模块层则共同位于CPU特权级最高的RingO级,结合CPU的特权级,构建一个安全的密码服务框架,将核心密码资源置于最高特权级保护之下,从而能够最大限度保护密码资源;密码服务交换开关位于CPU特权级次高级Ringl,在得到较好保护的同时,还能为位于Ringl的部件灵活提供密码服务;密码服务API (包括加解密服务AP1、证书服务AP1、数据存储服务API和扩展服务API)位于CPU特权级最低级Ring3,也就是应用层,这样密码服务框架暴露在外面的攻击面是最小的。密码服务框架提供基本服务和扩展服务,基本服务包括加解密服务、证书服务、数据存储服务,扩展服务则可支持未来新型的密码服务,使得密码服务框架更加易于扩展。
[0027]如图2所示,本实施例的密码服务交换开关包括加解密服务管理器、证书服务管理器、数据存储服务管理器、扩展服务管理器、模块目录管理子模块、模块管理子模块、会话管理子模块、回调子模块和完整性认证子模块,加解密服务管理器用于将加解密服务API映射至加解密模块MPI,证书服务管理器用于将证书服务API映射至证书模块MPI,数据存储服务管理器用于将数据存储服务API映射至数据存储模块MPI,扩展服务管理器用于将扩展服务API映射至扩展模块MPI,模块目录管理子模块用于管理密码模块的注册信息,模块管理子模块用于为作为密码服务使用者的应用程序定位、加载、卸载所需的密码模块,会话管理子模块用于在作为密码服务使用者的应用程序和作为密码服务提供者的密码模块之间建立一个逻辑连接以提供上下文服务以及保障线程安全,回调子模块用于为密码模块层下不同服务类的密码模块之间的相互调用提供渠道以降低不同类型密码模块间的依赖性,完整性认证子模块用于验证已注册密码模块的完整性。
[0028]为了支持同一类服务同时挂载多个密码模块,本实施例中的密码服务交换开关为每一类密码服务设置一个服务管理器,因此针对四类密码服务分别设有加解密服务管理器、证书服务管理器、数据存储服务管理器、扩展服务管理器。其中,加解密服务管理器提供加解密服务API到指定的加解密模块MPI的转发功能;证书服务管理器提供证书服务API到指定的证书模块MPI的转发功能;数据存储服务管理器提供数据存储服务API到指定的数据存储模块MPI的转发功能;扩展服务管理器负责提供获取下层扩展服务模块中的接口函数地址的功能。会话管理子模块负责在应用程序程序和密码模块之间建立一个逻辑连接,从而提供上下文服务以及保障线程安全。会话操作包括打开、关闭会话。应用程序只有首先调用打开会话接口并成功返回之后,才能正确使用密码服务,否则无法获得密码服务。打开会话时,会动态创建一个临时会话对象,其中包含此次密码服务相关的上下文环境,应用程序不能直接操作会话对象,它通过会话标识符(类似于文件描述符)索引会话对象,从而请求密码服务。应用程序在使用完密码服务之后,必须关闭会话,即调用关闭会话接口释放会话对象,从而释放系统资源,确保不会导致系统资源消耗殆尽。由于基于各个密码模块提供的各类密码服务并不是相互独立的,一类密码服务可能调用另一类密码服务来完成某一功能,如证书服务会调用加解密服务来完成证书的验证功能。本实施例通过回调子模块来实现了回调机制,从而负责为不同服务类的密码模块之间的相互调用提供渠道,降低不同类型模块间的依赖性。回调机制提供GetFunctionList来获取基本服务API函数的入口地址。通过这些入口地址,某一服务就可以调用另一服务的功能。GetFunctionList返回一个函数指针数组,其中的每一个成员指向一个具体的API函数。回调机制仅支持调用基本密码服务,即基本密码服务可以调用基本密码服务,扩展密码服务也可以调用基本密码服务,但基本密码服务或扩展密码服务却不能调用扩展密码服务。
[0029]如图2所示,本实施例与通常的密码服务框架不同,本实施例中的密码服务框架跨越CPU的多个特权级,其中API层位于CPU特权级最低的Ring3级(应用层),MPI层和密码模块层则共同位于CPU特权级最高的RingO级,密码服务交换开关位于CPU特权级次高级的Ringl级。这样,不仅从体系结构上最大限度保护密码资源,而且对密码服务交换开关也起到了较好的保护作用。从Ring3到Ringl通过系统调用进行交互,从Ringl到RingO则采用Hypercall。密码服务框架缺省提供三类基本服务:加解密服务、证书服务、数据存储服务,并通过扩展服务来支持未来新型的密码服务。密码服务交换开关是密码服务框架的中心枢纽,负责将密码服务API映射到密码模块MPI,从而调用密码模块中的实体功能。应用程序在调用密码服务框架服务时,首先必须初始化一个密码服务框架实例,并建立相应的数据结构;在结束密码服务框架服务之后,应用需要清除该密码服务框架实例。密码服务框架实例被清除后,应用不能再调用任何密码服务框架的服务。
[0030]如图2所示,本实施例的密码模块MPI与密码服务API上下呼应,只要符合MPI规范的密码模块可以灵活地嵌入到密码服务框架,并通过相应的API为上层应用提供具体的服务。在密码服务框架中,加解密模块MPI对应加解密服务API,证书模块MPI对应证书服务API,数据存储模块MPI则对应数据存储服务API。本实施例中,密码服务框架最底层缺省挂接三类密码模块,分别是加解密模块、证书模块和数据存储模块,加解密模块、证书模块和数据存储模块三种基本密码模块的接口遵循密码MPI规范。此外,本实施例还可以根据需求挂接相应的扩展模块,密码模块的替换对上层应用透明。加解密模块为上层提供密码服务支持。加解密服务模块主要通过对密码设备的控制管理完成加解密服务功能,包括密码设备注册管理、会话管理、对象管理、加解密服务管理、多进程多线程管理等;证书模块为上层提供证书服务支持。证书服务模块主要包括证书解析服务、在线查询证书状态(OCSP)服务、证书撤销列表(CRL)服务、查询目录服务器(LDAP)服务等;数据存储模块为上层提供数据存储服务支持。数据存储服务模块主要包括存储对象的创建、修改、查询和删除等;扩展模块为上层提供扩展服务支持。扩展服务模块主要是为了解决以上三种密码模块不能提供的密码服务,一般是指由应用系统定制的密码服务。
[0031]如图3所示,本实施例密码服务框架的2层接口(密码模块MPI与密码服务API)之间设置一个密码服务交换开关,负责为应用调用密码算法建立从密码服务API到密码模块MPI之间的通道,除了对应基本的密码模块的基本服务管理器(加解密服务管理器、证书服务管理器、数据存储服务管理器、扩展服务管理器)以外,还包括模块目录管理子模块、模块管理子模块、会话管理子模块、回调子模块和完整性认证子模块,通过模块目录管理子模块、模块管理子模块、会话管理子模块、回调子模块和完整性认证子模块来分别实现模块目录管理、模块的加载与卸载、会话管理、回调和完整性认证的功能。会话管理负责在应用程序和服务提供者(密码模块)之间建立一个逻辑连接,从而提供上下文服务以及保障线程安全。密码模块管理负责为应用定位、加载、卸载所需的密码模块。回调机制负责为不同服务类的密码模块之间的相互调用提供渠道,降低了不同类型模块间的依赖性。密码服务交换开关API包括会话管理函数、模块初始化和终止函数、函数入口定位函数等,这些函数是面向所有服务的,不需要密码模块进行具体实现,因此没有对应的密码模块MPI。
[0032]本实施例中,本实施例步骤I)中的模块目录管理子模块通过多条key-value形式的记录存储密码模块的注册信息,key值为密码模块为全局唯一无符号长整型ID值转换成的字符串,且密码模块层中加解密模块、证书模块和数据存储模块、扩展模块四类密码模块的全局唯一无符号长整型ID值的取值范围各不相同;valUe值记载密码模块注册信息为密码模块的基本信息、类型信息、令牌信息、扩展令牌信息、扩展密钥信息、扩展机制信息中的一种。
[0033]本实施例中,本实施例步骤2)中当作为密码服务使用者的应用程序发出密码服务请求时,首先初始化一个密码服务框架实例,具体是通过模块目录管理子模块查询密码服务框架中所有已注册的密码模块,获取密码模块信息以及密码模块所支持的各种密码服务功能,并根据得到的结果定位所需要的服务可以由哪个密码模块提供。如图4所示,模块目录管理子模块提供密码服务框架自身配置信息、密码模块信息的存取功能,供密码服务交换开关及其完整性认证子模块、安装配置工具使用。模块目录管理子模块以key-value形式存储目录数据,目录中的每条记录都分配一个全局唯一的key值。模块目录管理子模块为每条记录分配一个全局唯一的无符号长整型ID值,将其转换成字符串后作为本条记录的key值。模块目录管理子模块支持4类服务,分别是模块定位、模块注销、模块注册和配置管理。
[0034]本实施例中,本实施例步骤2 )中对每一个注册的密码模块进行完整性验证用于校验密码模块的完整性,防止加载被篡改的恶意密码模块造成服务异常甚至泄漏机密。如图5所示,密码服务交换开关在关联密码模块时,需要调用完整性认证子模块的完整性认证API,然后通过完整性认证子模块执行下述步骤2.1)?2.4)所示的完整性验证算法以验证其完整性;同时在执行完整性验证算法时,完整性认证子模块需要调用模块目录管理子模块访问预设的数据库(MDS数据库),通过预设的数据库(MDS数据库)存储密码模块的原始摘要信息olddigest和密码模块在操作系统中的安装路径信息path。
[0035]本实施例中,步骤2)中对每一个注册的密码模块进行完整性验证的详细步骤如下:
2.1)预先在将每一个密码模块注册到密码服务框架时,采用指定的摘要提取算法提取密码模块的原始摘要信息olddigest,并将原始摘要信息olddigest和密码模块在操作系统中的安装路径信息path存储到预设的数据库(MDS数据库)中;在需要对每一个注册的密码模块进行完整性验证时,从密码服务框架中取出一个尚未进行完整性验证的密码模块作为当前密码模块,跳转执行步骤2.2);
2.2)从数据库中取出当前密码模块的原始摘要信息olddigest及安装路径信息path ;
2.3)根据安装路径信息path,采用前述的摘要提取算法提取当前密码模块的当前摘要信息 newdigest ;
2.4)判定当前密码模块的原始摘要信息olddigest、当前摘要信息newdigest是否相等,如果相等,则表示当前密码模块没有被篡改,判定验证通过;如果不相等,则表示当前密码模块已经被篡改,判定验证不通过。
[0036]本实施例中,步骤3)的详细步骤如下:
3.1)应用程序通过密码服务框架和密码模块建立会话,通过会话在应用程序和密码模块之间建立一个用于提供上下文服务以及保障线程安全的逻辑连接,同时应用程序创建一个临时会话对象,临时会话对象中包含本次密码服务相关的上下文环境,应用程序不能直接操作临时会话对象,而只能通过会话标识符索弓I临时会话对象来请求密码服务;
3.2)应用程序通过会话标识符索引临时会话对象来请求密码服务,在请求密码服务过程中,如果不同类型的密码模块之间存在依赖性,则通过调用密码服务交换开关的回调子模块来完成应用程序所需的密码服务,并在使用完密码服务后跳转执行步骤4)。
[0037]本实施例中,会话管理子模块负责在应用程序和密码模块之间建立一个逻辑连接,从而提供上下文服务以及保障线程安全,本实施例中应用程序通过密码服务框架和密码模块建立会话时,具体是把密码模块相关的信息作为参数、调用会话管理子模块的会话函数打开一个会话,如果成功,则返回一个会话标识符(类似于文件描述符)。应用程序只有首先调用打开会话接口并成功返回之后,才能正确使用密码服务,否则无法获得密码服务。应用程序打开会话时,会动态创建一个临时会话对象,其中包含此次密码服务相关的上下文环境,应用不能直接操作会话对象,它通过会话标识符索引会话对象,从而请求密码服务。之后可以调用各种密码服务API执行相应的密码算法,当不再需要密码服务时,即可以关闭会话。
[0038]本实施例中,应用程序按照需求调用API层的密码服务API以执行相应的密码算法。此时,执行流程将通过syscall从Ring3层陷入到Ringl层。API层的密码服务API包括加解密服务AP1、证书服务AP1、数据存储服务API和扩展服务API,用于提供基于密码设备和证书的各项功能,允许用户通过密码设备和数字证书进行各种操作,适用于安全应用开发者基于密码服务框架来设计和处理各类密码服务和数字证书服务。参见图1,本实施例中步骤3.2)应用程序通过会话标识符索引临时会话对象来请求密码服务时,其具体涉四种基本密码服务类型的具体执行方式如下:
3.2.1)如果调用加解密服务API,则加解密服务管理器将加解密服务API映射到对应的加解密模块MPI,然后调用加解密模块MPI。此时执行流就会通过hypercall从Ringl层进入RingO层,从而执行位于RingO层的加解密模块中的加解密算法。加解密模块主要通过对密码设备的控制管理完成加解密服务功能,包括密码设备注册管理、会话管理、对象管理、加解密服务管理、多进程多线程管理等;
3.2.2)如果调用证书服务API,则证书服务管理器将证书服务API映射到对应的证书模块MPI,然后调用证书模块MPI。此时执行流就会通过hypercall从Ringl层进入RingO层,从而执行位于RingO层的证书模块中的证书相关操作。证书模块主要包括证书解析服务、在线查询证书状态(OCSP)服务、证书撤销列表(CRL)服务、查询目录服务器(LDAP)服务等;
3.2.3)如果调用数据存储服务API,则数据存储服务管理器将数据存储服务API映射到对应的数据存储模块MPI,然后调用数据存储模块MPI。此时执行流就会通过hypercall从Ringl层进入RingO层,从而执行位于RingO层的数据存储模块中的操作。数据存储模块为上层提供数据存储服务支持,主要包括存储对象的创建、修改、查询和删除等;
3.2.4)如果调用扩展服务API,则扩展服务管理器将扩展服务API映射到对应的扩展模块MPI,然后调用扩展模块MPI。此时执行流就会通过hypercal I从Ringl层进入RingO层,从而执行位于RingO层的扩展模块中的操作。扩展模块主要是为了解决以上三种密码模块不能提供的密码服务,一般是指由应用系统定制的密码服务;
需要说明的是针对应用程序而言,四种基本密码服务类型仅仅是其所请求密码服务的基本服务组成,应用程序在请求密码服务时,可以根据需要设置一类密码模块通过回调机制调用另一类密码模块,如加解密操作和证书操作都可以调用数据存储服务,回调机制仅支持调用基本服务,即基本服务可以调用基本服务,扩展服务也可以调用基本服务,但基本服务或扩展服务却不能调用扩展服务,从而实现本实施例密码服务功能的灵活组合。
[0039]如图6所示,密码模块是密码服务框架提供密码服务的实体,负责为密码服务框架提供所有密码服务,且通过密码模块MPI提供相应的密码服务支持,密码模块分为四类:密码模块包括加解密模块、证书模块、数据存储模块和扩展模块。a)加解密模块,用于为上层提供密码服务支持,主要通过对密码设备的控制管理完成加解密密码服务功能,包括密码设备注册管理、会话管理、对象管理、密码服务管理、多进程多线程管理等。b)证书模块,用于为上层提供证书服务支持,主要包括证书解析服务、在线查询证书状态(OCSP)服务、证书撤销列表(CRL)服务、查询目录服务器(LDAP)服务等。c)数据存储模块,用于数据存储模块主要包括存储对象的创建、修改、查询和删除等。d)扩展模块,用于为上层提供扩展服务支持,主要是为了解决以上三种密码模块不能提供的密码服务,一般是指由应用系统定制的密码服务。此外,本实施例还提供完整性认证模块和完整性验证码生成工具,完整性认证模块基于完整性认证接口与密码服务交换开关进行交互,其中完整性认证模块用于在模块注册和加载时验证密码模块的完整性验证码,完整性验证码生成工具用于产生密码模块的完整性验证码并提供给完整性认证模块使用。
[0040]本实施例中,步骤I)中预先创建的密码服务框架还包括位于CPU特权级最低的Ring3级安装配置工具,安装配置工具用于安装新的密码模块并对其进行配置或者卸载某个密码模块;安装配置工具设置口令保护机制,口令保护机制要求用户操作安装配置工具需要输入正确的用户口令字,只有输入正确的用户口令字后,安装配置工具才进入工作状态;安装配置工具在工作状态下,当使用安装配置工具注册新的密码模块,基于密码服务框架中的CA根证书和新的密码模块签发者的证书来进行合法性验证,如果验证合法则采用步骤2)中相同的完整性验证方法对新的密码模块进行完整性验证,如果完整性验证通过,则允许注册新的密码模块,否则如果合法性验证或者完整性验证不通过,则拒绝注册新的密码模块。由于在实际使用中,密码服务框架无可避免地也需要在操作系统环境下,本实施例在步骤2)中对每一个注册的密码模块进行完整性验证的基础上,进一步使用位于CPU特权级最低的Ring3级的安装配置工具来安装新的密码模块并对其进行配置或者卸载某个密码模块,使用安装配置工具人为地对之进行管理、对应用和密码模块进行注册,同时对进行配置或者卸载密码模块进行合法性验证,安装配置工具采取完整性验证和口令验证机制双重安全机制,能够确保安装、加载的是合法的密码模块,并有效防止密码模块被非法注销,保障密码服务框架为上层应用程序提供服务的安全性、可用性,从而能够利用操作系统的安全机制最大限度保证密码模块操作的合法性。如图1和图7所示,安装配置工具位于应用层,主要负责安装新的密码模块并对其进行配置或者卸载某个密码模块。在密码模块的注册和注销时,安装配置工具采取口令验证、合法性验证和完整性验证机制,确保安装、加载的是合法的密码模块,并有效防止密码模块被非法注销,保障密码服务框架为上层应用程序提供服务的安全性、可用性。安装配置工具设置口令保护机制,即允许用户设置、更新进入安装配置工具的口令字。只有输入正确的用户口令字后,安装配置工具才进入工作状态。在注册密码模块以前,先以离线方式将CA根证书和模块签发者的证书导入模块目录服务中(可以导入多个模块签发者的证书),这些模块签发者被认为是合法的签发者。在注册密码模块进行完整性验证前,先验证密码模块的合法性,即是否合法的模块签发者签发的密码模块。密码模块注册到密码服务框架时,安装配置工具验证该模块的完整性,只有通过完整性验证,才能进行密码模块的注册操作。另外,密码服务框架还提供日志与错误处理功能,可以对密码服务框架中各种操作的时间、流程、错误信息等进行记录,可供管理员查询。本实施例中针对密码模块的操作共包含三种安全机制:a) 口令验证。安装配置工具设置口令保护机制,即允许用户设置、更新进入安装配置工具的口令字。只有输入正确的用户口令字后,安装配置工具才进入工作状态。b)合法性验证。密码服务框架在注册密码模块以前,先以线外的方式将CA根证书和模块签发者的证书导入模块目录服务中(可以导入多个模块签发者的证书),这些模块签发者被认为是合法的签发者。在注册密码模块进行完整性验证前,先验证密码模块的合法性,即是否合法的模块签发者签发的密码模块。c)完整性验证。密码模块在安装和加载运行时,应进行完整性验证。密码模块注册到密码服务框架时,密码服务框架验证该模块的完整性,只有通过完整性验证,才能进行密码模块的注册操作。上层应用在加载密码模块时,必须进行完整性验证,只有通过完整性验证,该模块才能提供相应的机要服务。另外,密码服务框架无可避免地也需要在操作系统环境下,使用工具人为地对之进行管理、对应用和密码模块进行注册,可以利用操作系统的安全机制最大限度保证操作的合法性。
[0041]本实施例具体是基于国产Kylin操作系统实现作为示范并取得了良好的效果。但是需要说明的是,本实施例的思路与具体操作系统平台无关。
[0042]以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本【技术领域】的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
【权利要求】
1.一种基于可扩展密码服务框架的密码服务方法,其特征在于实施步骤如下: O预先在操作系统中构建可供调用的密码服务框架;所述密码服务框架包括API层、密码服务交换开关、MPI层和密码模块层,所述API层面向密码服务使用者提供密码服务API,所述MPI层面向密码服务提供者提供密码模块MPI,所述密码服务交换开关用于控制密码服务AP1、密码模块MPI之间的映射以及密码服务框架中注册的密码模块管理;所述API层位于CPU特权级最低的Ring3级,所述MPI层和密码模块层则共同位于CPU特权级最高的RingO级,所述密码服务交换开关位于CPU特权级次高级的Ringl级,所述密码模块层则包括用于作为提供密码服务实体的密码模块; 2)当作为密码服务使用者的应用程序发出密码服务请求时,首先初始化一个密码服务框架实例,查询密码服务框架中所有已注册的密码模块,并对已注册的密码模块进行完整性验证,将验证通过的密码模块挂接关联到密码服务框架; 3)应用程序通过密码服务框架和密码模块建立会话,应用程序通过密码服务框架向密码模块请求密码服务,并在使用完密码服务后跳转执行下一步; 4)应用程序通过密码服务框架关闭和密码模块之间的会话,将密码服务框架的各个密码模块卸载取消关联,通过清除密码服务框架的实例关闭密码服务框架,本次密码服务结束。
2.根据权利要求1所述的基于可扩展密码服务框架的密码服务方法,其特征在于:所述步骤I)预先构建的密码服务框架中,所述密码服务API包括加解密服务AP1、证书服务AP1、数据存储服务AP I和扩展服务API,所述密码模块MPI包括加解密模块MP1、证书模块MP1、数据存储模块MPI和扩展模块MPI,所述密码模块包括加解密模块、证书模块、数据存储模块和扩展模块,所述密码模块、密码模块MP1、密码服务API三者之间一一对应。
3.根据权利要求2所述的基于可扩展密码服务框架的密码服务方法,其特征在于:所述步骤I)中预先创建的密码服务框架中,所述密码服务AP1、密码服务交换开关之间通过系统调用syscall进行交互,所述密码服务交换开关、密码模块MPI之间通过超级调用hypercall进行交互。
4.根据权利要求3所述的基于可扩展密码服务框架的密码服务方法,其特征在于:所述密码服务交换开关包括加解密服务管理器、证书服务管理器、数据存储服务管理器、扩展服务管理器、模块目录管理子模块、模块管理子模块、会话管理子模块、回调子模块和完整性认证子模块,所述加解密服务管理器用于将加解密服务API映射至加解密模块MPI,所述证书服务管理器用于将证书服务API映射至证书模块MPI,所述数据存储服务管理器用于将数据存储服务API映射至数据存储模块MPI,所述扩展服务管理器用于将扩展服务API映射至扩展模块MPI,所述模块目录管理子模块用于管理密码模块的注册信息,所述模块管理子模块用于为作为密码服务使用者的应用程序定位、加载、卸载所需的密码模块,所述会话管理子模块用于在作为密码服务使用者的应用程序和作为密码服务提供者的密码模块之间建立一个逻辑连接以提供上下文服务以及保障线程安全,所述回调子模块用于为密码模块层下不同服务类的密码模块之间的相互调用提供渠道以降低不同类型密码模块间的依赖性,所述完整性认证子模块用于验证已注册密码模块的完整性。
5.根据权利要求4所述的基于可扩展密码服务框架的密码服务方法,其特征在于:所述步骤I)中的模块目录管理子模块通过多条key-value形式的记录存储密码模块的注册信息,所述key值为密码模块为全局唯一无符号长整型ID值转换成的字符串,且所述密码模块层中加解密模块、证书模块和数据存储模块、扩展模块四类密码模块的全局唯一无符号长整型ID值的取值范围各不相同;所述value值记载密码模块注册信息为密码模块的基本信息、类型信息、令牌信息、扩展令牌信息、扩展密钥信息、扩展机制信息中的一种。
6.根据权利要求5所述的基于可扩展密码服务框架的密码服务方法,其特征在于:所述步骤2)中对每一个注册的密码模块进行完整性验证的详细步骤如下: 2.1)预先在将每一个密码模块注册到密码服务框架时,采用指定的摘要提取算法提取所述密码模块的原始摘要信息,并将所述原始摘要信息和所述密码模块在操作系统中的安装路径信息存储到预设的数据库中;在需要对每一个注册的密码模块进行完整性验证时,从密码服务框架中取出一个尚未进行完整性验证的密码模块作为当前密码模块,跳转执行步骤2.2); 2.2)从所述数据库中取出当前密码模块的原始摘要信息及所述安装路径信息; 2.3)根据所述安装路径信息,采用所述摘要提取算法提取当前密码模块的当前摘要信息; 2.4)判定当前密码模块的原始摘要信息、当前摘要信息是否相等,如果相等,则表示当前密码模块没有被篡改,判定验证通过;如果不相等,则表示当前密码模块已经被篡改,判定验证不通过。
7.根据权利要求6所述的基于可扩展密码服务框架的密码服务方法,其特征在于,所述步骤3)的详细步骤如下 : 3.1)应用程序通过密码服务框架和密码模块建立会话,通过所述会话在应用程序和密码模块之间建立一个用于提供上下文服务以及保障线程安全的逻辑连接,同时应用程序创建一个临时会话对象,所述临时会话对象中包含本次密码服务相关的上下文环境,应用程序不能直接操作所述临时会话对象,而只能通过会话标识符索引临时会话对象来请求密码服务; 3.2)应用程序通过会话标识符索引临时会话对象来请求密码服务,在请求密码服务过程中,如果不同类型的密码模块之间存在依赖性,则通过调用密码服务交换开关的回调子模块来完成应用程序所需的密码服务,并在使用完密码服务后跳转执行步骤4)。
8.根据权利要求7所述的基于可扩展密码服务框架的密码服务方法,其特征在于,所述步骤I)中预先创建的密码服务框架还包括位于CPU特权级最低的Ring3级安装配置工具,所述安装配置工具用于安装新的密码模块并对其进行配置或者卸载某个密码模块;所述安装配置工具设置口令保护机制,所述口令保护机制要求用户操作安装配置工具需要输入正确的用户口令字,只有输入正确的用户口令字后,安装配置工具才进入工作状态;所述安装配置工具在工作状态下,当使用安装配置工具注册新的密码模块,基于密码服务框架中的CA根证书和新的密码模块签发者的证书来进行合法性验证,如果验证合法则采用步骤2)中相同的完整性验证方法对新的密码模块进行完整性验证,如果完整性验证通过,则允许注册新的密码模块,否则如果合法性验证或者完整性验证不通过,则拒绝注册新的密码模块。
【文档编号】G06F21/46GK104021335SQ201410246342
【公开日】2014年9月3日 申请日期:2014年6月5日 优先权日:2014年6月5日
【发明者】戴华东, 廖湘科, 陈松政, 罗军, 付松龄, 魏立峰, 董攀, 黄辰林, 丁滟 申请人:中国人民解放军国防科学技术大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1