| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> 基于Autosar的网络安全理解 -> 正文阅读 |
|
[网络协议]基于Autosar的网络安全理解 |
目录 1.车载网络安全说明?? 主要解决的网络安全/信息安全问题包括: 信息的机密性 、新 鲜 性、完 整 性、真 实 性 以 及 可用性是汽车网络通信的最基本的安全需求; 目前网络安全标准为?ISO/SAE 21434(道路车辆-汽车网络安全工程) ? 其中提到的主要安全做法包括 (第8.1.4.2.2.3条) 1)最低特权原则 2) 认证 3) 授权 4) 审核 5) 端到端安全 6)架构信任度(接口的隔离、防御的深度) 7)接口隔离(以便进行适当的网络安全分析) 8)保护服务期间的可维护性(测试接口、OBD) 9)开发过程中的可测试性(测试界面)和运行过程 10)默认的安全(简单、不复杂、不依赖专家用户) 2. 常用的安全加密算法2.1 对称加密所谓的对称加密,指的是,加密秘钥和解密秘钥是一样的。 ?常见的对称加密算法有
?常用的AES加密解密过程如下 1. 将输入数据分组,逐个字节的对分组内 16 个字节输入数据作 SubBytes 处理,即以每个字节值为索引,从一张拥有 256 个值的替换表(S-Box)中查找出替换值; 2. 进行 ShiftRows 处理,即将 SubBytes 的输出以字节为单位有规律的打乱; 3. 进行 MixColumns 处理,将 ShiftRows 的输出按照 4 字节一组分为 4 组,依次对每组的值进行比特运算; 4.进行 AddRoundKey处理,即将 MixColumns 的输出与轮密钥进行 XOR。至此,加密一轮操作结束, 6.解密的每一步都与加密操作互逆且顺序相反,因此算法的正确性得以保证。 7.加解密过程中的轮密钥经过密钥扩展算法得出。 2.2 非对称加密核心特点是,加密秘钥(公钥)和解密秘钥(私钥)是不一致的。如下图RSA加密解密过程 ?常见的非对称加密算法有
RSA加密算法的安全性是基于对极大整数做因数分解的困难。 RSA加密解密过程 c 表示密文? m 表示明文 公钥(n,e) 私钥(n,d) 备注: 公钥基础设施(Public Key Infrastructure,简称 PKI)是针对公钥的使用制定的一系列规范和规格的总称。 PKI 引入可信认证机构(Certification Authority,简称 CA)解决公钥归属问题。一般情况下,密钥对由认证机构或用户生成,公钥相关信息在 CA 注册的同时用户身份也会在 CA 进行认证, CA 使用自身私钥对用户身份及公钥签名,这个签名文件就是证书,之后 CA 会负责证书的更新、吊销等管理工作。 2.3 混合加密所谓混合加密,就是将对称密码和非对称密码相结合 非对称加密则加密效率较低,资源消耗多,但是优点是公钥方便传输,不会泄露; 因此混合加密就是?使用对称密码加密明文,用公钥密码加密会话对称密钥,既提高了加密的效率也保证了对称密钥传输不安全的问题。接收方接受到信息后首先使用私钥解密得到会话密钥,之后用会话密钥解密得出明文。 2.4?单向散列函数单向散列函数可以接受任意长度的输入生成长度很短且固定的散列值,可以用于消息完整性的检测。 如MD5,主要是计算一个信息摘要MD5的值,接收方和发送方分别计算,或MD5' 和MD5'' 比对 MD5' == MD5'' 就可以确认数据的完整性。 2.5?消息认证码Message Authentication Code,简称 MAC,使用对称密钥实现身份认证的基本原理是发送方和接收方共享密钥。 计算 MAC时需要输入一个任意长度的消息以及一个发送者与接收者之间协商好的的密钥,计算得出的结果长度固定,这个计算值就是 MAC。 发送方计算好MAC后,传递给接收方,接收方同样计算MAC,比对两个MAC是否一致,进行消息的认证。 2.6?数字签名使用非对称密钥实现身份认证的基本原理是: 发送方使用自己的私钥对消息进行加密并与原文一起组成发送给接收方; 接收方接收签名后使用发送方公钥对签名进行解密并和原文进行对比,若两者一致表示验证通过。 生成数字签名常用方法是: 对消息的散列值进行签名,利用单向散列函数求出消息散列值再对其进行加密,接收方在接受到签名和原文后,计算出原文的散列值并与签名解密所得结果比对。 一种典型的数字签名过程如下: ? ?3. Autosar的加密模块?3.1 模块说明?Csm模块: > 访问加密服务 CryptoIf模块: Crypto模块: > Crypto (SW) 模块在通过 CSM 提供的软件中提供加密算法和功能的实现。 所有计算都在软件中执行,不需要特殊的硬件来执行密码操作。 > Crypto (HW) 模块充当访问安全算法和功能的驱动程序,这些算法和功能通过硬件信任锚 (HTA) 提供。 可以使用不同的 HTA 类型,例如安全硬件扩展 (SHE) 和硬件安全模块 (HSM)。? ?3.2 关键数据流说明? ? ?对于Csm模块处理的任务,根据用户需求紧急程度,可以配置任务的优先级(优先级越高,任务越先被处理),还可以将任务配置成异步或者同步任务。 ? ? ?在同步任务调度时,如果有另一个同步任务正在处理,则该次同步任务的调度直接失败并返回错误码。 ? ? 从Csm队列通过密码服务接口层到密码服务驱动对象的路径称为通道(channel)。Csm的每个队列都对应于一个通道,以访问到密码服务驱动对象所对应的密码服务底层模块,队列的大小可以通过配置来改变。为了优化密码服务驱动对象的硬件使用,密码服务驱动也可以有一个队列。 ? 异步逻辑调用 ? 4. Autosar的 SecOC4.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 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? |
|
网络协议 最新文章 |
使用Easyswoole 搭建简单的Websoket服务 |
常见的数据通信方式有哪些? |
Openssl 1024bit RSA算法---公私钥获取和处 |
HTTPS协议的密钥交换流程 |
《小白WEB安全入门》03. 漏洞篇 |
HttpRunner4.x 安装与使用 |
2021-07-04 |
手写RPC学习笔记 |
K8S高可用版本部署 |
mySQL计算IP地址范围 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 18:46:03- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |