开发者学堂课程【阿里云物联网安全:物联网安全背景】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/570/detail/7770
物联网安全背景
内容介绍:
一、本次课程重点及阿里云 Link TEE 的基础介绍
二、背景介绍—TEE 是什么?
三、正常世界和安全世界是怎么切换的?
四、TEE发展现状
一、本次课程重点及阿里云 Link TEE 的基础介绍
由阿里云开发针对移动端设备安全的产品阿里云 Link TEE。
本课程主要针对想了解TEE原理或刚开始接触阿里云 Link TEE 相关产品的同学提供基础入门介绍。学此课程之前,需要有一定嵌入式架构和 C 语言编程基础支持,通过该课程可了解到移动设备或物联网产品的安全防护原理以及如何开发基于 TEE 的安全应用。
阿里云 Link TEE 的基础介绍分为四个系列讲座,第一讲为背景介绍—TEE 是什么?第二讲为 Link TEE 产品介绍、第三讲为 TEE 应用开发入门、第四讲为 Link TEE SDK 的使用-编写第一个可信应用。
二、背景介绍—TEE 是什么
首先,一个完整的片段系统是由 CPU 核心处理单元、系统总线、片上存储 RAM 或 FLASH 以及其他外围设配组成。
CPU 通过总线、存储以及外围设备相互连接;上层应用 App1、App2在运行过程中的临时数据存放在 RAM,长期数据如文件等会存放在 FLASH 中。在 TEE 技术引用之前,不同应用之间的资源隔离是由操作系统来保护的,例如 Linux、Android,上层不同的应用由于属于不同的用户,操作系统通过用户来限制不同应用,只能存取属于各自的数据或文件,而 Root 用户没有这个限制,它可以访问系统中的任何一个文件。
攻击者一旦通过某种方法如软件安全漏洞获取了 ROOT 权限,就可以读取之前存放在设备上的所有用户信息,另外一种方法是监听内存,通过实时修改用户数据可以改变默认行为从而达到破解的目的。
如果从硬件设计角度去分析,以上的控制方法都存在一个前提条件,即内存和外侧的资源都是共享的,不同之间的隔离都是通过操作系统软件来实现,因此这种保护方法无法做到真正硬件上的隔离。
基于这个原因,推出可以从硬件方面保护资源的方法,即 TrustZone 趋势,该技术首先在 v6架构上应用,现在 ARMv7、ARMv8已默认支持。
从上图绿色部分可看出,支持 TrustZone 技术上的 RAM 在运行时,多出一种工作模式,称之为安全工作模式即 Secure Mode,同时在系统总线上新赠的安全读解信号为 NS BIT,在系统初始化过程中,可通过配置安全组件、划分 RAM FLASH 在两个模式下分别可以访问的范围以及选择外侧可以被两种模式之一访问,
只有在 RAM 处于安全模式 Secure Mode 下时,系统总线才会识别是否为安全情况下的读写请求,对应的安全资源才能被访问,否则当 RAM 处于正常模式态时,纵向会识别为所有的图解请求为非安全请求,这种情况下,之前被配置为安全模式下能访问的资源无法响应该请求,从而达到隔离的目的。
与 Non-Secure 一样,在 Secure Mode 下,也有应用和 Kernel os 的区分,因此在安全模式下,也可以开发安全的内核系统 Trusted Kernel 和安全应用、Trusted App。讲到这里,TEE 指的是安全模式下运行的状态,也称为可信任执行环境。
反之,REE 指的是正常世界态。
如果获取到了安全模式下的 ROOT 权限,那么就可以访问所有的数据了?
这句话是对的,但远远没有那么容易,首先设备默认的运行状态是处于正常世界态的,那么需要复杂的流程才能完成正常世界和安全世界之间的切换,那么这两个世界是怎么切换的?
三、正常世界和安全世界是怎么切换的?
切换过程:
首先了解一定 ARM 架构处理器的工作模式,上图为 ARMv7架构,在 Normal world 和 Secure
World 分为用户模式(运行应用模式和特权模式),用于运行 kernel OS,在此基础上还会多出一个安全监控模式,即 Monitor Mode,只有系统调用 SMC 指令进入到 Monitor Mode 才能实现两个世界之间的切换。
在 ARMv8架构器处理中,则采取了特权等级的概念,从 EL0到 EL3,EL0对应之前的 User mode;
EL1可分别运行安全世界和非安全世界的 Kernel OS;EL2属于虚拟化层,只存在于正常世界(此处不作讨论);
EL3运行安全监控模式,正常世界和安全世界之间的切换也是通过 SMC 调用到 EL3这一层来实现切换。
支持 TrustZone 技术的 SoC 硬件框架图:
灰色的部分是和 TrustZone 相关的安全控制组件,这里只需要了解一点,在引入 TrustZone 技术之后,总线即上图的 AXI Bus 会先和 TrustZone 相关的安全控制组线连接,例如 TZMA、TZPC 等,这些安全控制组件才会去连接外设,因此,是否响应来自 CPU 的访问、认证资源的请求是由这些安全控制组件来决定的(此处不作详细介绍,可参考本课时最后的参考和引用深入学习)。
四、TEE 发展现状
目前 TEE 在手机领域已经得到了非常广泛的应用,首先是支付软件和相关的身份认证,例如指纹和面部识别等;还有数字版权保护方案,例如谷歌、WIDEVINE 和国内正在推出的 DRM 标准;同样 TEE 也向物联网方向应用,例如智能门锁、软信卡方案等。
无论是智能手机芯片的厂商,如三星、华为、联发科,还是汽车芯片厂商,例如 NXP,都会集成自己或第三方的TEE方案来保障前面软件应用的安全。
目前 TEE 的提供商有法国的 TRUSTONIC、高通的 QSEE、国内上海的瓶钵科技、豆荚科技、Watchdata、以及阿里云Link TEE。目前阿里云 Link TEE 主要为智能汽车、互联网设备提供安全的解决方案,Link TEE 相关的产品将在后面课时详细介绍。
另外,谷歌从7.0开始规定指纹识别控制必须有 TEE 支持,8.0之后的密钥管理需要硬件保护方案来实现,为了规范化TEE 相关应用的开发,全球平台组织 GLOBALPLATFORM 提供了 TEE 产品的安全认证,并设计了 TEE 安全应用的通用开发接口 GP API 提高安全应用的刻意置信,GP API 的使用方法将在后续课程中详细介绍。