目录
一、概述
二、约束和假设
三、依赖模块
四、功能描述
4.1 安全解决方案的规范
4.1.1 安全解决方案的基本实体
4.1.2 安全的I-PDU构建
4.1.3 安全的I-PDU验证
4.2 与PduR的关系
4.3 初始化
4.4 传出PDU的身份验证
4.5 传入pdu的验证
4.6 网关功能
4.7 多核分布
4.8 安全事件
4.9 错误分类
4.9.1 开发错误
4.9.2 运行错误
五、API接口
5.1 API定义
5.2 回调接口
5.3 应用回调
5.4 调度函数
一、概述
该规范是车载安全通信(SecOC)模块的软件规范。它基于AUTOSAR SecOC,并规定了如何实现自AUTOSAR SecOC SRS的要求。它描述了自动sarSecOC模块的基本安全特性、功能和API。
SecOC模块旨在为pdu级别上的关键数据提供资源高效和切实可行的身份验证机制。认证机制应与当前的AUTOSAR通信系统无缝集成。对资源消耗的影响应该尽可能小,以便为遗留系统提供附加保护。该规范基于主要使用具有消息认证码(MACs)的对称身份验证方法的假设。它们使用比非对称方法使用更小的密钥实现相同的安全级别,并且可以在软件和硬件中紧凑有效地实现。但是,该规范提供了必要的抽象级别,以便同时可以同时使用对称方法和非对称身份验证方法。
SecOC模块集成在 AUTOSAR PduR的基础上。在此设置中,PduR负责将传入和传出的与安全相关的ipdu路由到SecOC模块。然后,SecOC模块应添加或处理安全相关信息,并应以I-PDU的形式将结果传播回PduR。然后,PduR将负责进一步路由i-pdu。此外,SecOC模块利用CSM提供的加密服务,并与Rte进行交互,以允许密钥和计数器管理。SecOC模块应支持PduR所支持的所有类型的通信范式和原则,特别是多播通信、传输协议和PduR网关。以下部分提供了SecOC接口、功能和配置的详细说明。
二、约束和假设
SecOC模块用于所有需要安全通信的ecu中。
SecOC模块只能用于保护整个SomeIpTp消息,而不能用于保护SomeIpTp消息的单个段。
三、依赖模块
(1)PduR:SecOC模块依赖于PduR的API和功能。它提供了PDU路由器所需的上层和下层API功能;
(2)CSM:SecOC模块依赖于CSM模块提供的加密算法。SecOC模块需要API函数来生成和验证加密签名或消息认证码;
(3)SecOC模块提供了一个具有管理功能的API。此API包含以下由RTE作为服务接口提供的API函数。
- SecOC_VerificationStatus
- SecOC_VerifyStatusOverride.
- SecOC_VerificationStatusIndication
四、功能描述
SecOC模块的目标是实现在pdu级别上的敏感数据的资源高效和切实可行的认证机制。本规范中提出的方法通常支持使用对称和非对称的方法来实现真实性和完整性保护。这两种方法大致都是针对相同的目标,并在概念上显示出主要的相似之处,但由于基本原语的技术属性不同,也存在一些差异。此外,使用身份验证器的常用术语也是不同的。一般来说,术语消息认证码(MAC)用于对称方法,而术语签名或数字签名指的是具有不同属性和约束的非对称方法。
4.1 安全解决方案的规范
文档中所述的SecOC模块提供了必要的功能,以验证车辆架构中ECU之间基于PDU的通信的真实性和新鲜度。该方法要求发送ECU和接收ECU同时实现一个SecOC模块。两个SecOC模块集成起来,在发送端和接收端提供上层和下层PduRapi。两侧的SecOC模块通常会与PduR模块进行交互。
在发送方端,SecOC模块通过向输出的真实I-PDU添加身份验证信息来创建一个安全的I-PDU。认证信息包括认证器(例如,消息认证码)和可选的新鲜度值。无论新鲜度值是否包含在安全I-PDU有效负载中,在生成身份验证器时都会考虑新鲜度值。当使用新鲜度计数器而不是时间戳时,在向接收方提供身份验证信息之前,应该由新鲜度管理器来增加新鲜度计数器。
在接收端,SecOC模块通过验证发送方SecOC模块所附加的身份验证信息,来检查真实I-PDU的新鲜度和真实性。为了验证一个真实的I-PDU的真实性和新鲜度,提供给接收方SecOC的安全的I-PDU应该是由发送方SecOC和接收方SecOC提供的相同的安全I-PDU应该知道发送方SecOC在创建身份验证器期间使用的新鲜度值。
4.1.1 安全解决方案的基本实体
(1)真实的I-PDU和安全的I-PDU
一个安全的I-PDU的有效负载由真实的I-PDU和一个身份验证器(例如,消息身份验证码)组成。一个安全的I-PDU的有效负载可以可选地包括用于创建身份验证器(例如,MAC)的新鲜度值。安全I-PDU中内容的结构顺序与下图一致。
下图是带有截断的新鲜度计数器和截断的身份验证器的安全I-PDU内容的示例(没有安全的I-PDU标头)
【规范】所有直接或间接传输到通信链路另一侧的SecOC数据(如新鲜度值、认证器、数据标识符、SecOC消息链路数据...)应按大端字节顺序进行编码,以便每个SecOC模块以相同的方式解释数据。
【规范】固定的I-PDU标头应以字节表示真实I-PDU的长度。头的长度应通过参数数据头长度进行配置。
(2)身份验证程序覆盖的数据
计算身份验证器的数据由安全I-PDU的SecOCDatDaId、真实I-PDU数据和完全新鲜度值组成。它们分别连接在一起,组成传递到身份验证器生成/验证的位数组。
(3)新鲜度值
每个安全的I-PDU都配置了至少一个新鲜度值。新鲜度值是指用于确保安全的I-PDU的新鲜度的单调计数器。这样的单调计数器可以通过单独的消息计数器,称为新鲜度计数器,或通过一个称为新鲜度时间戳的时间戳值来实现。新鲜度值将来自于一个新鲜度管理器。
【规范】如果参数SecOCFreshnessValueTruncLength的长度小于实际新鲜度值,SecOC应只包含最不显著的在安全的I-PDU中高达SecOCFreshnessValueTruncLength的新鲜度值。如果参数SecOCFreshnessValueTruncLength配置为0,则新鲜度值不包括在安全I-PDU中。
【规范】如果真实数据新鲜度设置为TRUE,SecOC应使用真实的I-PDU的一部分作为新鲜度。在这种情况下,SecOCAuthDataFreshnessStartPosition以真实I-PDU内部的新鲜度确定起始位置,SecOC以位确定其长度。
【规范】新鲜度管理器以字节数组的形式提供或接收新鲜度信息。新鲜度总是与数组中第一个字节的MSB对齐。新鲜度的第15位是第二个字节的MSB,以此类推。新鲜度数组中未使用的位必须设置为0。相关联的长度信息必须以位的形式给出。
【规范】如果对于SecOCQueryFreshnessValue= CFUNC 和 SecOCProvideTxTruncatedFreshnessValue=TRUE,则每当为相应的PDU构造数据验证器时,SecOC调用接口函数SecOC_GetTxFreshnessTruncData。
【规范】如果对于SecOCQueryFreshnessValue= CFUNC 和 SecOCProvideTxTruncatedFreshnessValue=FALSE,则每当为相应的PDU构造数据验证器时,SecOC调用接口函数SecOC_GetTxFreshness。
【规范】如果对于SecOCQueryFreshnessValue= RTE 和 SecOCProvideTxTruncatedFreshnessValue=TRUE,则每当为相应的PDU构造数据验证器时,SecOC调用接口函数FreshnessManagement_GetTxFreshnessTruncData 。
【规范】如果对于SecOCQueryFreshnessValue= RTE 和 SecOCProvideTxTruncatedFreshnessValue=FALSE,则每当为相应的PDU构造数据验证器时,SecOC调用接口函数FreshnessManagement_GetTxFreshness 。
【规范】对于每个排队到SecOC的传输请求,应维护一个身份验证构建计数器。
【规范】在初始处理一个安全的I-PDU的传输请求时,SecOC应将认证构建计数器设置为0。
【规范】如果对新鲜度函数的查询(例如SecOC_GetTxFreshness())返回E_BUSY或对身份验证器的计算(例如Csm_MacGenerate())返回E_BUSY、QUEUE_FULL或任何其他可恢复的错误,身份验证构建计数器应增加。
【规范】如果构建验证失败,且验证构建计数器尚未达到配置值SecOCAuthenticationBuildAttempts,,则应在下次调用Tx主函数时重试新鲜度尝试和验证器计算。
【规范】如果验证构建计数器达到配置值SecOCAuthenticationBuildAttempts,,或者新鲜度函数的查询返回E_NOT_OK,或者验证器的计算返回不可恢复的错误,如返回E_NOT_OK或KEY_FAILURE,如果服务SecOC_SendDefaultAuthenticationInformation启用发送SecOCDefaultAuthenticationInformationPattern,SecOC模块对新鲜度值和验证器的所有字节使用SecOCDefaultAuthenticationInformationPattern来构建验证信息。如果未启用发送SecOCDefaultAuthenticationInformationPattern,SecOc模块应从其内部缓冲区中删除真实的I-PDU,并取消传输请求。
【规范】如果对于SecOCQueryFreshnessValue = CFUNC,SecOCProvideTxTruncatedFreshnessValue= TRUE,则SecOC将调用一个名为SecOC_GetTxFreshnessTruncData的函数,以获取TX消息的当前新鲜度。
【规范】如果对于SecOCQueryFreshnessValue = CFUNC,SecOCProvideTxTruncatedFreshnessValue= FALSE,则SecOC将调用一个名为SecOC_GetTxFreshness的函数,以获取TX消息的当前新鲜度。
【规范】如果PDU配置 SecOCQueryFreshnessValue = CFUNC,SecOC调用具有SWS_SecOC_91005中描述的签名的函数,以表明安全的I-PDU已成功启动传输。
【规范】如果PDU配置SecOCQueryFreshnessValue = RTE,SecOC调用服务操作FreshnessManagement_SPduTxConfirmation,以指示安全的I-PDU已成功启动传输。
【规范】对于SecOC中每个处理的安全I-PDU,应维护一个身份验证构建计数器和一个身份验证验证尝试计数器。
【规范】在对接收到的安全I-PDU进行初始处理时,认证构建计数器和认证验证尝试计数器应设置为0。
【规范】如果对新鲜度函数(如SecOC_GetRxFreshness())的查询返回E_BUSY,则应增加认证构建计数器,并且不执行认证验证的尝试。
【规范】如果对验证器(例如Csm_MacVerify())的验证返回E_BUSY、QUEUE_FULL或任何其他可恢复的错误,则应增加认证构建计数器。
【规范】如果身份验证构建尝试失败,且身份验证构建计数器尚未达到配置值SecOCAuthenticationBuildAttempts,,则将在对Rx主函数的下一次调用中重试新鲜度尝试和身份验证器验证。
【规范】如果验证器的验证能够成功执行,但验证失败(如MAC验证失败或密钥无效),则应增加验证验证尝试计数器,并将认证构建计数器设置为0。
【规范】如果身份验证构建计数器已达到配置值SecOCAuthenticationBuildAttempts,则SecOC模块应从其内部缓冲区中删除真实的I-PDU,并应删除接收到的消息。验证结果类型应设置为SECOC_AUTHENTICATIONBUILDFAILURE。如果使用SecOC_VerifyStatusOverride,则根据过载状态值处理验证结果和I-PDU。
【规范】如果对新鲜度函数的查询返回了E_NOT_OK,SecOC模块将从其内部缓冲区中删除真实的I-PDU,并将删除接收到的消息。验证结果类型应设置为SECOC_FRESHNESSFAILURE。
【规范】如果认证验证尝试计数器达到配置值SecOCAuthenticationVerifyAttempts,或者验证器的验证返回了不可恢复的错误,如返回E_NOT_OK或KEY_FAILURE,SecOC模块应从其内部缓冲区中删除真实的I-PDU,并删除接收到的消息。验证结果类型应设置为SECOC_VERIFICATIONFAILURE。如果使用SecOC_VerifyStatusOverride,则根据过载状态值处理验证结果和I-PDU。
【规范】如果验证成功,验证结果类型应设置为SECOC_VERIFICATIONSUCCESS。
【规范】新鲜度管理应使用验证状态标注功能(SWS_SECOC_00119)来获取一个安全的I-PDU的验证结果。此通知可以作为示例来同步额外的新鲜度尝试,也可以用于计数器增量。
【规范】如果PDU配置的SecOCQueryFreshnessValue= RTE和SecOCUseAuthDataFreshness= TRUE,并且安全的PDU被完全接收,SecOC将调用RTE服务FreshnessManagement_GetRxFreshnessAuthData来查询当前的新鲜度。接收到的部分PDU数据通过配置SecOCAuthDataFreshnessStartPosition和SecOC配置给此服务操作。
【规范】如果PDU配置的SecOCQueryFreshnessValue= RTE和SecOCUseAuthDataFreshness= FALSE,并且安全的PDU被完全接收,SecOC将调用RTE服务FreshnessManagement_GetRxFreshness来查询当前的新鲜度。接收到的部分PDU数据通过配置SecOCAuthDataFreshnessStartPosition和SecOC配置给此服务操作。
【规范】如果PDU配置的SecOCQueryFreshnessValue= CFUNC 和SecOCUseAuthDataFreshness= TRUE,并且安全的PDU被完全接收,SecOC将调用RTE服务SecOC_GetRxFreshnessAuthData来查询当前的新鲜度。接收到的部分PDU数据通过配置SecOCAuthDataFreshnessStartPosition和SecOC配置给此服务操作。
【规范】如果PDU配置的SecOCQueryFreshnessValue= CFUNC 和SecOCUseAuthDataFreshness= FALSE,并且安全的PDU被完全接收,SecOC将调用RTE服务SecOC_GetRxFreshness来查询当前的新鲜度。接收到的部分PDU数据通过配置SecOCAuthDataFreshnessStartPosition和SecOC配置给此服务操作。
【规范】如果Rx新鲜度请求函数返回E_NOT_OK,则认为真实I-PDU的验证失败,该PDU的认证重试计数器将增加。如果身份验证尝试的次数已经达到SecOCAuthenticationVerifyAttempts,,SecOC模块将从其内部缓冲区中删除真实的I-PDU。故障SECOC_E_FRESHNESS_FAILURE应报告给DET模块。
【规范】如果SecOCQueryFreshnessValue = CFUNC 和 SecOCUseAuthDataFreshness = TRUE , SecOC查询名为SecOC_GetRxFreshnessAuthData的函数,以获取RX消息的当前新鲜度。
【规范】如果SecOCQueryFreshnessValue = CFUNC 和 SecOCUseAuthDataFreshness = FALSE , SecOC查询名为SecOC_GetRxFreshness的函数,以获取RX消息的当前新鲜度。
4.1.2 安全的I-PDU构建
【规范】创建一个安全的I-PDU,从而认证一个真实的IPDU包括以下六个步骤:
- 准备安全的I-PDU
- 构造身份验证器的数据
- 生成身份验证器
- 构建安全的I-PDU
- 增加新鲜度计数器
- 广播安全I-PDU
【规范】SecOC模块应准备安全的I-PDU。在准备过程中,SecOC应分配必要的缓冲区,以保存认证过程的中间结果和最终结果。
【规范】SecOC模块应构建数据到认证器,即用于计算认证器的数据。数据身份验证器是通过按照给定的顺序连接数据Id(参数SecOCDataId)的完整16位表示、真实I-PDU的安全部分和与SecOCfrestnessValueID对应的完整新鲜度值而形成的。为此目的,数据Id和新鲜度值应按大端点字节顺序进行编码。
【规范】SecOC模块应通过将数据到认证器、数据到认证器的长度引入与SecOCTxAuthServiceConfigRef.对应的认证算法来生成认证器。
【规范】SecOC模块应将由此产生的身份验证器截断至SecOC认证信息运行长度所指定的位数。
【规范】SecOC模块应通过将安全的I-PDU标头(可选)、新鲜度值(可选)和身份验证器添加来构建安全的I-PDU。安全I-PDU的方案(包括内容在安全I-PDU中结构化的顺序)应符合以下要求:
4.1.3 安全的I-PDU验证
【规范】安全I-PDU的验证包括以下六个步骤:
- 解析真实的I-PDU、新鲜度值和身份验证器
- 从新鲜度管理器那里获得新鲜度值
- 构建数据以进行身份验证
- 验证认证信息
- 将确认函发给新鲜度管理器
- 将真实的I-PDU传递到上层
【规范】如果使用SecOCRxSecuredPduCollection,则SecOC不得执行任何验证,直到它收到真实I-PDU和构成安全I-PDU的加密I-PDUI-PDU。只有在两者都收到SecOC后,才应尝试验证最终的安全I-PDU。如果使用SecOC_VerifyStatusOverride,则根据过载状态值处理验证结果和I-PDU。
【规范】如果使用SecOCRxSecuredPduCollection,那么SecOC不得试图验证安全的I-PDU,直到它接收并缓冲了真实的I-PDU和加密的I-PDU值。如果使用SecOC_VerifyStatusOverride,则根据过载状态值处理验证结果和I-PDU。
【规范】在收到安全的I-PDU后,SecOC应从中解析真实的I-PDU、新鲜度值和身份验证器。
【规范】SecOC模块应构建在接收端上的用于计算认证器(数据到认证器)的数据。该数据由SecOCDataId| AuthenticIPDU | FreshnessVerifyValue。
【规范】SecOC模块应通过将数据验证器、数据验证器长度、从安全I-PDU解析的验证器和数据验证信息长度传递到SecOCRxAuthServiceConfigRef.对应的验证算法来验证验证器重复了第9.2章所述的验证过程。如果使用SecOC_VerifyStatusOverride,则根据过载状态值处理验证结果和I-PDU。
【规范】SecOC模块应报告相应的安全Rx-PDU的验证状态如下:如果SecOCRxPduProcessing/SecOCVerificationStatusPropagationMode设置为BOTH或FAILURE_ONLY,则根据当前配置通过呼叫功能SecOC_VerificationStatusCallout和SecOC_VerificationStatus接口提供验证状态。如果将配置设置为NONE,则不会提供任何报告。
【规范】SecOC模块应报告相应的安全Rx-PDU的验证状态如下:如果SecOCRxPduProcessing/SecOCClientServerVerificationStatusPropag状态模式设置为BOTH或FAILURE_ONLY,则根据其当前配置通过服务接口SecOC_VerificationStatusIndication提供验证状态。如果将配置设置为NONE,则不会提供任何报告。
【规范】如果配置项SecOCGeneral/SecOCPropagateOnlyFinalVerificationStatus设置为TRUE,则只报告最终状态。如果此项目被设置为FALSE,则应根据SWS_SecOC_00048和SWS_SecOC_00271报告每个单独的验证状态(最后一个以及以前所有失败的验证状态)。
【规范】如果一个安全的I-PDU的验证成功或相应地设置了状态覆盖,SecOC模块应使用PduR的底层接口将真实的I-PDU传递给上层通信模块。
4.2 与PduR的关系
【规范】在实现SecOC模块时,应保证没有其他模块依赖于它,并且如果不需要,则可以构建一个没有SecOC模块的系统。
【规范】SecOC应确保在一个真实的PDU中接收到的元数据将在相应的安全PDU中保持不变,反之亦然。
4.3 初始化
SecOC模块提供了一个初始化函数(SecOC_Init)。该函数初始化所有内部全局变量和缓冲区,以存储SecOCI-pdu和所有中间结果。SecOC的环境应在调用除SecOC_GetVersionInfo之外的SecOC模块的任何其他函数之前调用SecOC_Init。如果在模块初始化之前调用了一个API函数,则实现者必须确保以开发模式返回SecOC_E_UNINIT。
对于通过SecOC模块的I-PDU数据传输路径,在SecOC模块内分配了一个缓冲区。这个缓冲区需要初始化,因为它可能在下层通信模块的上层完全填充数据之前被传输。
【规范】在SecOC_Init内,该模块应初始化所有内部全局变量和SecOCI-pdu的缓冲区。
【规范】SecOC模块应用配置参数SecOCTxPduUnusedAreasDefault确定的值填充传输安全或传输加密Pdu的未使用区域,例如0xFF。
4.4 传出PDU的身份验证
【规范】SecOC模块在开始传输相应的安全I-PDU之前,应将完整的真实I-PDU复制到其内部内存中。
【规范】如果使用SecOCTxSecuredPduCollection,则SecOC应将安全的I-PDU作为两个消息传输:原始的真实I-PDU和一个单独的加密I-PDU。加密I-PDU应包含安全I-PDU的所有认证信息,以便真实I-PDU和加密I-PDU包含重建安全I-PDU所需的所有信息。
【规范】SecOC应在同一主功能周期内传输一个真实的I-PDU及其相应的加密I-PDU。
【规范】如果使用SecOCTxSecuredPduCollection,则SecOC将在加密I-PDU内部重复部分真实的I-PDU作为消息链接器,而Cryptographic I-PDU =Authentication Data | Message Linker。
【规范】如果使用SecOCUse消息链接,那么SecOC应使用位位置的SecOCMessage链接器长度的值作为消息链接器。
【规范】如果使用SecOCTxSecuredPduCollection,如果真实I-PDU和加密I-PDU需要SecOC_TxConfirmation,SecOC应将Tx确认转发到上层。当两个Tx确认调用的结果参数均为E_OK时,上层Tx确认调用的reult参数仅为E_OK,否则结果参数应为E_NOT_OK。
【规范】SecOC模块应提供足够的缓冲容量,以根据SWS_SecOC_00031中描述的过程存储传入的真实I-PDU、输出的安全I-PDU和认证过程的所有中间数据。
【规范】SecOC模块应为真实I-PDU和安全I-PDU提供单独的缓冲区。
【规范】来自上层通信模块的任何传输请求都应覆盖包含真实I-PDU的缓冲区,而不影响各自的安全I-PDU的缓冲区。
【规范】对于具有SecOC头长度为0的Tx安全I-PDU,SecOC模块应将安全I-PDU头添加到安全I-PDU,长度为安全I-PDU内的安全I-PDU,以处理动态真实I-PDU。
4.5 传入pdu的验证
【规范】如果SecOCReceptionOverflowStrategy被设置为替换,如果已启动接收具有相同Pdu标识符的安全IPDU,SecOC模块将释放所有与安全I-PDU相关的缓冲区。
【规范】如果SecOCReceptionOverflowStrategy被设置为拒绝,并且SecOC当前忙于相同的安全I-PDU,SecOC模块应忽略SecOC_RxIndication的任何后续调用,并为SecOC_StartOfReception的任何后续调用返回BUFREQ_E_NOT_OK。
【规范】SecOC应为输入的安全I-PDU、加密I-PDU和由此产生的真实I-PDU提供单独的缓冲区。
【规范】如果SecOCReceptionOverflowStrategy被设置为队列,并且SecOC当前忙于相同的安全I-PDU,SecOC模块将额外接收安全I-PDU,并在当前处理的安全I-PDU完成后进行后续处理。如果达到了排队大小所规定的限制,任何进一步的接收都将被拒绝。
【规范】对于在相应的SecOCRx安全层中存在SecOCRxSecuredPduCollection的每个安全的I-PDU,SecOC应只缓冲它所收到的最后一个真实的I-PDU和加密的I-PDU。如果缓冲区中已经填充了以前的I-PDU,则会覆盖以前的I-PDU。
【规范】SecOC应在收到各自真实的真实I-PDU和加密I-PDU后立即构建和安全的I-PDU。如果使用SecOC_VerifyStatusOverride,则根据过载状态值处理验证结果和I-PDU。
【规范】如果随后对生成的安全I-PDU进行的验证成功,那么SecOC应清除真实和加密I-PDU的缓冲区。
【规范】对于具有SecOC实际数据长度=0或未配置的安全Rx I-PDU,并且参考全局Pdu的动态长度(见ECUC_EcuC_00078)设置为假,SecOC模块应使用相应全局Pdu的配置长度提取真实的I-PDU。
【规范】对于SecOCputhpdu头长度=0或未配置的安全Rx I-PDU,参考全局Pdu的动态长度(见ECUC_EcuC_00078)设置为TRUE,SecOC模块应使用下层提供的长度提取真实的I-PDU。
【规范】对于具有SecOC数据头长度>0的安全Rx I-PDU,SecOC模块应使用安全I-PDU头运行时提供的长度提取真实的I-PDU。
4.6 网关功能
SecOC模块支持对从一个源总线路由到一个或多个目标总线的I-pdu的认证和验证。这允许实现重新身份验证网关,可用于实现具有不同安全区域或属性的网络。对于给定的I-PDU的每个认证或验证过程都需要单独配置。此功能包括:
- 对传出的I-pdu的身份验证,
- 传入i-pdu的验证,
- 重新认证网关,即当I-PDU被路由到另一个下层模块时,结合它们对传入的I-PDU进行立即重新认证的验证。
4.7 多核分布
为了在不同的分区之间提供负载分配,加密堆栈的不同部分应分配给不同的分区。因此,应支持这样种分区在加密实例的基础上进行,即加密驱动程序实例应定位到不同的分区上。
【规范】SecOCTx主功能处理应在主功能内处理,通过SecOCTxPduMainFunctionRef
4.8 安全事件
【规范】如果已经为SecOC模块启用了安全事件报告(SecOCEnableSecurityEventReporting = true),则相应的安全事件应通过AUTOSAR_SWS_BSWGeneral中定义的接口报告给IdsM。
【规范】下表列出了为SecOC标准化的安全事件及其触发条件。
【规范】下表描述了针对相应安全性应报告的上下文数据:
4.9 错误分类
4.9.1 开发错误
4.9.2 运行错误
五、API接口
5.1 API定义
- SecOC_Init
- SecOC_DeInit
- SecOC_GetVersionInfo
- SecOC_IfTransmit
- SecOC_TpTransmit
- SecOC_IfCancelTransmit
- SecOC_TpCancelTransmit
- SecOC_TpCancelReceive
- SecOC_VerifyStatusOverride
- SecOC_SendDefaultAuthenticationInformation
5.2 回调接口
- SecOC_RxIndication
- SecOC_TpRxIndication
- SecOC_TxConfirmation
- SecOC_TpTxConfirmation
- SecOC_TriggerTransmit
- SecOC_CopyRxData
- SecOC_CopyTxData
- SecOC_StartOfReception
5.3 应用回调
- SecOC_GetRxFreshness
- SecOC_GetRxFreshnessAuthData
- SecOC_GetTxFreshness
- SecOC_GetTxFreshnessTruncData
- SecOC_SPduTxConfirmation
5.4 调度函数
- SecOC_MainFunctionRx
- SecOC_MainFunctionTx