英飞凌HSM内核开发-CRPTO_30_HWA模块

软件接口

在这里插入图片描述

支持的功能

AEAD(Authenticated Encryption with Associated Data)特性说明
AES-128 GCM-
AES-128 GCM-SIV仅当平台支持时可用
Cipher(密码学算法)特性说明
AES-128 ECB/CBC支持PKCS7填充和无填充
AES-128 CTR无填充
AES-192 ECB/CBC支持PKCS7填充和无填充,仅当平台支持时可用
AES-192 CTR无填充,仅当平台支持时可用
AES-256 ECB/CBC支持PKCS7填充和无填充,仅当平台支持时可用
AES-256 CTR无填充,仅当平台支持时可用
Random(随机数生成)特性说明
TRNG真随机数生成器
MAC(消息认证码)特性说明
AES CMAC-
HASH(哈希函数)特性说明
SHA-256仅当平台支持时可用
SIGNATURE(签名算法)特性说明
NIST/ANSI/SECp256R1 with prehashing仅当平台支持时可用
Ed25519支持纯模式、上下文和预哈希模式,仅当平台支持时可用
Key Derivation(密钥派生)特性说明
Counter Mode with CMAC-AES128 as PRF根据NIST SP800-108:2008标准

密钥管理

ROM-Keys的使用

CRYPTO模块支持使用硬件制造商预配置的密钥,这个特性是否被支持以及提供多少ROM-Keys取决于硬件平台。ROM-Keys的值只能在硬件内部访问,不能被写入或读出。为了使用一个ROM-Key,必须预先配置一个与之关联的密钥,该密钥可用于加密作业,CRYPTO模块负责硬件特定的配置。

对于需要额外密钥元素的加密操作,例如初始化向量,必须配置一个带有相应密钥元素的密钥,并在ROM-Key的“Key Aggregation Ref”字段中添加一个引用。然后,这两个密钥将由CRYPTO模块聚合并作为一个密钥管理。密钥元素的值必须通过预先配置的ROM-Key设置。添加聚合密钥是可选的,对于仅需要一个密钥的加密操作可以省略。

密钥派生

密钥派生实现了NIST800-108的计数器模式[7]。
可以通过添加子容器/MICROSAR/Crypto_30_Hwa/Crypto/CryptoGeneral/CryptoKeyDerive来激活密钥派生。
密钥派生算法的行为通过以下自定义密钥元素配置。

这些元素包括:
一个密码(CRYPTO_KE_KEYDERIVATION_PASSWORD),
一个上下文(CRYPTO_KE_KEYDERIVATION_CONTEXT),
以及元素标签(CRYPTO_KE_KEYDERIVATION_LABEL)。

这些元素用作PRF(伪随机函数)的输入。对于PRF,使用CMAC函数。因此,必须为选定的驱动对象激活CMAC函数,PRF的输入是通过连接元素生成的。

如果没有传递ROM-Key,则从源密钥的密钥元素CRYPTO_KE_KEYDERIVATION_PASSWORD中读取密钥。派生的密钥存储在目标密钥的密钥元素CRYPTO_KE_KEYDERIVATION_TARGET_KEY_ELEMENT中。派生密钥的长度由该元素的大小设置。
除了上述密钥元素外,源密钥中还必须存在密钥元素CRYPTO_30_VHSM_ALGO_KDF_NIST_800_108_CMAC。
如果使用ROM-Key,则必须将另一个带有密钥元素CRYPTO_KE_KEYDERIVATION_LABEL、CRYPTO_KE_KEYDERIVATION_CONTEXT和CRYPTO_30_VHSM_ALGO_KDF_NIST_800_108_CMAC的密钥聚合到ROM-Key。如果聚合到Rom-Key的密钥包含CRYPTO_KE_KEYDERIVATION_PASSWORD密钥元素,则此元素将被忽略,RomKey用于密钥派生。

图3:示例密钥配置

显示了密钥派生的一个可能的密钥配置,源密钥的密钥元素包含密钥派生的信息,目标密钥包含派生密钥的空间。

真随机数生成器

可以使用大小为 CRYPTO_30_HWA_TRNG_PREFETCH_CAPACITY1 的环形缓冲区来预取 TRNG 模块的随机数。可以通过开启 CRYPTO_30_HWA_TRNG_PREFETCHING2 来激活预取。此外,支持两种预取模式:使用中断预取随机数据和通过轮询预取随机数据。当开启 CRYPTO_30_HWA_TRNG_PREFETCH_WITH_INTERRUPT3 时,启用中断模式,否则启用轮询模式。
使用 CRYPTO_30_HWA_TRNG_PREFETCHING 可以提高需要少量随机数据的任务的性能。当启用 CRYPTO_30_HWA_TRNG_PREFETCH_WITH_INTERRUPT 时,随机数据缓冲区会以并发方式填充,这比循环轮询新随机数据的性能要高。

以下是将静态文件和动态文件整理成表格的描述:

静态文件 (Static Files)

文件名描述
Crypto_30_Hwa.cCrypto_30_Hwa的主要源文件。包含组件初始化、主函数和作业处理的函数。
Crypto_30_Hwa.hCrypto_30_Hwa的头文件。包含基础组件和平台特定实现的修订历史。
Crypto_30_Hwa_Aead.cAEAD的源文件。包含AEAD作业处理函数。
Crypto_30_Hwa_Cipher.c密码原语的源文件。包含AES作业处理函数。
Crypto_30_Hwa_Crypto.c加密辅助函数的源文件。
Crypto_30_Hwa_Mac.cMAC原语的源文件。包含CMAC作业处理函数。
Crypto_30_Hwa_Custom.h定义Crypto_30_Hwa支持的自定义加密算法族的头文件。
Crypto_30_Hwa_Hash.cHASH原语的源文件。包含SHA256作业处理函数。
Crypto_30_Hwa_Hw.h声明由平台特定实现实现的通用函数的头文件。
Crypto_30_Hwa_KeyM.c包含密钥管理函数的源文件。
Crypto_30_Hwa_Random.cRANDOM的源文件。包含RANDOM作业处理函数。
Crypto_30_Hwa_Private.h包含仅在Crypto_30_Hwa组件内部使用的私有函数声明的头文件。
Crypto_30_Hwa_Public.hCrypto_30_Hwa的主要头文件。包含组件提供的API的公共函数声明。
Crypto_30_Hwa_Signature.c签名原语的源文件。包含签名作业处理函数。
Crypto_30_Hwa_Types.h定义组件的加密算法所使用的工作区的头文件。
Crypto_30_Hwa_Hw_Cfg.h包含平台特定配置元素的头文件。
Crypto_30_Hwa_Hw_Types.h包含平台特定类型定义的头文件。
Crypto_30_Hwa_Hw.c包含通用硬件访问函数的低级实现的文件。*

动态文件 (Dynamic Files)

文件名描述
Crypto_30_Hwa_Cfg.c组件配置的生成源文件。
Crypto_30_Hwa_Cfg.h组件配置的生成头文件。

Services provided by Crypto_30_Hwa

以下是简化后的API表格,不包含参数、返回码、特殊情况和调用上下文列:

通用服务 (General Services)

API功能描述
Crypto_30_Hwa_Init初始化vHsm硬件抽象库。初始化Crypto_30_Hwa模块,初始化所有变量,并将模块状态设置为已初始化。
Crypto_30_Hwa_InitMemory初始化启动代码无法初始化的变量和内存区域。在上电时初始化组件变量。
Crypto_30_Hwa_MainFunction模块的主函数。周期性调用。

加密服务 (Crypto Services)

API功能描述
Crypto_30_Hwa_ProcessJob处理接收到的作业。执行作业参数中配置的加密原语。
Crypto_30_Hwa_CancelJob取消接收到的作业。如果可能,从队列中移除提供的作业并取消作业的处理。

密钥管理服务 (Key Management Services)

API功能描述
Crypto_30_Hwa_KeyElementGet获取由cryptoKeyId标识的密钥的密钥元素,并将密钥元素存储在result指针指向的内存位置。
Crypto_30_Hwa_KeyElementSet设置密钥元素。将给定的密钥元素字节设置为由cryptoKeyId标识的密钥。
Crypto_30_Hwa_KeyDerive通过使用由cryptoKeyId标识的密钥中的密钥元素派生新密钥,并将新密钥存储在targetCryptoKeyId的密钥元素(ID:1)中。
Crypto_30_Hwa_KeyValidSet将密钥设置为有效。将由cryptoKeyId标识的密钥的状态设置为有效。

中断服务例程 (Interrupt Service Routines)

API功能描述
Crypto_30_Hwa_Hw_TrngIRQHandler用于处理来自TRNG模块的中断,当生成新的随机数据时触发。这个中断必须始终是类别1中断。

Services used by CRYPTO_30_HWA

错误报告 (Error Reporting) DET

API功能描述
DET Det_ReportError()报告错误。

密钥管理 (Key Management) vHsm_Core

API功能描述
vHsm_Api_GetAddrKeyStorage()获取密钥存储的地址。
vHsm_Api_GetKeyElementLength()获取密钥元素的长度。
vHsm_Api_GetSizeOfKey()获取密钥的大小。
vHsm_Api_KeyElementGet()获取密钥元素。
vHsm_Api_KeyElementGetForCryptoJobs()为加密作业获取密钥元素。
vHsm_Api_KeyElementSet()设置密钥元素。
vHsm_Api_KeyReadLockGetNotProtected()获取未受保护的密钥读取锁。
vHsm_Api_KeyReadLockReleaseNotProtected()释放未受保护的密钥读取锁。
vHsm_Api_KeyValidSet()设置密钥有效性。
vHsm_Api_Local_KeyElementGetStorageIndex()获取本地密钥元素的存储索引。
vHsm_Api_Local_KeyElementSearch()搜索本地密钥元素。
vHsm_Api_InitializeTempJob()初始化临时作业。
vHsm_Api_ProcessTempJob()处理临时作业。

内存操作 (Memory Operations) VstdLib

API功能描述
VStdLib_MemClr()清除内存。
VStdLib_MemCpy()复制内存。
VStdLib_MemSet()设置内存。

哈希计算 (Hash Operations) vSecPrim

API功能描述
vSecPrim_initHash()初始化哈希。
vSecPrim_updateHash()更新哈希。
vSecPrim_finalizeHash()完成哈希。

补充

缩写描述
AADAdditional Authenticated Data(附加认证数据)
AEADAuthenticated Encryption with Associated Data(带有关联数据的认证加密)
AESAdvanced Encryption Standard(高级加密标准)
IPCInter Processor Communication(处理器间通信)
HWAHardware Accelerator(硬件加速器)
ALGOFAMAlgorithm Family(算法族)
ALGOMODEAlgorithm Mode(算法模式)
CBCCipher Block Chaining Mode(密码块链接模式)
CMACCipher-based Message Authentication Code(基于密码的消息认证码)
CTRCounter Mode(计数器模式)
ECBElectronic Code Book(电子密码本模式)
ECDSAElliptic Curve Digital Signature Algorithm(椭圆曲线数字签名算法)
FIPSFederal Information Processing Standards Publication(联邦信息处理标准出版物)
GCMGalois Counter Mode(伽罗瓦计数器模式)
NISTNational Institute of Standards and Technology(美国国家标准与技术研究院)
RNGRandom Number Generator(随机数生成器)
SHASecure Hash Algorithm(安全哈希算法)
SHESecure Hardware Extension(安全硬件扩展)
TRNGTrue Random Number Generator(真随机数生成器)
APIApplication Programming Interface(应用程序编程接口)
AUTOSARAutomotive Open System Architecture(汽车开放系统架构)
BSWBasis Software(基础软件)
DETDevelopment Error Tracer(开发错误追踪器)
ECUElectronic Control Unit(电子控制单元)
ISRInterrupt Service Routine(中断服务例程)
MICROSARMicrocontroller Open System Architecture (the Vector AUTOSAR solution)(微控制器开放系统架构,Vector公司的AUTOSAR解决方案)
SRSSoftware Requirement Specification(软件需求规格说明)
SWCSoftware Component(软件组件)
SWSSoftware Specification(软件规格说明)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

美好生活丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值