接口功能:分为读秘钥功能和加解密功能。读秘钥功能获取spdm派生的加解密秘钥并写入device侧tensor,加解密功能使用已读取的秘钥对device侧tensor做加密/解密。
读秘钥:读密钥前,host 和 device 已经通过 spdm 派生了加解密秘钥,且调用者已经获取到要读取的秘钥的keyId。读秘钥时,通过 uds 从 KMS-proxy 按key_id, alg_type, key_type 获取秘钥, 并写入device侧的 aclTensor key 中。
加解密:加解密时,采用标准 AES_CTR_128 和 AES_GCM_128 算法计算加解密。使用的秘钥为传入的 device侧 aclTensor key (已经由 读秘钥功能 写入)。使用的 iv 和 tag 可由 host 传到 device 侧。
每个算子分为两段式接口,必须先调用“aclnnCryptoGetWorkspaceSize”接口获取计算所需workspace大小以及包含了算子计算流程的执行器,再调用“aclnnCrypto”接口执行计算。
[object Object]
[object Object]
确定性计算: aclnnCrypto 默认确定性实现。
入参约束:
- opConfig.mode = 0 (读取秘钥) 时,inputText, outputText, iv, tag 可以为空(不为空但是类型和形状符合约束也不会报错)
- key, opConfig, out 不能为空
- inputText 和 outputText 不为空时,形状和大小要相同(类型相同,维数相同,每一维的大小相同)
- 不为空的入参类型必须符合表格里的类型约束
- opConfig.algType = 1 (AES-CTR-128算法) 时,tag 可以为空(不为空也不会使用该参数)
- opConfig.algType = 2 (AES-GCM-128算法) 时,tag 不能为空
- opConfig 的参数必须符合定义,version 取值 1,2,mode 取值 0,1,2, algType 取值 1,2, keyType 取值 1,keyId 取值 [0, UINT32_MAX], deviceId 取值 [0,63]
- 读秘钥时必须传入正确的 keyId (一个 keyId 对应一个spdm 已派生的加解密秘钥),否则会报错
[object Object]