一种基于USBkey的可信操作系统的制作方法

文档序号:14399132阅读:262来源:国知局

本发明涉及安全加密操作系统领域,尤其涉及一种基于usbkey的可信操作系统。



背景技术:

可信操作系统可以针对不同的应用场合提供不同的安全解决方案,并确保系统中的用户的操作动作和过程在任意操作条件下是可预测的,同时需要保证客体内容的安全可靠,以及自身完整性的操作系统。

在传统的操作系统相关安全准则中,也根据操作者的不同角色授权(例如超级管理员、普通管理员、一般用户等)分配相应的的调用系统服务的权限。在tcsec中提供了的可信概念默认只要是系统的超级管理员就是无条件可信的。与传统的安全操作系统相比,可信操作系统制定了如下规定规定1.主体行为的可信性;可信操作操作系统一定要确保用户身份、主体行为的可信性。

2.客体内容的完整性、保密性和可信性;保证信息读写、通信等操作行为的可信,确保服务及应用程序的安全有效,保证了客体内容的可信。

可是普通的可信操作系统方案,存在移植困难,平台通用难,易于攻破等特点。



技术实现要素:

本发明提供了一种基于usbkey的可信操作系统,解决了以下问题:

1.常用的tpm存在启动困难问题,如何使用usbkey在启动层方面做到提高使用的可能性和系统的稳定性;

2.融合usbkey技术,便于在各个操作系统平台之间移植使用;

3.基于usbkey的信任根问题。

其技术方案如下所述:

一种基于usbkey的可信操作系统,在ukey和主机通过usb接口连接后,主机端的驱动层通过实模式ukey驱动在系统引导阶段运行,并通过系统bios引导程序利用usb装置的主机控制器进而激励usb装置;

主机端的功能实现层位于驱动层后端,包括启动认证组件,可信引导组件和安装维护功能组件,实现ukey的认证过程并引导控制权转移到主机端;

然后主机端在用户接口层提供了可信支撑模块,面向用户的使用接口,包括管理接口和可信功能调用接口两大部分。

所述启动认证组件包括实模式ukey驱动、ukey操作程序接口、启动认证实现三部分,所述启动认证实现通过ukey执行调用程序,在引导过程开始阶段,对置入的便携式ukey硬件设备进行验证操作并同时验证操作者输入的pin码,只有对应的ukey设备和准确的pin码才能通过验证,进入下面的操作流程。

在启动认证实现流程中,可信引导部分需要在位于主引导文件信息加载组件中的预定点执行启动认证代码,所述可信引导部分的流程由三个进程组成:进程ⅰ的程序数据在主引导记录mbr中存储,进程ⅱ的程序数据存储在紧邻进程ⅰ后的扇区中,进程ⅰ和进程ⅱ都保存为磁盘扇区,进程ⅲ则以文件的格式置于文件系统中。

所述进程ⅰ引导程序是一个汇编格式文件process1.s,用来读取进程ⅱ,包括下列步骤:

1)初始化启动系统;

2)检查所装载驱动器的尺寸以及访问模式;

3)装载进程ⅱ的首扇区;

4)执行进程ⅱ。

进程ⅱ的程序包含start.s和asm.s两个汇编格式文件以及相关的c格式程序文件,start.s处在进程ⅱ的开始位置,进程ⅱ从start.s发起执行,包括下列步骤:

1)把指针指向地址块的起始点;

2)把进程ⅱ的程序代码依据地址块加载到存储介质;

3)把控制权传递给进程ⅱ的asm.s。

在start.s中,地址相关数据总共是8个字节,处于512字节的结尾位置,磁盘起始读写的地址由前4个字节记录,其后紧邻着的2个字节用来记录读写的数据量长度,最后的2个字节用来记录内存中的存储地址;指示地址相关的数据组织形式将会根据要传递的进程ⅱ的代码文件数据量进行相应的调整。

asm.s执行流程为:

1)调用启动认证程序;

2)保存加载的预期摘要值;

3)从实模式变更到保护模式;

4)执行加载系统函数。

所述加载系统函数进行系统bios信息的查询,对mbi变量进行赋值操作,与此同时,把占用权限转移到cmain.c函数,所述cmain.c函数流程为:

1)对进程ⅲ程序实施安全散列算法sha-1验证;

2)同记录值进行对比;

3)把进程ⅱ程序加载到存储介质;

4)执行chain_process2函数,汇编格式的chain_process2函数是在asm.s中的entry定义的。

安装维护功能组件利用操作系统上的usbkey驱动,并在此基础上利用封装好的usbkey操作接口对usbkey进行操作。

管理接口为用户提供管理、配置usbkey的操作接口;可信功能调用是在ukey操作接口的基础上,为应用层提供一致性验证的功能调用,以系统调用的形式提供。

可信启动机制是为了解决操作系统自身的完整性问题而提出的,其目标是确保系统启动后不被篡改的操作系统,它是操作系统得以可靠运行的前提。所述基于usbkey的可信操作系统,具有以下特点,从而保障系统启动过程的可信:

1.确保系统是由可以信赖的系统管理员启动的,这主要是通过验证usbkey及相应的pin码来确认开机人员的合法身份;

2.通过usbkey的完整性认证算法对操作系统装载器、操作系统内核进行完整性验证,并通过可信链的传递过程,保证将系统控制权可信地传递到操作系统。

3.usbkey集合于底层启动的稳定性高于其他方式,并且对于操作系统的影响最小。

附图说明

图1是process1.s的执行流程图;

图2是可信引导的流程的进程ⅱ的流程示意图;

图3是asm.s执行流程图;

图4是cmain.c执行流程图;

图5是可信引导的流程的进程ⅲ时cmain.c函数执行流程图;

图6是可信系统总体启动结构示意图;

图7是启动认证组件的结构示意图;

图8是可信引导组件结构图;

图9是安装维护模块结构图。

具体实施方式

本发明主要涉及usbkey加密技术的设计,提出一种采用usbkey和bios组成的信任根为基础的安全增强系统,通过usbkey技术做成安全启动方案,这种加密技术能够作用于许多操作系统平台,进一步提高用户的安全操作,保护用户的系统信息安全。

对于usbkey会执行下列操作:

1.启动认证功能的实现

启动认证组件可分为实模式ukey驱动、ukey操作程序接口、启动认证功能程序等三个子程序。其中启动认证功能程序通过ukey执行调用程序,在引导过程开始阶段,对置入的便携式ukey硬件设备进行验证操作并同时验证操作者输入的pin码。只有对应的ukey设备和准确的pin码才能通过验证,进入下面的操作流程。在启动认证实现流程中,可信引导部分需要在位于主引导文件信息加载组件中的预定点执行启动认证代码,调用组件根据代码文件记录的执行数据来进行接下来的动作。pin码的验证报告由启动认证程序生成传递,如果验证通过,调用组件进入下一步操作,如果没有通过验证,并且输入错误pin码次数超过预定次数限制,则调用程序组件不再进行任何操作。

2.可信引导的设计与实现

可信引导的流程通常由三个进程组成。进程ⅰ的程序数据在主引导记录(mbr)中存储。进程ⅱ的程序数据存储在紧邻进程ⅰ后的扇区中。进程ⅰ和进程ⅱ都保存为磁盘扇区。进程ⅲ则以文件的格式置于文件系统中。

进程1

进程ⅰ引导程序是一个汇编格式文件process1.s。主要用来读取进程ⅱ。进程ⅰ把进程ⅱ的首扇区start.s加载到内存中,然后把操作权限转移到start.s。process1.s通常位于mbr或者某个分区的引导扇区中,汇编处理后的二进制代码大小一般不能超过一个扇区的大小,即512个字节。process1.s执行流程图如图1所示。

图1的执行流程图包括下列步骤:

1.初始化启动系统;

2.检查所装载驱动器的尺寸以及访问模式;

3.装载进程ⅱ的首扇区;

4.执行进程ⅱ。

进程2:

进程ⅱ的程序包含start.s和asm.s两个汇编格式文件以及相关的c格式程序文件等。由于start.s处在进程ⅱ的开始位置,进程ⅱ从start.s发起执行。进程ⅱ的程序代码组成如图2所示。

start.s存在于进程ⅱ和进程ⅲ,并且都在进程ⅱ和进程ⅲ的开端。其地址应该紧跟process1.s。

经汇编后产生的二进制代码大小不应超过512个字节。在start.s中,地址相关数据总共是8个字节,处于512字节的结尾位置,磁盘起始读写的地址由前4个字节记录,其后紧邻着的2个字节用来记录读写的数据量长度,最后的2个字节用来记录内存中的存储地址。指示地址相关的数据组织形式将会根据要传递的进程ⅱ的代码文件数据量进行相应的调整。进程ⅱ加载到存储介质中后,将会被忽视。此时已经完成执行start.s也将被忽视。start.s的执行过程如下:

1.把指针指向地址块的起始点;

2.把进程ⅱ的程序代码依据地址块加载到存储介质;

3.把控制权传递给进程ⅱ的asm.s。asm.s在进程2和进程ⅲ中同时以汇编代码格式存在,在start.s之后。完成两种模式的变更时也能调用c语言程序。asm.s执行流程图如图3所示。

asm.s执行流程为:

1.调用启动认证程序。

2.保存加载的预期摘要值。

3.从实模式变更到保护模式。

4.执行加载系统函数

init_bios_info.c:其中加载系统函数init_bios_info函数通过c语言编写。该函数可以进行系统bios信息的查询,对mbi变量进行赋值操作,与此同时,把占用权限转移到cmain.c函数。cmain.c函数同时存在于进程ⅱ和进程ⅲ中。最后在占用权限传递的时,若占用权在进程ⅱ中,则传递给进程ⅱ中的cmain.c函数。若占用权在进程ⅲ中,则占用权传递给进程ⅲ中的cmain.c函数。

cmain.c:函数采用c语言编写,该函数通过调用integrity_verify(process2_file,process2_hash),并且对process2文件进行hash算法验证。若验证通过,把process2读取到存储介质,并把控制权传递给process2。cmain.c执行流程图如图4所示。

cmain.c函数流程为:

1.对进程ⅲ程序实施安全散列算法sha-1验证

2.同记录值进行对比。

3.把进程ⅱ程序加载到存储介质。

4.执行chain_process2函数。

进程3

进程ⅲ的代码由start.s和asm.s两个汇编文件和c语言文件组成。cmain.c函数是c语言代码,汇编格式的chain_process2函数是在asm.s中的entry(chain_process2)定义的。进程ⅲ时cmain.c函数执行流程图如图5所示。

在本发明中,硬件形式的ukey和主机端软件构成了基于ukey的可信启动。ukey和主机通过usb接口连接,由主机软件驱动,提供身份验证、数据加密和解密以及保护数据完整性等功能。主机端的软件由ukey的驱动层、功能实现层和应用接口层组成,利用便携式ukey硬件设备在引导过程中实现启动认证,查看ukey设备中的的敏感文件信息,并且在完成操作系统启动完成后,为上层应用提供与ukey交互的通信接口。可信启动结构的组成结构模型如图6所示。

图6是可信系统总体启动结构:

1、驱动层

驱动层是上层访问ukey的最底层接口,为上层提供ukey的硬件抽象。根据相异的功能需求,驱动层通常被区分成实模式ukey驱动以及操作系统上的驱动。其中的实模式ukey驱动在系统引导阶段运行,通过系统bios引导程序利用usb装置的主机控制器进而激励usb装置。与此同时,实模式下的驱动保证上层的启动认证相关功能的实现,同时保证系统可信引导的顺利完成。操作系统内置的usb驱动在操作系统运行时工作,通过操作系统所提供有关的usb协议栈对特定的usb设备进行驱动。

2.功能实现层

功能实现层包括启动认证组件、可信引导组件和安装维护功能组件。封装下面的驱动层所具有的相关执行调用程序,概括为面向ukey设备明确的执行指令,参照该明确的执行指令完成相应的操作。

启动认证组件

在加载操作系统之前进行ukey的认证过程。该功能可以在实模式的情境下完成,在实模式下通过调用ukey的驱动,利用实模式环境中的ukey执行调用程序。

此组件功能单一,主要进行系统的引导任务,通过主引导记录进行读入,然后验证引导的操作系统的相应组件。确保只有通过验证的ukey才可以操作计算机,只有用户置入预定的ukey同时合法的用户pin码,系统的引导才能进行。其结构如图5-2所示。

图7是启动认证组件结构图:

1.实模式ukey驱动:主要包括主机控制器驱动(hcd)和usb设备驱动(usbd),是系统最底层的操作接口,通过bios调用控制usb主控制器,完成和ukey的通讯。

2.实模式ukey操作接口:在驱动基础上完成对双向认证、用户口令验证以及读写文件等具体ukey的操作命令的封装。

3.验证功能函数:通过ukey装置的执行调用程序来实现验证ukey装置功能的函数。

(2)可信引导组件

可信引导在认证通过后进行,操作系统的装载代码,系统内核和其它系统组件共同组成可信引导组件。可以在实模式以及保护模式两种环境下运行该组件,可信引导组件在实模式下通过调用ukey驱动以及相关操作接口,保证引导过程中各个阶段的关联,验证通过后,引导控制权会被转移到下一阶段过程。该组件结构如图8所示。

图8是可信引导组件结构图

(1)实模式usbkey驱动:同开机认证模块一致。

(2)实模式usbkey操作接口:仅提供对usbkey中文件或数据的读写操作接口。

(3)验证功能函数:主要实现对加载内核或模块的一致性验证,需要利用usbkey读写操作接口读取usbkey中保存的预期摘要值进行比较。

(4)引导加载功能函数:以文件的形式装载内核以及各个模块,该功能函数主要由grub改造实现。

3.安装维护模块

可信支撑模块本身需求先进行安装预处理才能使用,因此需要提供其本身的安装和维护的工具。安装和维护功能对开机认证和可信引导功能所需要的usbkey和引导各阶段程序的预期摘要值进行配置、计算和保存。安装和维护功能以应用程序的方式实现,因此它可以利用操作系统上的usbkey驱动,并在此基础上利用封装好的usbkey操作接口对usbkey进行操作。模块的结构如图9所示。

3用户接口层

用户接口层提供了可信支撑模块面向用户的使用接口,包括管理和可信功能调用接口两大部分。

(1)管理接口

管理接口以程序的形式,为用户提供管理、配置usbkey的操作接口。管理程序为特定的计算机或用户发行和维护能够使用的usbkey,并对这些usbkey进行集中式的管理。管理程序运行在操作系统之上,因此它也需要使用操作系统上的usbkey驱动和操作接口。

(2)可信功能调用接口

可信功能调用是在usbkey操作接口的基础上,为应用层提供一致性验证的功能调用,该接口以系统调用的形式提供。一致性验证为上层应用提供了对特定文件进行摘要值的计算和验证的功能,并能够将摘要值保存在usbkey中,防止验证值本身被破坏。可信功能调用也使用操作系统上的usbkey驱动和操作接口进行封装。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1