AUTOSAR实战: 基于ETAS工具链的信息安全协议栈集成指南
前言
正文
随着汽车信息安全的不断发展与完善,其在汽车电子领域如智能驾驶(ADAS),智能座舱等方向上不断被重视起来,越来越多的Tier1,主机厂都在全面将汽车信息安全的各类手段落实到自己的产品中。
小T相信随着整车IT技术的不断发展,特别是车载以太网的普遍应用,车联网势必会成为未来一个非常重要的方向,正因如此,也大大增加汽车遭受外部网络攻击的风险,因此非常有必要了解学习下汽车信息安全相关内容。
AUTOSAR组织对这方面早已布局,规范了在汽车电子开发领域的信息安全开发方法论以及协议栈设计,本文将重点聚焦如何通过实战落地的方式来让大家快速将信息安全协议栈落实到各自的产品中,快速完成信息安全软件开发与落地,为自身产品增加更多的竞争力。
信息安全协议栈总体介绍
如果大家想全面了解AUTOSAR中关于信息安全协议栈的主体框架内容,可以参考标准文档《AUTOSAR_EXP_UtilizationOfCryptoServices.pdf》,本文将基于此重点介绍下信息安全协议栈内容。
信息安全协议栈英文可称为Crypto BSW协议栈,如下图所示为整个协议栈的组成内容:
如上图所示,整个Crypto BSW协议栈同其他BSW基本一致,可以分为如下三个层级:
- Cryto Driver层:该层主要提供各种加密服务的具体实现,如上图右侧显示对于该层驱动可以进一步划分三种类别:
- 芯片内部驱动:基于芯片内部的硬件HSM或者SHE模块提供加密服务,如英飞凌的HSM硬件模块,内部自带各类驱动服务;
- 软件驱动:有些芯片内部不支持,可以通过软件的方式来实现加密服务,即右侧的SW-Based,比如我们常用的MAC生成算法;
- 外部芯片驱动:有些芯片内部不支持,可以通过添加外部单独的加密芯片,并通过SPI来实现芯片与外部加密硬件模块的通信;
- Cryto Hardware Abstraction层:对于该一层级主要实现对底层驱动的抽象,保证上层服务层接口无需关注底层驱动是否在内部或者外部,比如上图右侧的Crypto Interface模块,External Crypto Driver,SW-based Crypto Driver等。
- Crypto Service层:主要用来为上层SWC或者其他BSW模块提供各种密钥管理以及加密服务,完成针对底层细节的抽象,并提供统一的接口给到所有需要加密服务的Client,比如我们的Crypto Servie Manager就位于该一层级。
在具体某个Client(某SWC或者BSW模块)使用加密服务的过程中,通常会经历如下几个关键步骤:
- S1:Client通过RTE调用Cypto Service Manager(简称CSM)完成加密服务的请求;
- S2:针对加密服务请求一般通过job的方式来进行传递,job中一般会定义同步传输或者异步传输的模式以及其他参数,如果是同步传输的方式,函数返回后将能够立即得到结果,如果是异步方式则通过callback函数来通知服务层完成加密服务的最终结果;
- S3:Cypto Service Manager将加密请求通过Cryto If模块传递至下方的Crypto Driver模块;
- S4:在Crypto Driver模块中完成具体加密服务的过程,当然如果存在并发请求同一加密服务的场景,整个Crypto 在CSM模块或Crypto Driver都会带有缓冲空间模式,通过优先级来判断哪种类型的Job会被优先执行。
好了,小T针对上述AUTOSAR信息安全协议栈完成了总体框架的介绍,想必大家对信息安全协议栈也已经有了初步的了解,那么了解了理论知识,我们接下来就进入到实战开发环节,让大家能够理论与实际相结合,最终完成Crypto BSW协议栈的集成。
S1:开发环境介绍
首先,小T需要介绍下本次集成信息安全协议栈的开发环境,开发环境主要分为开发工具与硬件平台两大部分。
1.1 开发工具介绍
小T目前使用的是ETAS的工具链ISOLAR-AB来完成整个Crypto BSW协议栈的集成,当前工程已经是一个能够正常工作的ISOLAR-AB工程,仅需要在当前可用的工程基础上具体实操如何来完成信息安全协议栈的集成,并以配置Key Slot Service服务为例。
当然有些小伙伴可能使用的不是ETAS工具链,使用的可能是Vector工具链,但是基本方法论基本一致,可以实现一举反三,触类旁通。
1.2 硬件平台介绍
本次硬件平台采用的英飞凌经典的HSM系列完成整个软件模块的集成,不仅包含整个BSW协议栈的添加与配置,同时也包含针对HSM的驱动集成的注意事项。