用于设备上的平台和用户应用安全性的方法和系统的制作方法_3

文档序号:9553258阅读:来源:国知局
TEE。
[0038]系统启动过程除其他外特别包括:执行0S引导加载过程302(附图3A中“引导加载器”),其将加载和启动操作系统。通过使用引导加载器302,包括可执行内核304的系统可执行体文件被加载(附图3A的步骤1)。内核可执行体文件304见于例如但不限于Vml inux映像文件中。当内核文件304被加载时,在存储器中创建内核可执行进程306 (附图3A的步骤2)。内核进程306被执行以加载内核代理可执行映像(文件)308 (附图3A的步骤3)。通过加载内核代理可执行体文件308在存储器中创建内核代理可执行进程310 (附图3A的步骤4)。
[0039]例如,内核代理文件308对应于附图2D中的内核代理文件236,图2D中缺失的代码段和/或数据段230已经被附连到所述文件。
[0040]初始化期间内核代理310获得执行控制权,以在内核空间300中执行IV操作。在非限制性的示例中,内核代理310实施IV操作,包括:(1)存储器内的IV以验证内核映像本身的完整性306 (附图3B的步骤3) ; (2)磁盘上的IV以验证内核代理可执行体文件308的完整性(附图3B的步骤4);以及(3)存储器内的IV以验证内核代理310可执行体映像本身的完整性(附图3B的步骤5)中。所有这些组件的完整性由内核代理模块310例如通过使用与分配给内核代理310的内核代理安全存储(例如附图5的532)中的数据的比较加以确认。
[0041]另外,内核代理310被执行以对内核可执行体映像和内核代理可执行体映像增量地执行所有存储器内的IV,这将检测动态攻击。
[0042]通过完成IV操作,内核代理310确认:安装在平台中的0S是预定的0S,使得内核306在内核代理310的引导加载和启动(bring-up)之间没有被修改,并且内核代理310执行它曾被预定要执行的功能。内核空间300被完全验证和信任,因此内核代码和内核代理代码以完全安全的方式运行。如果内核代理310检测到自身在不可信任的环境中运行,其将采取适当的动作,如关闭自己,以及消除已经分发给用户应用的任何有特权的资产(或资源,例如,0S、硬件组件、网络组件)。
[0043]参见附图4A-4C,图示了安全平台中的用户应用启动过程的一个示例。一旦内核代理310完成附图3A和3B的系统启动过程,平台对用户应用启动过程已经就绪,并且内核代理310监控用于创建用户空间进程的系统调用。在这一点上,内核空间300提供完全可信任的环境。
[0044]来自用户应用可执行体402用于创建用户应用进程的系统调用(附图4A的“进程创建”)在内核306中被截取(附图4A的步骤1)。响应于进程创建系统调用,Linux安全性模块(LSM)312在内核代理310中提供钩子(附图4A的步骤2)。
[0045]用户应用文件402包含例如在附图2C中所示的代码签名过程200C中签署的用户应用可执行体文件和附图2A中缺失的代码段和/或数据段210。
[0046]内核代理310然后通过使用嵌入式凭证404 (例如,附图2C的228)实施用户应用文件402的磁盘上IV (附图4A的步骤3)。如果用户应用的IV验证失败,或者如果凭证未使用正确凭证加密密钥(例如,附图2C和2D的VEK)进行加密,或者如果根本不存在凭证,则用户应用文件仍然可以被许可去加载,但它不会授予任何特权。以这种方式,篡改的应用代码被与完全无签名的代码进行同样的处理,并且(其中用户自由地安装任意软件的)设备的“正常”操作将被保护。可替代地,内核代理310可以针对设备安全性采取更受限制的方式和拒绝加载已签名但被篡改的代码,或者严格的多得多的限制,拒绝加载未签名代码。最后的这种方法可以被称为白名单方法,其中只有(“在白名单上”的)已签名的代码会被允许运行。
[0047]IV可通过例如但不限于将凭证404中的签名与对应于用户应用资源的已知值进行比较来进行。用户应用的资源可以包括存储在安全存储中的应用签名证书和IV信息。如果签名值与所存储的应用签名证书(即,已知的有效值)相同,则内核代理310就假定磁盘上的用户应用文件402尚未被攻击者修改,并且其权限或特权没有被修改。如果签名值不同于已知的有效值,则内核代理310就假定用户应用文件402已经被修改,并且不能再被信任来执行它曾被预定执行的功能。
[0048]IV结果经由LSM 312发送回内核306 (例如,如果IV验证成功,则“通过”)(附图4A的步骤4)。响应于接收到IV的确认(“通过”),内核306将执行与“进程创建”系统调用相关联的动作(附图4A的步骤5),以使得在用户空间400中创建新的用户应用进程406,它是空的(附图4A的步骤6)。
[0049]用户应用内容被重新定位到由内核分配的虚拟存储区域VMA中,以供由用户应用进程406使用。为了重新定位所述内容,可执行体加载器410按照附图4B中所示的那样处理可执行体文件。例如,当加载可执行和链接格式(ELF)可执行体时,ELF加载器410是可执行代码,其被配置成处理用户应用402的ELF文件磁盘映像,在用户应用进程406中创建一个或多个VMA(例如,附图4B所示的408-1、408-2、...),以及将包含在ELF文本部分中的可执行代码重新定位到VMA中。这里,由ELF加载器410加载的所有可执行代码采用VMA的形式。
[0050]重新定位的内容通常是分支目标地址,并且因此影响应用进程的控制流,导致有可能成为攻击目标。内核代理310按照附图4B中所示的那样实施VMA的存储器内的IV验证,这将跳过重定位。内核代理310可以签署包括重定位的VMA。
[0051]在IV验证成功的情况下,准许恢复丢失的代码和/或数据(或“MP”)。内核代理310通过在用户应用进程406存储器中恢复原始用户应用可执行体的丢失的代码段和/或数据段(或“MP”)420来绑定用户应用进程406到内核代理(和SWTEE)310,如附图4C所示。代码段和/或数据段420例如是附图2A中的代码和/或数据210,代码和/或数据210已经在用户应用供应步骤中被提取,被损坏和/或加密。
[0052]内核代理310在VMA(多个)中的适当位置注入MP420。在非限制性的示例中,用户应用供应过程(附图2A的200A)中使用的哑元值(多个)被替换为相应的原始代码和/或数据(附图2A的210)。在非限制性的示例中,在用户应用供应过程(附图2A的200A)中被损坏和/或加密的代码段和/或数据段被恢复。在MP 420是代码段的情况下,该代码段的恢复改变了 VM内容的签名。因此,内核代理310重新签署在VMA中重新定位的内容,以得到整个VMA内容的全新签名,如附图4B所示。当该进程被调用时,内核代理310随后执行增量/正在进行中的存储器内整个VMA内容的IV,以用于进一步的验证。
[0053]通过完成VMA的IV和恢复丢失的代码段和/或数据段420到用户应用进程406的存储器中,用户应用进程406被充分验证且被信任,并且能够按照初始预定的那样进行操作(作为对比,如果在任何阶段IV验证失败,缺失的代码段和/或数据段将不被KA提供,并且应用进程将不按照初始预定的那样进行操作)。作为结果的用户应用模块406执行用户应用的原始版本(例如,附图2A的202)曾被预定要执行的功能,但是作为结果的用户应用模块406现在被绑定到内核代理310,以及它的用户应用的可执行体映像的成功确认。通过重新签署和验证VMA的内容,检测对重定位的内容作出的任何改变都是可能的。
[0054]要接受或拒绝用于创建用户空间进程的调用,内核代理310可以添加进一步的标准,包括但不限于系统/应用完整性、应用权限、应用行为、用于其它可能正在运行的应用的安全性上下文和远程命令。
[0055]参见附图5,图示了其中实施进程状态验证的安全平台500的一个示例。平台500的底层包括例如含有中央处理单元(CPU) 504和存储器(只读存储器(ROM)) 506的片上系统(S0C) 502组件,所述存储器中驻留有基本输入/输出系统(B1S) 408和数字证书510。平台500的最高层是设备应用层,其包括一个或多个用户应用520a、520b,如果适宜,每个用户应用均具有签名522。介于中间的层包括开放源0S 525、OS内核530、用于内核代理534的安全存储532、系统调用接口 536、硬盘驱动(HDD)存储设备或闪速存储器540、以及引导加载器550。
[0056]内核代理534维持并具有对所保护的数据存储532的单独访问权,在所保护的数据存储532中,内核代理534保持与内核资源访问控制的内核代理性能、完整性验证、应用许可和应用资源访问控制有关的信息。尽管安全存储532在图5中示出为单独组件,但是安全存储532存在于硬盘或闪存540中。安全存储532可以作为片上系统底层502中的安全存储区域存在。
[0057]内核代理534是Linux安全模块接口(LSM I/F)顺应的。内核代理534形成0S内核530的构成整体所需要的和不可拆卸的部分,在没有0S内核530的情况下,基于内核的0S和/或应用520a、520b将停止正常工作。为了使内核代理534抗篡改、修改和逆向工程的攻击,内核代理534可以使用软件保护技术进行保护,软件保护技术诸如但不限于在每篇均授予Chow等人
当前第3页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1