安全操作系统中建立可信路径的方法

文档序号:6444091阅读:3230来源:国知局
专利名称:安全操作系统中建立可信路径的方法
技术领域
本发明属于安全操作系统(OS)设计领域,尤其涉及一种安全操作系统中建立可信路径的方法。
背景技术
计算机系统中,用户在一般情况并不直接与内核打交道,中间还有一层应用层作为接口在用户与内核之间相互作用着,但这种设计虽然能够保护内核不会被用户肆意修改窥测,但也随之带来了安全问题,用户或应用程序访问系统的路径被非法程序截获或篡改是操作系统中典型的安全漏洞之一。用户在登录系统时首先访问到登录验证程序,但未授权的程序或木马可能截获这一过程,使用伪造的组件替换登录程序,截取用户密码或执行未被授权的危害操作。GINA木马就是通过伪造登录窗口破坏了用户与系统间的通信。GINA本身是一个动态链接库,运行在登录管理器的进程空间中,在木马注入过程中,通过修改操作系统注册文件将原来的登录程序项指向自身,以此实现将截获的用户名和密码保存在一个文件中,供黑客使用,造成用户信息泄露。

发明内容
鉴于现有技术存在的缺陷,本发明提供一种安全操作系统中建立可信路径的方法,其特征在于该方法包括如下步骤(I)在安全操作系统内核建立可信程序列表;(2)根据所述可信程序列表自动生成对应可信程序列表的可信进程列表;(3)当某一进程对终端进行访问时,需要验证该进程所在的程序是否在所述可信程序列表中以及该进程是否在所述可信进程列表中;(4)在所述进程被验证其所在程序处于所述可信程序列表并且其自身也属于所述可信进程列表的情况下,允许该进程执行,否则不允许该进程执行。进一步,本发明所述的安全操作系统中建立可信路径的方法建立可信程序列表的具体方法为由系统管理员通过设置系统接口文件建立可信程序列表,并将文件内列表的可执行程序设置sha密码用来保证可执行程序的可信性。进一步,本发明所述的安全操作系统中建立可信路径的方法在加载执行用户程序时,首先搜索系统设置的可信程序列表,如果找到,则根据程序名和程序文件的Sha密码进行判断是否是可信程序;在用户程序的相应进程运行时,检查该进程是否存在于对应的可信进程列表中,如果存在,则允许执行,否则结束进程。进一步,本发明所述的安全操作系统中建立可信路径的方法在进程是否可执行的判断中,如果父进程判断为可信,那么其子进程不经判断即可被执行;如果父进程判断为不可信,那么其子进程均不被执行。进一步,本发明所述的安全操作系统中建立可信路径的方法用户登录时使用SAK触发可信路径,杀死除列表中系统进程以外的任何用户进程,用户登录后使用管理员设置的可信程序列表控制哪些程序可以运行,当用户退出时,用户进程终止,自动退出可信路径。进一步,本发明所述的安全操作系统中建立可信路径的方法中所述的安全操作系统是 Linux 或 Unix。本发明通过将大量用户态程序的工作转移到操作系统内核态,并通过设计严格的同步机制,使多任务环境下不会产生同步问题,在需要的时候保护终端,阻止非法进程的破坏。任何进程对终端的访问,都会经过可信路径系统的仲裁,可信路径系统的设计核心是可信进程列表和可信程序列表,只有经过可信路径系统两张表验证后允许访问时,该进程才能对该终端进行操作。标志和鉴别合法的用户才能访问和使用系统,通过可信路径机制来防止特洛伊木马伪造登录过程,窃取用户敏感信息,保护系统安全。


图I为本发明的可信路径的实现方法的原理示意图;图2为图I所示的可信路径系统留意键触发功能的详细结构示意图;图3为图I所示的可信路径应用程序运行时系统调用功能的结构示意图;图4为图I所示的可信路径进入内核检查后,tpath_ctl操作逻辑示意图;图5为图I所示的可信路径的进入enter_tpath操作逻辑示意图。
具体实施例方式可信路径机制指的是一种可以使终端用户直接与计算机信息系统可信计算基(TCB)进行通信的机制。可信计算基(TCB)是“计算机系统内保护装置的总体,包括硬件、固件、软件和负责执行安全策略的组合体,它建立了一个基本的保护环境,并提供一个可信计算系统所要求的附加用户服务”。通常所指的可信计算基是构成安全计算机信息系统的所有安全保护装置的组合体(通常称为安全子系统),以防止不可信主体的干扰和篡改。可信计算基是计算机安全信息保护领域中的概念,不依赖特定操作系统。根据标准(GB/T20272/20271-2006)对操作系统可信路径的要求,还需要实现对终端的保护,防止非法进程窃取用户信息。目前Iinux系统对可信路径的实现不完善,可以说只是实现了一少部分功能,只是对登录过程中所有相关进程的关闭,并未对终端有任何的保护措施,也就是说,在系统的任何一个地方都有可能存在窃取用户信息的进程。关于系统可信路径,在20271标准中的描述为a)提供真实的端点标识,并保护通信数据免遭修改和泄漏;b)利用可信路径的通信可以由SSF自身、本地用户或远程用户发起;c)对原发用户的鉴别或需要可信路径的其他服务均使用可信路径。为达到上述目的,本发明提供了一种在安全操作系统中建立可信路径的方法,其包括如下步骤(I)在安全操作系统内核建立可信程序列表;可信程序列表是可信路径系统的物质基础,作用就是获取可信进程的源,任何可信进程都是基于该列表建立的。所有列表中的可执行程序都是可信的。
由系统管理员通过设置系统接口文件建立可信程序列表,并将文件内列表的可执行程序设置sha密码用来保证可执行程序的可信性。具体实现为可信程序列表的建立提供了两个接口文件sysctl文件和proc文件,这两个接口文件一个存在在sys目录下,一个存在在proc目录下,文件内列表的内容格式为“可执行程序名sha密码”,sha密码用来保证执行的程序确实是我们想要执行的,而不是和我们的程序同名的文件。这两个文件的作用是用户可以通过设置这两个文件来建立可信程序列表。(可信程序列表中的程序是由管理员指定的,是可信路径的物质基础)(2)根据所述可信程序列表自动生成对应可信程序列表的可信进程列表;可信进程列表是可信路径系统的仲裁核心,所有的可信进程都位于该列表中。该列表的内容是根据管理员的控制指定的,线程是根据进程的进入和退出动态变化的,系统进入可信路径时,线程会加入到可信进程列表中,当系统退出可信路径时,线程也会从列表中删除。可信进程加入到列表中的过程如下·
a、用户在命令行输入任何命令,启动一个程序;b、exec是一个Linux标准系统调用,用来加载执行用户程序。在exec被调用时,搜索可信程序列表,根据程序名和程序文件的sha密码进行判断,如果找到,则该新进程可以运行;如果找不到,则该进程是不可信的,不会被执行。C、在进程运行过程当中,由系统调用tpathctl (tpathctl是可信路径功能中实现的一个系统调用,用来给应用程序调用。调用后应用程序会被内核检查,如果检查通过,则程序进入内核可信路径,否则退出)进入可信路径时,如果该进程不在可信进程列表中(可能该进程是被可信进程fork出来的),但如果其父进程是可信的,那么该进程也是可信的,同样也会被执行。即,可执行的判断中,如果父进程判断为可信,那么其子进程不经判断即可被执行;如果父进程判断为不可信,那么其子进程均不被执行。(3)当某一进程对终端进行访问时,需要验证该进程所在的程序是否在所述可信程序列表中以及该进程是否在所述可信进程列表中;(4)在所述进程被验证其所在程序处于所述可信程序列表并且其自身也属于所述可信进程列表的情况下,允许该进程执行,否则不允许该进程执行。在加载执行用户程序时,首先搜索系统设置的可信程序列表,如果找到,则根据程序名和程序文件的sha密码进行判断是否是可信程序;在用户程序的相应进程运行时,检查该进程是否存在于对应的可信进程列表中,如果存在,则允许执行,否则结束进程。本发明所述的安全操作系统中建立可信路径的方法中所述的安全操作系统是Linux 或 Unix。本发明安全操作系统中建立可信路径具体过程分两类一是登录时由用户按下Iinux环境的安全留意键避过应用层,在用户与内核之间开辟一条直接的可信任的交互通道,然后进行用户名和密码的身份验证。安全留意键SAK[Secure Attention Key]:用户避开应用层干涉直接和内核建立访问通道的触发按键,其作为实现可信路径的一种方法,主要通过操作系统中断的机制实现。当用户按下相应的键后,操作系统调用内核中的键盘驱动程序对键盘事件进行解释和处理,由隶属于TCB的内核模块提供可信路径的功能。
第二种是由应用程序发起,在此应用程序和内核间开辟一条直接的可信任的交互通道,建立过程是后文的详细叙述的主要内容,见图3、图5,和相关介绍,然后进行应用会话。在这两种情况下,由于其他程序无法截获直接与内核通信的会话,这样就可以保证攻击者无法截获或修改,伪造该路径上的通信。 这两种方式的区别是发起主体不同,发起过程不同,应用场景不同,但是都属于可信路径的实现。SAK触发与程序列表以及进程列表的相互作用关系是用户登录时会使用SAK触发可信路径,杀死除列表中系统进程mtty、tty以外的任何用户进程,用户登陆后使用管理员设置的可信程序列表控制哪些程序可以运行,也就是文中描述的进入可信路径。当用户退出时,用户进程终止,自动退出可信路径。下面结合附图及本发明的实施例对本发明的方法作进一步详细的说明。图I为本发明的可信路径的实现方法的原理示意图;如图I所示,当终端(用户)访问系统时,首先通过可信路径裁决判断,如果终端可信则允许访问,如果终端不可信则拒绝。当应用程序被启动时,通过可信程序和可信进程列表检查当前程序是否属于可信的终 端,如果属于,则允许启动,如果不属于则拒绝。当程序退出时清除当前程序运行环境中的可信信息。此可信路径系统主要在内核中,并以sys_tpathCtl系统调用的形式实现,另外在终端的实现代码中增加了调用可信路径的验证步骤,在新程序创建和退出中增加了调用可信路径的验证步骤。本发明的的设计也都使用了该方式,在不对性能造成较大影响的前提下,实现可信路径的功能,具体是要求尽可能的在用户程序和用户态的C标准库的层面上实现,但仍然需要在系统内核的协助下获取一些信息,因此,也需要在内核中实现一部分功能。图2为图I所示的可信路径系统留意键触发功能的详细结构示意图;如图2所示,为验证终端处于可信路径中,应用程序在大多数时候都处于用户态,但是一些重要的操作,需要进入内核中实现,另外,其他一些验证功能,如磁盘文件,需要在内核的协助下获取一些信息,也需要在内核中实现一部分功能。首先,用户访系统,内核为用户初始化可信路径验证,创建终端,准备接受访问;用户按下SAK安全留意键直接发送给内核,内核陷入sys_tpathctl系统调用,验证接收到SAK的终端是否合法,验证终端是否可信,若验证成功,则关掉接收到SAK终端以外的所有进程,只开启预先设定的用可信户登录验证程序,SAK之后验证用户,如果用户名和密码校验正确则返回登录程序成功登录,进入系统,若终端不可信则拒绝登录,清除进程安全路径相关上下文信息。保证登录过程不被恶意篡改或监听。SAK触发与程序列表以及进程列表的相互作用的关系是用户登录时会使用SAK触发可信路径,杀死除列表中mtty、tty以外的任何用户进程,用户登录后使用管理员设置的可信程序列表控制哪些程序可以运行,也就是文中描述的进入可信路径。当用户退出时,用户进程终止,自动退出可信路径。本发明的可信路径方法需要在客户登录进程和系统内核2个部分交互进行。图3为图I所示的可信路径应用程序运行时系统调用功能的结构示意图;如图3所示用户启用一个应用程序,应用程序开始,内核执行exec, c加载执行,在执行最后加入了验证程序可信的功能函数CheCk_tpath_fell0W,用户应用程序进入这个函数后将被系统可信验证,验证中会对当前程序计算md5校验和,将此校验和与内存中的可信进程表比较,验证程序是否在可信路径中,如果正确,则建立进程和其他资源,程序正常执行直至程序正常退出,若果验证错误则返回出错消息,无论那种情况退出,都会最终清理程序的可信信肩、O以一个具体应用程序调用系统内核的过程为例系统首先初始化可信环境初始化TTY (在Linux或UNIX中,TTY是teletypewriters的一个常用缩写,指终端)和Fellow进程结构体,并将其清空,然后取得系统信息将TTY的状态信息设为TS_FREE,初始化Fellow列表后调用create_proc_tpath,创建可信路径环境。登录阶段判断该TTY是否可以进入可信路径,用SAK触发可信路径,杀死除列表中mtty、tty以外的任何用户进程,用户登录后使用管理员设置的可信程序列表控制哪些程序可以运行,也就是文中描述的可信路径信息。系统判断程序是否可信如果当前TTY进程属于可信路径则允许执行,否则拒绝 执行。程序退出时清除相关信息对当前进程列表,首先判断是否是init进程,如果不是,则尝试将当前终端的所有进程退出可信路径,如果有进程不属于任何终端也令其退出,最后检查操作的进程是否已不在可信路径中,完成退出动作。图4为图I所示的可信路径进入内核检查后,tpath_ctl操作逻辑示意图;如图4所示,tpath_ctl核心函数的操作流程 (I)对接收到SAK的终端进行容错检查,检查设备是否存在,终端名是否正确,终端号是否在允许范围内,若果一个条件不满足就转入错误处理过程。(2)然后判断传入的flag变量,若大于0,尝试将程序进入可信路径,若小于0,程序退出。(3)进入可信路径时,判断当前终端状态,若申请的终端已建立(存在)则进入可信路径,若未建立则系统新建立后再进入可信路径。在以上所有判断发生错误时都进入统一的错误处理流程,即打印出错消息,清理可信路径上下文,返回。(4)退出可信路径时,与进入流程相同,只是将进入动作改为退出。判断当前终端状态,若申请的终端已建立(存在)则使当前终端退出可信路径,若未建立则将现有的任何TTY立即退出可信路径。在以上所有判断发生错误时都进入统一的错误处理流程,即打印出错消息,清理可信路径上下文,返回。图5为图I所示的可信路径的进入enter_tpath操作逻辑示意图;如图5所示可信路径功能模块的验证流程代码enter_tpath结构示意图,当sys_tpathctl调用entertpath进行可信检查时(I)首先生成可信路径数据结构tpath_audit_data,使用当前的进程PID,进程UID对其赋值,发生事件为TEVENT_ENTER。(2)然后检查当前安全模式,若安全模式不为1,则将上述的发生事件设为TEVENT_ENTER_DENY,进入下一步,若不为I则进入统一错误处理流程。(3)然后检查当前进程的安全状态如果是要进入安全状态则进入下一步处理否则进入错误处理。(4)逐一将当前终端置为可信状态,当前终端下的进程置为可信状态,将终端外其他的进程置为不可信。这些步骤由不同的函数代码段完成,把当前进程加入可信进程列表中。(5)若进入统一的错误处理流程,则印出错消息,清理可信路径上下文。下面,以一个应用程序启动并访问操作系统内核的具体过程为例来说明本发明可信路径的工作流程I,系统首先初始化可信环境; 2,对当前进程列表,首先判断是否是init进程,如果不是,则尝试退出当前终端的可信路径,如果进程没有关联终端则退出所有可信路径,最后使操作的进程也退出可信路径;3,用户发起一个程序;4,系统判断该TTY是否可以进入可信路径。通过该系统调用得到一个文件的引用计数;所述系统调用还包括两个操作常量FC0P_FD和FC0P_PATH ;其中,对于获取一个路径名表示的文件,要获得其引用计数,传入FC0P_PATH和相应的路径;对于获取一个文件描述符对应的文件,则通过传入FC0P_FD和文件描述符得到其引用计数。依次遍历判断前后的伙伴进程,如果确定无关,并且未被锁锁住,则清除伙伴进程,当所有无关的前驱都已被成功删除,返回0,当错误时,直接返回-I ;5,系统判断程序是否可信;6,所述判断进程或程序是否是可信路径成员作用于关闭进程的判断时机,如果当前TTY进程属于可信路径则返回1,否则返回0 ;7,程序退出时清除相关可信信息。在例子系统中给用户登录访问或程序开辟可信路径的步骤包括给文件定义可信路径缓冲区,TTY进入可信路径操作的步骤,TTY离开可信路径操作的步骤,判断进程或程序是否是可信路径成员操作的步骤,可信路径初始化操作的步骤,增加可信路径成员操作的步骤,从可信路径成员中删除指定对象操作的步骤,对指定进程对象计算SHA校验和操作的步骤,将指定可信路径对象名称转换成字符串操作的步骤,将给定名称转换成指定可信路径对象名称操作的步骤,将可信信息写入proc/felIowproc目录下的名叫fellow的文件,在运行期通过proc目录下fellow文件来验证程序或进程是否属于可信路径操作的步骤;对文件的使用计数fcount(fcount是内核中的一个变量,用来为对文件的使用进行计数)系统调用的步骤。在例子中TTY进入可信路径的操作,具体为判断该TTY是否可以进入可信路径,用户登录时会使用SAK触发可信路径,杀死除列表中mtty、tty以外的任何用户进程,用户登录后使用管理员设置的可信程序列表控制哪些程序可以运行,依次遍历判断前后的进程,如果确定无关,并且未被锁锁住,则清除伙伴进程,将本程序视为可信并执行,当所有无关的前驱都已被成功删除,退出。在例子中TTY退出可信路径的操作,具体为对当前进程列表,首先判断是否是init进程,如果不是,则尝试退出当前终端的可信路径,如果进程没有关联终端则退出所有可信路径,最后使操作的进程不在任何可信路径中,也即退出了可信路径。在例子中判断进程或程序是否是可信路径成员作用于关闭进程的判断时机,如果当前TTY进程属于可信路径则返回1,否则返回O。在例子中可信路径初始化即是初始化TTY和Fellow进程结构体,并将其清空,然后取得系统信息将TTY的状态信息设为TS_FREE,初始化Fellow列表后调用Create_pr0C_tpath,创建可信路径。在例子中增加可信路径成员作用于连接可信路径与进程相关联的过程中,设置对应结构项。在例子中删除可信路径指定对象用于打散可信路径与进程的关联,清除进程,TTY,可信路径结构对项。本发明所提供的安全操作系统中可信路径的实现方法,具有以下优点本实现方法中包括应用程序调用SyS_tpathctl系统调用进入可信路径的方法和通过特殊方式访问系统可执行文件路径的方法。本实现避免了因文件替换,篡改导致的伪 造执行程序的问题。本程序主体逻辑通过内核态的系统调用实现,与用户态隔离,保证验证步骤可信。终端通过系统安全留意键发起与内核的会话,程序或进程按照进程表被可信路径系统审核,不仅保证用户登录受可信路径管控,用户进程也受可信路径管控。最后应当说明的是以上实施例仅用以说明本发明的技术方案而非对其限制;尽管参照较佳实施例对本发明进行了详细的说明,所属领域的普通技术人员应当理解依然可以对本发明的具体实施方式
进行修改或者对部分技术特征进行等同替换;而不脱离本发明技术方案的精神,其均应涵盖在本发明请求保护的技术方案范围当中。
权利要求
1.一种安全操作系统中建立可信路径的方法,其特征在于该方法包括如下步骤 (1)在安全操作系统内核建立可信程序列表; (2)根据所述可信程序列表自动生成对应可信程序列表的可信进程列表; (3)当某一进程对终端进行访问时,需要验证该进程所在的程序是否在所述可信程序列表中以及该进程是否在所述可信进程列表中; (4)在所述进程被验证其所在程序处于所述可信程序列表并且其自身也属于所述可信进程列表的情况下,允许该进程执行,否则不允许该进程执行。
2.根据权利要求I所述的安全操作系统中建立可信路径的方法,其特征在于步骤(I)中建立可信程序列表的具体方法为 由系统管理员通过设置系统接口文件建立可信程序列表,并将文件内列表的可执行程序设置sha密码用来保证可执行程序的可信性。
3.根据权利要求2所述的安全操作系统中建立可信路径的方法,其特征在于在加载执行用户程序时,首先搜索系统设置的可信程序列表,如果找到,则根据程序名和程序文件的sha密码进行判断是否是可信程序;在用户程序的相应进程运行时,检查该进程是否存在于对应的可信进程列表中,如果存在,则允许执行,否则结束进程。
4.根据权利要求3所述的安全操作系统中建立可信路径的方法,其特征在于在进程是否可执行的判断中,如果父进程判断为可信,那么其子进程不经判断即可被执行;如果父进程判断为不可信,那么其子进程均不被执行。
5.根据权利要求I所述的安全操作系统中建立可信路径的方法,其特征在于用户登录时使用SAK触发可信路径,杀死除列表中系统进程以外的任何用户进程,用户登录后使用管理员设置的可信程序列表控制哪些程序可以运行,当用户退出时,用户进程终止,自动退出可信路径。
6.根据权利要求1-5任意一个所述的安全操作系统中建立可信路径的方法,其特征在于所述安全操作系统是Linux或Unix。
全文摘要
一种安全操作系统中可信路径的实现方法,其中任何进程对终端的访问,都需要经过可信路径系统的仲裁,可信路径系统的设计核心是可信程序列表和可信进程列表,只有经过可信路径系统两张表验证后允许访问时,该进程才能对该终端进行操作。
文档编号G06F21/20GK102831355SQ20111045043
公开日2012年12月19日 申请日期2011年12月30日 优先权日2011年12月30日
发明者刘燕, 刘冬梅, 赵强, 周启明, 龚文, 王戍靖, 郎金刚 申请人:中国科学院软件研究所, 中科方德软件有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1