security_huks/interfaces/huks_standard/main/API函数功能介绍(一)

1.知识总结(Padding)

每次RSA加密的明文的长度是受RSA填充模式限制的,但是RSA每次加密的块长度就是key length

这里简单介绍一下padding
在这里插入图片描述

1.1为什么使用Padding

使用padding的目的:对于特定类型的信息来说,大量相同内容的密文部分是容易推测的比如书信的开头敬语:尊敬的,为了防止攻击,我们使用随机长度的padding对数据进行填充,防止攻击者知道长度,展开攻击

1.2Padding的类型

这里根据鸿蒙安全模块中出现的填充类型进行一个简单的介绍

1.2.1 OAEP

输入:RSA_size(rsa) – 41
输出:和modulus(RSA钥模长)一样长

1.2.2 PSS

在这里插入图片描述

1.2.3 PKCS1_V1_5

填充的规则:

EM = 0x00 || 0x02 || PS || 0x00 || M

其中:
EM是填充后的消息
M是原文
PS是随机数,长度为Len(RSA) - 3 - Len(M)

1.2.4 PKCS5

将数据填充到8的倍数,填充后数据长度的计算公式是 定于元数据长度为x, 填充后的长度是 x + (8 - (x % 8)), 填充的数据是 8 - (x % 8),块大小固定为8字节

1.2.5 PKCS7

假设数据长度需要填充n(n>0)个字节才对齐,那么填充n个字节,每个字节都是n;如果数据本身就已经对齐了,则填充一块长度为块大小的数据,每个字节都是块大小;PKCS5只填充到8字节,而PKCS7可以在1-255之间任意填充。

2.总体概述

作为服务端和客户端进行交互的接口API,除了对参数和各种数据的高度的安全检查之外,对于不同通信状态情况下,API的内部实现也有所不同

3.代码解读

封装了各种API函数进行安全模块的功能实现

hks_api.c

各种

1.HksGetSdkVersion

函数功能:获取SDK的版本
函数实现:先进行size的检查再将枚举变量 HKS_SDK_VERSION通过memcpy_s赋给sdkVersion->data完成版本的获取

2.HksInitialize

函数功能:完成client的初始化
函数实现:return HksClientInitialize

3.HksGenerateKey

函数功能:完成密钥的生成

参数含义:
keyAlias:作为HksClientGenerateKey的参数进行传递完成客户端的密钥生成
paramSetIn:生成密钥前的参数集合
paramSetOut:生成密钥后更新后的参数集合

函数实现:通过函数HksGetParam获取storageFlag根据其状态调用不同的函数进行本地或者客户端的密钥生成

4.HksImportKey

函数功能:将得到的key存入paramSet中

函数实现:首先检查传入的三个参数是否非空,都非空则调用函数HksClientImportKey进行key和paramSet的处理

5.HksGetKeyParamSet

函数功能:从服务端的参数集合中获取对应的密钥存入本地的参数集合中

6.HksGenerateRandom

函数功能:向服务器请求生成一个随机数,用于作为加密的参数存入paramSet中

7.HksSign

函数功能:将srcData生成的signature与得到的signature一并发送到服务端进行消息验证

8.HksVerify

函数功能:进行信息验证,通过签名的一致性保证数据的完整性

函数实现:首先检查参数是否非空---->然后通过HKS_TAG_IS_KEY_ALIAS从paramSet中取得isKeyAlias,根据其属性boolParam判断是服务端还是客户端调用不同的函数进行签名一致性的验证

9.HksEncrypt

函数功能:进行plainText的加密

函数实现:根据HKS_TAG_IS_KEY_ALIAS从paramSet中取出isKeyAlias根据其boolParam判断是客户端还是服务端调用不同的函数通过加密函数和所给的key将plainText变为cipherText

10.HksDecrypt

函数功能:进行cipherText的解密

未完待续……

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

国家一级假勤奋研究牲

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

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

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

打赏作者

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

抵扣说明:

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

余额充值