基于Autosar的网络安全理解

文章来源:汽车电子与软件 发布时间:2021-07-27
分享到
车载网络安全主要解决的网络安全/信息安全问题包括:信息的机密性、新鲜性、完整性、真实性以及可用性是汽车网络通信的最基本的安全需求。

一 车载网络安全说明 


主要解决的网络安全/信息安全问题包括:信息的机密性、新鲜性、完整性、真实性以及可用性是汽车网络通信的最基本的安全需求。


目前网络安全标准为 ISO/SAE 21434(道路车辆-汽车网络安全工程)


图片


其中提到的主要安全做法包括:


1)最低特权原则

2) 认证

3) 授权

4) 审核

5) 端到端安全

6)架构信任度(接口的隔离、防御的深度)

7)接口隔离(以便进行适当的网络安全分析)

8)保护服务期间的可维护性(测试接口、OBD)

9)开发过程中的可测试性(测试界面)和运行过程

10)默认的安全(简单、不复杂、不依赖专家用户)


二 常用的安全加密算法


2.1 对称加密


所谓的对称加密,指的是,加密秘钥和解密秘钥是一样的。


图片


常见的对称加密算法有:


图片

 

常用的AES加密解密过程如下:


图片


1. 将输入数据分组,逐个字节的对分组内 16 个字节输入数据作 SubBytes 处理,即以每个字节值为索引,从一张拥有 256 个值的替换表(S-Box)中查找出替换值;


2. 进行 ShiftRows 处理,即将 SubBytes 的输出以字节为单位有规律的打乱;


3. 进行 MixColumns 处理,将 ShiftRows 的输出按照 4 字节一组分为 4 组,依次对每组的值进行比特运算;


4.进行 AddRoundKey处理,即将 MixColumns 的输出与轮密钥进行 XOR。至此,加密一轮操作结束,


5. 以上过程重复 10~14 次可得最终密文,需要注意的是最后一轮并不进行MixColumns 处理。


6.解密的每一步都与加密操作互逆且顺序相反,因此算法的正确性得以保证。


7.加解密过程中的轮密钥经过密钥扩展算法得出。


2.2 非对称加密


核心特点是,加密秘钥(公钥)和解密秘钥(私钥)是不一致的。如下图RSA加密解密过程:


图片

 

常见的非对称加密算法有:


图片


RSA加密算法的安全性是基于对极大整数做因数分解的困难。


RSA加密解密过程:


c 表示密文, m 表示明文

公钥(n,e) 私钥(n,d)

加密:c = m^e mod n

解密:m = c^d mod n


备注:


公钥基础设施(Public Key Infrastructure,简称 PKI)是针对公钥的使用制定的一系列规范和规格的总称。PKI 引入可信认证机构(Certification Authority,简称 CA)解决公钥归属问题。一般情况下,密钥对由认证机构或用户生成,公钥相关信息在 CA 注册的同时用户身份也会在 CA 进行认证, CA 使用自身私钥对用户身份及公钥签名,这个签名文件就是证书,之后 CA 会负责证书的更新、吊销等管理工作。


2.3 混合加密


所谓混合加密,就是将对称密码和非对称密码相结合。


对称加密主要的优点是 加密效率高资源消耗较少,但是缺点是秘钥传输不安全,容易泄露;


非对称加密则加密效率较低,资源消耗多,但是优点是公钥方便传输,不会泄露;


因此混合加密就是 使用对称密码加密明文,用公钥密码加密会话对称密钥,既提高了加密的效率也保证了对称密钥传输不安全的问题。接收方接受到信息后首先使用私钥解密得到会话密钥,之后用会话密钥解密得出明文。


2.4 单向散列函数


单向散列函数可以接受任意长度的输入生成长度很短且固定的散列值,可以用于消息完整性的检测。


典型的散列函数包括:MD5、 SHA-1、 SHA-256、 SHA-384;


如MD5,主要是计算一个信息摘要MD5的值,接收方和发送方分别计算,或MD5' 和MD5'';


比对 MD5' == MD5'' 就可以确认数据的完整性。


2.5 消息认证码


Message Authentication Code,简称 MAC,使用对称密钥实现身份认证的基本原理是发送方和接收方共享密钥。


计算 MAC时需要输入一个任意长度的消息以及一个发送者与接收者之间协商好的的密钥,计算得出的结果长度固定,这个计算值就是 MAC。


发送方计算好MAC后,传递给接收方,接收方同样计算MAC,比对两个MAC是否一致,进行消息的认证。


2.6 数字签名


使用非对称密钥实现身份认证的基本原理是:


发送方使用自己的私钥对消息进行加密并与原文一起组成发送给接收方;


接收方接收签名后使用发送方公钥对签名进行解密并和原文进行对比,若两者一致表示验证通过。


生成数字签名常用方法是:


对消息的散列值进行签名,利用单向散列函数求出消息散列值再对其进行加密,接收方在接受到签名和原文后,计算出原文的散列值并与签名解密所得结果比对。


一种典型的数字签名过程如下:


图片


三 Autosar的加密模块


3.1 模块说明


图片


 Csm模块:


> 访问加密服务

> 用于执行服务的加密服务和算法的配置

> 同步或异步执行的配置

> 安全计数器的配置

> 配置加密密钥操作

> 证书操作配置


CryptoIf模块:


> CryptoIf 模块为不同的加密解决方案提供了统一的接口,例如:软件加密-硬件加密等


Crypto模块:


> Crypto (SW) 模块在通过 CSM 提供的软件中提供加密算法和功能的实现。所有计算都在软件中执行,不需要特殊的硬件来执行密码操作。


> Crypto (HW) 模块充当访问安全算法和功能的驱动程序,这些算法和功能通过硬件信任锚 (HTA) 提供。可以使用不同的 HTA 类型,例如安全硬件扩展 (SHE) 和硬件安全模块 (HSM)。 


3.2 关键数据流说明


对于Csm模块处理的任务,根据用户需求紧急程度,可以配置任务的优先级(优先级越高,任务越先被处理),还可以将任务配置成异步或者同步任务。


当任务需求紧急程度高时,用户将任务配置成同步任务,这样当该任务调度的时候如果有异步任务正在处理,该同步任务会抢占异步任务的硬件资源;异步任务直接返回错误状态码并等待下一步的调用,当同步任务处理结束之后 才会进行下一次的任务调度;


在同步任务调度时,如果有另一个同步任务正在处理,则该次同步任务的调度直接失败并返回错误码。


对于异步任务来说,会有一个优先级队列来存放当前待处理的任务,当任务调度函数将任务分配到某个硬件单元或者使用软件实现时,系统会将任务插入到对应的优先级队列中等待调度。


从Csm队列通过密码服务接口层到密码服务驱动对象的路径称为通道(channel)。Csm的每个队列都对应于一个通道,以访问到密码服务驱动对象所对应的密码服务底层模块,队列的大小可以通过配置来改变。为了优化密码服务驱动对象的硬件使用,密码服务驱动也可以有一个队列。


同步逻辑调用


图片



异步逻辑调用


图片


四 Autosar的 SecOC


4.1 SecOC说明


SecOC 模块,也称为 Authenticated Messaging,用于验证两个 ECU 之间的通信。此验证可防止第三方进行干预或伪装成正确的通信伙伴,防止操纵性干预。SecOC 与 PDUR交互。这种交互可以由应用程序控制。该模块提供以下功能:


> 传输经过身份验证和完整性保护的 I-PDU。

> 使用消息身份验证代码 (MAC) 进行身份验证, 消息认证代码的实际生成和验证由 Csm执行。

> 防止重放攻击。这里使用了一个计数器,即“新鲜度值”。


4.2 典型的SecOC通信架构


图片


其中的SecOC主要和Csm模块以及PDUR模块交互;


其中Csm模块为SecOC提供密码服务;


与PDUR交互,主要进行MAC以及新鲜值处理。


 4.3 SecOC通信过程


发送方:


   >插入新鲜值 cnt 或 timestamp  得到PDU+CNT

   >将PDU+CNT 经过秘钥K 加密产生MAC=En(PDU+CNT,K);

   >将MAC插入到消息 得到 PDU+CNT+MAC 

   >将完整的消息发送到总线 


接收方:


   > 接收消息后,获得PDU+CNT+MAC

   > 解析得到CNT,若CNT与本地的CNT一致(或大于)则继续认证,否则丢失

   > 通过加密秘钥K,得到MAC值,验证PDU中的MAC与计算MAC是否一致,一致则认证通过;

   > 认证通过后,继续将PDU传给使用方(如com),否则直接丢失。


图片


如下图所示,为基于CAN的PDU


图片    

  图片


收藏
赞一下
0