Towercell - 多层次系统安全保护方案

从硬件底层到云端全面保护系统安全

相关背景

随着信息技术、互联网与汽车产业的不断融合,汽车网络互联和智能化已成为汽车产业发展的必然趋势。 截止2021年8月,我国联网汽车用户已突破5000万。车内的电子系统越来越复杂,现代车辆大部分拥有超过100个ECU, 这些ECU上运行着超过1亿行代码,庞大的代码体量在带来丰富的功能的同时也埋下了很多不安定的因素。 对于一台网联车来说,从孤立封闭的网络环境迈入到复杂多样的互联网环境中,很多基于封闭网络环境的功能设计将发生颠覆性的变化, 网络信息安全将成为最大的安全挑战。在复杂的汽车体系架构下,车载系统所面临的威胁可能是多层次的, 从硬件层面的固件冲刷,到系统层面的ROOT权限窃取,再到应用层面的APP漏洞、敏感信息窃取等等。 因此,想要能够保证IVI整体的安全,必须要建立起多层次的立体式防御策略。

产品介绍

T6 Architecture

框架中的任何一个安全漏洞都可能导致攻击者完全控制设备。TowerCell平台通过制定多层次的防护策略保证系统在每个阶段、 各个层面的数据无法被篡改,来保护系统的整体安全。通过制定自硬件层到应用层、 自终端到云端的整套立体式安全策略保证系统从启动阶段到运行过程中的整体安全。

硬件层:

安全启动检车设备的完成性并建立可信执行环境

可信执行环境

TowerCell会基于芯片现有的隔离技术(如ARM架构下的Trustzone技术和Intel架构下的SGX技术等), 将芯片的资源划分成普通世界和安全世界,这个安全世界我们就称之为可信执行环境TEE Trusted execution environment。 在TEE下我们会运行一个安全OS TKCORE OS:瓶钵自主研发的可信操作系统, 承载用户业务的安全应用(TA Trusted application)将运行在这个可信操作系统之上。 在TEE下进行数据存储时TKCORE OS会对所有的数据进行加密,密钥被TKCORE OS持有, 保证数据无法被窃取。同时,在TEE下存储的数据在没有进行授权之前,第三方无法进行访问, 以此保证存储数据不被篡改。我们会在TEE下为每一台设备生成一个身份ID,以此来唯一的标识设备身份。 并且,我们会在TEE下为每台设备生成一对根密钥,私钥被TKCORE OS严格持有,公钥会在产线阶段上传到服务器, 用户可以基于这一对根密钥来建立PKI体系

安全启动

TowerCell会基于芯片的特性为设备建立安全启动的机制。在启动时, 通过一个根植于设备硬件的密钥(硬件机制保证该密钥的烧录为一次性的,无法被替换)去做最初的校验, 然后在启动过程中,每一个组件都会对下一个组件做出校验。如果校验失败, TowerCell会将某些服务禁用或者直接挂起整个设备,阻止危害进一步的扩大。 通过安全启动,我们可以保证任何组件被非法替换或者篡改,都将导致设备被挂起, 以此保证安全服务不会被通过固件冲刷的方式绕开

系统层:

主动防御系统实时检测内核状态防患于未然

随着代码体量的增加所带来的漏洞风险也会大大激增。但对于以Android等操作系统超过千万行的代码量来说, 完全杜绝漏洞的产生肯定是不现实的,并不是所有的漏洞产生之后就会对用户产生直观的危害和损失, 而是这个漏洞的存在可能会被第三方利用,通过这个漏洞去篡改内核的关键数据,获取更高级的权限, 然后去攻击系统组件,获取用户隐私数据从而对用户产生危害。因此,如何有效防止漏洞带来危害, 最重要的就是对于内核的关键数据节点具有监测和管理的能力。

主动防御系统

TowerCell会在EL2模式下(Hypervisor)运行我们自己的Hypervisor THEE,通过THEE来对内核进行监控和管理。

控制流保护

控制流完整性增强。针对目前ROP攻击,基于硬件特性以及编译器, 同时结合Linux现有的防御机制(如KASLR 、LLVM CFI),防御基于ROP的内核攻击。

隔离性保证

THEE运行与Linux系统隔离的安全区中。目前THEE运行在EL2模式(Hypervisor)中, 确保THEE与Linux的隔离,同时又能够有效地监控、防护Linux 。

关键数据完整性

内核态关键数据只能被授权对象合法修改。识别、保护内核中的关键数据,在Linux中留存一份影子备份(只读), 主内容存放至THEE中(可读可写),由THEE配置访问策略进行授权访问。

自身安全和完整性保证

THEE是瓶钵自主研发的轻量级Hypervisor ,因为自身的量级小(几千行)可以有效的防止自身出现漏洞, 同时结合硬件层面的安全启动有效的保证THEE自身能够完整的被加载

应用层:

Trust++开放可信执行环境的安全能力,保护海量的应用

对于应用保护来说最主要的问题就是在开展核心业务的时候无法有效的保证这部分业务在开展过程中的安全。 在大多数场景下,这部分核心的业务都是裸露的或者经过简单的加密运行在复杂的系统环境下的。

主动防御系统

在应用层,TowerCell使用Trust++来保护应用的安全。Trust++ 产品是为应用厂商提供的基于可信执行环境TEE的应用安全方案, 主要用于解决智能设备中应用的代码、数据和业务安全问题,为用户的敏感业务提供安全的运行环境。

易操作性和跨平台性

基于Trust++的安全API和SDK ,应用厂商开发的安全应用可以安全地运行在所有智能设备(包括手机、平板等)和平台(包括 Android 、iOS等)中。

安全性

Trust++ 通过充分利用设备中能被使用的最安全机制(包括软硬件机制如ARM TrustZone 、 虚拟化、 Intel SGX等),结合独创的原生加密执行引擎、编译器安全、代码保护、 白盒加密等方式构建安全的运行环境,保障用户应用安全。

更多的安全功能基础库

Trust++提供功能丰富的安全应用场景,用户通过Trust++提供的安全API和SDK就可使用到如:安全UI、安全存储、 身份验证等丰富的功能,大大降低用户的开发难度。

云端:

DTM平台实时监控,及时响应

我们可以通过不同的防护策略去尽可能的减少漏洞的产生,或者减少漏洞带来的危害, 但是对于一个已经产生的漏洞,我们依然需要很好的策略去修复它。对于运维人员, 需要能够及时的感知到产生在设备终端的漏洞,能够及时的收集到产生在设备终端漏洞的相关信息, 能够及时的把制定好的安全策略及时下发。

DTM平台

在应用层, TowerCell使用Trust++来保护应用的安全。 Trust++产品是为应用厂商提供的基于可信执行环境TEE的应用安全方案, 主要用于解决智能设备中应用的代码、数据和业务安全问题,为用户的敏感业务提供安全的运行环境。

发现问题

深入操作系统内核和应用 采集关键事件并关联分析。在设备终端, 通过主动防御系统深入到操作系统内核进行实时监控和管理。将设备的状态实时反馈到云端平台, 在发现漏洞的场景下,将内核相关的log及时的上传到云端以供相关人员分析。

定位问题

可视化威胁呈现定位某一终端、某一进程与路径。将设备端上传的日志信息进行分类处理制作成报表呈现给维护人员, 让维护人员能够轻松的去分析漏洞的来源

解决问题

定制与实施安全策略,通过远程管理平台下发相应策略。在维护人员制定好相应的安全策略之后, 以可信应用更新的方式,通过云端平台实时的传输到设备端。在设备端的TEE下, 通过更新的可信应用对系统的漏洞进行修复。

应用案例

PKI应用场景

可信根生成

可信根生成流程

pki激活流程

pki激活流程

在进行设备端和云端进行身份验证的过程时,建立一套PKI体系是比较有效的作法。 但是,对于 PKI 来说,如果无法保证激活流程、密钥证书存储等流程的绝对安全, 那么即使PKI被使用起来也无法达到预期的安全保护作用。传统的PKI体系会在产线阶段向设备植入一组密钥作为后续PKI激活的基础, 但是密钥本身来自外界植入,依然会有泄露的风险。TowerCell会在产线阶段在TEE下为每一台设备生成一对根密钥, 私钥被设备的TKCORE OS严格持有,不会以任何形式向外透露,生成的公钥将被导出并上传到瓶钵的密钥管理服务器进行统一管理。 在进行设备激活阶段,如何能保证根密钥使用环境的安全将是十分重要的。 TowerCell为设备提供安全的激活环境,设备在TEE环境下将验证信息进行签名上传到厂家的PKI服务器,PKI服务器在接受到验证信息之后, 将数据发送给瓶钵的密钥管理服务器进行验证。通过瓶钵的密钥管理服务器返回的验证结果,PKI服务器决定是否下发PKI证书(加密下发)。 当设备接受到加密后的PKI证书之后,会在TEE下对证书进行解密,PKI证书会被存储在TEE下,并且只有在TEE下能够被使用, 有效的保证证书不会被泄漏 。同时, TowerCell 可以控制设备对云端的访问频率。当单个设备被恶意攻击者攻破之后, 可能会通过这个设备向云端发送大量的信息来占用云端的有限资源。此时, 可以通过TowerCell来限制设备端的访问频率来阻止这种大数据冲刷带来的危害。

Trust++的使用场景

Trust++提供了丰富的安全应用场景,用户可以通过SDK使用目标语言(如JAVA)调用相关接口使用安全功能。

身份验证

身份验证

开发人员可以调用SDK的接口把数据发送到指定的服务器,以此来进行身份验证工作

加解密库

功能丰富的加解密库

功能丰富的加解密库:Trust++ 提供了强大的功能库,基本上支持市面上所有的加解密算法。

安全存储

安全存储

Trust++通过充分利用设备中能被使用的最安全机制构建安全的运行环境和存储环境。开发人员可以通过Trust++提供的接口来进行安全存储, 保证密钥等隐私数据的安全。

可信UI

可信UI

Trust++ 提供一套安全UI的调用接口。用户可以通过相关接口选择自己的UI的风格、布局,轻易的设计出自己的安全UI