Autosar片上通讯安全特性的软件需求
1.功能性全览
SecOc模块主要用于在PDUs这一层的关键数据的资源节省和可行的认证机制。这一套认证机制无缝集成在当前的AUTOSAR通信系统,且在资源损耗这方面足够小以便附加到系统的剩余部分。这个规范是基于使用报文认证码MACs的主要对称认证方法的假定。他们实现了相同的安全水准通过比非对成方法更小的密钥,而且在硬件和软件上完成的紧促和有效。此外,该规范提供了必要的抽象级别,以便可以使用对称和非对称的身份验证方法。
- SecOC模块集成在AUTOSAR PduR这一层上,同时作为Autosar通信栈的一部分。
- PduR负责路由进入和输出安全相关的I-PDUs到SecOC模块。
- SecOC模块应该添加和处理安全相关的信息和以一个I-PDU的格式把结果传播回PduR。PduR负责进一步路由I-PDUs。
- 此外,SecOC模块使用由CSM提供的加密服务以及和Rte交互获取密钥和计时器管理。
- SecOC模块也应该支持PduR中各种通信范式和原则,特别是组播通信,传输协议和PduR网关。
2.术语缩写和定义
2.1 缩略语
Acronym | 描述 |
---|---|
CSM | AUTOSAR加密服务管理 |
SecOC | 片上通信安全 |
MAC | 报文认证码 |
FV | 新鲜值 |
FM | 新鲜值管理 |
2.2 定义
Term | 描述 |
---|---|
Authentic I-PDU | 一个任意的AUTOSAR I-PDU他的内容在网络传输过程中是被担保的,也称为收保证的 I-PDU |
Authentication | 身份验证是与标识相关的服务。此功能适用于实体和信息本身。进行通信的双方当事人应相互识别。通过渠道传递的信息应根据来源、来源日期、数据内容、发送时间等进行身份验证。由于这些原因,密码学的这一方面通常细分为两大类:实体身份验证和数据源身份验证。数据源身份验证隐式提供数据完整性(因为如果消息被修改,则源已更改) |
Authentication Information | 认证信息由新鲜值的一部分和身份验证器的一部分组成,认证信息是由SecOC附加在信息上的来实现受保证的I-PDU |
Data integrity | 数据完整性的属性是数据指不会改变在不授权的方式下,包括数据自创立以来,传输过程中和通过一个授权的源存储。为确保数据的完整性,一方需要能够在不授权的部分检测数据的操作,包括对数据的插入,删除和替换 |
Data origin authentication | 数据源认证也是认证的一类,源中在过去的一些时间(通常未指定的)当作特殊的数据会被用做证实的一部分。通过定义,数据源认证包括数据完整性 |
Distinction unilateral/ bilateral authentication | 在单边认证,只一端进行身份验证,请求方甚至不在认证的范围内在被允许请求认证时。在双边认证中,请求方至少需要证实请求的权限在被认证时。双边认证是一种高效和更安全的方式在两端认证,最初的认证请求作为第二个报文,通过接收方的第一个报文,发送发也会请求认证。接收方发送第三个报文证实发送发的认证请求,相比较两个单边认证的报文则需要四个。 |
Entity authentication | 实体认证的过程是身份的一部分获取了明确的证据,第二部分在同一个协议中被调用,且第二部分明确参与了验证 |
Message authentication | 报文认证使用类似于数据源认证,它提供针对原始消息源的数据源身份验证,包括数据的完整性但是唯一性和及时性是不受保证的 |
Secured I-PDU | 一个受到保证的I-PDU是一个包含有效负载的AUTOSAR I-PDU,并提供附加的认证信息 |
Transaction authentication | 交易认证是指增强消息认证以额外提供数据的唯一性和及时性保证(从而防止无法检测到的消息重播) |
3. 相关模块
- BSW基础软件层
- COM通信层
- PDU和PDUR路由层
- Crypt加密服务管理
4. 约束和设定
适用AUTOSAR释放的4.3版本
4.1 汽车域的适用性
适用于所用ECUs必要的安全通信
SecOC模块对于MOST音视频和低速LIN通讯网络是不专用的,对于多媒体和远程的汽车领域是受限的
4.2 SomeIpTp约束
SecOC模块只适用于保证整个SomeIpTp报文,不适用于保证独立的段在一个SomeIpTp报文
正确的传输顺序 SecOC -> PduR -> SomeIpTp 直接进行SecOC和SomeIpTp之间的通讯是不被允许的
由于SomeIpTp请求触发发送去制作报文头。SecOC不支持来自上层供给的数据通过触发发送
5. 对其他模块的依赖
SecOC模块处理I-PDUs作为其他模块的源或下层,应注意模块之间共享的配置项保持一致
5.1 PduR
- 通信接口的API
- 传输协议模块的API
- 上层模块使用传输协议的API
- 上层模块处理来自通信接口的I-PDUs的API
5.2 CSM
- MAC生成接口(Csm_MacGenerate)
- MAC验证接口(Csm_MacVerify)
- 标签生成接口(Csm_SignatureGenerate)
- 标签验证接口(Csm_SignatureVerify)
5.3 RTE
- SecOC_VerificationStatus
- SecOC_VerifyStatusOverride
- SecOC_VerificationStatusIndication
同时SecOC依赖BSW调度表响应功能是SecOC_MainFunctionRx和SecOC_MainFunctionTx在一个周期配置为SecOCMainFunctionPeriodRx和SecOCMainFunctionPeriodTX
6. 需求追溯
系统需求和软件需求的ID对应, 满足MISRA C 2012标准
7. 功能规格
对敏感数据的认证和完整性保护在整车系统中对于保护正确和安全的功能是必要的,这个确保接收的数据来自正确的ECU和值正确。SecOC模块旨在PDUs这一层对于敏感数据减少损耗和可行的认证机制,这个方式用对称和非对称的方式进行认证和完整性保护。在术语使用方面对称和非对称存在差异,通常报文认证码MAC被用作对称方式时的术语标志和数字标志参照非对称的方式有不同的属性和约束。
7.1 安全解决方案的规范
SecOC模块提供重要的功能去验证在车载架构下ECUs之间的真实性和新鲜度。这种方式要求在接收方和发送方都需要实现一个SecOC模块,且发送端和接收端每个SecOC模块都完整的提供上层和下层的PduR接口APIs。两端的SecOC模块通常都是和内部的PduR模块交互。
为了提供报文的新鲜值,SecOC模块在发送和接收端从外部的新鲜值管理获取新鲜值对于每一个识别出的安全I-PDU,例如每一个安全通讯的链接。
- 在发送方,SecOC模快创造一个安全的I-Pdu通过添加认证信息到输出的Authentic I-PDU,这个认证信息由身份认证器(比如报文认证码MAC)和可选择的新鲜值。无论新限值是否在安全I-PDU负载中使用,新鲜值在生成身份验证器的时候都需要考虑。当使用新鲜值而不是一个时间戳,新鲜值计数器应该通过新鲜管理增加并事先提供验证信息到接收方。
- 在接收方,SecOC模块检查来自发送方添加到Authentic I-PDU中的验证信息,包括新鲜度和真实性。为了验证这些信息,发送方和接受方的安全I-PDU应该相同,接受方应该了解新鲜值是否在发送方创建身份认证器的时候使用。
![外链图片转存失败,源站可能有防盗链机制,建议
7.1.1 安全解决方案的基础实体
7.1.1.1 认证I-PDU和安全I-PDU
认证I-PDU是指AUTOSAR I-PDU要求防止未授权的操作和重播干扰。
安全I-PDU由认证I-PDU和一个身份认证器MAC组成,安全I-PDU的有效载荷是可选择的包括创造认证器MAC使用新鲜值。
- 认证I-PDU的长度,在一个安全I-PDU内新鲜值和认证器可能从一个独特且未定义的安全I-PDU到另一个是不同的。
- 身份认证器(如MAC)是指使用一个密钥生成独特的验数据字符,安全I-PDU的数据验证符,认证的有效载荷和新鲜值。这个认证器提供高度保障在一个认证I-PDU中的数据是由一个合法的源生成且同时提供给用于接收的ECU。
- 基于认证算法(参数SecOCTxAuthServiceConfigRef或者SecOCRxAuthServiceConfigRef)来生成验证器,它可能去截断这个结果由验证算法生成的验证器MAC,在报文有效载荷的长度受限和没有空间去填充完整的验证器时进行截断。
- 验证器的长度包含在一个安全I-PDU(参数SecOCAuthInfoTruncLength)中对于一个唯一可识别的安全I-PDU是特殊的。通过系统可以灵活的准备(例如两个独立特别的安全I-PDUs可能有不同的认证长度包含在安全I-PDUs的有效负载中)通过提供对每个安全I-PDU细微的配置MAC截断长度。
- 如果使用了截断方式,这个认证器应该被截断由认证算法生成的认证器结果的高位,而新鲜值应该截断由新鲜值管理生成的新鲜值的低位。最终认证I-PDU,被截断的新鲜值以及被截断的认证器MAC共同组成安全I-PDU。
📢📢 通常64 位及以上的MAC大小被认为可以提供足够的保护,防止NIST的猜测攻击。根据用例,可以挑选合适的MAC大小,但这也需要安全专家的仔细判断。
7.1.1.2 身份验证器涵盖的数据
计算身份验证器所依据的数据由安全I-PDU的数据标识符(参数SecOCDataId)、真实I-PDU数据和完整新鲜度值组成。它们分别连接在一起,以构成传递到身份验证算法以进行身份验证器生成/验证的位数组。
DataToAuthenticator = Data Identifier | secured part of the Authentic I-PDU | Complete Freshness Value
7.1.1.3 新鲜值
每个安全I-PDU配置了至少一个新鲜度值。新鲜度值是指用于确保安全I-PDU新鲜度的单调计数器。这种单调计数器可以通过称为新鲜度计数器的单个消息计数器或称为新鲜度时间戳的时间戳值来实现。新鲜度值将从新鲜度管理器派生。
📢📢 经过身份验证的消息有效负载中包含的完整新鲜度值的位数较大,会导致更大的窗口,其中接收器与发送器的新鲜度值保持同步,而无需执行同步策略。
📢📢 在经过身份验证的消息负载中包含部分新鲜度值时,新鲜度值称为两部分,即最高有效位和最低有效位。安全 I-PDU有效负载中包含的计数器部分称为新鲜度值的最低有效位,计其余部分称为新鲜度值的最高有效位。
例子:如果使用SecOC模块 SecOCUseAuthDataFreshness 设置为TRUE, 新鲜值起始位是11 SecOCAuthDataFreshnessStartPosition 设置为"11",新鲜值的长度为4 SecOCAuthDataFreshnessLen 设置为"4"。对于一个PDU “AB CD”(hex),它的安全数据新鲜值是"1101"(bin).
🚀🚀 对于一个PDU的字节下标是特殊的: 字节零下标从7到0,字节1的下标从15到8.
7.1.2 I-PDUs的认证
创造一个安全I-PDU和真实I-PDU的认证需要六个步骤:
- 准备安全I-PDU
- 构建认证器的数据
- 生成认证器
- 构建安全I-PDU
- 增加新鲜计数器
- 发送安全I-PDU
7.1.3 I-PDUs的验证
一个安全I-PDU的验证由六个步骤组成:
- 解析真实I-PDU,新鲜值和认证器
- 从新限制管理器获取新鲜值
- 构建认证器的数据
- 验证认证信息
- 发送确认到新鲜值管理器
- 通过的真实I-PDU到上层
7.1.4 不对称方式的调整
虽然术语和概念都是使用的同步密码学,但SecoOC模块对于同步和异步的密码学算法都是可以配置的。比如一个异步方式使用数字信号而不是MAC的方式,就要做出一些调整:
- 取代在发送端和所有接收端共享的密钥,一双由公有密钥和私有密钥被使用。私有密钥在发送端使用去生成信号,所有接收端的共有密钥则去验证这个信号。私有密钥在接收端是不允许被计算和不被访问的。
- 为了去验证一个报文,接收器需要访问完整的信号和输出信号的生成算法。然而作为MAC的方式中一个截断的报文是不可能实现的。参数SecOCAuthInfoTrunLength被设置为完整的报文长度。
- 信号验证使用一个和信号生成不同的算法。因此和MAC方式不同在接受端需要重新根据截断的信号重新计算MAC比较,接收端/验证端的验证算法是使用DataToAuthenticrtor包括完整的计数器及信号作为输入去获取一个波尔值作为输出,来定义是否验证成功或者失败。
7.2 与PduR之间的联系
SecOC模块的实现不基于其他模块的依赖,即使一个系统中不使用SecOC模块也是可行的。
SecOC应该确保在响应的安全PDU中接收到的元数据没有改变,反之亦然。
7.3 初始化
- SecOC模块提供初始化的功能,该功能初始所有内部全局变量和存储SecOC I-PDUs
的缓冲区及所有的中间结果。SecOC的环境应该响应SecOC_Init在调用SecOC模块的其他功能之前除了SecOC_GetVersionInfo。在开发者模式下实现器必须保证SecOC_E_NUINIT被返回以防止一个API功能在模块初始化之前被调用。 - 对于通过 SecOC 模块的 I-PDU 数据传输路径,在 SecOC 模块内分配了一个缓冲区。此缓冲区需要初始化,因为它可能在下层通信模块的上层完全填充数据之前被传输。