如今的手机具有许许多多的新应用,包括存储敏感数据,以及提供像移动付费这类的安全业务。随着利用手机存储关键信息的现象前所未见地增长,如何保护手机不受那些能够盗取或滥用信用卡号码或安全数据内容密钥的流氓软件的侵害,并保护数据的安全正变得日益重要。
手机需要一个可信任的执行环境(EE),来确保敏感数据的安全存储和处理而不被盗用。一个可信任的EE指的是任务的执行如预期所想。可信任的运算机构(TCG)采用行为名声(behavioral reputation)的概念,此时指的是文档中的“可信任运算”。可信任的行为是安全技术中的关键部分,因为它使人们相信一个EE的行为,进而允许人们分析环境安全的各个方面。完整了解如何创建和维护一个可信任的EE,将有助于像手机支付这类的应用。一旦客户、银行以及各种商业机构都能充分信任这些应用是安全的,这方面的应用将会增加。
在《移动手机的安全》一书中,Chris J. Mitchell认为下面的几个方面是与移动运算相关的主要安全问题:鉴权、数据完整性、数据保密性以及非抵赖性(non-repudiation)。文中阐释了安全存储器在提供作为一个可信任EE的这些业务方面所扮演的关键作用,包括能够支持多方相关者的丰富访问控制机制。
可信任的执行环境
一个EE是一些定义一个运算架构的软硬件的集合。一个EE可以是一个带有存储器的简单CPU,或者是一个运行在负责管理一个处理器和各种外设的OS顶层JAVA虚拟机。一个可信任的EE是一个其执行与预期相一致的运算环境。TCG所指的行为名声的概念,就是本文中的可信任运算。
显然,提供安全业务需要行为名声。TCG以及其它机构所采用的评估行为名声的方案是定义一个安全的启动过程,来验证手机的启动处于可信任状态。这个可信任状态的确认是通过验证手机中所执行代码(OS及其它)的完整性来获得的。
但是,仅仅是提供安全启动对于提供一个可信任的EE来说是不够的,因为系统在安全启动后会遭受流氓软件的攻击,在任何大型的OS中都有一些流氓软件可以利用的安全漏洞。建议采用运行期间的完整性检查来确认代码的完整性。这些检查可以周期性地进行,也可以在关键事件发生前进行。不过,运行期间的完整性检查只能在攻击发生时方可检测到。虽然这可以降低破坏性的风险,但在存在流氓软件的环境中还不能提供一个可信任的EE。
基于闪存的安全性
许多对PC和手机的攻击可以追溯到攻击者修改非易失性存储器中的数据/代码。基于闪存的安全技术保护存储器免受这类攻击,防止未经授权的修改。单单是在基带处理器中提升安全保护的手机无法防止对闪存的修改。它只是能够检查到数据的修改而作为完整性检查的一部分,这种检查在某些情况下也显得有点太迟。
TCG创建了可信任的平台模组(TPM)的概念,当其与PC集成到一起时,为大量的应用提供了改进的基于硬件的安全性。TPM是一个存储密钥、密码和数字鉴权的微控制器,通常安装到PC的主板上。TCG的手机工作组将TPM这一概念扩展到其MTM标准中手机的EE。与TPM和MTM不一样,基于闪存的安全不仅仅是检测完整性的失效,还确保完整性保持在一个合理的威胁模型(threat model)之下。该功能叫做完整性保护存储器,对避开针对手机的非易失性存储器的攻击非常重要。一个没有基于闪存的安全系统的MTM只能够检测数据/代码的变化,却无法有效地避免。但MTM检测到数据/代码的变化时,破坏可能已经发生了。
基于闪存的安全所提供的完整性保护的另一个重要结果是数据的有效性。可信任EE的其它解决方案集中在数据的保密性上。例如,它们确保流氓软件无法读取用户的信用卡号码,但却无法保证信用卡号码不被病毒所删除,从而导致成千上万的用户无法使用他们的手机来进行移动支付。而基于闪存的安全技术则能够同时提供上述保密性和有效性。
基于闪存的安全系统(图1)采用多芯片封装,包括非易失性存储器(闪存)以及一片提供对非易失性存储器的访问控制的安全处理器。该安全处理器还用作为一个可信任的EE,用于手机中提供安全业务。该安全处理器作为一个可信任EE是非常理想的,因为它最靠近存储完整性保护代码、数据以及密钥的非易失性存储器。因为它也是一个隔离的环境,只能执行基于闪存的安全系统所提供的专用软件,因而不会受到像缓冲器溢出这类的攻击。
图1:如何将基于闪存的安全系统嵌入到手机中。
图2所示的是一个安全系统的方框图。其中,CPU是一片ARM7-TDMI处理器,运行速率约60MHz。加密引擎支持均衡加密(AES、DES、3DES)和非对称加密(PKI based on RSA)算法。安全处理器作为主处理器(基带处理器应用处理器)与闪存之间的看门狗,监控所有对闪存的访问。由安全处理器所提供的安全服务包括加密和闪存器件保护。
图2:基于闪存的安全系统方框图。
安全处理器及安全闪存服务
安全处理器为手机上运行的应用提供一个可信任的EE。手机OEM和网络运营商严格控制安全处理器上运行的软件,并且是与主机相互隔离的。只有经验证且信任的程序才能安装到安全处理器上。安全处理器上运行的软件比手机上运行的一般OS要小得多,故软件的验证比较容易。安全处理器提供与手机安全相关的四种安全服务(鉴权、数据完整性、数据保密性和非抵赖性)。图3给出了基于闪存的安全系统的软件结构。在主机平台上实现的API提供安全存储服务,以及加密服务。API将功能呼叫转换成通过存储器接口发往安全处理器的消息。
为了消除对安全处理器的恶意消息攻击,利用精心定义的语法和语义设计这些消息被。在一个消息中,每个变量长度的数据域的开始带有一个特殊标记,随后是域长度,它在数据之前。这与C字符串不一样,其长度只有当你浏览字符串并发现一个无效字符后方可知道其长度。有一个消息分析器来分析消息并检查是否是有效的语法,直到语法检查通过后才对数据进行处理,这就对缓冲器溢出这类的攻击提供了保护。然后,才根据消息中特定域将消息分发到正确的中介(agent)。该中介根据消息中的规定为缓冲器分配足够的空间,并经消息分析器验证。只有有限的中介来处理有限的消息,这些中介将仔细地分析安全漏洞。消息不能生成能够在安全处理器中执行的任意的本地代码。消息中没有功能指针。
安全处理器提供安全存储器服务,包括存储密钥、证书、代码和数据。可以根据应用中的安全需求来制订这些内容的访问权限。
图3:基于闪存的安全软件结构。
安全分区
非易失性存储器可以被分成独立的存储器分区,每个分区具有单独的访问控制。有一个单独的硬件强制性访问控制来控制程序的读取、程序的擦除,以及改变分区的访问权限的其它动作。访问可以通过密码控制,为了增强安全性,也可以采用PKI鉴权。在不同的寿命阶段,由不同的保管者来创建这些分区。例如,网络运营商可以创建一个代码分区,其中包括OS和运营商的其他验证软件。该分区将只有一个读取访问,没有任何的鉴权,故代码可以任意地执行。而同时,程序的擦除却需要运营商的PKI鉴权。这就防止了主机平台上运行的任何流氓软件来修改代码分区。从而在并非只是启动过程中的所有时间内,维持了OS和其他相关软件的完整性。
具有丰富的访问控制的安全分区提供了数据完整性和保密性。该分区可以被保护,免于未授权的人利用密码或PKI鉴权来读取访问。从而提供了所需数据的保密性。相似地,分区还可以被保护避免未授权的写操作,从而保持了数据的完整性。
该访问控制还具有一个附加功能,即定义了单独分区的可用性。例如,在通过SIM卡锁检查之前,主代码分区被锁定到只能读取。这就迫使在SIM卡锁检查没有通过之前无法使用手机。
存储对象
基于闪存的安全系统被用来存储数据、代码、密钥、证书以及代币。移动设备通常将密钥存在ROM中,但与闪存相比其灵活性较差且容量有限。在非易失性存储器中加密的密钥也能够提供保密性,但无法防止密钥被流氓软件擦除。而基于闪存的安全系统则允许存储一个虚拟的数量无限的密钥。在任何时候可以利用OTA更新来增加更多的密钥。通过将存储对象存储到合适的分区中,可以提供保密性,完整性和鉴权。
动态加密和加密服务
安全处理器还提供一个动态加密功能。该功能允许主机向存储器发送纯文本,文本在写入闪存时被加密。所用的加密算法是AES-CTR。
密码服务是PKCS#11 API的一个子集。API独立于主机平台,并支持对称密钥和公钥。API将功能呼叫转换成送往安全处理器的消息,在这里利用加密闪存内核进行处理。密钥的完整性和保密性得到很好的保护,因为它们不会离开安全处理器。由安全处理器提供的加密服务允许人们在安全处理器与外部服务器之间创建一个安全的通信信道。该通信通道的安全与主机平台无关。从而可以实现FOTA和移动商业这类的应用。安全处理器提供一个高级的设备鉴权,这是由于根密钥根本不会离开安全处理器。
结论
基于闪存的安全系统提供了一个可信任的EE,以及一个具有丰富的访问控制机制的安全非易失性存储器,支持多方保管。具有PKI的安全非易失性存储器意味着代码和数据的完整性得到保护,结果使数据完整性和保密性更加安全。鉴权和非抵赖性是安全处理器的结果,构成一个具有嵌入式加密闪存内核的隔离式可信任EE。此外,安全非易失性存储器使得数据在任何时候都可用。仅仅利用编码是不可能实现这一性能的。利用加密学,像MTM这类的其它方案虽然能够监测到数据是否被篡改,但却无法防止篡改。如果没有保护,病毒还能摧毁成千上万手机上的信用卡号,从而使得用户无法进行移动支付。
有基于闪存的安全系统提供的存储器完整性保护使得密钥的配置更加灵活。具有较大的容量来存储加密密钥和数字证书。更进一步,还能够通过空中无线接口进行密钥更新。
对PC和手机的许多攻击可以追溯到非易失性存储器中数据和代码的篡改。基于闪存的安全系统保护存储器免受这类攻击,而其他类型的手机安全方案则不能。像MTM或基带安全解决方案倚赖的是安全启动以及在运行时间内检查数据和代码有无变化。实际上,在检查时,修改的代码可能已经对敏感数据进行了篡改。而防止对数据和代码的篡改,构建一个可信任的EE是至关重要的。 采用基于闪存的安全存储器来创建并维护一个可信任EE将有助于实现更先进的手机应用,例如手机支付安全和可靠性应用,并增加公共机构和消费者的采用。(来源:电子工程专辑) |