浅谈Trustzone技术

微信公众号:mindshare思享

浅谈Trustzone技术


随着互联世界的到来,由智能移动设备引发的移动互联浪潮,移动支付,个人信息和支付密码,个人特征(指纹,虹膜)的保护至关重要。万物互联(IoT)时代,更多与生活密切相关的设备将互联,安全将是其最关键的一环。

今天就浅谈一下ARM的Trustzone技术,包括Cortex-A 和Cortex-M 的Trustzone技术--纯属个人观点,引用ARM公开资料。

Cortex-A的Trustzone主要用于移动智能设备和服务器安全领域,Cortex-M的Trustzone技术主要用于智能IoT设备的安全领域。

安全技术浅谈


怎么保证系统的安全?安全最重要的是隔离,和接口的安全的设计。系统越复杂,层次越复杂,越容易出现安全漏洞。

有时候安全和开放不能两全。Android因为开放,才导致了它的繁荣,同时也导致安全性的问题。


特朗普竞选美国总统说‘We Will Make America Safe Again’,具体措施是,

1.建墨西哥美国边境围墙

2.禁穆令,不发签证,和禁止入境

这和Trustzone技术实现安全有异曲同工之效。


我经常使用一个机场的例子来帮助理解安全。我们在机场里是不是感觉会比在一个城市嘈杂的大街上感到安全?因为


机场提供了隔离的环境 

进入机场必须经过安检,查验身份和有无危险品


这是硬件环境支持。但是这是不够的,还必须有合格的机场安全人员。包括怎么保证安检人员不会糊弄。有新闻报道中国人入柬埔寨境被海关人员索贿,虽然有相近的机场的硬件环境,却不能让人感到更安全。还有最近金正男在马机场被人毒害,YY一下,这不应该是机器检查不出毒品吧?


所以机场需要对安检人员进行认证,从机场最高层->领导->基层人员要一级一级严格考察认证,避免潜在的有危害的人进入机场隔离环境。

这对应的软件的安全启动,认证等。



Cortex-A Trustzone CPU 硬件


因为Cortex-A要运行不同Provider提供的软件,比如firmware, loader, Hypervisor, OS (Android/Linux, iOS),应用,安全OS,安全应用,如一个大城市一样。导致Cortex-A CPU设计的复杂度,和Trustzone技术的独特性。


与传统使用独立于AP之外的硬件来做安全处理的方案不同,ARM Trustzone技术是在同一CPU上实现安全和非安全环境。


TrustZone系统通过完全分割硬件和软件资源以保证安全性,这两者被分别安置在Secure区和Normal区 – 前者为安全子系统而设,后者则是处理其它任务的正常区域。



secure world 用来运行安全子系统,而non-secure world则可以运行其他任何系统。使能TrustZone后,硬件逻辑确保non-secure world部件可以访问non-secure world资源,敏感资源则保存在secure world中,如果运行在secure world的软件足够健壮,那么可以保护大部分可能的攻击.

Non-secure world和normal world的转换是通过 Monitor Call实现的, Secure Monitor运行在最高优先级Exception level 3(v8-A EL3, v7-A的secure mointor mode)。对于支持Trust zone的微处理器,world切换是由硬件实现的.


由此可见Secure monitor相当于机场的安检,负责检查non-secure world要做安全操作的请求。这是non-secure software进入secure world的唯一接口,所以安全软件可以在这一统一接口地方认真设计,加固安全大门。


然而虽然在CPU硬件设计对cache和MMU的设计都考虑到了避免将安全信息泄露给non-secure world。但是Memory要做更多考虑,虽然在SoC里面设计需要有专门的secure memory只能secure world使用,但是没有办法将所有的memory都设计到SoC供secure world专用。就像中南hai围起来,但它就那么大,大大们要吃的大米,蔬菜不能在中南hai里中。哪怎么保证食品安全?可能你已经想到了特供。菜还是在外面中,但有特供地,中南hai进菜的那这特供的批条去进菜。


对应到Cortex-A的Trustzone类似,CPU处于secure state 的时候可以发出安全和非安全memory访问,处于non-secure state的时候CPU硬件设计保证它只能发出非安全访问,安全和非安全的访问信息可以反映在AMBA总线的信号上。安全的memory和外设只想响应CPU的安全访问,保证Normal区的组件无法访问Secure区的资源,以此方式在两区之间建立区一道坚固的墙来杜绝对储存在Secure区的敏感资源做出的潜在攻击.


如果本来是安全的外设比如OTP,由于设计错误,响应了CPU的非安全访问,这就是设计错误。就像特供菜地没批条就给供应,这还不得给革职?

其实这点和Cortex-M的设Trustzone计是一致的.



所以Corte-A Trustzone安全要求包括CPU在内的系统安全。为了帮助芯片设计厂商设计出安全的系统,ARM提过了TBSA文档,里面定义了一个真实的安全系统设计需要的组件。



可以看出要做一个基本的安全的系统,需要Trustzone aware 的CPU,Interconnect, 还需要一些on chip的secure RAM, ROM, 还要用于secure boot和Trustzone应用验证的Key. 如果还需要对off chip memory 的保护,还需要Trustzone memory controller的支持。


待续

浅谈Trustzone技术


猜你喜欢

转载自blog.csdn.net/weixin_39366778/article/details/80495174