开发者学堂课程【YoC 基础软件平台应用介绍:安全子系统 】学习笔记,与课程紧密联系,让用户快速学习知识
课程地址:https://developer.aliyun.com/learning/course/59/detail/1081
安全子系统
内容介绍
一、芯片安全体系(从架构级别介绍yoC子系统的全貌)
二、多层次安全(介绍不同安全机制下的安全实现)
三、芯片安全对接
四、芯片安全生产(三四从芯片winder的角度介绍yoC芯片平台的对接以及生产)
五、安全启动
六、安全组件(五六介绍安全子系统的实现)
七、安全应用开发(从安全应用开发者的角度讲解yoC安全子系统的应用场景下的使用)
YoC安全子系统是是YoC基础软件平台的一部分,也体现了YoC基础软件平台的端云一体、软件协同安全子系统的一些特点
一、芯片安全体系
如图,左边是安全云服务,右边是芯片安全体系。左右两部分构成了芯片安全体系的多云结合的部分。
右边芯片安全体系部分是芯片安全体系的端侧,自底向上分为安全硬件、安全组件、安全应用。这一部分就对应了yoC安全体系的软硬结合的特点。
芯片安全体系左侧的端侧我们依次是安全硬件,安全硬件包括常见的MPU、TEE、SE以及一些安全算法的ip,如AES、HASH、TRNG以及国民算法的SM2、SM3、SM4,非对称算法的RSA、ECC等。其中信任跟eFuse,或者OTP模块。
上层的安全组件主要包含四个部分,一部分是SEC_CRYPTO,这部分提供了基本算法的一些抽象;第二部分是MBEDTLS,这部分提供了安全子系统的安全通信能力;第三部分是KEY_MGR,是安全子系统的管理部分;第四部分比较重要是TEE安全组件,实现了TEE可信任的安全执行环境。
最上层是安全应用,包括安全的上层业务的一些使用场景。如安全启动、安全存储、安全升级、安全联网、身份认证、安全调试、安全接入、安全通信、身份识别以及安全生命周期管理等
左边的安全云服务是loT芯片安全体系对接云服务常用的云测业务平台,比如阿里云的loT平台、阿里云的Link TSM平台、OCC开放社区以及OTA在线升级等
二、多层次安全
多层次安全的特点是提供了可配置的多种安全机制,因为当前loT的安全业务场景以及安全需求,有一个碎片化的特点。针对碎片化yoC安全子系统设计了从无安全到安全子系统,四个安全级别。从左到右可以看到安全系统是逐渐提高的。
首先,无安全机制。顾名思义就是在yoC系统里没有安全防护,一般来说会是裸系统。还有一种特殊的场景是可能是厂商在开发loT应用的时候首先更关心于基本功能的开发,可能安全功能没有打开,在这种场景下也是可以应用无安全机制的。
随着安全机制的增高,下一级别是MPU安全机制。是比较传统,也是比较低成本的一种解决方案。在系统硬件上可能只存在MPU,通过设置代码段的一些安全属性。可以防止最基本的代码段的泄露以及保护,此时用到的安全算法库一般是纯软件的实验方法
下一级安全机制是TEE安全机制,提供了可信执行环境,也就是为可信应用提供了可信的执行上下文,避免执行过程中的信息泄露;虚拟安全隔离是指通过虚拟安全核提供一个虚拟的安全隔离,为安全应用、安全信息等与TEE端进行安全隔离;安全IP硬件保护指的是在有IP硬件保护的平台,通过TEE的安全配置对安全IP进行保护,常见的安全IP指的是安全算法ip、高安全级别的配置ip、地址空间隔离等;Flash安全区域保护指的是通过TEE的安全机制可以将Flash划分为安全区域以及非安全区域,在TEE中是可以访问Flash安全区域以及非安全区域,在非TEE环境下可以访问Flash的非安全区域;硬件安全算法是TEE安全机制以及各安全机制的基本模块,它提供了算法库功能,这里指的是安全算法库是基于硬件IP实践的
下一级安全机制是安全子系统安全机制,是一般比较常见的最高级别的安全机制。安全子系统提供了硬件安全子系统,这个硬件安全子系统一般指的是完整的执行环境;物理安全隔离指的是安全子系统与非安全子系统之间可以通过安全通道如IPC等进行访问,可以更好的进行安全控制;独立的安全存储指的是安全子系统会有自己独立的安全存储模块,如安全Flash或其他安全存储设备;硬件安全算法同TEE安全机制一样,指的是基于硬件IP的安全算法库;安全可信根指的是安全子系统一般有独立的ifuse或者odp等基础器件
三、芯片安全对接
是从芯片厂商的角度看yoC系统的安全移植,现在厂商会提供像AES、HASH、TRNG、RSA、ECC、SM2、SM3、SM4、eFuse等基础IP,厂商提供这些IP通过封装CSI安全接口向上暴露出相应的IP接口,如图橙色框所示。
芯片安全框的主要特点有三个
1.适配不同芯片规格,指的是芯片的硬件平台可以有部分或者全部的安全IP,比如有AES或没有AES,有HASH或没有HASH
2.安全能力可配置,指的是芯片平台对接软件后可以进行再次的配置。如作为一个子系统,我们可以提供AM算法,也可以不提供。这些都是可以通过软件级别来控制的
3.一致的CSI安全接口,是指各芯片平台通过对接安全部的CSI接口,可以一致的提供向上服务,如OS层、组件层等。提供抽象硬件的基础平台能力
四、芯片安全生产
是从芯片开发的角度举了一个秘钥安全导入的场景,指的是IOC平台对接OCC云端服务,有两个子场景,左边的第一个子场景是秘钥的云端OCC生成,然后通过生产工具导入到设备,这个设备的信息是通过KP的格式导入的;第二个场景是当IOT的设备不接入云端时,秘钥可以在本地生成,然后通过生产工具导入到设备中,同样用的也是KP的格式
五、安全启动
这个场景是从BootRom到BootLoader到TEE到系统镜像,这是一个典型的安全启动的流程
BootRom是固化在芯片中的一段Rom区域,BootRom加载BootLoader
BootLoader加载并验证后级的两个系统,包括TEE及系统镜像。当BootLoader跳转到TEE时,TEE会进行TEE环境的数值化,以及一些下级跳转等
最后一级是系统镜像,也是主系统
六、安全组件
yoC中的安全组件主要有四个
第一个是SET_CRYPTO提供了基本的算法能力,算法组件包括摘要算法、对称算法、真随机数、非对称算法等。一个安全平台的基础算法库最基础的是包含随机数、摘要算法、对称算法、非对称算法。通过SET_CRYPTO的算法组件抽象可以适配到上面提到的几种安全机制,对上层提供一致的接口
TEE组件,TEE安全机制的主要功能就是有TEE组件来提供的。包括安全设备保护、Flash安全区域保护、CA/TA、GP Client接口、eFuse信任根、安全算法库等
MBEDTLS组件,提供了安全联网的能力,是一个开源组件。提供的功能主要分为两部分,一部分是SSL/TLS的协议栈还有一个是安全算法库,链接如图
最后一个是秘钥管理组件,提供了秘钥获取、秘钥导入、秘钥导出、秘钥销毁以及安全信息获取等。秘钥的获取会为BootLoader TEE提供秘钥的获取能力,秘钥导入导出以及销毁以及安全信息获取也是安全系统中常见的功能
七、安全应用开发
主要是从安全应用开发者的角度,来看yoC安全子系统
第一个特征是组件化安全接口,从安全应用的角度整个安全子系统提供的是上面讲到的四个安全组件,四个安全组件的接口是相对固定的,为开发者屏蔽了下层平台的变化
第二个特点是提供了完整的安全协议栈,如图所示完整的安全协议栈指的是SSL/TLS、MQTT、COAP、BLE、LoRa、Aliyun Living等常见的联网组件,集成了安全能力。对上层的开发者来说,不用关心底层的复杂性,可以通过直接调用安全协议栈来实现相应的业务功能
最后,无感安全应用开发。指的是上层的应用开发者,通过调用上面说的安全协议栈,不用考虑下层芯片平台的实现以及上面提到的各种安全机制的不同,可以方便的进行应用的开发以及快速推向市场