AutoSAR Crypto_UtilizationOfCryptoServices-AUTOSAR加密服务使用

news2024/11/18 4:16:46

1 Stack Architecture

在这里插入图片描述

The Crypto Service Manager (CSM)
CSM控制一个或者多个Client对一个或者多个同步或异步加密服务。它提供了优先级队列来管理专用CRYPTO不能直接处理的作业
CSM的功能如下:
● HASH计算;
● 消息认证码的生成和校验;
● 数字签名的生成和校验
● 对称和非对称加解密计算
● 随机数生成
● 安全计数器
● 密钥管理操作,例如密钥设置和生成

CSM服务是通用的,CSM允许不同的应用程序使用不同的加密算法来使用相同的服务。可以单独配置和初始化服务。例如,一个应用程序可能需要HASH服务来计算SHA-2,而另一个应用程序可能需要HASH服务来计算SHA-3。

实际的加密例程由CSM封装。Client端不需要关心例程是在软件还是硬件中实现的,也不需要关心哪个CRYPTO模块实际维护所请求的加密例程。CSM为加密堆栈中所有可用的加密特性提供了一个抽象层。

The Crypto Interface (CRYIF)
CRYIF在上层CSM和下层CRYPTO中间。接收来自CSM的请求,并将它们映射到CRYPTO中进行适当的加密操作。CRYIF将CSM发出的请求转发给特定的CRYPTO。如果请求是异步的,回调通知将报告结果。

CRYIF可以操作多个CRYPTO模块。例如,可以有一个用于外部加密硬件模块的CRYPTO模块和一个用于软件加密软件库的CRYPTO模块。CRYIF提供了一个通用接口,因此来自CSM的访问不需要区分实际CRYPTO是如何实现的。

The Crypto Driver (CRYPTO)
CRYPTO实现实际的加密服务,并支持加密服务的密钥存储、密钥配置和密钥管理。它可以有一个或多个Crypto Driver Objects(CDO)加密驱动程序对象,每个CDO有单独的工作空间。每个CDO可以提供任意多个加密原语。加密原语是已配置的加密算法的实例。一个CDO同时只能执行一个加密原语。

多个CRYPTO模块和多个CRYPTO驱动程序对象的概念允许相同加密服务可以有不同和并发实现。可能存在具有不同优化目标的CRYPTO模块的变体。例如,相同的哈希算法可以在两个不同的CRYPTO模块中实现,一个通过更快(更昂贵)的硬件解决方案实现,另一个通过更慢(更便宜)的软件解决方案实现。

下面的示例描述了使用几个CRYPTO模块的可能场景:
两家不同的供应商提供了两种CRYPTO实现。一个CRYPTO是硬件解决方案的抽象(“CRYPTO_HW”),另一个CRYPTO是纯软件解决方案(“CRYPTO_SW”),CRYPTO_SW是一个软件加密库,提供HASH服务和(伪)随机数生成器。
为了使两个服务并行处理,CRYPTO_SW有两个加密驱动程序对象,一个用于哈希服务(“CDO_HASH”),另一个用于随机数生成器(“CDO_RNG”)。如果一些加密例程不能并行运行,那么它们应该放在同一个加密驱动程序对象中。

2 Job Concept

请求CSM进行加密操作的例程表示为Job,Job包含加密例程和引用密钥操作,但是不包含实际的密钥,密钥管理处理不是以Job方式处理

Synchronous and Asynchronous Mode
Synchronous mode: CSM服务Job在调用方的上下文中立即执行,函数返回结果直接可用
Asynchronous mode: 异步作业稍后由专用CRYPTO在预先安排的主函数上下文中或硬件中处理。如果特定的CRYPTO驱动程序对象因为繁忙而拒绝该作业,CSM将服务请求放在相应的CSM作业队列中。CRYPTO使用CRYIF的回调函数通知CRYIF异步作业的完成。CRYIF通过CSM的回调函数转发结果。

Queuing and Priorities
CSM Job可能有多个队列,每个队列映射到一个单独的加密驱动对象Crypto Driver Object(CDO),从而可以访问CDO的加密原语crypto primitives,CRYPTO因为繁忙拒绝了CSM的服务请求后,特定的Job会根据其优先级放入相应的CSM队列中, 在Csm_MainFunction()循环调用期间,排队的Job被传递给CRYIF。CRYIF将把Job转发给特定的CRYPTO。 为了优化CDO的硬件使用CDO也可以有选择的有Job Queuing。
每个Job的优先级根据其配置决定其优先级,优先级值越高,优先级越高,Job将根据其优先级执行。

Streaming Approach vs Single Call Approach.(流方法和单调用方法)
加密服务的处理包含“START”、“UPDATE”和“FINISH”操作:
● “START”(CRYPTO_OPERATIONMODE_START)表示Job的新开始,并初始化加密计算;
● 输入数据可以使用“UPDATE”模式(CRYPTO_OPERATIONMODE_UPDATE),并计算中间结果;
● “FINISH”(CRYPTO_OPERATIONMODE_FINISH)表示将执行最后的计算。

[ SWS_Csm_00024] Job State
在这里插入图片描述
加密服务可以使用流或单个调用方法
流方法对给定的数据分别执行单个操作,例如,使用流方法可以通过多次调用具有“UPDATE”操作模式的服务函数来处理非常庞大的输入数据。

3 Key Handling

密钥处理包括加密密钥的生成、更新、导入/导出、交换和派生。加密密钥可以存储在加密硬件中或使用NvM。

加密密钥是根据特定密钥类型创建的。CRYPTO供应商实现预先配置适应所提供的加密原语使用的密钥类型。密钥类型由一个或多个对密钥元素的引用组成。例如,密钥元素可以是AES加密所需的密钥材料,也可以是随机数生成的种子。

在密钥配置期间,必须指定对适当密钥类型的引用。特定的CRYPTO为密钥类型中包含的密钥元素提供数据存储,其中实际的密钥数据实际保存在其中。HW CRYPTO实现通常会使用密钥槽。而SW CRYPTO将使用NvM来管理密钥存储。

4 Configuration Philosophy

Registration of Crypto Functionality
多样的CRYPTO模块的概念使可用的加密特性具有灵活性。为使CRYIF和CSM知道CRYPTO实现中的实际加密特性,需要一种注册机制。否则,就不可能在CSM中配置和使用实际的加密特性。

此方案可以通过供应商预配置来解决,该配置表示每个CRYPTO模块的功能。预配置从下到上加载,即从CRYPTO over CRYIF到CSM。CRYIF挂载每个已注册的CRYPTO模块,并将特定的加密特性集成到提供给CSM的通用接口中。CSM接收已注册CRYPTO的可用加密特性,并给出特定的加密特性供用户配置。

Project Configuration
加密堆栈的配置通常使用自顶向下的方法进行,从CRYIF上的CSM开始到CRYPTO:
(i) 在CSM中,用户选择和配置由CRYIF和CRYPTO提供的要使用的密码原语和密钥。用户进一步定义作业和作业队列。
(ii) 在CRYIF中,用户主要定义了将CSM请求的特性映射到已注册的CRYPTO模块所提供的特性。
(iii) 在CRYPTO中,用户调整和扩展加密原语和密钥的预配置。

示例
下面使用“消息验证码”(MAC)服务概述了加密堆栈的使用。
用户创建一个作业,引用所请求的MAC加密原语和要使用的加密密钥。然后进一步配置作业是同步处理(CRYPTO_PROCESSING_SYNC)还是异步处理(CRYPTO_PROCESSING_ASYNC)。如果作业是异步的,他还定义了处理该作业的队列。

MAC需要一个密钥,至少引用密钥元素“key Material”(CRYPTO_KE_MAC_KEY)。

5 APIs involved

应用程序(即SWC的可运行程序)通过RTE端口与加密堆栈(即CSM)通信。对于每个配置的作业,RTE生成一个带有客户端/服务器接口的名为{job}MacGenerate的端口CsmMacGenerate{Primitive}().该端口有一个端口定义的参数值Crypto_OperationModeType和值CRYPTO_OPERATIONMODE_SINGLECALL。因此,SWC可以通过调用CsmMacGenerate_{Primitive}来调用MAC服务,并在对CSM的一次调用中提供执行MAC请求所需的所有数据。BSW模块或CDD通过直接调用C-API Csm_MacGenerate()来使用MAC服务。在这里,要处理的作业必须作为输入参数传递。

根据应用作业的配置,作业的处理是异步的还是同步的。在本例中,我们假设作业必须在调用者的上下文中同步处理。CSM通过调用CryIf_ProcessJob()将请求的MAC服务分派给CRYIF,并将作业作为输入参数传递。CRYIF通过调用Crypto_ProcessJob()将作业的处理传递给CRYPTO, cryp_processjob()最终执行作业参数中配置的加密原语。注意,如果有不同的CRYPTO实现,函数命名将使用vendorId (vi)和vendorApiInfix (ai)进行区分。因此,调用将是Crypto___ProcessJob()。最后,CRYPTO将MAC存储在CSM作业中配置的内存空间中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/160157.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Centos6源码安装Haproxy进行四层代理

一.背景 公司使用专线与第三方公司进行系统交互,给定了我们业务IP的使用范围,防火墙策略只开放业务IP范围之内的IP地址才能访问,如果源IP不在业务IP范围之内,那么通过互联IP过去是访问不了的。我们的做法是为了不影响现有业务&…

完整复现YOLOv8:包括训练、测试、评估、预测阶段【本文源码已开源,地址在文章末尾】

训练过程展示: 目录 1、复现过程1.1、配置开发环境1.2、demo预测实现过程2 、项目实现方法与代码(包括训练、测试、评估、预测阶段)2.1、训练、测试、评估、预测代码适配2.2、同时开始训练、测试、评估、预测2.3、训练完之后进行预测2.4、训练、评估、混淆矩阵、召回曲线等…

Linux 基础常用命令 整理

Shell Shell 这个单词的原意是“外壳”,跟 kernel(内核)相对应,比喻内核外面的一层,即用户跟内核交互的对话界面。 Shell 是一个程序,提供一个与用户对话的环境。这个环境只有一个命令提示符,让…

解读小红书:零食行业用户洞察报告

随着消费持续升级、零食正作为休闲生活的一部分开始走近更多用户。以日趋多元化的消费需求为导向,零食行业用户又透露出哪些消费特征呢? 本期为大家解读小红书官方发布的《「灵感补给站」小红书2023年零食行业用户洞察报告》,基于上千名用户定…

从状态机的角度async和await的实现原理

一. 深度剖析准备:先给VS安装一个插件ILSpy,这样更容易反编译代码进行查看,另外要注意反编译async和await的时候,要把C#代码版本改为4.0哦。1.什么是状态机(1).含义:通常我们所说的状态机(State Machine)指的是有限状态自动机的简称,是现实事…

6.5、文件传送协议FTP

将某台计算机中的文件通过网络传送到可能相距很远的另一台计算机中,是一项基本的网络应用,即文件传送。 文件传送协议FTP\color{red}文件传送协议\texttt{FTP}文件传送协议FTP (File Transfer Protocol)是因特网上使用得最广泛的文件传送协议。 FTP 提供…

记录--Vue开发历程---音乐播放器

这里给大家分享我在网上总结出来的一些知识&#xff0c;希望对大家有所帮助 一、audio标签的使用 1、Audio 对象属性 2、对象方法 二、效果 效果如下&#xff1a; 三、代码 代码如下&#xff1a; MusicPlayer.vue <template><div class"music"><!-- 占…

【QFD】质量保证需求

QFD体系把前端商业策略成果和产品有效开发紧密连接起来工具。QFD是强调需求与功能的对应&#xff0c;验证确定的市场需求与产品功能设计的关联性&#xff0c;与功能之间&#xff0c;与需求之间的矛盾性&#xff0c;也叫质量屋。 1.什么是QFD 什么是QFD质量功能展开&#xff0…

代码随想录第59天|503.下一个更大元素II ● 42. 接雨水

503.下一个更大元素2 和下一个更大元素基本相同&#xff0c;就多了一个循环数组的问题 处理方法&#xff1a; 循环的次数*2 利用i%nums.size()得到处理的下标&#xff0c;这样当遍历到nums的最后一个元素的时候&#xff0c;向单调栈中插入其下标nums.size()-1,之后将其与下标n…

C语言进阶(7)——联合体和枚举

文章目录1 枚举1.1 含义1.2 定义1.3 枚举的优点1.4 枚举的使用2 联合体&#xff08;共用体&#xff09;2.1 联合类型的定义2.2 联合体的特点2.3联合体大小的计算1 枚举 1.1 含义 枚举就是一一列举。 1.2 定义 枚举是定义常量&#xff0c;默认值 0&#xff0c;然后数自增。 …

go:快速升级Go版本,我几分钟就解决了

底层依赖升级了&#xff0c;那我们也要跟着升&#xff0c;go版本需要升级到1.18以上&#xff0c;网上对比了一些教程&#xff0c;发现这个方法最便捷快速 目录当前Go版本下载高版本Go登录 [Go官网](https://go.dev/dl/)下载对应版本部署升级Go版本备份旧版本部署新版本当前Go版…

从0到1完成一个Node后端(express)项目(一、初始化项目、安装nodemon)

初识express 因为上个专栏的vue项目&#xff0c;后端是用node写的&#xff0c;所以这里教大家怎么去写 Express 简介&#xff1a; Express 是基于 Node.js 平台&#xff0c;快速、开放、极简的 Web 开发框架通俗的理解: Express 的作用和 Node.is内置的 http 模块类似&#xff…

MongoDB副本详解

概念 MongoDB副本集是一组维护相同数据集的mongod服务&#xff0c;可以提供冗余和高可用&#xff0c;是所有生产部署的基础&#xff1b; mysql主从复制和mongodb副本集的区别 主从复制的主从是固定的&#xff0c;副本集是不固定的&#xff0c;可以自动切换 副本集角色 主节点&a…

prototext format 随机空格

prototext format 随机空格问题简述代码复现解密结论总结问题简述 golang 语言&#xff0c;在使用 prototext 进行 format 的时候&#xff0c;相同的代码输出结果不唯一&#xff0c;有的时候字段之间是两个空格&#xff0c;有的时候是一个空格。 代码 先上pb文件 syntax &…

【寒假每日一题】洛谷 P6414 [COCI2014-2015#1] PROSJEK

题目链接&#xff1a;P6414 [COCI2014-2015#1] PROSJEK - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题目描述 有一个数列 a&#xff0c;现在按照下列公式求出一个数列 b&#xff1a; 给你数列 b&#xff0c;请求出数列 a。 输入格式 第一行一个整数 n &#xff0c;表示…

bugku-reverse-入门逆向 Easy_vb re 游戏过关 逆向入门

入门逆向下载文件 解压后 拖入IDA中Easy_vb同样方法 解压后 拖入IDAEasy_re下载解压后 打开似乎有点逗查下壳先拖入IDA 选中这两行字符 转译单击a 得到flag游戏过关下载文件 解压打开 发现要把8个都点亮 每次输入会把输入的数本身和他上一个下一个都改变状态&#xff0c;当…

Jenkin权限控制——基于角色授权策略

开启授权策略 Jenkins的项目权限控制通过【授权策略】实现&#xff0c;【授权策略】需要plugins提供&#xff0c;首先需要安装Role-based Authorization Strategy 安装Role-based Authorization Strategy 管理Jenkins——》插件管理——》搜素——》Role-based Authorizatio…

企微机器人使用及内容配置文档

如何使用群机器人 在终端某个群组添加机器人之后&#xff0c;创建者可以在机器人详情页看的该机器人特有的webhookurl。开发者可以按以下说明a向这个地址发起HTTP POST 请求&#xff0c;即可实现给该群组发送消息。下面举个简单的例子. 假设webhook是&#xff1a;https://qyapi…

【Git 从入门到精通】Git中常用的指令(含使用Git维护一个项目的完整操作)

文章目录一、使用git维护一个项目完整操作1.设置用户名与邮箱2.初始化项目中的Git3.使用Git追踪项目中的文件4.提交一次代码5.后期项目的更新与维护附录、常用命令一览表一、使用git维护一个项目完整操作 1.设置用户名与邮箱 注意:这个设置的并不是将代码提交到github或者gite…

CAD动态块操作实例:绘制剖面符号

CAD动态块与普通的CAD图块相比&#xff0c;其图形夹点更多&#xff0c;设计师可以利用动态块的夹点对图形进行快速调整&#xff0c;自由拉伸长度、随心切换隐藏形态等。本节&#xff0c;给大家分享一下浩辰CAD软件中利用CAD动态块的极轴拉伸功能来绘制剖面符号的具体操作步骤。…