2024年5月15日发(作者:系统损坏怎么修复电脑)
计算机研究与发展
Journal of Computer Research and Development
D()I:10.7544/issn1OOO一1239.2O1 5.2O150582
52(10):2224—2238,2O15
基于Trustzone的强安全需求环境下可信代码执行方案
张英骏 冯登国 秦 宇 杨 波
(中国科学院软件研究所可信计算与信息保障实验室 北京 100190)
(计算机科学国家重点实验室(中国科学院软件研究所)北京
(zhangyingj un@tca.iscas.ac.cn)
100190)
A Trustzone—Based Trusted Code Execution with Strong Security Requirements
Zhang Yingj un ,Feng Dengguo ,Qin Yu ,and Yang Bo
(Trusted Computing and Information Assurance Laboratory,Institute 0 SoJtzgdare,Chinese A(ademy O/Sciences,Beijing
100190) .
(State Key Laboratory of Computer Science(Institute of Software,Chinese Academy o2 Sciences),Beij ing l O0 1 90)
Abstract We propose a secure scheme for trusted code execution on mobile embedded devices based
on the idea of program whitelist,which is focus on the application scenarios with strong security
requirements and fixed calculation functions,such as industrial 4.0 and“bring your own device”.We
1everage the trusted execution environment provided by ARM Trustzone and the virtual memory
protection mechanism of ARM to build an enclave in the OS kernel’S address space.which cannot be
tampered by the untrusted OS kernel itself.Some monitor functions are placed in the enclave to
provide integrity protection for executable files,runtime code and runtime control flow of trusted
processes,ensuring that only authorized code complying with the whitelist strategy can be executed on
target devices.The sheme also enhances the security for communications between the target devices
and the center control server by building secure shared memory areas between communication client
processes and Trustzone secure world,and by building a trusted timer interrupt source in Trustzone
secure world.Secure protocols for whitelist update and platform status attestation are proposed based
on these security enhancements.We implement the prototype system on real Trustzone—enable
hardware devices.The experimental results show that our scheme achieves ideal usability,security
and efficiency.
Key words whitelist;trusted code execute;Trustzone technology;trusted execution environment;
kernel enclave;platform status attest ation
摘要针对工业4.0等具有强安全需求、计算功能相对固定的新型信息化应用场景,基于白名单思想
提出了1种移动嵌入式平台可信代码执行方案.利用ARM Trustzone硬件隔离技术构建可信执行环
境,结合ARM虚拟内存保护机制,构造内核飞地,确保系统监控模块无法被不可信内核篡改或绕过.以
此为基础为可信进程提供可执行文件完整性、运行时代码完整性、控制流完整性3种层次的白名单保
护,确保设备只能执行符合白名单策略的授权代码.通过构建通信客户端进程与Trustzone安全世界的
安全共享内存区,利用Trustzone对外设中断事件的控制能力构建可信时钟中断源,确保Trustzone安
全世界与中控服务器通信的隐私性、不可屏蔽性.在此基础上设计安全的白名单更新与平台状态证明协
议.在真实设备上实现了原型系统,实验结果证明了该方案的安全性和较为理想的运行效率.
收稿日期:2015-06一I6;修回日期:2015 08 12
基金项目:国家自然科学基金项目(91118006,61202414,61402455)
张英骏等:基于Trustzone的强安全需求环境下可信代码执行方案 2225
关键词 白名单;可信代码执行;Trustzone技术;可信执行环境;内核飞地;平台状态证明
中图法分类号TP309
随着物联网技术的飞速发展和移动嵌入式设备
计算性能的提升,工业4.0、BYOD(bring your own
入、代码重用等攻击获取系统控制权的现象在PC
和移动平台已经比较普遍,使得部署在系统内核的
防护技术能够轻易被攻击者攻破.目前利用系统漏
洞专门针对Bit9 Parity的攻击已经出现[4].不仅是
白名单安全系统,所有依赖内核本身的防护技术都存
device)等广泛使用智能化移动嵌入式设备的新型
信息化应用场景应运而生.工业控制网络(工控网)、
企业办公网络等具有强安全需求的环境正在打破以
往的封闭性,逐渐采用通用的软硬件系统和通信协
议,甚至直接通过互联网与公共网络连接.在提高生
产效益的同时,也给这些封闭环境带来了病毒、木
马、拒绝服务等传统的信息安全威胁.这些系统的安
全直接牵扯到企业、工业界的经济利益,具有重大战
略意义,使得黑客甚至国家敌对势力、恐怖分子逐渐
将其视作首要攻击目标.尤其是近年来出现的“高级
持续性威胁”(advanced persistent threat,APT)的
新型攻击手段[1],往往利用最新的系统零日漏洞,针
对性强,具有强大的技术、财力支持.面对日益严重
的安全威胁,传统的基于特征签名的反病毒技术已
不足以保证这些系统的安全,原因在于特征签名技
术只能应对已知的恶意程序,其病毒库的更新落后
于APT攻击的更新速度.据美国权威安全测评机
构NSS Labs调查,主流反病毒软件检测最新的恶
意程序平均需要45 hl2],这段时间足以令APT攻击
引发重大的安全事故.
与基于特征签名的反病毒技术不同,白名单技
术对系统和应用程序的正常特征建模,只允许满足
白名单策略的系统行为发生,能有效阻止未知恶意
程序的运行.由于白名单技术采用“默认拒绝”的策
略,不完善的白名单策略将影响系统正常功能的运
行.对于工控系统和企业办公网络,环境相对封闭,
功能相对固定,只需运行少量特定的软件和系统服
务,因此白名单技术非常适用于这种强安全需求的
应用场景,能够有效阻止APT等新型攻击手段.
作为系统监控技术的一种,白名单技术主要依
赖于2个安全假设:监控模块的可信与策略验证模
块的可信.目前较成熟的白名单产品如Bit9 Parity[ ,
大多部署在系统内核层,其安全性取决于内核是否
可信.而工业控制网络由于长期处理物理封闭状态,
其PC(personal computer)和嵌入式设备系统难以
更新,通常具有很多安全漏洞.而BYOD场景下,企
业员工使用个人移动设备进行办公,各种定制化的
内核以及不可信应用的安装很难保证内核的可信.
事实上,利用各种系统漏洞,如堆栈溢出实施代码注
在根本安全问题,即攻击者与安全模块具有相同的特
权等级.如Windows 7内核的patchguard安全技
术,先后出现的3个版本均在发布不久后被破解 ].
面对层出不穷的系统漏洞,利用硬件隔离技术
为安全工具构建与内核隔离的可信执行环境,实现
内核防护的理念逐渐成为研究热点.目前主流的实
现方法包括虚拟化技术和基于安全协处理器的技
术.虚拟化技术利用虚拟机管理层对系统资源的管
控能力实现虚拟机自省,实时监控客户虚拟机的状
态并检测可能的内核攻击;然而虚拟机管理层过于
复杂,往往具有比操作系统更多的安全漏洞,同时硬
件虚拟化带来的性能开销对移动嵌入式设备的计算
能力来说是不可接受的,而且并不是所有移动嵌入
式设备都提供虚拟化支持.基于安全协处理器的内
核漏洞检测方案也已经被提出[6],然而这种方法只
能提供隔离执行环境,缺乏对系统资源如内存、外设
的控制能力,这会导致2方面的问题:1)部署在内核
代码区的监控功能易被攻击者篡改,无法达到虚拟
机自省的实时监控效果;2)基于协处理器的方案只
能对系统状态进行检测,无法对异常行为进行管控,
如IBM的Linux完整性度量架构方案_6],只能对系
统运行的进程实施度量和证明,却不能利用可信平
台模块(trusted platform module,TPM)协处理器
阻止非法进程的运行.
Trustzone技术 作为ARM架构特有的硬件
隔离机制,目前被移动嵌入式设备广泛支持.
Trustzone安全世界能够为白名单系统核心模块提
供隔离执行环境,具有对系统内存、外设的强大控制
能力,能够对系统行为进行实时监控.相对于复杂的
虚拟机管理层,Trustzone是实现移动嵌入式设备
白名单安全系统的理想介质.
本文在充分研究Trustzone技术的基础上,针
对工业4.0、BYOD等具有强安全需求的新型应用
场景,首次提出基于Trustzone技术的移动嵌入式
设备可信代码执行方案.该方案依据系统正常行为特
征构建策略白名单,确保在系统内核不可信的情况
计算机研究与发展2015,52(10)
存储器(static random access memory,SRAM)物
理不可克隆函数(physical unclonable function,PUF)
1)所有关闭MMU保护的操作被禁止.
2)所有关闭WXN保护的操作被禁止.
3)对于更新页表基址寄存器(TTBR)的操作,
安全世界需首先确保新页表基址与某一合法进程
s叫
一
技术创建安全设备密钥.
5.2监控代码部署
部署监控代码有2种方式:1)直接修改内核源
代码,在需要监控处写入smc指令.这种方式需要
pcb中保存的页表基址一致,即确保此操作发生
在正常的进程切换过程中.如果是进程创建后首次
调度产生的TTBR切换,安全世界要确保新进程页
重新编译内核并在目标设备上重新安装系统,部署
开销较大,且需要获取内核源代码;2)在内核镜像加
载时进行二进制代码重写,不需要改变系统镜像文
件.ARM架构指令集具有固定长度(Thumb模式下
表内容不违背正常世界地址空间的权限策略,即内
核代码区域必须映射为只读,用户地址空间映射必
须包含PXN属性,且对于包含内核代码的物理内
16 b,ARM模式下32 b),指令地址按字节对齐,且
安全世界可以预先获取内核的地址空间布局,因此
存,不能以可写方式映射到其他虚拟地址,这要求安
全世界记录所有内核代码对应的物理内存页地址.
如果上述策略检查通过,则允许TTBR更新操作执
行,否则禁止.
对于修改控制寄存器的操作,ARM提供专门
的指令,而页表更新的操作是通过普通的内存读写
指令完成的,安全世界无法区分内核对于页表的更
定位识别相关代码的位置比较容易,为二进制代码
重写提供了方便.本方案采用第2种方式,由安全世
界把需要监控的内核代码替换为smc指令,通过
smc指令的4 b立即操作数标识监控点类型.
5.3构造内核代码飞地
由4.1节分析可知,为构造内核代码飞地,需首
先插入2类监控点:修改相关控制寄存器(MMU,
WXN,TTBR)的指令和页表更新操作.ARM架构
新和对非页表内存的更新,而在所有内存写操作处
插入监控点会导致监控事件频繁触发,严重影响效
率,因此不能通过识别内存写指令的方式部署对页
表更新的监控点.本文借鉴虚拟化技术中影子页表
的管理机制r】引,强制所有包含页表的物理内存映射
提供专门修改控制寄存器的指令(1dc和mcr),直接
将内核代码中的这2类指令替换为smc指令即可.
这类监控点触发时,安全世界需确保:
为只读,每次内核更新页表时,将由于页权限错误产
Fig.5 Monitor trap process for pagetabtes update.
图5 页表更新事件转入安全世界流程
张英骏等:基于Trustzone的强安全需求环境下可信代码执行方案
生数据中止异常,跳转到异常向量表执行异常处理
程序.因此在异常向量表的数据中止异常处插入一
个监控点,即可确保所有的页表更新被安全世界拦
截.为保证所有页表内存被映射为只读,安全世界需
要在TTBR切换和页表更新监控点中加入新的安
全策略,即确保所有页表物理内存为只读且不存在
可写的多重映射.这要求安全世界在所有页表创建
时,记录其物理地址.ARM—Linux默认采用二级页
表格式,对一级页表,其创建发生在内核初始化自身
页表swap—Pg—dir,并尝试将其写入TTBR时,或
进程创建后首次调度,进行TTBR切换时.对二级
物理页表,其创建发生在一级页表更新事件中,两者
都可以被已有监控点拦截,从而确保上述策略能够
被安全世界有效验证.页表更新陷入安全世界的流
程如图5所示.
在数据中止异常监控事件触发时,安全世界需
要对3种不同情况分别进行处理:
1)当异常由系统正常功能触发时,如进程创建
时的写时拷贝机制,安全世界跳转到正常世界相应
的处理函数处即可;
2)当异常由合法的页表更新请求触发时,如
mmaP系统调用,安全世界获取调用参数代替内核
完成页表更新操作,虽然页表内存在正常世界中映
射为只读,但2个世界具有独立的地址空间映射,安
全世界可以将正常世界物理内存映射到自身地址空
间中进行修改,因此可以代理页表更新操作;
3)对于其他页表更新请求,安全世界需执行与
TTBR修改操作相同的策略检查.
安全世界可以读取正常世界的错误地址寄存器
(data fault address register,DFAR)、错误状态寄
存器(data fault status register,DFSR)来获取出错
地址和错误类型,以此区分上述3种情况.
综上所述,需要在正常世界中插人2类监控点:
控制寄存器修改(MMu,WXN,TTBR)、数据中止
异常,设置相应页表映射权限策略,即可构造内核代
码飞地,确保所有监控代码不被攻击者篡改.
5.4可信代码执行策略
5.4.1文件完整性保护
对基于可执行、共享库文件的白名单策略,需在
进程创建时对这些文件进行完整性度量.ARM—
Linux通过-厂0r走系统调用由父进程复制自身创建
子进程,子进程通过execve,mmap系统调用加载可
执行文件和动态链接库.将异常向量表中的系统调
用异常改为smc指令,即可统一拦截所有的系统调
用事件,并通过通用寄存器获取调用参数来识别系
统调用类型.这里不在具体的系统调用实现代码中
分别插入监控点的原因是在内核不可信的前提下,
相关监控点触发后安全世界必须第1时间得到通
知,因此直接在系统调用入口处插入一类监控点.整
个进程创建流程如图6所示.当系统调用发生时,安
全世界需进行如下检查:
1)如果是.厂0 系统调用,则计算父进程可执
行文件Hash值,如果匹配白名单其中一项,允许创
建子进程,否则停止创建并终止父进程.这里需要注
意的是,当.厂or忌调用返回时,内核已为子进程建好
相关的数据结构,包括内核栈、一级页表、进程控制
块等,此时安全世界需为该进程创建安全世界进程
控制块sw_pcb结构,并将一级页表基址写入sw_pcb.
2)如果是execve系统调用,则计算本进程可执
行文件Hash值,如果匹配白名单其中一项,则允许
加载可执行文件,否则立即中止进程运行.
3)如果是mmap系统调用,则首先读取函数的
prot参数,如果参数设置了可执行位,说明此次映
射为共享库文件映射,则进行文件完整性检查.如果
此次映射不是可执行映射,直接忽略并返回.
Modiifed Excepti0n Handler
/r
嘲() 、 厂 、
bnw init
匝; 地( b){ b8mn ̄wW# au¥nybd¥o
Il
cr
¥ed
eifat lnh氟e ad矾n aTe卜r _
一
1.
; b,l’.,lglI
 ̄EMonitor
) b irp handier
; bnw
__
ifq_hanaler
) /
Fig.6 Monitor trap process for system cal1.
图6 系统调用转入安全世界流程
综上所述,文件完整性保护机制需在系统调用
异常处理的入口和返回处设置监控点,拦截进程创
建、可执行文件和共享库加载事件,确保进程在创建
时的初始状态满足白名单策略.
5.4.2进程代码运行时保护
文件完整性保护机制只能保证进程初始状态的
可信,攻击者仍可通过恶意代码注入或直接篡改进
程代码,在运行时改变程序行为.wXN保护机制提
供写权限和可执行权限的互斥性,从而区分可执行
代码内存和堆栈数据内存,在硬件层面防止上述攻
击.因此安全世界只需在安全策略中确保WXN不
被禁用.这里需要注意的是,WXN不仅提供进程代
码运行时保护,内核代码飞地的构造同样依赖
计算机研究与发展2015,52(10)
wxN机制.因此本文假设系统提供wxN硬件支
持.对于不提供硬件支持的设备,WXN保护同样可
以通过软件实现.只需在页表更新事件中确保可写
属性和可执行属性不同时存在于同一内存映射中即
须与影子栈上保存的返回地址一致.然而ARM架
构并没有专用的函数调用和返回指令(如x86架构
的call,ret指令),函数的调用和返回都是通过普通
的b,bx,bl,blx跳转指令实现,或直接通过寄存器
写指令写入PC寄存器.这里假设安全世界可以从
中控服务器处预先获取可执行文件的相关信息,包
可.考虑到大部分ARM设备已提供WXN硬件支
持,上述假设是合理的.安全世界也可以通过定期度
量进程代码段,并与预置白名单比对,作为wXN保
护的增强机制.
5.4.3控制流完整性保护
基于内存代码的完整性保护可以确保进程只能
执行自身原有的安全代码.然而,基于控制流劫持的
括具体的编译器函数调用约定,因此安全世界能够
区分函数调用、函数返回和普通跳转指令.如根据
ARM架构过程调用标准,目标函数入口需在栈上
保存R11,LR(1ink register)寄存器内容,函数返回
前需从栈上恢复R11,LR寄存器内容,而普通跳转
代码重用攻击I1 ,通过修改进程堆栈上保存的指针
或返回值,构造一个以跳转指令为基础的攻击序列,
将进程原有代码片段重新组合从而执行恶意操作.
此类攻击不需破坏可执行文件完整性或运行时代码
完整性,目前已逐渐成为主流的攻击手段.相应的防
指令不包含这些出入栈操作.对于可执行文件,其加
载基地执是固定的,函数跳转地址白名单可直接从
中控服务器获取,对可重定位的动态链接库文件,在
确定其加载基地址后,加上白名单中的相对地址即
可得到实际地址白名单.
对于跳转指令的拦截,一个主要问题是smc指
令只能在特权模式调用,用户空间的smc指令将产
范措施主要有地址空间布局随机化(address space
layout random,ASLR)和影子栈.前者在可执行模
块加载时,将加载基地址及模块内部各段的相对地
生不可预知的错误.由于内核不可信的假设,必须提
供一种用户进程直接陷入安全世界的方法.ARM
架构的系统调用swi指令包含24 b立即数,用来传
址进行不同粒度的随机化,攻击者无法获得所需代
码片段的实际地址而无法构造攻击序列,目前
Android 4.0和Windows Vista均已实现ASLR机
递具体的系统调用号,可以使用Linux未定义的系
统调用号执行swi指令作为安全世界直达接口.系
统调用异常处理处的监控点可以区分正常系统调用
制.然而这种被动的防护手段无法防止新型的运行
时代码重用攻击 1 ,此类攻击会在地址随机化完成
后动态寻找可利用的代码片段,形成攻击序列.影子
栈保护机制的原理是对进程运行时的跳转指令进行
记录,保存一份进程运行栈的副本,根据一定的控制
流完整性策略进行检测.这种方法要求影子栈所在
和用户空间的转入请求.通过这种方式,在进程完成
可执行文件和共享库的加载后,安全世界将进程代
码中能够被代码重用攻击利用的跳转指令重写为
SWl’指令,作为跳转事件监控点.需要注意的是,安
全世界只需对目标地址以寄存器表示的跳转指令进
行重写,对于目标地址硬编码为立即数的指令,不能
被代码重用攻击利用,因为代码重用攻击通过篡改
内存区受保护,以防止影子栈被篡改,同时需要一种
拦截目标进程跳转指令的方式.本方案首次提出利
用Trustzone隔离技术基于影子栈思想提供进程运
行时控制流完整性保护.基本的安全策略是:每次函
进程堆栈而不是直接篡改跳转指令来完成控制流劫
持.安全世界对应的验证策略是:对函数调用指令,
若目标地址位于地址白名单中,则允许跳转并将返
Modiied fException Handler
数调用必须对应一次函数返回,函数调用目标地址
必须在函数地址白名单中,返回指令的目标地址必
Original Process Modiifed Process
/,main0f 、 厂 b
nw
—
init。
、
fldurncRl0O,f(u nc2 I- ¥bmncw_ #uasynbdsoevrifat lnhe adn dleFr- 匡Monitor
一
swi#type Ro;l
)
.
b nw abort handler
bnw unu3t ̄d
bnw irp handler
bnw
)‘ / \
ifq_handler
Fig.7 Monitor traP process for j ump instrunetions
图7 进程跳转指令转入安全世界流程
张英骏等:基于Trustzone的强安全需求环境下可信代码执行方案 2233
回地址存入SZU—pcb的影子栈中.对函数返回,则取
出影子栈中的返回地址。与LR寄存器的实际返回
地址对比,一致则允许返回.若出现错误情况,可根
通信的隐私性和完整性,内核攻击者无法窃取通信
内容,但仍可能通过挂起通信客户端进程,控制网
络软件栈来屏蔽安全世界与外界的通信.因此需要
构建一种安全世界主动获取系统执行权的方式,
上述情况发生后安全世界能够及时检查系统状态
据具体应用场景决定是否中止进程运行.具体监控
过程如图7所示.
目前针对代码重用攻击并没有通用有效的安全
策略.对于ARM架构,各种类型的跳转指令都有可
并作为通信主体主动发出与外界的通信请求.利用
Trustzone技术对设备中断事件的控制能力,构建
可信时钟中断,在中断发生时强制挂起正常世界运 能成为代码重用攻击的载荷,对其防范更加困难.本
文重点关注如何有效拦截进程空间的跳转指令,并
行并转入安全世界.具体构建过程如下:
实现了基本的控制流完整性检查策略.为保持系统 1)将正常世界当前程序状态寄存器(current
效率,更复杂的控制流完整性检查可由安全世界将
program status register,CPSR)的F位置0,使得
进程跳转指令记录上传中控服务器执行. FIQ类中断产生时正常世界无法屏蔽.
5.5 安全世界与外部实体的安全通信 2)将系统控制寄存器(system control register,
5.5.1 可信进程与安全世界直通区域 SCR)的Fw位置0,强制正常世界无法修改自己
5.4.3节已经给出应用进程一安全世界的直达
CPSR寄存器的F位.这2步可确保正常世界无法
接口.为实现安全通信,还需构造应用进程一安全世 屏蔽自己运行时产生的FIQ中断.
界共享内存,该区域不可被内核访问.应用进程需通 3)使能SCR寄存器的FIQ位,强制FIQ中断
过直达接口发出共享内存申请,安全世界分配相应
产生时转入Monitor模式处理.由于Fw,FIQ位只
内存,将物理地址保存到SZfJ—pcb中,并将共享内存
能在安全模式下修改,这3步可以将FIQ类中断配
映射到进程用户空问.为确保不可信内核无法访问
置为安全中断,强制FIQ中断发生时转入Monitor
共享内存,进程陷入特权模式时,安全世界将共享内 模式处理且正常世界无法屏蔽.
存区映射属性改为不可访问,并在返回用户模式时
4)配置Trustzone控制器,将相应的时钟中断
恢复共享内存.虽然通信客户端类进程使用的直达
类配置为安全中断,使得时钟中断产生时中断控制
接口与控制流完整性保护类进程相同,但是此类监
器将其转化为FIQ类中断.
控点对后者来说是透明的,是在进程启动后动态插
通过上述配置可确保在软件访问接口(swi)被
入的,而对前者来说,需要通信客户端开发者在源码
屏蔽的情况下,安全世界能够定期获取系统执行权,
中显式调用此类接口.这里对开发者有一个特殊要
主动发起与外界的通信请求,从而有效阻止了对安
求:在加密之前,不能将共享内存区数据拷贝到其他
全世界的拒绝服务攻击.
区域.然而,内核攻击者可能在某次内核执行上下文
内核代码区监控点部署和可信时钟中断源分别
中篡改内核栈中保存的用户空间返回地址,使其指 代表了2类主流系统监控方法:内核主动通知和监
向某一内存拷贝操作,在返回用户空间后通过该操
控模块主动轮询.结合ARM虚拟内存保护机制和
作窃取共享内存数据.因此需要在模式切换监控点
Trustzone隔离技术构造内核代码飞地,已能保证
处理函数中加入以下逻辑:在陷入特权模式时,如果
监控代码不被内核篡改或绕过,在相应事件触发时
是正常的系统调用或用户模式产生的异常事件,则
强制转入安全世界.在监控策略不完善的情况下,可
将返回地址(LR)保存到影子栈.返回用户模式前,
信时钟中断源能够确保安全世界及时检测利用没有
将影子栈中的返回地址恢复到LR寄存器.这样,返 被监控的内核功能实施的攻击行为,并作为主动请
回地址不再从内核栈获取,而直接由安全世界从影
求方及时报告平台状态.由于上述中断配置均由软
子栈中恢复,从而阻止了上述攻击.另外,安全世界 件实现,可由安全世界根据实际的安全和性能需求
需要模拟内核针对不同的特权模式对返回地址作修
动态开启和关闭,因此可作为监控点部署方式的一
正:如果是数据异常,则返回出错指令重新执行一
种增强机制.
次;如果是系统调用异常,则返回系统调用指令的下
5.6通信协议相关
一
条指令继续执行.
5.6.1安全设备密钥
5..5.2可信时钟中断源
为确保服白名单信息和设备状态信息不被窃取、
尽管用户进程一安全世界直通区域确保了双方
篡改,设备节点与中控服务器之间需使用TLS/SSL
计算机研究与发展2015,52(10)
等标准的安全通信协议,这里假设服务器公钥对所
有设备节点公开,设备使用身份公钥在服务器端注
5.7方案设计总结
基于Trustzone的移动嵌入式设备可信代码执
行方案,结合ARM架构虚拟内存保护机制和
Trustzone隔离机制构建内核代码飞地区,在不可
册登记,以便通信过程中完成互认证.由于部署安全
的设备密钥需要昂贵的非易失性存储器,且密钥一
旦烧写便无法更改,为降低部署和维护成本,移动设
备厂商一般不提供此类设备密钥.本文使用静态随
机存储器物理不可克隆函数(SRAM PUF)技术,利
用SRAM存储器物理性质的细微差异,为每个设备
构建独立的设备密钥.sRAM存储器广泛存在于移
动设备中,因此这种技术具有通用性且部署成本低,
信内核中部署不可篡改的监控代码,建立可靠的系
统监控机制,并针对常见的恶意代码攻击类型构建
基于文件完整性、运行时代码完整性、控制流完整性
的3种白名单策略,确保目标设备上只能运行符合
白名单策略的可信代码.最终通过建立应用进程一安
全世界直通区和可信时钟中断,确保安全世界与外
不需要额外的物理器件支持.使用SRAM PUF技
术为Trustzone设备构建信任根,提供安全设备密
钥的方法可具体参考本文之前的工作口 .
5.6.2 白名单建立与下发
由于白名单安全系统采用“默认拒绝”的策略,
部实体的安全通信.此方案基于构建白名单的思想,
非常适合工业控制、企业办公网络等具有强安全需
求且计算功能固定的封闭环境.
6 安全分析
通过构造内核代码飞地区,制定3种不同粒度
的策略白名单,本方案能够阻止恶意进程加载、运行
即禁止一切不满足白名单策略的系统行为,因此完
善的白名单对确保整个设备正常运行至关重要,尤
其是文件完整性白名单,其构建是否完善将决定某
些关键系统进程能否运行.对于复杂的计算环境,建
立完备的策略白名单并不容易,但是对工控网络、
企业办公网络,其设备节点只需要安装某些固定的
时代码注入、代码重用3种常见恶意代码攻击.本节
将对其他4种不常见的攻击方法进行分析.
1)篡改镜像文件.攻击者直接篡改或替换安全
工业控制软件或企业办公软件,白名单的建立相对
容易.目前很多著名安全公司如FireEye已建立庞
世界和操作系统镜像文件,使其包含恶意功能,设备
下次启动后将运行恶意系统内核.本文假设的安全
引导机制在开机启动过程中对安全世界内核、正常
大的软件白名单云数据中心,并提供开放接口,中控
服务器可从这些云服务中或者各类应用软件官网
获取标准可执行文件和库文件;再通过二进制文件
分析生成标准策略白名单,或者在初始状态安全、与
世界操作系统内核在加载前进行完整性验证,能够
防止此类攻击.
2)用户代码提权攻击.攻击者利用系统漏洞劫
外界环境隔离、部署了Trustzone监控的样本设备
上运行目标软件,将系统行为监控记录上传服务器,
持内核控制流,在特权模式下跳转到用户空间代码,
从而在特权模式下执行内核代码区以外的代码,试
图篡改或绕过监控代码.由于拦截页表更新操作的
服务器经审核后从中生成标准白名单并下发给设备
节点.
5.6.3平台状态证明
监控点会确保所有用户空间内存映射全部带有
PXN属性,即特权模式下不可执行的属性,从而将
特权模式可以执行的代码限制在内核代码区.同时
由于文件完整性白名单策略的存在,只有合法的应
为确保中控服务器及时捕捉所有设备节点的异
常系统行为,设备节点需利用可信时钟中断源定期
向服务器进行平台状态证明.本文扩展了可信计算
组织规定的平台远程证明协议口 ,在系统度量日志
用进程能够运行,确保用户空问代码不会包含篡改
内核监控点的代码.
3)加载内核模块.除了固定的内核代码区,攻
击者可以通过加载内核模块在特权模式下执行代
码.对移动嵌入式设备来说,由于外接设备固定,驱
动程序大多静态编译到内核中,因此内核模块加载
中不仅包括启动过程的度量信息,还包括运行时监
控记录,如进程创建信息、进程运行时控制流完整性
记录以及违背白名单策略产生的报警日志;同时使
用SRAM PUF提供的安全设备密钥替代TPM芯
片作为可信报告根,提供设备身份证明并确保度量
日志的隐私性、完整性.中控服务器通过度量日志判
功能很少使用,尤其是对于工控网络、企业网络这些
计算环境单一的场景,内核模块加载行为基本可以
判定为恶意行为.因此本方案直接在系统初始化阶
段由安全世界禁用内核模块加载功能.对需要加载
断平台状态,根据报警日志及时下发应对策略,或执
行进一步安全检查,如进程控制流完整性检测.
张英骏等:基于Trustzone的强安全需求环境下可信代码执行方案
内核模块的情况,安全世界需在内核模块加载功能
处插入监控点,对模块文件进行完整性验证,并进
行二进制重写,将其中的安全敏感操作替换为smc
指令.
4)DMA攻击.攻击者挂接恶意DMA设备,绕
过内存MMU保护直接访问物理内存,达到篡改安
全世界、内核、应用进程代码的目的.首先Trustzone
的硬件保护机制支持对外接设备进行安全划分,恶
意DMA设备无法访问安全世界内存.对支持输入
输出内存映射单元(input output memory map unit,
IOMMU)的设备,类似页表更新,安全世界需要在
IOMMU更新操作处插入一类监控点,阻止恶意的
DMA内存映射.对不支持1OMMU的设备,DMA
操作将直接访问物理内存,页表的映射保护属性全
部失效.由于安全世界在模式切换处部署了监控点,
因此可以在DMA中断返回,转入安全世界后立刻
对内核、应用进程的代码完整性进行检查,及时阻止
此类攻击.
7 实 现
在赛灵思Zynq-7000开发板上对原型系统作了
初步实现,该设备支持Trustzone安全扩展,配置
Cortex-A9处理器.正常世界运行Linux2.6.35系统,
安全世界运行Open Virtulization提供的SierraTEE
内核,为安全世界提供基本的操作系统类功能,包括
动态内存分配、ELF(executable and linkable format)
文件加载和Fat32文件系统支持.在之前的工作中
已经实现了SRAM PUF生成设备密钥的构建块,
并以此实现了安全引导.本文主要实现了安全世
界的白名单策略验证模块和正常世界监控代码的
运行时部署;同时为实现与外部实体安全通信,将
OpenSSL一0.9.8y移植到了SierraTEE中.
修改了SierraTEE源码,在系统启动阶段对已
加载的Linux内核代码区进行二进制重写.为提高
效率,事先已在系统开发环境(Debian 6)中使用
objdump对系统镜像文件进行了分析,找出了需要部
署监控点的位置.其中异常向量表位于0xFFFF0000
处.该设备提供了2个页表基址寄存器TTBR0和
TTBR1,由页表基址控制寄存器TTBCR决定哪个
被使用.因此在修改TTBCR的控制指令处插入监
控点,默认使用TTBR0寄存器.具体的监控点类型
及相应的插入个数如表1所示:
Table 1 Distribution for the Monitor Code
表1监控点分布情况
Control Register(WXN,MMU)Modify
TTBCR Modify
TTBR Modify
Page
—
table Update(Data Abort Handler)
Syscall Entry(swi Handler)
Syscal1 Exit
在Monitor模式下实现了策略验证模块原型系
统,这里直接在Monitor模式下实现而没有转入安
全世界的原因是消除转入安全世界产生的上下文切
换开销.转人Monitor模式后,该模式的LR寄存器
保存了触发监控点的smc指令地址,安全世界可以
根据该地址和指令中的4 b立即数确定监控点类
型.如果是转入特权模式类监控点,相应模式下的
LR寄存器保存了用户空间触发模式切换的指令地
址,结合DFSR,DFAR寄存器内容可确定具体的监
控事件类型.
由于设备没有提供可由Trustzone中断控制器
配置的时钟源,因此采用UART(universal asyn—
chronous receiver/transmitter)串口来模拟时钟中
断信号.串口另一端连接PC来模拟串口设备与开
发板进行通信.在PC上使用一款串口调试终端软
件Tera Term来输人串口数据.由此程序下的键盘
输入事件生成开发板的串口中断事件.在Monitor
模式下实现了一个简单的串口中断处理程序和串口
驱动程序,其中驱动程序维护一个中断计数器,每当
串口中断发生时计数器递增,并将其值发送给串口
并在PC设备上显示.
8实验结果评估
8.1可用性评估
由于白名单系统“默认拒绝”的安全策略,必须
保证监控系统部署后系统的正常功能不受影响.因
此事先关闭系统的管控功能,即在系统运行阶段只
对系统行为进行记录而不阻止.在系统启动之后,同
时启动一个tomcat服务器,开启一个Java Servlet
编写的Web服务并通过firefox浏览器进行访问.
通过安全世界生成的度量日志发现,一共监控到34
个进程启动,其中包括29个系统进程、3个tomcat
进程和2个Java进程.将相应的可执行文件、共享
库文件全部加人安全世界白名单,重新开启管控功
能,发现系统正常启动,tomcat服务器和Web服务
正常运行.由于系统启动进程,各应用进程及其依赖
的库文件可以预先获取,即标准白名单可提前配置,
因此本实验证明在部署监控系统并开启文件完整性
白名单保护后,不会影响系统正常运行.而进程代码
运行时完整性保护依赖系统正常的WXN机制,控
制流完整性保护只对应用进程跳转指令进行监控,
都不会影响系统的正常运行.
8.2安全性评估
1)在关闭3种白名单保护策略的情况下,编写
POC(proof of concept)代码,尝试篡改内核代码以
绕过系统监控功能.①利用系统/dev/mem接口直接
篡改内核代码;②编写恶意内核模块,篡改内核页
表,将代码区映射改为可写;③利用ARM Linux的
CVE一2011—1759整数溢出漏洞发起return—to—user
攻击.
实验结果表明,第1,2类攻击分别因为内核代
码区和页表内存的写保护而失败;第3类攻击由于
用户地址空间的PXN保护属性而失败.由此验证
了内核飞地的安全性.当白名单保护机制开启、内核
模块加载功能禁用后,上述恶意程序和内核模块均
无法运行,进一步证明了监控代码的安全性.
2)编写POC代码验证3种白名单保护机制的
安全性:①篡改tomcat可执行文件并尝试加载运
行;②利用系统ptrace功能挂接date程序,尝试注
入恶意代码并执行;③利用系统ptrace功能挂接
date程序,篡改某次函数调用的目标地址和进程栈
中保存的返回地址.
实验结果表明:第1类攻击由于可执行文件
Hash值不在文件完整性白名单中而失败;第2类攻
击由于系统WXN保护而失败;第3类攻击由于目
标地址不在控制流完整性白名单中且返回地址与影
子栈中保存的返回地址不一致而失败.由此验证了
3种白名单保护机制的安全性.
3)测试程序验证可信时钟中断源的安全性.该
程序启动后创建2个工作线程,其中一个定期尝试
将当前程序状态寄存器CPSR的F位置1,从而屏
蔽FIQ中断;另一个线程实现了简单的串口驱动,
定期向串口发送控制指令,尝试屏蔽串口的写入数
据来禁止安全世界发送时钟计数器.在可信时钟源
机制开启后,运行该程序.结果表明2种攻击都没有
成功,PC端的Tera Term程序正常显示递增的时
钟计数器.前者由于SCR寄存器的FW位已经置0,
计算机研究与发展2015,52(10)
使得正常世界无法修改CPSR的F位;后者由于
Trustzone中断控制器确保已被设置为安全的串口
中断不能被正常世界修改.
8.3效率评估
由于安全世界会在某些系统事件发生时挂起正
常世界运行并介入处理,因此本方案会在一定程度
上影响系统性能.
1)本节分别对内核飞地、3种白名单保护机制
对系统性能的影响进行评估.在这4种保护机制中,
内核飞地是保证整个系统安全性的基础,而白名单
策略和可信时钟源是根据实际需求的可选项,因此
首先评估内核飞地对整个系统性能的影响.使用移
动嵌入式平台评分工具LMBench对其影响进行综
合评估,该工具对特权模式切换、内存映射、页错误
异常处理等各系统功能进行评估.实验分别对内核
飞地机制开启、关闭2种情况下5个系统调用的执
行效率进行对比.结果如表2所示:
Table 2 Performance Evaluation for Kernel Enclave
表2 内核飞地-陛能评估
上述系统调用涉及了内存动态申请、页表更新、
模式切换、缺页异常等大多数系统功能,因此能够表
征对整体系统性能的综合影响,由结果可知,性能影
响大概在4 ~8 之间.
2)对3种不同白名单保护和共享内存保护机
制的性能影响进行评估.其中可执行文件完整性保
护机制主要在进程加载时产生额外文件度量操作,
控制流完整性保护也在此时对可执行模块进行二进
制重写,对上述操作的评估在进程加载时进行(通过
execve系统调用加载可执行文件).分别对以下表3
中给出的4种应用程序的加载效率进行度量.
由表3的结果分析可得,进程加载过程中的主
要开销由内核飞地机制产生,基于文件完整性和控
制流完整性的保护机制只会在此基础上产生很小的
开销.其中控制流完整性保护开销小于文件完整性
保护.原因是控制流完整性保护只对进程启动时加
载的少量代码进行二进制重写,效率开销基本不会
张英骏等:基于Trustzone的强安全需求环境下可信代码执行方案 2237
随着文件增大而增加;而文件完整性保护则需要对
整个可执行文件进行复杂Hash运算,其开销随着
文件增大而增加,效率影响控制在15 以下.
共享内存保护机制在进程运行时启用,同时控
制流完整性保护对进程运行时跳转指令进行拦截,
性能产生影响.因此编写1个测试程序,该程序首先
通过安全世界直达接口申请1块共享内存区,利用
openssl库与安全世界完成密钥协商,将会话密钥保
存在共享内存区,利用该密钥加密1个文本文件并
使用socket将其上传外部服务器.分别在上述2种
机制启用的情况下运行测试程序,实验结果如表4
对上述2种机制在进程运行时对其进行分析;而代
码运行时保护由于依赖正常的WXN机制,不会对
所示.
Table 3 Process Load Time for Origin Linux。Kernel Enclave,File Integrity Protection and Control Flow Protection
表3 原始Linux、内核飞地、文件完整性保护、控制流保护4种情况下的进程加载时间
Origin/s Enclave Protection/s
Shared Memory Protection/s
Control Flow Protection/s
(Delay to Origin/ )
(Delay to Origin/%)
(Delay to Origin/ )
由表4结果可知,内核飞地机制产生的性能开
启和关闭,因此对其应用比较灵活.另外不仅是时钟
销为9.46 ,在此基础上,共享内存保护机制产生
设备,凡是支持Trustzone中断控制器配置的外设
的额外开销为仅1.16 ,效率比较理想.原因是共 中断均可以实现类似功能.如通过开发板通用输入
享内存机制仅在模式切换时设置共享内存的页面映
输出(general purpose input/output,GPIO)口的按
射属性,并进行返回地址调整;而控制流完整性保护
键实现可信中断,可由管理员在需要时按下GPIO键
则产生了较大的运行时开销(18.3 ),原因是进程
转入安全世界,此时产生的额外开销可以忽略不计.
代码中频繁出现的跳转指令导致频繁转入安全世界
Table 5 Performance Evaluation for Trusted Timer
进行影子栈更新以及跳转地址合法性验证.然而,运
表5可信时钟源性能评估
行时控制流完整性保护本来就会造成较大的时间开
Timer Cycle/ms Overhead/
销,且其他通用二进制插桩工具的控制流完整性保
护方案性能开销一般在2O%以上 ,因此该效率影
响可以接受.进一步提高控制流完整性保护机制的
运行效率将是以后工作的重点.
3)评估可信时钟源的性能开销.由于要定期挂
起正常世界运行,与内核飞地类似,可信时钟将对系
统的综合性能产生影响,因此仍然使用LMBench
9 总 结
评分工具进行评估.在PC端实现一个键盘脚本程
序,以不同频率生成键盘事件模拟各种时钟频率.实
本文针对工业控制网络,企业办公网络等具有
验结果如表5所示.
强安全需求且计算功能相对固定的封闭环境,提出
由表5的结果可知,可信时钟的性能开销与时
了一种基于白名单思想的移动嵌入式平台可信代码
钟周期密切相关.周期为1000 ms时的性能影响已
执行方案.利用Trustzone安全技术构造内核飞地,
经无法被测试工具区分,几乎可忽略;而1 ms以上
提供可信的系统监控功能.以此为基础,在不可信操
的时钟周期的开销在0.14 以下.由于可信时钟机 作系统内核之上为应用进程提供可执行文件、运行
制只是整个系统的可选功能,且可以由软件动态开 时代码和控制流3种层次的完整性保护,确保目标
发布者:admin,转转请注明出处:http://www.yc00.com/xitong/1715754538a2666573.html
评论列表(0条)