SecOC_集成手册

目标

本集成手册用于指导用户进行SecOC模块集成,文档主要包括的内容为:SecOC模块集成指导、基于示例应用的集成讲解。

由于各项目的需求不同,集成示例不会针对于特定的商业项目做详细讲解。

缩写词和术语

表格 2‑1

缩写词/术语

描述

SecOC

Security On board Communication安全板载通信

MCAL

Microcontroller Abstraction Layer微控制器抽象层

CryIf

Crypto Interface Crypto接口

Csm

Crypto ServiceManager Crypto服务管理

MAC

Message Authentication Code消息认证码

参考文档

[1]《参考手册_CryIf.pdf》

[2]《参考手册_CSM.pdf》

[3]《参考手册_Crypto.pdf》

[4]《参考手册_SecOC.pdf》

SecOC集成

项目交付的内容为:SecOC源码和ORIENTAIS Configurator配置工具。

SecOC相关配置模块的功能介绍,参见表4‑1 SecOC相关配置模块介绍。

使用SecOC源码和配置工具,进行SecOC的集成的步骤,参见表4‑2 SecOC集成的步骤。

表4‑1 SecOC相关配置模块介绍

模块名

功能

Can

提供SecOC所需要的邮箱

CANIf

CANIf模块主要处理上层模块与底层驱动的之间PDU的传递,为上层模块提供统一的接口来管理不同的CAN硬件模块

EcuC

用于辅助配置工具完成配置的模块。主要提供PDU的定义,其它模块通过关联EcuC中PDU,相互关联起来。

PduR

PDU Router主要为通讯接口模块(CANIf)、传输协议模块(CAN TP、J1939 TP)、诊断通讯管理模块(DCM、J1939DCM)以及通讯模块(COM、LDCOM)以及IPDUM、SECOC等模块提供基于I-PDU的路由服务。

Com

COM模块主要提供I-PDU和信号相关管理功能

Crypto

为SecOC提供底层加密驱动程序

Csm

Csm模块为Crypto进行抽象并为上层提供标准化接口

SecOC

SecOC模块主要管理参与信息安全收发的PDU及相关属性

表4‑2 SecOC集成的步骤

步骤

操作

说明

1

ORIENTAIS Configurator配置工具工程搭建和SecOC相关模块加载

若配置工具已经搭建,则仅需进行SecOC相关模块的加载操作。

2

模块配置及配置文件生成

NA

3

代码集成

现有工程、SecOC相关模块源代码和配置生成文件的集成。

4

验证测试

NA

注意:SecOC模块集成之前,用户须确保已经有基础工程。

新建ORIENTAIS Configurator配置工程及模块加载

  1. 安装ORIENTAIS Configurator软件后,双击软件图标打开软件。

image1

图4-1 新建工程-1

  1. 菜单栏File🡪New🡪Project,新建工程。

image2

图4-2 新建工程-2

  1. 在弹出的新建窗口中选择Autosar下的 [BSW Project],选择Next。

image3

图4-3 新建工程-3

  1. 在弹出的窗口中输入工程名,选择Finish。

image4

图4-4 新建工程-4

  1. 在弹出的窗口中选择Yes。

image5

图4-5 新建工程-5

  1. 选择[Bsw_Builder],右键单击,选择New ECU Configuration。

image6

图4-6 新建工程-6

  1. 在弹出的窗口中输入ECU名,然后选择Next。

image7

图4-7 新建工程-7

  1. 在弹出的窗口中勾选需添加的模块,点击Finish。

image8

图4-8 新建工程-8

  1. 新建工程如下所示,上一步添加的模块已经被加入到工程中。

图形用户界面 描述已自动生成

图4-9 新建工程-9

  1. MCAL配置导入,BSW模块需要依赖MCAL生成的CAN模块

  1. 从MCAL配置工具生成arxml

图形用户界面 中度可信度描述已自动生成

图4-10 新建工程-10

图形用户界面, 文本, 应用程序, 电子邮件 描述已自动生成

图4-11 新建工程-11

  1. 导入BSW工具

图形用户界面, 文本, 应用程序 描述已自动生成

图4-12 新建工程-12

image9

图4-13 新建工程-13

图形用户界面, 文本 描述已自动生成

图4-14 新建工程-14

模块配置及生成代码

该章节主要介绍SecOC模块的配置参数,列举配置项在配置界面显示的名称、可能的取值、默认的取值、参数描述及依赖关系,旨在指导用户如何使用配置工具进行SecOC模块参数的配置。

目标:配置一组报文进行SecOC的正常收发

表 4-3配置目标

类型

CANID

Date

新鲜度长度

MAC值长度

SecOCID

TX

0x350

8Bytes

2Bytes

6Bytes

2Bytes

RX

0x351

8Bytes

2Bytes

6Bytes

2Bytes

表格名词解析如下表介绍

表 4-4属性描述

UI名称

该配置项在配置工具界面显示的名称

取值范围

该配置项允许的取值区间

默认取值

该配置项默认的配置值

参数描述

该配置项在标准的AUTOSAR_EcucParamDef.arxml文件中的描述

依赖关系

该配置项与其他模块或配置项的关系

Ecuc配置

一帧SecOC报文对应于四组ECUC和PDUR的两组路由组,分别对应于CANIf和COM使用。

EcucConfigSet

如表4-3配置目标,示例中使用CANFD,数据整体长度是16Bytes(此长度不包含SecOCID)。

配置Ecuc包含的发送、接收信息

COM -> SecOC_Authentic_Tx -> SecOC_Secured_Tx -> SecOC_Tx

SecOC_Rx -> SecOC_Secured_Rx -> SecOC_Authentic_Rx -> COM

image10

图4-15 EcucConfigSet

  1. 配置COM发送、接收信息:

COM_SECOC_DEMO_TX_350/COM_SECOC_DEMO_RX_351,长度为8

  1. 配置CANIf的发送、接收信息:

SECOC_DEMO_TX_350/SECOC_DEMO_RX_351,长度为16

  1. 配置SecOC的加密、真实的发送、接收信息:

SecOC_Authentic_Tx/ SecOC_Authentic_Rx,长度为8

SecOC_Secured_Tx/SecOC_Secured/Rx,长度为16

CanIf的配置

CanIfRx

CanIf主要是对报文属性的定义,包含了CANID和DLC以及帧类型等重要数据。

image11

图4-16 CanIfInitCfgRX配置

  1. 配置接收报文的ID 0x351这个信息和底层的邮箱信息相匹配。

  2. 配置帧类型是STANDARD_FD_CAN。

  3. DLC的长度,接收数据为16字节。

填写接收报文的ID,确定数据帧的类型以及数据长度,选择此数据的PDUHrH,以及CanIfRxPduRef。

表4-5 CanIfRx界面配置说明

UI名称

描述

CanIfR xPduCanId

取值范围

0-0x7FF

默认取值

0x00

参数描述

报文的ID

依赖关系

CanIfRxPduCanIdType

取值范围

默认取值

ST ABDARD_CAN

参数描述

帧类型

依赖关系

CanIfRxPduDlc

取值范围

0-32

默认取值

8

参数描述

报文长度

依赖关系

CanIfRxPduUserRxInd icationUL

取值范围

默认取值

PDUR

参数描述

接收报文所属的规范类型

依赖关系

CanIfRxPduHrhIdRef

取值范围

默认取值

HRH

参数描述

Rx L-PDU所属的HRH通过该参数引用

依赖关系

CanIfRxPduRef

取值范围

默认取值

参数描述

引用“全局”Pdu结构,以允许协调com堆栈中的句柄id

依赖关系

CanIfTx

image12

图4‑17 CanIfInitCfgTX配置

  1. 配置发送报文的ID 0x350这个信息和底层的邮箱信息相匹配。

  2. 配置帧类型STANDARD_FD_CAN。。

填写发送报文的ID,确定数据帧的类型,选择此数据的PDUHrH,以及CanIfTxPduRef。

表4-6 CanIfTx界面配置说明

UI名称

描述

CanIfTxPduType

取值范围

0-0x7FF

默认取值

0x00

参数描述

报文的ID

依赖关系

CanIfTxPduCanIdType

取值范围

默认取值

STABDARD_CAN

参数描述

帧类型

依赖关系

CanIfTxPduType

取值范围

默认取值

STATIC

参数描述

是否可以更改CANID

依赖关系

CanIfTxPduUserRxIndicationUL

取值范围

默认取值

PDUR

参数描述

接收报文所属的规范类型

依赖关系

CanIfTxPduBufferRef

取值范围

默认取值

参数描述

对CanIf缓冲区配置的可配置引用

依赖关系

CanIfTxPduRef

取值范围

默认取值

参数描述

引用“全局”PDU结构,以允许协调com堆栈中的句柄id

依赖关系

PDUR

PduRBswModules

图形用户界面, 应用程序 描述已自动生成

图4‑18 PduRBswModules配置

  1. 打开发送确认(PduRTxConfirmation)。

  2. Module引用SecOC模块。

此界面包含函数接口的宏开关以及PDU路由器模块应使用传输协议接口指定的API参数。PduRBswModuleRef需要在添加SecOC模块之后才可出现选择项。

表4-7 PduRBswModules界面配置说明

UI名称

描述

PduRCancelTransmit

取值范围

True / False

默认取值

False

参数描述

取 消发送函数的宏开关

依赖关系

PduRTxConfirmation

取值范围

True / False

默认取值

False

参数描述

发 送确认函数的宏开关

依赖关系

PduRBsModuleRef

取值范围

默认取值

参数描述

这是对一个 BSW模块配置的引用

依赖关系

PduRRoutingTables

在界面配置路由表,包含在ECUC里面配置的句柄信息以及数据流向,本文档中在此只关注SecOC报文。

image13

图4-19 路由表配置

如上述的4.3章节里面已经描述SecOC配置的ECUC的分组信息,在此配置发送是两组,接收是两组,分别在CanIf和COM里面进行传输,普通报文仅只有COM和CanIf两者之间传输而已,并不包含SecOC的附加信息。

发送路由表

发送的数据信息的传输如下图所示:

image14

图4-20 发送数据流

分析路由表的配置以下:

一、真实数据发送PduR组

源发送数据(此数据和下面的数据为一组,在COM往下发的时候传输使用,和安全的数据不一样,此为真实数据组8Bytes)。

image15

图4-21 COM发送数据流Src

  1. 启动传输需要打开,否则无法传输。

  2. 目的PDU参考为COM来的PDU,选择COM_SECOC_DEMO_Tx_0x350

发送的时候数据从COM源发送真实数据到真实数据配置的ECUC

PduRSrcPdus -> PduRDestPdus

表4-8 PduRSrcPdus界面配置说明TxCom

UI名称

描述

PduRSrcPduUpTxConf

取值范围

True / False

默认取值

True

参数描述

启动传输

依赖关系

PduRSrcPduRef

取值范围

默认取值

参数描述

源PDU参考;引用唯一的PDU标识符,应使用用于请求的PDU路由器操作

依赖关系

目的发送数据(此数据和上面的数据为一组8Bytes)

image16

图4-22 COM发送数据流Dest

  1. 选择数据的传输方式为直接传输。

  2. 此路由和TP无关报文走的是If,不需勾选PduRTpThreshold。

  3. 目的PDU参考为真实PDU,选择SecOC_Authentic_Tx

表4-9 PduRSrcPdus界面配置说明TxCom

UI名称

描述

PduRDestPduDataProvision

取值范围

默认取值

参数描述

指定如何提供数据:direct(作为传输调用的一部分)或via

依赖关系

PduRTpThreshold

取值范围

0…255

默认取值

0

参数描述

此参数仅与TP路由相关。

依赖关系

PduRTransmissionConfirmation

取值范围

True / False

默认取值

True

参数描述

此参数仅用于通信接口。传输协议模块将始终调用TxConfirmation函数

依赖关系

PduRDestPduRef

取值范围

默认取值

SecOC_Authentic_Tx0

参数描述

目的地PDU参考;当调用目标模块的相关函数时,由PDU路由器引用唯一的PDU标识符应使用而不是源PDU标识符

依 赖关系

二、安全数据PduR组

SecOC_Secured_Tx -> CANIF_SECOC_DEMO_Tx_0x350为PduR的数据流向

安全PduR源目的的数据如下:

源发送数据(此数据和下面的数据为一组,在CanIf往外发的时候传输使用,和真实的数据不一样,此为安全数据组16Bytes)。

image17

图4-23 CanIf发送数据流Src

  1. 启动传输需要打开,否则无法传输。

  2. PDU参考为安全的PDU,选择SecOC_Secured_Tx

表4-10 PduRSrcPdus界面配置说明TxCanIf

UI名称

描述

PduRSrcPduUpTxConf

取值范围

True / False

默认取值

True

参数描述

启动传输

依赖关系

PduRSrcPduRef

取值范围

默认取值

参数描述

源PDU参考;引用唯一的PDU标识符,应使用用于请求的PDU路由器操作

依赖关系

安全PduR目的数据如下:

目的发送数据(此数据和上面的数据为一组16Bytes)

image18

图4-24 CanIf发送数据流Dest

  1. 选择数据的传输方式为直接传输。

  2. 和TP无关报文走的是If,填写0.

  3. 目的PDU参考为CanIf的PDU,选择CANIF_SECOC_DEMO_Tx_0x350

表4-11 PduRSrcPdus界面配置说明TxCom

UI名称

描述

PduRDestPduDataProvision

取值范围

默认取值

参数描述

指定如何提供数据:direct(作为传输调用的一部分)或via

依赖关系

PduRTpThreshold

取值范围

0…255

默认取值

0

参数描述

此参数仅与TP路由相关。

依赖关系

PduRTransmissionConfirmation

取值范围

True / False

默认取值

True

参数描述

此参数仅用于通信接口。传输协议模块将始终调用TxConfirmation函数

依赖关系

PduRDestPduRef

取值范围

默认取值

SecOC_Authentic_Tx0

参数描述

目的地PDU参考;当调用目标模块的相关函数时,由PDU路由器引用唯一的PDU标识符应使用而不是源PDU标识符

依赖关系

注意:如果已在DBC里面配置SecOC报文,需要删除工具里生成的这一层的PduR,手动的去配置。因为目前DBC需求中没有明确信息表明是SecOC报文,所以会按照非加密报文生成通信栈里面的信息,需要按照本文档写的配置说明去手动更改配置的信息(Ecuc-CanIf-PduR-COM-SecOC的顺序配置)或者在DBC中删除多余信号。

接收路由表

接收数据信息的传输如下图所示:

image19

图4-25 接收数据流

路由表的配置如下:

一、加密数据接收PduR组

源发送数据(此数据和下面的数据为一组,在Can接收的时候传输使用,和真实的数据不一样,此为安全数据组16Bytes)。

image20

图4-26 CanIf接收数据流Src

  1. 启动传输需要打开,否则无法传输。

  2. 源PDU参考为CanIf的PDU,选择SecOC_DEMO_Rx_0x351

表4-12 PduRSrcPdus界面配置说明RxCanIf

UI名称

描述

PduRSrcPduUpTxConf

取值范围

True / False

默认取值

True

参数描述

启动传输

依赖关系

PduRSrcPduRef

取值范围

默认取值

参数描述

源PDU参考;引用唯一的PDU标识符,应使用用于请求的PDU路由器操作

依赖关系

接收时,安全数据从CanIf源接收外部的数据,路由到SecOC安全的数据配置的ECUC。

image21

图4-27 CanIf接收数据流Dest

  1. 选择数据的传输方式为直接传输。

  2. 和TP无关报文走的是If,填写0.

  3. 目的PDU参考为安全的PDU,选择SecOC_Secured_Rx

表4-13 PduRSrcPdus界面配置说明RxCanIf

UI名称

描述

PduRDestPduDataProvision

取值范围

默认取值

参数描述

指定如何提供数据:direct(作为传输调用的一部分)或via

依赖关系

PduRTpThreshold

取值范围

0…255

默认取值

0

参数描述

此参数仅与TP路由相关。

依赖关系

PduRTransmissionConfirmation

取值范围

True / False

默认取值

True

参数描述

此参数仅用于通信接口。传输协议模块将始终调用TxConfirmation函数

依赖关系

PduRDestPduRef

取值范围

默认取值

参数描述

目的地PDU参考;当调用目标模块的相关函数时,由PDU路由器引用唯一的PDU标识符应使用而不是源PDU标识符

依赖关系

二、真实数据接收PduR组

这是PduR源目的的数据如下:

源发送数据(此数据和下面的数据为一组,在COM接收的时候传输使用,和安全的数据不一样,此为安全数据组8Bytes)。

image22

图4-28 COM接收数据流Src

  1. 启动传输需要打开,否则无法传输。

  2. 源PDU参考为真实的PDU,选择SecOC_Authentic_Rx

表4-14 PduRSrcPdus界面配置说明RxCom

UI名称

描述

PduRSrcPduUpTxConf

取值范围

True / False

默认取值

True

参数描述

启动传输

依赖关系

PduRSrcPduRef

取值范围

默认取值

参数描述

源PDU参考;引用唯一的PDU标识符,应使用用于请求的PDU路由器操作

依赖关系

真实PduR目的的数据如下:

目的接收数据(此数据和上面的数据为一组8Bytes)

image23

图4-29 COM接收数据流Dest

  1. 选择数据的传输方式为直接传输。

  2. 和TP无关报文走的是If,填写0.

  3. 目的PDU参考为COM的PDU,选择COM_SecOC_DEMO_Rx_0x351

表4-15 PduRDestPdus界面配置说明RxCom

UI名称

描述

PduRDestPduDataProvision

取值范围

默认取值

参数描述

指定如何提供数据:direct(作为传输调用的一部分)或via

依赖关系

PduRTpThreshold

取值范围

0…255

默认取值

0

参数描述

此参数仅与TP路由相关。

依赖关系

PduRTransmissionConfirmation

取值范围

True / False

默认取值

True

参数描述

此参数仅用于通信接口。传输协议模块将始终调用TxConfirmation函数

依赖关系

PduRDestPduRef

取值范围

默认取值

参数描述

目的地PDU参考;当调用目标模块的相关函数时,由PDU路由器引用唯一的PDU标识符应使用而不是源PDU标识符

依赖关系

COM

DBC的配置

  1. TX(信号只需要定义有效数据即可,本文档采用大端法)

image24

图4-30 TX_DBC的定义

  1. RX(信号只需要定义有效数据即可,本文档采用大端法)

image25

图4-31 RX_DBC的定义

附加的信息不必要占用任何的DBC里面的信息,描述包含:新鲜度、MAC、SecOCID。

ComConfig

Tx信号的配置

SECOC_DEMO_Tx_Data0x_IPDU_COM_SECOC_DEMO_Tx_0x350信号的定义

image26image27image28image29image30

图4-32 TX信号

  1. 数据的起始位和位长度可以根据DBC的导入获得,或者根据大端和小端的方式来确定,本示例使用大端配置。

  2. 信号类型采用:大端法。

  3. 信号的初始值:此处可人为填写,也可以在测试的时候更改这个值,验证功能,示例按照图4-32所示字节填写即可。

  4. 信号类型:这个很重要,后面的测试转发报文的需要信号的类型相匹配,此选项是16Bits,选择UINT16。

表4-16 ComConfig界面配置说明

UI名称

描述

ComBit Position

取值范围

0..4294967295

默认取值

参数描述

I-PDU内的 起始位置该参数指的 是I-PDU中的位置,而 不是影子缓冲区中的 位置如果将字节序转 换配置为不透明,则 参数ComBitPosition 应定义第一个字节的b it0,如小端字节顺序

依赖关系

ComSignalEn dianness

取值范围

BIG_ENDIAN

LITTLE_ENDIAN

OPAQUE

默认取值

参数描述

定义信号 网络表示的字节顺序

依赖关系

ComSignalInitValue

取值范围

与信号类型有关

默认取值

0

参数描述

此信号的初始值在UINT8_N的情况下,默认值是一个长度为ComSignalLength的字符串,所有字节都设置为0x00在UINT8_DYN的情况下,初始大小应为0

依赖关系

在UINT8_N的情况下,ComSignalInitValue的长度必须与ComSignalLength的长度相同。

ComTransfer Property

取值范围

PENDING

TRIGGERED TRIGGERED_ON_CHANGE

TRIGGERED_ON_CHANGE_WITHOUT_REPETITION

TRIGGERED _WITHOUT_REPETITION

默认取值

PENDING

参数描述

定义对此信号的写访问是否可以触发相应I-PDU的传输如果I-PDU被触发,则还取决于相应I-PDU的传输模式

依赖关系

ComUpdateBit Position

取值范围

0..4294967295

默认取值

参数描述

更新位在I-PDU内的位位置

依赖关系

ComGwIPduRef

取值范围

引用[ComIPdu]

默认取值

参数描述

引用Signal Gateway源或目的地描述的I-PDU

依赖关系

Rx信号的配置

SecOC_Payload_Rx00_IPDU_COM_SecOC_Rx的定义

image31

image32image33image34image35

图4-33 RX信号

  1. 数据的起始位和位长度可以根据DBC的导入获得,或者根据大端和小端的方式来确定,在这里采用大端法。

  2. 信号类型采用:大端法。

  3. 信号的初始值:接收数据无需配置,默认即可。

  4. 信号类型:这个很重要,后面的测试转发报文的需要信号的类型相匹配,此选项是16Bits,选择UINT16。

表4-17 ComConfig界面配置说明R

UI名称

描述

ComBitPosition

取值范围

0..4294967295

默认取值

参数描述

I-PDU内的起始位置该参数指的是I-PDU中的位置,而不是影子缓冲区中的位置如果将字节序转换配置为不透明,则参数ComBitPosition应定义第一个字节的bit0,如小端字节顺序

依赖关系

ComSignalEndianness

取值范围

BIG_ENDIAN

LITTLE_ENDIAN

OPAQUE

默认取值

参数描述

定义信号网络表示的字节顺序

依赖关系

ComSignalInitValue

取值范围

与信号类型有关

默认取值

0

参数描述

此信号的初始值在UINT8_N的情况下,默认值是一个长度为ComSignalLength的字符串,所有字节都设置为0x00在UINT8_DYN的情况下,初始大小应为0

依赖关系

在UINT8_N的情况下,ComSignalInitValue的长度必须与ComSignalLength的长度相同。

ComTransferProperty

取值范围

PENDING

TRIGGERED TRIGGERED_ON_CHANGE

TRIGGERED_ON_CHANGE _WITHOUT_REPETITION

TRIGGERED _WITHOUT_REPETITION

默认取值

PENDING

参数描述

定义对此信号的写访问是否可以触发相应I-PDU的传输如果I-PDU被触发,则还取决于相应I-PDU的传输模式

依赖关系

ComUpdateBitPosition

取值范围

0..4294967295

默认取值

参数描述

更新位在I-PDU内的位位置

依赖关系

ComGwIPduRef

取值范围

引用[ComIPdu]

默认取值

参数描述

引用Signal Gateway源或目的地描述的I-PDU

依赖关系

Crypto

CryptoDriverObjects

设置CryptoQueueSize大小为16,选择后面设置的CryptoPrimitive.

image36

图4-34 Crypto设置

CryptoKeyElements

添加密钥元素,后面的CryptoKeyTypes可选择此处设置的CryptoKeyElements作为密钥类型参考值。

image37

image38

图4-35 CryptoKeyElement设置

CryptoPrimitives

设置算法类型,此处设置为AES-CMAC算法,选择算法加密服务为MAC_GENERATE。

image39

图4-36 Crypto设置

CryIf

CryIfIncludes

此处主要设置CryIf需要的头文件名,不需要添加.h后缀

image40

图4-37 CryIf设置

CryIfChannel

选择对应的底层驱动

image41

图4-38 CryIf设置

CryIfKey

添加底层驱动的密钥参考值

image42

图4-39 CryIf设置

Csm

CsmJobs

添加密钥管理服务的任务设置

CsmJobPriority:设置任务优先级

CsmProcessingMode:设置任务处理模式,可选择同步或者异步

CsmJobKeyRef:设置参考的密钥,在后面的CsmKeys中配置

CsmJobPrimitiveRef:设置任务原型,在后面的CsmPrimitives中配置

CsmJobQueueRef:设置任务队列,在后面的CsmQueues中配置

image43

图4-40 Csm设置

CsmKeys

image44

图4-41 Csm设置

添加从If层设置的密钥

CsmPrimitives

设置加密原型

CsmMacGenerateAlgorithmFamily:设置加密服务的算法族

CsmMacGenerateAlgorithmKeyLength:设置MAC的长度16byte

CsmMacGenerateAlgorithmMode:设置加密算法服务

CsmMacGenerateResultLength:设置输出的MAC长度6bytes

image45

图4-42 Csm设置

CsmQueues

设置Csm序列大小、If层设置的参考通道

image46

图4-43 Csm设置

SecOC

Genernal

image47

图4-44 General

  1. MainFunction所放置的周期,通常放在10ms里面,此处写0.01。

表4-18 General界面说明

UI名称

描述

SecOCDevErrorDetect

取值范围

True / False

默认取值

False

参数描述

错误检查开关,表示是否打开DET错误检查机制

依赖关系

SecOCMainFunctionPeriodRx/Tx

取值范围

0 .. 0.255

默认取值

参数描述

SecOC模块MainFunction的调度周期

依赖关系

依赖关系

SecOCVersionInfoApi

取值范围

True / False

默认取值

False

参数描述

用于配置SecOC_GetVersionInfo函数接口是否可用

依赖关系

SecOCRxPduProcessing

image48

图4-45 SecOCRxPduProcessings

如上图,SecOCRxPduProcessings为SecOCRxPduProcessing对象的集合,在该对象的右键菜单中,可添加0 .. n个SecOCRxPduProcessing对象。

image49

图4-46 SecOCRxPduProcessing

  1. SecOCAuthInfoTxLength:描述的是MAC的长度。

  2. SecOCDataId :和发送的ID需要一致,接收和发送是一组,具有唯一性。

  3. SecOCFreshnessCounterSyncAttempts:新鲜度的尝试次数,也许会出现偶然新鲜度失败,可以通过多次尝试依旧接收报文。

  4. SecOCFreshnessValueId:和发送的ID需要一致,接收和发送是一组,具有唯一性。

  5. SecOCFreshnessValueLength:新鲜度在加密信息里所占用的长度,单位:Bits。

  6. SecOCFreshnessValueTxLength:和SecOCFreshnessValueId保持一致即可。

  7. SecOCVerificationStatusPropagationMode:参数用于描述从SecOC模块到SWCs的每次验证尝试状态的传播,此处包含失败通知,成功通知,和不通知,为了提高代码的效率,选择NONE。

  8. SecOCRxAuthServiceConfigRef:算法选择,根据在Csm模块中配置的算法进行选择。

  9. SecOCSecuredPduBuffLength:大于等于所有信息的长度即可,数组缓存SecOC报文(此例程大于16即可,单位Bytes)。

表4-19 SecOCRxPduProcessing参数说明

UI名称

描述

SecOCAuthInfoTxLength

取值范围

0 .. 64

默认取值

0

参数描述

定义了添加在Secured I-PDU后面的Authenticationcode的长度,单位为bit

依赖关系

SecOCDataId

取值范围

0 .. 65535

默认取值

0

参数描述

Secured I-PDU唯一的标识符

依赖关系

SecOCFreshnessCounterSyncAttempts

取值范围

0 .. 65535

默认取值

0

参数描述

该参数定义了在校验Secured I-PDU失败后,尝试再校验的次数。

依赖关系

SecOCFreshnessTimestampTimePe riodFactor

取值范围

默认取值

参数描述

该参数目前不可用,不可配置

依赖关系

SecOCFreshnessValueLength

取值范围

0 .. 64

默认取值

0

参数描述

定义了Freshness Value的完整长度,单位为bit

依赖关系

SecOCFreshnessValueTxLength

取值范围

0 .. 64

默认取值

0

参数描述

定义了添加在Secured I-PDU后面的Freshness Value的长度,单位为bit

依赖关系

参数描述

定义了用于认证和校验MAC时使用的key在本地的标识符

依赖关系

SecOCRxAcceptanceWindow

取值范围

默认取值

参数描述

该参数目前未使用,不可配置

依赖关系

SecOCSecondaryFreshnessValueId

取值范围

0 .. 65535

默认取值

0xFFFF

参数描述

Secondary Freshness Value的Id

依赖关系

SecOCUseFreshnessTimestamp

取值范围

False

默认取值

False

参数描述

该参数固定为False,不可配置

依赖关系

SecOCVerificationStatusPropa gationMode

取值范围

BOTH FAILURE_ONLY

NONE

默认取值

NONE

参数描述

用于定义在那种校验结果下,通知用户:

BOTH:在校验结果成功和失败时都通知用户

FAILURE_ONLY:只在校验失败时通知用户

NONE:任何结果都不通知用户

依赖关系

SecOCRxAuthServiceConfigRef

取值范围

Csm模块选择

默认取值

参数描述

进行校验时使用的算法

依赖关系

SecOCAuthenticPduBuffLength

取值范围

0 .. 65535

默认取值

0

参数描述

用于存储Authentic PDU的buffer的长度

依赖关系

SecOCSecuredPduBuffLength

取值范围

0 .. 65535

默认取值

0

参数描述

用于存储Secured PDU的buffer的长度

依赖关系

参数描述

CSM或CAL模块中用于提供该PDU校验服务所配置的Id

依赖关系

SecOCSameBufferPduRef

取值范围

引用到配置的samebuffer对象

默认取值

参数描述

如果使用SameBuffer,则指向一个配置的SameBuffer对象

依赖关系

SecOCRxAuthenticPduLayer

image50

图4-47 SecOCRxAuthenticPduLayer

  1. SecOCPduType:选择所走的协议,此例程为If。

  2. SecOCRxAuthenticLayerPduRef:SecOc_RxPduA。

表4-20 SecOCRxAuthenticPduLayer参数说明

UI名称

描述

SecOCPduType

取值范围

SECOC_IFPDU

SECOC_TPPDU

默认取值

SECOC_IFPDU

参数描述

表示PDU的类型是IF PDU还是TP PDU

依赖关系

SecOCRxAuthenticLayerPduRef

取值范围

ECUC中定义的PDU

默认取值

参数描述

SecOCRxAuthentic PduLayer对应的PDU

依赖关系

SecOCRxSecuredPduLayer

SecOCRxSecuredLayerPduRef:SecOc_RxPduS。

image51

图4-48 SecOCRxSecuredPduLayer

表4-21 SecOCRxSecuredPduLayer参数说明

UI名称

描述

SecOCRxSecuredPduLayer

取值范围

ECUC中定义的PDU

默认取值

参数描述

SecOCRxSecuredPduLayer对应的PDU

依赖关系

SecOCTxPduProcessing

image52

图4-49 SecOCTxPduProcessings

如上图,SecOCTxPduProcessings为SecOCTxPduProcessing对象的集合,在该对象的右键菜单中,可添加0 .. n个SecOCTxPduProcessing对象。

image53

图4-50 SecOCTxPduProcessing

  1. SecOCAuthInfoTxLength:描述的是MAC的长度。

  2. SecOCDataId :和发送的ID需要一致,接收和发送是一组,具有唯一性。

  3. SecOCAuthenticationBuildAttempts:新鲜度的尝试次数,也许会出现偶然新鲜度失败,可以通过多次尝试依旧接收报文。

  4. SecOCFreshnessValueId:和发送的ID需要一致,接收和发送是一组,具有唯一性。

  5. SecOCFreshnessValueLength:新鲜度在加密信息里所占用的长度,单位:Bits。

  6. SecOCFreshnessValueTruncLength:和SecOCFreshnessValueLength保持一致即可。

  7. SecOCAuthenticPduBuffLength:大于等于真实信息的长度即可,数组缓存SecOC报文(此例程大于8即可,单位Bytes)。

  8. SecOCSecuredPduBuffLength:大于等于所有信息的长度即可,数组缓存SecOC报文(此例程大于16即可,单位Bytes)。

  9. SecOCTxAuthServiceConfigRef:算法选择,从Csm中选择对应的CsmJob。

表4-22 SecOCTxPduProcessing参数说明

UI名称

描述

SecOCAuthIn foTxLength

取值范围

0 .. 64

默认取值

0

参数描述

定义了添加在Secured I-PDU后面的Authentication code的长度,单位为bit

依赖关系

SecOCAuthenticationRetries

取值范围

0 .. 65535

默认取值

0

参数描述

定义了在生成认证信息失败后再次尝试的次数

依赖关系

SecOCDataId

取值范围

0 .. 65535

默认取值

0

参数描述

Secured I-PDU唯一的标识符

依赖关系

SecOCFreshnessTimestampTimePe riodFactor

取值范围

默认取值

参数描述

该参数目前不可用,不可配置

依赖关系

SecOCFreshnessValueLength

取值范围

0 .. 64

默认取值

0

参数描述

定义了Freshness Value的完整长度,单位为bit

依赖关系

SecOCFreshnessValueTxLength

取值范围

0 .. 64

默认取值

0

参数描述

定义了添加在Secured I- PDU后面的Freshness Value的长度,单位为bit

依赖关系

SecOCKeyId

取值范围

0 .. 65535

默认取值

0

参数描述

定义了用于认证和校验MAC时使用的key在本地的标识符

依赖关系

SecOCUseFreshnessTimestamp

取值范围

False

默认取值

False

参数描述

该参数固定为False,不可配置

依赖关系

SecOCAuthenticPduBuffLength

取值范围

0 .. 65535

默认取值

0

参数描述

用于存储AuthenticPDU的buffer的长度

依赖关系

SecOCSecuredPduBuffLength

取值范围

0 .. 65535

默认取值

0

参数描述

用于存储SecuredPDU的buffer的长度

依赖关系

SecOCCsmCalCfgId

取值范围

0 .. 65535

默认取值

0

参数描述

Csm或CAL模块中用于提供该PDU校验服务所配置的Id

依赖关系

SecOCRxAuthServiceConfigRef

取值范围

SECOC_CALMAC

SECOC_CALSIGNATURE

SECOC_CSMMAC

SECOC_CSMSIGNATURE

默认取值

SE COC_CSMMAC

参数描述

进行校验时使用的算法

依赖关系

SecOCSameBufferPduRef

取值范围

引用到配置的samebuffer对象

默认取值

参数描述

如果使用SameBuffer,则指向一个配置的SameBuffer对象

依赖关系

SecOCTxAuthenticPduLayer

image54

图4-51 SecOCTxAuthenticPduLayer

  1. SecOCPduType:选择所走的协议,此例程为If。

  2. SecOCTxAuthenticLayerPduRef:SecOc_TxPduA。

表4-23 SecOCTxAuthenticPduLayer参数说明

UI名称

描述

SecOCPduType

取值范围

SECOC_IFPDU

SECOC_TPPDU

默认取值

SECOC_IFPDU

参数描述

表示PDU的类型是IF PDU还是TP PDU

依赖关系

SecOCTxAuthenticLayerPduRef

取值范围

ECUC中定义的PDU

默认取值

参数描述

SecOCTxAuthenticPduLayer对应的PDU

依赖关系

SecOCTxSecuredPduLayer

image55

图4-52 SecOCTxSecuredPduLayer

SecOCTxSecuredLayerPduRef:SecOc_TxPduS。

表4-24 SecOCTxSecuredPduLayer参数说明

UI名称

描述

SecOCTxSecur edPduLayer

取值范围

ECUC中定义的PDU

默认取值

参数描述

SecOCTxSecure dPduLayer对应的PDU

依赖关系

代码例程

代码结构

示例集成通讯安全模块代码框架如下:

image56

图5-1代码框架

源代码调度集成

包含了模块初始化和Csm密钥的有效性验证。

image57

图5-2代码初始化

信息的加密和解密是下函数,放置在5ms周期里面,进行周期的处理发送和接收的SecOC报文。

image58

图5-3周期处理函数

测试结果

发送测试

需要在Rte_SecOC.c的函数FreshnessManagement_GetTxFreshness中添加对入参freshnessValue的操作,作为观察周期发送的新鲜度值的依据,以下为一个简单的周期更新计算方法:

文本 描述已自动生成

在CAN监测工具里面观察数据新鲜度的变化是否连续。新鲜度在本例程里占2Bytes,在真实数据的后面。

../../_images/image6612.png

图 5-1发送报文验证

接收测试

向对应的SecOC邮箱发送一条报文,检查是否可以进对应的SecOC_RxIndication。

收到校验通过的报文后,可进入COM配置中PDU接收callout函数。

../../_images/image6711.png

图 5-2配置测试用callout函数

../../_images/image688.png

图 5-3接收报文验证