李 闽,张倩颖,2,3,王国辉,2,施智平,4,关 永,5
(1.首都师范大学 信息工程学院,北京 100048;2.高可靠嵌入式系统北京市工程研究中心,北京 100048;3.中国科学院计算技术研究所计算机体系结构国家重点实验室,北京 100190;4.电子系统可靠性技术北京市重点实验室,北京 100048;5.北京成像理论与技术高精尖创新中心,北京 100048)
随着移动设备和信息技术的快速发展,移动设备中存储了越来越多的用户敏感信息,例如个人密钥、面部信息和指纹信息,这些信息保存在磁盘或闪存等可持久存储设备中,防止设备重启时丢失敏感信息,从而进行身份验证。为保护这些敏感数据,ARM 公司于2006 年提出TrustZone[1]安全解决方案。TrustZone 将CPU 划分为安全世界和普通世界,其中安全世界提供了可信执行环境(Trusted Execution Environment,TEE)。TEE 是一个隔离的执行环境,它为运行在其中的可信应用(Trusted Application,TA)提供了安全性保证,保护可信应用免受来自普通世界的软件攻击。目前,高通、华为、三星等很多处理器厂商都在其产品中支持TrustZone 技术,提供可信执行环境。虽然TEE 已经得到商业化的应用,但是只能抵御软件攻击,不能抵御板级物理攻击,例如对Xbox[2]和PlayStation 3[3]的总线窃听攻击[4],对Galaxy Nexus 智能手机的冷启动攻击[5]等。板级物理攻击通过窃听CPU 和DRAM 之间的地址总线或篡改DRAM 的内容进行攻击,主要包括冷启动攻击、总线攻击和DMA 攻击。板级物理攻击所付出的代价不大,并且随着很多成熟的攻击工具被开源[6-7],攻击者可以很容易使用这些工具,例如:HALDERMAN 等[8]提出冷启动攻击,该攻击可以绕过TrustZone 机制并从DRAM 中获得密钥,从而解密出用户的敏感数据;MÜLLER 等[5]提出Frost 工具,该工具能够利用冷启动攻击从手机中获取最近的电子邮件、照片和访问过的网站信息。
为抵御板级物理攻击,学术界和工业界提出许多解决方案,主要包括保护加密算法的抗板级物理攻击方案和操作系统层的抗板级物理攻击方案2 类,其中:第1 类方案会占用CPU 或GPU 的通用寄存器或专用寄存器,影响系统部分功能的运行;第2 类方案仅保护了程序中的部分敏感数据,无法满足保护TEE 系统的安全性需求。片上内存(On-Chip Memory,OCM)具有不会暴露任何物理引脚或物理线的特性,保证了信息不会从物理引脚或者物理线上泄露,使运行在其中的任务具有抵抗板级物理攻击的能力。从保护文件系统的安全性出发,本文将OCM 作为TEE OS 和TA 的工作内存。基于ARM TrustZone 技术构建持久存储架构提供内存保护机制和持久存储保护服务,前者用于将持久存储保护服务运行在OCM 中,保护该服务的机密性和完整性,后者对文件系统中敏感数据进行加密保护和完整性保护,从而使文件系统抵御板级物理攻击。该架构以软件方式实现,无需占用专用硬件,可部署在没有板级物理攻击保护的现有系统上,以提高文件系统持久存储的物理安全性。在基于ARM TrustZone 的物理开发板上实现了持久存储架构的原型系统,普通世界运行Linux,安全世界运行OPTEE OS,并使用基准测试工具xtest[9]对系统性能进行评估。
TrustZone 通过硬件隔离技术提供一个TEE,TEE 可以有效地抵御软件攻击。TrustZone 利用硬件虚拟化技术,将片上系统(System on Chip,SoC)的硬件和软件资源划分为安全世界和普通世界。两个世界通过监控器模式进行切换,保证普通世界无法访问安全世界的资源,因此即使普通世界被攻破时也不会泄露安全世界的敏感数据。ARM TrustZone 架构如图1 所示。虽然TrustZone 可以对内存进行隔离保护,但并不对内存进行加密,这使存储在TrustZone 安全世界中的敏感数据面临通过板级物理攻击被窃取的威胁。
图1 ARM TrustZone 架构Fig.1 Architecture of ARM TrustZone
板级物理攻击通过窃听CPU 和DRAM 之间的地址总线或篡改DRAM 的内存进行攻击。本节将对冷启动攻击、总线攻击和DMA 攻击这3 种板级物理攻击进行介绍。
1.2.1 冷启动攻击
冷启动攻击利用DRAM 的剩磁特性进行攻击。剩磁特性是DRAM 的基本物理特性,无法消除,指设备在断电后存储在DRAM 中的信息不会立即消失,而会保留一段时间,并且在低温下大幅延长保留时间。
冷启动攻击有2 种实现方式:1)首先将事先准备好的U 盘等存储设备插入到目标计算机中,然后通过切断电源或重启目标计算机以启动U 盘中定制的操作系统,该系统能将DRAM 中的内容保存到U盘上的指定分区,从而得到存储在DRAM 中的数据;2)首先将正在运行的目标计算机的DRAM 进行冷却,然后将DRAM 迅速转移到事先准备好的攻击设备上,最后利用设备中的攻击程序读取DRAM 中的密钥等敏感信息。目前,已经有很多冷启动攻击成功的案例[10],对用户的敏感信息造成了严重威胁。
1.2.2 总线攻击
总线攻击一般分为总线窃听攻击和总线篡改攻击。攻击者通过总线分析工具连接到内存总线上,等待CPU 通过总线请求敏感数据,进而窃听或修改总线上传输的数据。目前,已经有很多总线窃听攻击成功的案例,例如MIT 研究团队对Xbox 的总线窃听攻击和IBM 研究院对U 盘等存储设备的USB 总线窃听攻击[11]。
1.2.3 DMA 攻击
DMA 攻击是一种利用DMA 接口将支持DMA的外设直接接入高速扩展端口,而无需CPU 或操作系统的干涉即可直接访问任意物理内存的攻击方式。DMA 攻击可以绕过操作系统的保护,通过对具有DMA 功能的外设进行编程,从而利用DMA 控制器读取存储在内存中的敏感数据。DMA 攻击可以通过便携式摄像机视频卡、网络接口卡等发起。
片上内存由高速SRAM 构成,通过内部高速总线与CPU 连接,使CPU 访问OCM 的速度要快于DRAM。OCM 与Cache 不同点在于其通常由软件控制并且设计比Cache 简单得多,因此更加灵活、功耗更低。
在设备引导完成后,操作系统和应用程序可以根据需要使用OCM,且OCM 不会对芯片外部暴露任何物理引脚或物理线的特性,使其可以抵御板级物理攻击。因此,本文使用OCM 作为TEE OS 和TA的工作内存以提高TEE 系统的物理安全性。
为抵御板级物理攻击和保护文件系统的敏感数据,近年来国内外学者进行了一系列相关研究,主要包括保护加密算法的抗板级物理攻击方案、操作系统层的抗板级物理攻击方案以及文件系统保护方案。
AESSE[12]是由德国亚琛工业大学提出的一种通过在微处理器上实现AES 来抵御冷启动攻击的方案。AESSE 利用处理器中SSE(Streaming SIMD Extensions)提供的寄存器来实现AES,使得密钥和其中间状态都不会离开处理器,保护了加密和解密的过程,但是与内核标准的AES 加密和解密相比,性能约下降了6 倍。
TRESOR[13]是由德国 埃尔朗根-纽伦堡大学提出的一种针对X86 架构抵御冷启动攻击和DMA 攻击的方案。TRESOR 在微处理器上实现AES 加密算法和密钥管理,使AES 加密算法完全运行在微处理器上,并利用英特尔的AES-NI 指令集,将AES 加密算法的所有中间状态和密钥存储在调试寄存器中,从而使攻击者无法在RAM 中获得任何密钥信息。
Loop-Amnesia[14]是由美国伊利诺伊大学提出的一种使磁盘加密能够抵御冷启动攻击的方案。Loop-Amnesia 将磁盘加密使用的密钥存储在X86 平台中的MSR(Model-Specific Register)性能计数器中,保护密钥不被攻击者窃取。该方案适用于基于操作系统的磁盘加密系统,并且项目已经开源。
PRIM[15]是由德国波鸿鲁尔大学提出的一个保护RSA 私钥的抗冷启动攻击方案。PRIM 使用对称加密将RSA 私钥加密存储在RAM 中,使攻击者无法获取明文的RSA 私钥,该对称密钥则存储在Intel的多媒体寄存器中。实验结果表明,PRIME 的RSA运行速度比传统的RSA 慢10 倍。
PixelVault[16]是由希腊计算机科学研究所提出的一个保护加密密钥的方案,用于保护AES 和RSA算法的物理安全性。PixelVault 将加密密钥存储在GPU 寄存器中,从而保护密钥的机密性。密码算法运行在GPU 的片上内存中且在运行时不会被抢占,以防止上下文切换时导致的密钥泄露问题。
Cryptkeeper[17]是由美国加州大学洛杉矶分校提出的一种减少敏感数据泄露的方案。Cryptkeeper 将RAM 划分为一个较小的明文段(Clear)和一个较大的密文段(Crypt),根据程序运行的需要动态将这两个段的数据进行交换,保证数据在加密段的安全性。Cryptkeeper 不能保护全部数据的安全性,在RAM 中总是存在一部分明文数据,并且由于频繁的产生磁盘交换,每页读取的时间开销达到了300 μs。
Sentry[18]是由加拿大英属哥伦比亚大学提出的一种保护手机和平板电脑免受冷启动攻击、总线窃听攻击、DMA 攻击的方案。在设备锁定状态下,Sentry 将后台运行的任务加载到SoC 的iRAM 中运行,并将其他敏感应用程序的内存页加密。在设备解锁状态下,根据程序运行的需要对页面进行解密。实验结果表明,Sentry 在CPU 密集型任务测试中表现出了良好的性能。
RamCrypt[19]是由德国 埃尔朗根-纽伦堡大学提出的一种抗板级物理攻击的方案。RamCrypt 作为一个Linux 内核补丁透明地加密了用户模式进程的地址空间,程序无需重写或者重新编译。RamCrypt通过存储在CPU 寄存器中的密钥,对RAM 中的敏感数据进行加密存储,仅在敏感数据使用时对其解密。sysbench 基准测试套件测试显示进程效率降低了25%。
MemVault[20]是由美国乔治亚大学提出的一种抗板级物理攻击方案。MemVault 将敏感信息标记为污染状态,并追踪标记信息的传播,在DRAM 中加密标记信息,在片上内存中进行解密。MemVault减少了敏感信息在移动设备上的泄露。
BitLocker[21]是微软公司提出的一种磁盘加密功能,用于保护存储在文件中的敏感信息。在系统启动期间,BitLocker 作为引导加载程序的组件,以确保安全地进行系统引导,并在引导完成后作为操作系统内核的驱动程序,以保护敏感信息的机密性和完整性。BitLocker 通过与可信平台模块(Trusted Platform Module,TPM)一起使用,可以在受保护的文件解密前对其完整性进行验证,验证不成功将禁止对其进行访问。BitLocker 在文件加密和解密时使用的密钥由TPM 进行管理,TPM 保证只有当平台可信时才会将密钥交给BitLocker 使用。BitLocker 以透明的方式运行,可以配置在微软的Windows Vista及以上版本的操作系统中。
dm-crypt[22]是Linux 内核2.4 版本开始提供的一个磁盘加密模块,可以运行在多种存储块设备中,为用户提供了创建块设备的通用方法。dm-crypt 在用户和块设备之间提供一个加密函数,用户可以指定dm-crypt使用的密码算法、加密模式以及密钥,进而在Linux的/dev目录下创建块设备。dm-crypt 可以透明地加密文件数据,保护了文件的安全性。dm-crypt作为Linux 内核中内置的基础系统,已经包含在大多数Linux 的发行版本中。
针对国内外相关研究中抗板级物理攻击方案和文件系统保护方案存在的不足,本文提出抗板级物理攻击的持久存储方法。该方法在TEE 内核层实现内存保护机制,利用OCM 可以抵御板级物理攻击的特性,将OCM 作为TEE OS 和TA 的工作内存,DRAM 作为其后备存储保存加密的页面,从而提高了TEE 系统的物理安全性;在内存保护机制的基础上实现了持久存储保护服务,保护了文件系统中敏感数据的机密性和完整性,从而提高了文件系统的安全性。
保护加密算法的抗板级物理攻击方案需要占用CPU 或GPU 的通用寄存器或专用寄存器,影响系统的正常运行。目前,大多数平台都在片上系统中配置了OCM 且在设备启动后,OCM 可以由用户根据需要进行使用,因此将TEE OS 和TA 运行在OCM 中不会对系统运行产生影响,不需要一直占用专用寄存器资源。本文方案以软件方式实现,在不影响系统其他功能的基础上,可以部署在没有板级物理攻击保护的现有系统上,提高了系统的物理安全性。
操作系统层的抗板级物理攻击方案只保护了程序中的一部分敏感数据,仍有一部分敏感数据会被攻击者窃取。本文方案通过内存保护机制保护存储在DRAM 中TEE OS 和TA 页面的机密性和完整性,使明文页仅出现在OCM 中,从而保证TEE 系统可以抵御板级物理攻击,提高了TEE 系统的物理安全性。
文件系统保护方案虽然能够提高文件系统持久存储的安全性,但由于文件加密使用的密钥存储在DRAM中,攻击者可以通过板级物理攻击获取密钥信息,进而解密出文件系统中的敏感数据,因此文件系统保护方案无法抵御板级物理攻击。为了保护文件系统的安全性,本文在内存保护机制的基础上实现了持久存储保护服务。持久存储保护服务运行在安全世界的OCM中,使其可以抵御板级物理攻击。该服务对文件系统的敏感数据提供机密性和完整性保护,确保了文件系统中敏感数据持久存储的物理安全性。
本文提出抗板级物理攻击的持久存储方法,将OCM 作为TEE OS 和TA 的工作内存,使它们在OCM 中运行,DRAM 作为其后备存储,保存加密的敏感代码和数据,保证TEE OS 和TA 免受板级物理攻击,然后在此基础上实现持久存储保护服务对文件系统中敏感数据进行加密存储与完整性校验,以保护文件系统的机密性和完整性。
抗板级物理攻击的持久存储架构如图2 所示。为了使文件系统能够抵抗板级物理攻击,该架构基于TrustZone 技术,在TEE OS 内核层中增加了内存保护机制并在TEE 用户层实现了持久存储保护服务,其中,内存保护机制对TEE OS 和TA 提供内存保护,持久存储保护服务对文件系统中敏感信息提供机密性与完整性保护。
图2 抗板级物理攻击的持久存储架构Fig.2 Architecture of persistent storage resistant to boardlevel physical attacks
抗板级物理攻击的持久存储架构能够抵御软件攻击和板级物理攻击。对于软件攻击,TrustZone 通过硬件隔离机制,将DRAM 划分为普通世界和安全世界,因为普通世界无法对安全世界的资源进行访问,所以恶意的操作系统和恶意的普通应用无法对TEE OS 造成破坏。对于板级物理攻击,内存保护机制保证了TEE OS和TA 页面的机密性和完整性,将OCM 作为TEE OS和TA 的工作内存,当TEE OS 或TA 加载到OCM 中运行时,对其页面进行解密并检查其数据页的完整性,当TEE OS 和TA 置换到DRAM 中时,对其页面进行加密并对数据页进行完整性保护。在OCM 中运行的持久存储保护服务实现了对文件系统中敏感数据的加密存储和完整性校验:当用户对文件系统中敏感数据写入时,对敏感数据加密,保护其机密性;当用户对文件系统中敏感数据读取之前,会验证敏感数据的完整性,只有验证成功后,才对敏感数据进行解密,从而防止敏感数据被篡改。
为保护TEE OS和TA不会被攻击者所窃取或篡改,需要确保后备存储上数据的机密性和完整性。抗板级物理攻击的持久存储架构在可信操作系统中实现内存保护机制保证TEE OS 和TA 的机密性和完整性,内存保护机制工作流程如图3 所示,具体步骤如下:
图3 内存保护机制工作流程Fig.3 Workflow of memory protection mechanism
1)拦截缺页中断。当CPU 访问的数据或代码不在OCM 中时,会产生一个缺页异常,该异常会被内存保护机制拦截并进行处理。
2)内存机密性/完整性校验。内存保护机制会在OCM 中找到一个空闲页并将DRAM 中所需的页面加载进去,在加载的过程中使用SHA-256 算法验证代码和数据的完整性。在验证成功后,使用AES算法对加载的页面进行解密。
3)页面重映射。内存保护机制更新页表项并将该页重新映射到分配的OCM 空闲页中。
4)CPU 重新访问。CPU 从OCM 中重新访问该代码段或数据。
5)机密性/完整性保护。当OCM 没有空闲页时,使用最近最少使用页面置换算法将OCM 中的页与DRAM 进行置换。当置换的页为数据页时,内存保护机制会将该页加密并存储到DRAM 中,并将其哈希值存储到OCM 中以备下次验证。
为保护用户敏感数据的机密性和完整性,在抗板级物理攻击的持久存储架构中设计一个持久存储保护服务,对普通世界的文件系统中敏感数据提供机密性和完整性保障。持久存储保护服务架构如图4 所示。
图4 持久存储保护服务架构Fig.4 Architecture of persistent storage protection service
当持久存储保护服务需要对文件系统中敏感数据进行写入/读取时,首先会对数据进行加密/解密,然后通过RPC 调用,将加密/解密的数据发送给TEE Supplicant,最 后TEE Supplicant 将加密/解密的数 据交由普通世界的文件系统进行写入和读取操作。
普通世界的文件系统使用二叉树的结构对加密文件进行存储。这些加密的文件以编号进行区分,通过一个数据库文件进行管理。数据库文件中保存了加密文件对应的哈希值,每次对加密文件进行操作时,会先计算每个文件的哈希值,并与保存的哈希值进行比较验证文件的完整性。
密钥管理器是持久存储保护服务的一个组件,负责提供敏感数据的加密和解密以及密钥的生成。对于每一个加密的文件都有唯一的文件加密密钥(File Encryption Key,FEK)用于加密敏感数据。密钥生成流程如图5 所示。首先通过密钥派生函数(Key Derivation Function,KDF)使用设备密钥(Device Key,DK)和持久存储保护服务的哈希值k派生出安全存储密钥(Secure Storage Key,SSK),然后使用随机数派生器生成的随机数random 与SSK派生出每个文件的FEK,最后通过AES-128 加密算法将SSK 作为密钥加密FEK 生成En-FEK 并保存在加密文件头部。
图5 密钥生成流程Fig.5 Procedure of key generation
当用户写入敏感数据时,首先使用SHA-256 算法计算持久存储保护服务的哈希值k 并获取DK,然后调用KDF(DK,k)派生出SSK,之后使用随机数派生器生成的random 与SSK 调用KDF(SSK,random)派生出FEK,FEK 用于加密敏感数据,保证敏感数据的机密性,最后使用SSK 作为AES-128 的加密密钥加密FEK 生成En-FEK。敏感数据使用FEK 加密后发送给普通世界的文件系统进行持久存储,写入完成后计算加密文件的哈希值kv,将kv 和En-FEK 保存到数据库文件中,分别用于验证加密文件的完整性和解密。
当用户读取敏感数据时,验证加密文件的哈希值是否在数据库文件中存在,验证失败说明该文件无效或文件内容已经被攻击者篡改,结束本次读取;在验证成功之后,首先密钥管理器调用KDF 算法使用DK 和重新计算的持久存储保护服务哈希值k 派生出SSK,然后使用SSK 将获取到的En-FEK 通过AES-128 进行解密得到该加密文件的FEK,最后使用FEK 将密文数据解密。解密失败说明FEK 派生失败,持久存储保护服务的哈希值k 已经发生变化,即持久存储保护服务已经被篡改,获取不到明文数据;解密成功则将明文数据发送给用户。
本文原型系统选用开源的OP-TEE 2.6.0 作为安全世界的操作系统,选用Linux 的imx_4.1.15_2.0.0_ga 版本作为普通世界的操作系统。物理硬件平台选用支持ARM TrustZone 的NXP BD-SL-i.MX6 开发板,在该开发板上实现了抗板级物理攻击的持久存储架构。
由于OP-TEE OS 和TA 需要在运行时加载到OCM中运行以抵抗板级物理攻击,因此需要将OCM 分配给安全世界,用于运行OP-TEE OS 和TA。DRAM 一部分分配给安全世界,作为OCM 的后备存储,保存TA 的加密页面;另一部分分配给普通世界,用于运行Linux和普通应用。OP-TEE OS 和TA 运行在0x00900000-0x0093FFFF,后备存储地址为0x4F000000-0x50000000,Linux 运行在0x12000000-0x4EFFFFFF。
为使OP-TEE 能够实现内存保护机制,以在OCM 不足时与DRAM 进行页面置换,将运行时代码和数据加载到OCM 中。本文在OP-TEE OS 的内核层中构建一个物理页面池,它映射不同的虚拟地址。当物理页面池不足时,使用最近最少使用页面置换算法选择最旧的物理页面保存到后备存储中。在保存的过程中使用加密算法AES-128 保护置换出的页面数据段和代码段的机密性,并使用SHA-256 哈希算法保护代码段的完整性。
为保护文件系统的机密性和完整性,原型系统实现了持久存储保护服务:
1)利用SHA-256 哈希算法计算持久存储保护服务的哈希值;基于散列消息认证码(Hash-based Message Authentication Code,HMAC)的密钥派生函数,先后派生出SSK 和FEK;利用AES-128 加密算法以SSK 作为对称密钥加密FEK 生成En-FEK。
2)利用哈希算法SHA-256,验证持久存储文件和持久存储保护服务的完整性;利用AES-128 加密算法加密/解密明文/密文数据,从而保证敏感数据的机密性。
OCM 大小与持久存储保护操作是影响抗板级物理攻击的持久存储架构性能的关键因素,因此,本文将对这2 个关键因素进行测试,评估本文原型系统产生的时间开销。
本文测试在NXP BD-SL-i.MX6 开发板上进行,该板有4 个ARM Cortex-A9 处理器核心,1 GB DDR3L,256 KB OCM,主频为1 GHz,支持ARM TrustZone。
本文评估了内存保护机制对原始OP-TEE 系统的性能影响,利用基础测试工具xtest 对原始OP-TEE系统和原型系统的SHA1 哈希算法进行测试。为保证测试的可靠性,分别对原始OP-TEE 系统和原型系统进行30 次回归测试。
如图6 所示,原始OP-TEE 系统执行SHA1 哈希算法的最大时间为134.284 μs,30 次实验平均时间为132.543 μs,而原型系统执行SHA1 哈希算法的最大时间为186.624 μs,30 次实验平均时间为184.172 μs。原型系统的性能开销约为原始OP-TEE 系统性能的72%,这部分开销是由于内存保护机制在保护可信应用时,片外内存需要与片上内存进行页面置换,以将可信应用加载到安全的片上内存中运行,从而导致页面置换产生了额外的时间开销,但是该时间开销对于用户而言是在可接受范围之内的。
图6 SHA1 哈希算法执行时间开销Fig.6 SHA1 hash algorithm execution time overhead
通过上述分析得知,原型系统中内存保护机制的时间开销是在页面置换时产生的,因此OCM 的大小是影响性能的主要因素。由于可用的OCM 非常有限,并且当空闲的OCM 地址空间不足以加载可信任务时,会产生过多的页面置换,因此本文对OCM的大小进行调整,从256 KB 到352 KB,并测试不同OCM 大小通过持久存储保护服务对1 KB 数据进行写入和读取所需的时间。每种情况进行30 次测试取其平均值。由于实验所用开发板的OCM 最大为256 KB,为了测试OCM 大小对性能的影响,OCM大于256 KB 的实验均为仿真实验,例如OCM 为288 KB、320 KB、352 KB。如图7 所示,使用本文方案对文件系统进行保护时,在OCM 为256 KB 的情况下,原型系统的性能比原始OP-TEE 系统降低了2 倍,这是由于调用持久存储保护服务时会进行多次的页面置换,以将该服务加载到OCM 中运行。随着OCM 地址空间的增大,工作内存也随之增大,时间开销呈线性减少。
图7 不同OCM 大小对写入和读取1 KB 敏感数据的时间开销Fig.7 Time overhead of writing and reading 1 KB sensitive data with different OCM sizes
为探究持久存储保护的不同操作对系统性能的影响,本节对持久存储保护服务的写入、读取和删除操作时间进行测试,分别针对两种不同大小的数据(100 KB 和1 MB)进行实验。测试同样进行30 次并取平均值。如图8 所示,写入100 KB 和1 MB 数据的时间分别为5.947 s 和50.913 s,读取100 KB 和1 MB 数据的时间分别为0.918 s 和3.395 s,删除100 KB 和1 MB 数据的时间分别为0.750 s 和0.736 s,可以看出对同样数据量的写入、读取和删除操作而言,写入操作的时间是最长的,即写入操作是持久存储保护服务产生时间开销的主要因素。从图8 中还可以看出,写入操作和读取操作都随着数据量的增加呈线性增长,而删除操作是最快的,并且与数据量的大小没有关系。由于用户敏感数据通常是密钥或个人信息,这类数据一般比较小,因此持久存储保护服务开销对用户而言是在可接受范围之内的,并且可以通过优化密码算法对大文件的保护性能进行改善。
图8 持久存储保护操作时间开销Fig.8 Time overhead of persistent storage protect operation
本文提出抗板级物理攻击的持久存储方案,对于其抗板级物理攻击的安全性分析具体如下:
1)冷启动攻击。本文利用片上内存作为TEE OS 和TA 的工作内存抵御冷启动攻击。对于第一种冷启动攻击,需要对目标设备进行重启才能进行后续的攻击,研究表明设备重启后OCM 中的数据会立即被BootROM 清除[23],因此攻击者在使用第一种冷启动攻击对本文方案进行攻击时无法获得片上内存中的敏感数据。对于第二种冷启动攻击,攻击者会将目标设备的DRAM 冷却后转移到攻击设备中,从而读取DRAM 中的敏感数据,本文方案利用内存保护机制对DRAM 中的数据进行加密保护,即使攻击者将DRAM 冷却后转移到攻击设备中进行读取,也只能获得加密后的密文信息,使攻击失败。因此,本文方案可以抵御冷启动攻击。
2)总线攻击。本文使用OCM 作为工作内存保存页面的明文形式。由于OCM 的地址空间有限,因此需要将OCM 中运行完毕的页面切换到DRAM进行保存。数据在总线上进行传输前,本文方案的内存保护机制对数据加密以保护其机密性,因此攻击者只能窃听到加密数据,从而抵御总线窃听攻击。在页面从DRAM 加载到OCM 后,内存保护机制对页面解密并验证页面的完整性,如果验证失败,说明页面已经被攻击者篡改,则结束本次加载,从而抵御总线篡改攻击。因此,本文方案可以抵御总线攻击。
3)DMA 攻击。本文方案建立在ARM TrustZone技术的基础上,为了防止DMA 攻击窃取片上内存的敏感信息,利用TrustZone 的硬件隔离机制,将普通世界的恶意DMA外设与分配给安全世界的OCM进行隔离,使攻击者无法通过恶意DMA 外设访问OCM 中的敏感数据,从而使DMA 攻击失败。因此,本文方案可以抵御DMA 攻击。
本文提出抗板级物理攻击的持久存储保护方法,使文件系统的持久存储可以抵御板级物理攻击。该方法将OCM 作为TEE OS 和TA 的工作内存,并保护存储在DRAM 中TEE OS 和TA 的机密性和完整性,使TEE 系统可以抵御板级物理攻击,在此基础上实现持久存储保护服务,为文件系统中敏感数据提供机密性和完整性保护,提高了文件系统持久存储的物理安全性。该方法以软件的方式实现,无需对硬件进行额外的修改,可以很方便地部署在没有板级物理攻击保护的现有系统上。实验结果表明,本文方法的时间开销主要来自OCM 与DRAM 的页面置换和对持久存储文件的写入和读取操作,在用户可接受范围之内。由于OCM 大小对整个架构性能具有较大的影响,因此下一步的研究重点是仅将TA的关键页面加载到OCM 中运行,其余部分在DRAM中运行,从而增大工作内存空间,提升系统性能。