ARM的TrustZone技术
是一种将软件和硬件相结合为消费者产品提供安全保护的技术9,10,11。在硬件方面,特殊的具有“安全意识”的存储器包裹层(wrapper),系统总线,调试端口,及中断控制器都被集成到了SOC中。另外,TrustZone为CPU结构和核心增加了一个新的安全监控模式。
在软件方面,一个从受信任的逻辑提供的安全监控器,在新的安全监控模式下运行,并担当安全与不安全状态之间的看门监控任务。当操作系统调用TrustZone指令(安全监控中断或SMI)时,安全监控器受到了控制,与此同时,处理器获得了额外层次的特权以运行受到信任的代码,并通过嵌入已知有安全意识的外设的安全审核位或“S-位”,来控制对受到信任的资源的访问。对安全存储器的访问是通过使用MMU和TLB中的安全位标记符和“S-位标记符”来控制的。这些标志被用来将存储器划分为安全区和不安全区。安全监控器通过将中断分为安全和不安全两类,来进一步增强安全性,并实现断开/连接调试端口的能力。
TrustZone技术,已被用来保护在芯片上或不在芯片上的存储器和外围设备免受软件攻击。通过对系统的精心设计,TrustZone可以额外地提供安全措施以抵抗一些硬件攻击。例如,将可信的代码放入SoC内部存储器,并保证置于外部存储器的硬件表 walker列表不能指向内部存储器或敏感程序(TLB的再次写入会失败)。因此,有进入外部存储器的许可并不能提供进入敏感资源的许可。
TrustZone为操作系统在无安全状态下的运行提供了二进制兼容性。如果操作系统需要与安全区域的应用程序进行交流,就必须写扩展名。同样的,在无TrustZone的平台上处于特权模式的一些可以被访问的寄存器, 一旦在TrustZone.内运行时,可以被强迫处于特权/不可信模式。
然而,这种方法一个潜在的缺点是TrustZone仅提供两种环境。一般的应用程序需要三种或更多:一个操作系统核(如RTOS)、一个用于处理DRM或其它安全处理要求的安全内核,以及“丰富的操作系统”—用于控制用户的界面(一般包括 Windows Mobile、Symbian、Linux等)。如图5所示的小型终端交互操作平台(STIP)应用12是一类安全付款的方式。正如图中所示的那样,它被保护起来,免受任何在壁垒的“正常”一侧所发生的入侵行为影响,该壁垒是受控于安全监测器。
很多嵌入式方案的一个关键目标是减少材料单成本。许多OEM的发展动力,则是确保了单独的处理器有足够的CPU马力来容纳大量功能。在理想情况下,一个CPU可以同时运行无线工作栈、应用操作系统,及安全应用软件(DRM,还款应用)。将无线工作栈置于特权安全模式下,则产生容易遭受在外部存储器上发生的硬件攻击的弱点,并大大地增大了可信代码基(TCB)的尺寸,其原因可以由如下的例子来说明:一个3G GSM堆栈普遍有几兆大小,比普通的SOC内部存储器要大很多。这就使得设计只能在如下两个方面进行选择:通过将GSM堆栈与应用操作系统集成到一起,使得它能够在正常模式下运行,或是在第三种执行环境中运行它,这种特性是TrustZone所不具有的。
所以TrustZone能够很好地保护硬件,但是却不能为很多系统级的应用程序管理其安全区域。一个独立的系统管理程序可以提供一定程度的、针对软件攻击的防护力,可以让开发者生成多种执行环境,但它在防范硬件攻击方面只采取了很少的措施。不过,把这两者组合起来,就可以产生一种对两个领域来说都是最佳的选择。
正如图6所示的那样,一个以监控模式运行的系统管理程序,可以取代TrustZone安全监控器以及图5所示的安全内核的位置。所有其他软件组件都被推入用户空间中,于是特权模式实际上并未被使用。
图5 TrustZone架构概览
图6 带有系统管理程序的TrustZone
这种方式的优点是,具有运行大量虚拟机的能力,其中一些有安全区,另一些有不被保护的区域。所以,在这种方法中,GSM堆栈可以在它自己的域中运行,但是当它在用户态模式下运行时,如果堆栈被攻击,对黑客公开的资源仅限于那些在引导时就被赋予的资源。STIP应用程序在有墙壁保护且安全的区域是安全的。
系统管理程序精心地管理着对SOC内部的硬件资源的访问,以保证所有可信的数据和应用程序仍存在于合适的安全区域。敏感资源受益于TrustZone所提供的硬件保护,而对安全性来说不那么关键的虚拟机,例如容纳GSM堆栈的虚拟机,可以在外部存储器运行。
MIPS技术处理器
MIPS为具有安全保护的应用程序提供4KSd13内核。这个核心包括应用专用的扩展——以改进加密算法的执行,隐藏处理器活动、使之不至于受到能量信号特征分析和探测的手段,以及具有每页读/写/执行特权设置功能的安全MMU。
这个核心除了具有安全保护功能外,获得使用许可的人还可以增加额外的工具,比如独有的芯片级序列号、加密处理器、随机数发生器、USB防火墙以及安全引导加载机制。
使用分层的方法以提高安全性,一个合理设计的系统管理程序可以利用内核内置的安全防护功能以及SOC设计者增加的特性,来增强整体系统的安全性。
处理器的旁路转换缓冲器(TLB)的设计是一个关键问题。MIPS处理器的TLB兼容了一个软件替换策略。当采取措施来保护MMU和关联的TLB时,执行TLB重填的代码和被该代码所操作的数据都处于内存之中,可能被流氓软件所访问。一个系统管理程序可以用来在TLB重填时执行额外的检查,以保护系统不受通过外部SDRAM进行的硬件攻击。
另外,一些MIPS处理器提供了一个中间“超级用户”模式,以使系统管理程序可以用其来执行一个执行虚拟内核模式。这样就减少了虚拟的开销。
Power/PowerPC处理器
32位和64位两种体系的PowerPC已经在很宽范围的产品中被广泛应用,包括通信处理器,通用设备,性能导向型游戏系统以及企业计算。
PowerPC的衍生体一般会应用于嵌入式产品中,比如32位PowerPC405和 440,它们使用一种软件重填策略来保持TLB实体不断更新。另外,有一种区域保护寄存器(ZPR),它允许TLB访问控制被撤销。这些特征产生了一些弱点,这些薄弱环节可以通过组合操作系统的安全策略管理和虚拟技术来阻止流氓软件的访问。
一些PowerPC的衍生体,比如索尼Playstation 3中所使用的多核单元宽带引擎(BE),具有先进的安全机制,它包括经过加密的、得到标记的安全引导机制和将执行敏感任务的处理器在物理上单独隔离开的功能。
系统加固:多少才够用?
正如我们所述,有多少攻击的方法,就有多少防御攻击的技术。强劲的防御策略通常是依赖于一个“分层”防御,这个“分层”防御兼容了大量硬件和软件技术。确定一个系统是否被充分地保护起来,是一件很复杂的事情。
对于确定给定产品是否可以满足给定应用的安全需要的程度这一问题,有着正规的方法。对于安全分析来说,一个被广泛接受的标准是信息技术安全评估的通用标准(简称通用标注或CC14)。这是一个计算机安全方面的国际标准(国际标准化组织/国际电工委员会15408),它为厂商和客户创造了一套系统框架,供厂商和客户在该框架中运行,该框架可以为用户环境提供详细的描述和随之而来的威胁,以及分析和测试方法学,以便决定给定的产品满足环境的特定要求的程度。
例如,德国BMI(Bundesamt für Sicherheit in der Informationstechnik)与欧洲智能卡协会(EUROSMART)合作,开发了一种保护状况(PP),命名为智能卡IC平台保护状况 (BSI-PP-0002),包括及其详细的、与他们行业特别相关的攻击状况描述。希望提供产品来响应这个特殊的保护状况需要的公司,随后选择了一种评估保证级别(EAL),此级别从1级(最低)到7级(最高)。这些保证级别不是对应于关于给定PP的保护程度,而是对应于实验室所测结果与列举的安全声明的符合程度。测试实验室会将一系列的保证要求与所选择的水平进行联系,进行分析、测试,得出合格/与不合格的结论。
我们提出一种更基本的度量方法,在开发阶段的初期给设计打分。每个保护的措施和结构的特征都会是一个得分点。那么,对不同种类基本分的调整,就要根据其安全要素(如:最大覆盖面和最小受攻击面)。
网格(+80):可能调整±40
TrustZone可信区(+80):可能调整±40
安全导入(+80) :可能调整±40
虚拟化 (+80): 可能调整±40
安全操作系统
DMA控制器(-80): 可能调整±40
在分层的策略中,每一个组件对整个安全性的贡献是可以相加的。一个组件,如操作系统,有一个固有的“虚拟化”以盗用一个加分条款,80就被加到另一个组件固有的分数上,比如安全导入机制的80 分,加起来就是160分。现在,如果操作系统由于大量附加特征,呈现出一个大的攻击表面,那么,这个组分的分数就会降低一些,最多减少40分。
加权分数计算实例:挑选一个有MMU的SoC,MMU是系统管理程序对存储器的控制所不能缺少的,和一个安全操作系统。选择一个系统管理程序,它允许操作系统和应用程序在“用户空间”运行,从而产生一个更安全的处理环境。系统管理程序 (+80)呈现出一个小的攻击表面,因此不会从它的安全分中减分。选择一个安全操作系统,比如SE Linux (+80),但是,在开发者加入大量代码的同时,也会生成一个大的攻击表面(-40)。加权分数就是:
虚拟化:80
安全操作系统:80
代码尺寸减分:-40
总安全分:160
一些设计的组成,由于其本身特点,在装置的安全装甲中形成了固有的裂痕,需要小心地处理。一个好的例子就是DMA控制器。有DMA控制器的系统,考虑到其存在这样一个弱点,应该从总分中减去80分,那么在那个分数上,就明显需要一个保护系统的机制。有DMA控制器的系统的调整范围表明,这样的系统可以被设计得更加安全,但是机制的性质就是这样,在成块存取中以及从安全的观点来说,它永远不可能达到100%的效率,这是不可避免的。
这种方法的正式、细致、凝练允许了度量的产生,它允许设计者使用安全措施来满足他们特定的需要。由于基准提供了处理器在特定应用中可能性能的粗略评估,所以安全分数的产生也就提供了测量产品在抵御外来攻击时可能性能的方式。
结语
现在应该清楚的是,真正强健的系统安全不能单靠软件来保证的。加密和迷惑仅能减缓黑客的进攻。即使是高度防篡改的系统,也会受到软件硬件联合的进攻15的威胁,而且,对于任何攻击者可以在物理上接触的器件,都它至少需要安全的引导。
另一方面,全硬件的解决方式很昂贵且不具有弹性的,由于这个原因,如果它们过于冗琐,就会迫使设计者和最终使用者转而采用节省时间的、规避性的方法,而这些方法是器件的安全防护架构所无法预料到的。因此,最好的安全解决方案是基于以硬件为中心 (如TrustZone)、软件(如安全操作系统)和虚拟技术相结合的平衡结合方式,以保护存储区域,DMA控制器,或其他潜在的易受攻击的因素。
评论
查看更多