AP AUTOSAR——Security Management

2023-05-16

11 Security Management

11.1 What is Security Management?

安全管理是自适应平台体系结构中的一个功能集群。

作为一个功能集群,安全管理由多个模块组成,这些模块向在Adaptive Platform上共同支持安全应用程序的应用程序提供C++/面向服务的API。

密码栈是安全管理功能集群中的一个模块,它提供C++ API,以支持通过一个AutoSar标准化接口对加密和解密的多个加密算法的构造和使用。密码堆栈C++ API在命名空间ara::crypto中实现。

因此,作为RTA-VRTE库的一部分提供的功能群集代码必须链接到使用加密堆栈的任何应用程序中。

注意:总的来说,RTA-VRTE本版本中的API与AUTOSAR AP18-03规范一致,存在一些偏差,以解决规范中的不一致和/或歧义。

11.2 Encryption/Decryption

加密堆栈支持密钥生成、密钥管理以及基于生成或导入密钥的后续加密和解密。

11.2.1 Key Management

键接口由抽象基类键定义。RTA-VRTE加密堆栈定义了实现由Key定义的接口的子类KeyStruct。

构造函数定义密钥的属性,例如,密钥是用于加密还是用于解密。

KeyStruct key( keyID, // Identifier
               KeyUsage::Decrypt, // Usage
               KeyProtection::Unprotected, // Protection
               keySize, // Size
               KeyType::Symmetric, // Type
               key_seedval ); // Randomization seed

密钥管理接口由单独的抽象基类KeyManagement定义。

RTA-VRTE加密堆栈接口定义了实现基类定义的接口的子类KeyManagementStruct。接口方法包括生成关键数据的Generate。

KeyManagementStruct key_mgmt;

key_mgmt.Generate(key, NULL);

11.2.2 Cipher

生成密钥后,它可以与密码方法一起使用,根据密钥使用情况进行加密或解密。RTA-VRTE提供流式和基于进程的机制。

流接口提供开始-更新-完成方法,使大量数据能够以任意大小的块进行处理。在调用Start和Finish方法之间,可以根据需要多次调用Update方法来加密/解密可用的新数据。

注意:调用Start方法将根据密钥使用情况初始化管理流接口对象的对象,以进行加密或解密。对于RTA-VRTE,可以但不建议使用单个流接口对象混合加密和解密,但不建议这样做,因为不能保证其可移植性。因此,如果使用单个对象,建议进行顺序处理。

一旦一个密码对象被实例化,就必须使用Start方法对其进行初始化以进行加密或解密;这将传递要使用的密钥和可用于进一步随机加密结果的初始值设定项。

初始化之后,可以调用Update方法来处理数据块,数据块的参数作为对第一个字符的引用传递。

处理完所有数据后,必须调用Finish方法来完成加密并刷新内部缓冲区-这一点很重要,因为加密使用的算法的结果取决于以前的纯文本输入块,因此可能存在要加密的训练数据。

unsigned char encrypted[128];

CipherStruct cipher;

cipher.Start( key, "initializaer" );

cipher.Update( key, *plaintext, 128, *encrypted );

cipher.Finish( key, *encrypted );

RTA-VRTE的此版本使用全局上下文进行加密/解密,因此流接口不可重入。

基于Cipher process的接口提供了一个方法process,该方法允许在一个方法调用中对数据进行加密或解密。

unsigned char* plaintext = "Data to encrypt";

unsigned char encrypted[128];

CipherStruct cipher;

cipher.Process( plaintext, *encrypted, 128, key, "initializaer" );

11.2.3 Symmetric Keys

类密钥和子类KeyStruct都提供了复制构造函数,可用于复制密钥,从而使用(非AUTOSAR)SetUsage API将一个密钥设置为加密,另一个密钥设置为解密。然后,可以将这两个密钥分别分发给发送方和接收方,以启用消息加密和后续解密。

11.2.4 Import Keys

可以首先使用LoadKeystrageProvider函数将密钥加载到加密堆栈中,以获得对密钥存储提供程序的访问权,然后使用ImportPublicObject和LoadKey方法分别导入密钥并从密钥槽中检索密钥。

// Gain access to the key storage mechanism

KeyStorageProvider::Sptr ksp = LoadKeyStorageProvider();

// Import the public key (stored within ’pubKey’) into CryptoProvider

// slotUid - Identifier for slot (so we can find it)

// publicKey - Array containing public key

ReadOnlyMemRegion publicKey(pubKey.begin(),pubKey.end());

cp->ImportPublicObject(slotUid, publicKey,

CryptoObjectType::kPublicKey);

// Find the key storage slot and load the previously imported key from that slot

auto slotNum = ksp->FindSlot(slotUid, crypProviderId);

cp->LoadKey(slotNum);

11.3 Hashing

加密堆栈支持使用哈希生成进行身份验证-单向哈希函数用于从输入数据生成哈希,并与消息本身进行安全通信(使用加密)。由此生成的散列数据或摘要形成可与消息数据本身一起发送的消息数据的签名,并提供认证机制,确保只有经过认证的发送者才能生成该消息。

使用发送者和接收者之间共享的私人信息——“密钥”,散列提供的身份验证可以与加密相结合,以形成一个安全的通信通道,防止传输过程中发生篡改或损坏。

安全通信过程如图11.1所示。

在这里消息的发送者首先使用共享的私有信息和散列函数生成签名。

然后在将加密数据(包括散列)传输到接收器之前,将纯文本消息和生成的散列摘要串联并加密。在接收时,加密的消息数据被解密,接收方使用纯文本、共享的私有信息和与发送方相同的散列算法重新生成散列。

然后,接收方可以比较生成的和接收的哈希值-如果它们匹配,则接收方可以确保消息在传输过程中未被篡改(否则加密数据将被破坏),并且消息来自真实来源(否则两个哈希值将不匹配)。

与加密/解密一样,支持流式和基于进程的哈希生成。

streaming API包含与启用相同的Start-Update-Finish方法,将大量数据散列在任意大小的块中。

#include <ara/crypt/hash.hpp>

HashStruct hash;

std::string data = "Data to hash";

std::string digest;

hash.Start();

hash.Update( data );

hash.Finish( digest );

生成的摘要是单向散列函数的结果,可在加密前附加到消息以启用篡改保护。

基于流程的API生成与流式API相同的摘要,但在单个步骤中生成哈希摘要:

#include <ara/crypt/hash.hpp>

HashStruct hash;

std::string data = "Data to hash";

std::string digest;

hash.Process( data, digest );

11.4 AUTOSAR API

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AP AUTOSAR——Security Management 的相关文章

  • X509 C# 指南/教程

    谁能给我提供有关 X509 证书的良好介绍材料以及 C 示例 你可以从这里开始 X509证书 MSDN 资源 http msdn microsoft com en us library system security cryptograph
  • Struts 2 S2-016 漏洞缓解直至升级

    最近 Struts 修复了一个允许攻击者执行远程代码的漏洞 显然 不修补这个问题就像用潮流欢迎黑帽子一样 http struts apache org release 2 3 x docs s2 016 html http struts a
  • 安全沙箱违规

    运行我的 Flash 应用程序时出现以下错误 违反安全沙箱 与 rtmp system ip live 的连接已停止 不允许从 file F Flash 工作 RTS RT vlab BIOTECH NEO 简单神经元的被动属性 vi 特征
  • 为什么 XSS 注入需要对 & 进行转义

    OWASP 建议转义以防止 XSS 注入的五个字符是 lt gt 其中 我无法理解为什么 符号 应该被转义以及如何将其用作注入脚本的向量 有人可以举个例子 所有其他四个字符都被转义 但与号没有转义 所以会有 XSS 注入漏洞 我已经检查了另
  • 在VS2008中,对于网站的FTP发布,有没有办法保存FTP登录密码?

    我喜欢 Visual Studio 2008 IDE 集成 非命令行 功能 可以选择通过 FTP 将 ASP NET 网站发布到我的网络服务器 我可以存储我的 FTP 用户名 但没有看到任何存储我的 FTP 密码的选项 因此我每次发布时都必
  • 保护登录和评论表单免受 CSRF 攻击

    我读过很多关于CSRF保护的文章 这个不错 http seclab stanford edu websec csrf csrf pdf 以及关于SO的各种问题 但它们似乎都没有足够的信息来回答我的问题 我正在开发自己的 CMS 我想保护我的
  • “设备重置为出厂设置”是否会使数据无法恢复? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 关于德克萨斯大学的结论 信息安全报告 https wikis utexas edu display ISO Google Android Harden
  • Linux 缓冲区溢出环境变量

    我一直在审查不同类型的缓冲区溢出 并遇到了一个我不记得为什么会发生的问题 下面的代码是我尝试执行缓冲区溢出的程序 include
  • asp.net 保护图像免受其他用户的静态请求?

    我在一个为每个特定用户生成动态图像的网站上工作 有时这些图像包含非常敏感数据的描述 最近 我们开始看到对属于不同用户的图像的请求 其形式为 http myapp images someuid image1 jpg http myapp im
  • PHP - Paypal API 表单和安全性 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我在我的电子商务应用程序上使用标准 php paypal 表单进行付款 我注意到只有 firebug 的人可以在通过 立即付款 按钮发
  • http-equiv Content-Security-Policy 在浏览器中有效,但在 Android 设备上无效 - IONIC

    我正在开发一个带有 ionic 的应用程序 刚刚插入了这个 Content Security Policy 元标记 我在浏览器
  • 如何在 Jboss 7.1 中配置简单身份验证

    我正在从事由以下人员编写的项目纯jsps 脚本 不使用任何框架 jboss版本 jboss as 7 1 0 Final 我现在正在尝试在其上添加简单的身份验证 因此 当用户尝试浏览 jsp 时 比如说 http localhost myC
  • 信任所有将文件发送到 https Web 服务的 java 类

    我需要编写自己的类来告诉 mule 与服务 wsdl 的 https 连接已验证 我的 mule 项目已经接近完成 但最后一块丢失了 在特定的 url 发送文件 我想要实现的目标 建立连接并将 xml 发送到目标 url 读取 xml 格式
  • 加密成本高,解密成本低

    我希望该用户 攻击者加密数据并发送给服务器 现在我想要一种与标准算法完全相反的算法 使用快 难以解密 即很难使用服务器发送的密钥来加密密码等数据 以防止随机攻击 但很容易解密这样服务器在验证用户时消耗的时间非常少 但是对于攻击者来说 每次使
  • 小程序打印;小程序放弃安全权限; Windows 7 和 Java 7

    使用 Java Liveconnect 能够通过浏览器中的小程序访问打印机 对于我添加的访问权限permission java lang RuntimePermission queuePrintJob in C Program Files
  • Rfc2898DeriveBytes 与密码的 Sha2 哈希生成

    我最近知道使用 SHA256 为加盐密码生成密码哈希 在阅读了一些有关加盐密码和安全性的内容后 我看到rfc2898derivebytes and passwordderivebytes NET 中的类 使用有什么好处吗rfc2898der
  • php字符串是值类型吗?

    为什么php的string是值类型 每次将参数传递给函数时 每次进行赋值时 每次连接都会导致字符串被复制时 它都会被复制到各处 我的 NET 经验告诉我 它似乎效率低下 迫使我几乎在任何地方都使用引用 考虑以下替代方案 替代方案1 This
  • 用于保护网站安全(使用 SSL)时,数字证书如何工作?

    请帮助我了解整个过程是如何进行的 据我了解 Web 浏览器包含 verisign Entrust Comodo 等证书颁发机构 CA 的根证书 但是当用户访问安全页面时到底会发生什么 Web 浏览器是否向 CA 服务器发送请求来验证证书 还
  • 无法使用前导 ../ 在顶级目录之上退出

    我有一个 asp net 网站 我们有管理区域 其中的登录页面仅供管理员使用 并且所有网站都允许所有人使用 当我收到此错误时 我需要询问如何为其定义正确的安全配置 Cannot use a leading to exit above the
  • Amazon Web Services:设置 S3 策略以允许 putObject 和 getObject 但拒绝 listBucket

    我在 Amazon S3 上使用 getObject 和 putObject 请求 并在创建访问存储桶的策略时发现 如果我不允许 listBucket 则会收到 访问被拒绝 错误 这样做的问题是 listBucket 意味着用户可以列出存储

随机推荐

  • constexper+const+常量表达式

    常量表达式 xff08 const expression xff09 是指值不会改变并且在编译过程就能得到计算结果的表达式 显然 xff0c 字面值属于常量表达式 xff0c 用常量表达式初始化的 const 对象也是常量表达式 一个对象
  • 这篇 CPU Cache,估计也没人看

    无论你写什么样的代码都会交给 CPU 来执行 xff0c 所以 xff0c 如果你想写出性能比较高的代码 xff0c 这篇文章中提到的技术还是值得认真学习的 另外 xff0c 千万别觉得这些东西没用 xff0c 这些东西非常有用 xff0c
  • 每天一个 Linux 命令

    https blog csdn net k346k346 category 9267835 html uptime 命令 1 命令简介 uptime 用于显示系统总共运行了多长时间和系统的平均负载 无选项 uptime 命令会显示一行信息
  • Docker 安装Jenkins并配置Maven

    系统环境 系统版本 xff1a Centos7 9 docker安装参考此链接 xff1a https blog csdn net clover661 article details 122226083 下载docker时候如果报错参考 x
  • 一文详解自动驾驶的运行设计域(ODD)| 自动驾驶系列

    一文详解自动驾驶的运行设计域 xff08 ODD xff09 n 自动驾驶系列 2021年4月30日 xff0c SAE发布了第四版J3016 驾驶自动化分级 xff0c 这是即2014年1月16日 2016年9月30日 2018年6月15
  • QNX BSP分析

    QNX相关历史文章 xff1a QNX简介QNX Neutrino微内核QNX IPC机制QNX进程管理器QNX资源管理器QNX字符I OQNX之编写资源管理器 xff08 一 xff09 QNX之编写资源管理器 xff08 二 xff09
  • SOA面向服务的分布式架构详解

    导语 xff1a SOA作为一种面向服务的架构 xff0c 是一种软件架构设计的模型和方法论 从业务角度来看 xff0c 一切以最大化 服务 的价值为 出发点 xff0c SOA利用企业现有的各种软件体系 xff0c 重新整合并构建起一套新
  • 自动驾驶软件架构之:中间件与SOA(一)

    本文是将中间件作为一个专题 xff0c 专门展开进行详细的分析和讨论 中间件相关技术在计算机分布式系统中发展了很多年 xff0c 尤其在互联网服务 大型商业系统中得到广泛使用 随着智能网联汽车的发展 xff0c 现代汽车也逐步增加了以太网支
  • 嵌入式系统BSP基础知识

    嵌入式系统BSP基础知识 板级支持包 BSP 是定义如何支持特定硬件设备 设备组或硬件平台的信息集合 BSP 包括有关设备上存在的硬件功能的信息和内核配置信息以及所需的任何其他硬件驱动程序 除了用于基本和可选平台功能的通用 Linux 软件
  • constexpr

    constexpr 标志返回值或者其他表达式是常量 xff0c 在编译时就会被计算出来 这个关键字常被用来 C 43 43 const 和 constexpr 的区别 xff1f 知乎 include lt iostream gt usin
  • inline namespace

    include lt iostream gt using namespace std namespace ALL namespace V2014 void fun int num cout lt lt 34 int 34 lt lt 34
  • 进程与线程

    对于操作系统来说 xff0c 一个任务就是一个进程 xff08 Process xff09 xff0c 比如打开一个浏览器就是启动一个浏览器进程 xff0c 打开一个记事本就启动了一个记事本进程 xff0c 打开两个记事本就启动了两个记事本
  • 详解SOME/IP协议文档

    以下内容来源于AutoSar官网的AUTOSAR PRS SOMEIPProtocol文档 详解SOME IP协议文档 2 知乎 以下内容来源于AutoSar官网的AUTOSAR PRS SOMEIPProtocol文档 SOME IP P
  • AP AUTOSAR——Update and Configuration Management UCM

    15 Update and Configuration Management 15 1 What is Update and Configuration Management 更新和配置管理是Adaptive Platform Servic
  • 基于Docker安装Jenkins并实现CI/CD实战部署

    本实践介绍了利用Jenkins和docker技术 xff0c 如何实现CI CD的各环节的步骤 xff0c 包括环境准备 xff0c 代码提交 xff0c 编译程序 xff0c 构建镜像 xff0c 部署一套完整的安装部署流程 工具介绍 x
  • 左值引用与右值引用

    include lt iostream gt using namespace std void change int amp rnum 引用就是变量名的别名 rnum 61 111 c 43 43 中能用引用的地方 xff0c 就不要使用指
  • C++ 11的移动语义

    目录 可拷贝和可移动的概念 移动构造函数和移动赋值函数 小结移动构造和移动赋值std move 使用 std move 实现一个高效的 swap 函数Move and swap 技巧参考 可拷贝和可移动的概念 在面向对象中 xff0c 有的
  • UDS-统一诊断服务

    什么是诊断服务 xff1f 在还没有诊断服务的时候 xff0c 如果车辆故障 xff0c 需要有经验的师傅长时间的摸排查找 xff0c 费时费力 而车辆的ECU节点有了诊断模块后 xff0c 就具有了诊断功能 xff0c 这样车辆如果有了故
  • AP AUTOSAR——Network Management

    16 Network Management 16 1 What is Network Management 网络管理是Adaptive Platform Services中的一个功能集群 作为AP AUTOSAR平台的服务 xff0c 网络
  • AP AUTOSAR——Security Management

    11 Security Management 11 1 What is Security Management 安全管理是自适应平台体系结构中的一个功能集群 作为一个功能集群 xff0c 安全管理由多个模块组成 xff0c 这些模块向在Ad