提高启动安全的方法和系统技术领域
本申请涉及电数字数据处理领域,尤其涉及提高启动安全的方法和系统。
背景技术
ARM
技术是系统范围的安全方法,针对高性能计算平台上的大量应
用,包括安全支付、数字版权管理(DRM)、企业服务和基于Web的服务。TrustZone技术与
CortexTM-A处理器紧密集成,并通过
AXI总线和特定的TrustZone系统IP块在系
统中进行扩展。此方法意味着可以保护安全内存、加密块、键盘和屏幕等外设,从而可确保
它们免遭软件攻击。
安全启动(boot)的基本思想是从Romcode到Images的多层链式校验机制。Romcode
利用哈希(Hash)函数来验证BSC的完整性,用RSA算法来验证SPL的完整性,然后SPL将会验
证U-boot,最后U-boot来验证bootimage、recoveryimage、modem、dsp等。
传统的Linux系统启动过程主要由著名的init进程(也被称为SysV init启动系
统)处理,而基于init的启动系统被认为有效率不足的问题。Systemd是Linux系统机器的另
一种启动方式,宣称弥补了以传统Linux SysV init为基础的系统的缺点。Systemd可以提
高系统的启动速度。
SELinux(Security-Enhanced Linux)是一种美国国家安全局(NSA)的对于强制访
问控制的实现。当移动设备加载SELinux后移动操作系统的安全等级将极大的提高。然而
SELinux自身安全同样需要保护。
SELinux的功能主要体现在策略中。SELinux把所有的防护策略语句编译成一个基
础策略二进制文件或者一个基础策略二进制文件加多个模块策略二进制文件中。所以,对
于SELinux策略二进制文件的保护将是至关重要的。
发明内容
本申请的目标在于提供一种能克服SELinux强制访问控制自身的安全缺陷从而提
高启动安全的方法和系统。
本申请的目标由一种提高启动安全的方法实现,该方法包括,在将SELinux策略文
件导入到内核时,
使用可信芯片自带的算法计算得到当前导入的SELinux策略文件的第一哈希值;
从可信芯片的安全存储空间获取SELinux策略文件的第一基准哈希值;
比较所述第一哈希值和所述第一基准哈希值;
响应于所述第一哈希值和所述第一基准哈希值相同,启动系统。
根据本申请方法的一方面,所述方法还包括:
响应于比较结果为不同,向系统用户提供包括是否启动的选择。
根据本申请方法的一方面,所述方法还包括:
使用可信芯片自带的算法计算得到可信芯片的安全启动相关代码的第二哈希值;
将所述第一哈希值和所述第二哈希值耦合为第三哈希值;
从可信芯片的安全存储空间获取第二基准哈希值;
比较所述第三哈希值和所述第二基准哈希值;
响应于所述第三哈希值和所述第二基准哈希值相同,启动系统。
根据本申请方法的一方面,所述方法还包括:
通过可信芯片的CA在可信芯片的安全执行环境建立SELinux策略文件的访问向量
缓存AVC和策略服务器。
根据本申请方法的一方面,所述选择还包括:从远程安全服务器下载和/或升级
SELinux策略文件。
在本说明书中,术语“SELinux策略文件”与术语“SELinux二进制策略文件”、
“SELinux策略二进制文件”和“SELinux策略配置文件”可互换地使用。
本申请的目标还由一种提高启动安全的装置实现,该装置包括,
第一哈希值计算模块,用于在将SELinux策略文件导入到内核时,使用可信芯片自
带的算法计算得到当前导入的SELinux策略文件的第一哈希值;
第一获取模块,用于从可信芯片的安全存储空间获取SELinux策略文件的第一基
准哈希值;
第一比较模块,用于比较所述第一哈希值和所述第一基准哈希值;
第一启动模块,用于响应所述第一哈希值和所述第一基准哈希值相同,启动系统。
根据本申请装置的一方面,所述装置还包括:
选择提供模块,用于响应于比较结果为不同,向系统用户提供包括是否启动的选
择。
根据本申请装置的一方面,所述装置还包括:
第二哈希值计算模块,用于使用可信芯片自带的算法计算得到可信芯片的安全启
动相关代码的第二哈希值;
耦合模块,用于将所述第一哈希值和所述第二哈希值耦合为第三哈希值;
第二获取模块,用于从可信芯片的安全存储空间获取第二基准哈希值;
第二比较模块,用于比较所述第三哈希值和所述第二基准哈希值;
第二启动模块,用于响应于所述第三哈希值和所述第二基准哈希值相同,启动系
统。
根据本申请装置的一方面,所述装置还包括:
建立模块,用于通过可信芯片的CA在可信芯片的安全执行环境建立SELinux策略
文件的访问向量缓存AVC和策略服务器。
根据本申请装置的一方面,所述选择还包括:从远程安全服务器下载和/或升级
SELinux策略文件。
通过本发明,可实现对SELinux策略(配置/二进制)文件的保护,主要体现在下述
三方面之一或多个:1)保护SELinux策略二进制文件的完整性,防止SELinux策略文件被替
换而不知。防止SELinux策略二进制文件可能被攻击者替换成另外一个有漏洞的攻击者自
定义的SELinux策略二进制文件,导致SELinux 策略失效;2)在开机启动但SELinux还没有
生效起作用这段时间,SELinux需要确认机器加电这段时间是否安全,否则SELinux策略文
件可以被替换掉;3)在一般情况下,SELinux导入系统后执行环境是普通执行环境,会被攻
击者强行攻破导致SELinux失效,通过可信芯片如TrustZone保护SELinux启动时候处于安
全执行环境下。总之,本发明可提高启动的安全性。
附图说明
本发明将在下面参考附图并结合优选实施例进行更完全地说明。
图1为根据本发明方法的一实施例的流程图。
图2为根据本发明方法的另一实施例的流程图。
图3为根据本发明装置的一实施例的结构示意图。
为清晰起见,这些附图均为示意性及简化的图,它们只给出了对于理解本发明所
必要的细节,而省略其他细节。
具体实施方式
通过下面给出的详细描述,本发明的适用范围将显而易见。然而,应当理解,在详
细描述和具体例子表明本发明优选实施例的同时,它们仅为说明目的给出。
图1示出了根据本发明方法的一实施例的流程图。在移动设备出厂时,SELinux二
进制策略文件已经预编好并安装到移动设备中。可信芯片如TrustZone必须要对SELinux二
进制策略文件进行处理,通过TrustZone自带的杂凑算法对SELinux二进制策略文件进行计
算hash值当作以后进行判断的基准值,在此称为第一基准哈希值。然后直接把第一基准哈
希值保存到TrustZone芯片的安全存储空间中。同时,也可把SELinux策略文件和第一基准
哈希值存储到远程服务器如移动设备厂家提供的安全服务器或者MDM远程设备管理服务
器,以供用户下载和/或升级,在移动设备出现SELinux策略文件被破坏的情形时可以进行
升级SELinux策略。该实施例的方法包括,在步骤S10,在将SELinux策略文件导入到内核时,
使用TrustZone芯片自带的杂凑算法计算得到当前导入的SELinux策略文件的第一哈希值。
在步骤S20,从TrustZone芯片的安全存储空间获取SELinux策略文件的第一基准哈希值。在
步骤S30,对第一哈希值和第一基准哈希值进行比较。如果比较结果表明第一哈希值和第一
基准哈希值相同,则表明SELinux策略文件是完整的,处理进行到步骤S40,启动系统。否则,
处理进行到步骤S50,向系统用户提供包括强制启动、不启动的选择。如果用户选择强制启
动,则处理进行到步骤S40,启动系统,同时可以提供强烈警告标志。如果用户选择不启动,
则处理进行到步骤S60,使移动设备关机。在其它实施例中,在步骤S50还可向用户提供从远
程安全服务器下载和/或升级SELinux策略文件的选择。如果用户选择该选项,则从相应的
安全服务器下载SELinux策略文件并用于替代移动设备当前的SELinux策略文件。由于下载
发生在当前写入到trustzone芯片中后,需要重启机器重新判断所加载SELinux二进制策略
文件的完整性。
图2示出了根据本发明方法的另一实施例的流程图。该实施例的方法包括图1所示
除步骤S40之外的所有步骤。在移动设备加电启动到systemd导入SELinux二进制策略文件
使强制访问控制生效这段时间对SELinux来说是未知的时间段,即不知道这段时间是否安
全,如果在这段时间出现被破坏不得而知。因此,在第一哈希值和第一基准哈希值相同即表
明SELinux策略文件完整时或者用户选择强制启动时并不执行步骤S40启动系统,而是执行
步骤S70,调用TrustZone提供的杂凑算法的api(应用程序接口)再次计算当前导入的
SELinux二进制策略文件的hash值A。在步骤S80,获得TrustZone中secboot的、到当前时候
的hash值B。在步骤S85,将哈希值A和B耦合为第三哈希值。在步骤S90,从Trustzone芯片的
安全存储空间获取第二基准哈希值。通过Trustzone对SELinux策略二进制文件计算得出
hash值,并把这个hash值和Trustzone的Secboot(安全启动相关代码)的hash值耦合,形成
一个新hash值并写入到Trustzone的安全存储中作为第二基准哈希值。在步骤S95,对第三
哈希值和第二基准哈希值进行比较。如果比较结果表明第三哈希值和第二基准哈希值相
同,则表明从开机加电到导入SELinux策略文件这段时间是安全的,处理进行到步骤S100,
启动系统。如果比较结果表明第三哈希值和第二基准哈希值不同,则说明从开机加电到导
入SELinux策略文件这段时间是被污染的、不安全的,处理进行到步骤S50,向系统用户提供
包括强制启动、不启动的选择。如果用户选择强制启动,则处理进行到步骤S100。如果用户
选择不启动,则处理进行到步骤S60,使移动设备关机。在步骤S100之后,处理进行到步骤
S105,通过Trustzone芯片的CA在Trustzone的安全执行环境建立SELinux策略文件的访问
向量缓存AVC和策略服务器,从而利用TrustZone保护系统使用SELinux访问控制的安全,使
系统处于TrustZone安全执行环境模式下的SELinux访问控制保护。系统在SELinux导入内
核时在内存中会通过导入的SELinux策略文件维护一个AVC(访问向量缓存,Access Vector
Cache)。当需一个主体(进程)访问一个客体(资源)的时候,会先访问AVC缓存,如果访问不
通过,才再次访问策略服务器。可能会出现被黑客扫描AVC或者策略服务器的情况,从而出
现SELinux的安全隐患,毕竟SELinux主要是为了安全而增加的功能。为了避免AVC和策略服
务器被扫描,调用TrustZone的API编写SELinux供主体访问客体时候判断的SELinux访问控
制(包含了AVC和策略服务器)的TA(可信安全应用),因为SELinux访问控制处于TrustZone
的可信安全执行环境下,将很难被扫描。编写对应TrustZone里的SELinux访问控制的TA的
SELinux访问控制的CA(在普通系统下需要通过CA才能陷入可信执行环境下,所以需要通过
trustzone提供的接口编写CA,CA相当于进入trustzone安全的通道但又不执行具体的操
作,具体操作在可信安全执行环境下的TA中),能连接普通系统执行环境和TrustZone安全
执行环境的SELinux访问控制,当一个主体(进程)访问一个客体资源的时候,先通过
SELinux访问控制的CA陷入trustzone的可信执行环境中,再通过SELinux访问控制的TA中
执行访问AVC缓存判断当前主体对客体的访问,如果成功则返回普通环境下访问成功的返
回值,如果失败则访问SELinux策略服务器判断是否有访问权限,如果再失败则说明主体对
客体没有权限,如果成功则返回成功,同时加入AVC缓存中。这样就把SELinux访问控制都放
入到了安全执行环境中,可以防止黑客的渗透。
图3示出了根据本发明的提高启动安全的装置的一实施例,该实施例的装置包括:
第一哈希值计算模块10,用于在将SELinux策略文件导入到内核时,使用可信芯片自带的算
法计算得到当前导入的SELinux策略文件的第一哈希值;第一获取模块20,用于从可信芯片
的安全存储空间获取SELinux策略文件的第一基准哈希值;第一比较模块30,用于比较所述
第一哈希值和所述第一基准哈希值;第一启动模块40,用于响应所述第一哈希值和所述第
一基准哈希值相同,启动系统;选择提供模块50,用于响应于比较结果为不同,向系统用户
提供包括强制启动、不启动和从远程安全服务器下载和/或升级SELinux策略文件的选择。
根据本发明的提高启动安全的装置的另一实施例,该实施例包括图3所示除第一
启动模块40之外的所有模块,且另外包括:第二哈希值计算模块,用于使用可信芯片自带的
算法计算得到可信芯片的安全启动相关代码的第二哈希值;耦合模块,用于将所述第一哈
希值和所述第二哈希值耦合为第三哈希值;第二获取模块,用于从可信芯片的安全存储空
间获取第二基准哈希值;第二比较模块,用于比较所述第三哈希值和所述第二基准哈希值;
第二启动模块,用于响应于所述第三哈希值和所述第二基准哈希值相同,启动系统;建立模
块,用于通过可信芯片的CA在可信芯片的安全执行环境建立SELinux策略文件的访问向量
缓存AVC和策略服务器。
除非明确指出,在此所用的单数形式“一”、“该”均包括复数含义(即具有“至少一”
的意思)。应当进一步理解,说明书中使用的术语“具有”、“包括”和/或“包含”表明存在所述
的特征、步骤、操作、元件和/或部件,但不排除存在或增加一个或多个其他特征、步骤、操
作、元件、部件和/或其组合。如在此所用的术语“和/或”包括一个或多个列举的相关项目的
任何及所有组合。除非明确指出,在此公开的任何方法的步骤不必精确按照所公开的顺序
执行。
一些优选实施例已经在前面进行了说明,但是应当强调的是,本发明不局限于这
些实施例,而是可以本发明主题范围内的其它方式实现。