实验一-密码引擎-加密API实现与测试 附代码

实验一-密码引擎-加密API实现与测试

任务详情

1 下载并查找GMT 0018-2012密码设备应用接口规范原始文档进行学习 (5分)

2 实现GMT 0018-2012密码设备应用接口规范的接口函数,至少实现:

1)设备管理中的打开设备,关闭设备,获取设备信息,产生随机数(4分)

2)密钥管理导出 ECC 签名公钥;SDF_ExportSignPublicKey_ECC I.导出 ECC加密公钥∶SDF_ExportEncPublicKey_ECC J. 产生 ECC非对称密钥对并输出∶SDF_GenerateKeyPair_ECC
K. (6分)

3)非对称算法(至少支持SM2):外部密钥 ECC验证∶SDF_ExternalVerify_ECC ,内部密钥 ECC签名;SDF_InternalSign_ECC ,内部密钥 ECC验证∶SDF_InternalVerify_ECC 外部密钥 ECC加密∶SDF_ExternalEncrypt_ECC
(8分)

4)对称算法(至少支持SM4)∶SDF_Encrypt 对称解密∶SDF_Dccrypt 计算 MAC∶SDF_CalculateMAC(6分)

5)杂凑算法(至少支持SM3):· 杂凑运算初始化∶SDF_HashInit· 多包杂凑运算∶SDF_HashUpdate· 杂凑运算结束∶SDF_HashFinal(6分)

密钥管理要求(10分)

基于本标准设计、开发的密码设备在密钥管理方面,应满足以下要求;

1)设备密钥的使用不对应用系统开放;

2) 密钥必须用安全的方法产生并存储;

3) 在任何时间、任何情况下,除公钥外的密钥均不能以明文形式出现在密码设备外;

4) 密码设备内部存储的密钥应具备有效的密钥保护机制,防止解剖、探测和非法读取;

5) 密码设备内部存储的密钥应具备权限控制机制,防止非法使用和导出。

设备状态要求(5分)

基于本标准设计、开发的密码设备在设备状态方面,应满足以下要求;
1) 密码设备应具有初始和就绪两个状态;

2) 未安装设备密钥的密码设备应处干初始状态,已安装设备密钥的密码设备应处于就绪状态;

3) 在初始状态下,除可读取设备信息、设备密钥的生成或恢复操作外,不能执行任何操作,生成或恢复设备密钥后,密码设备处于就绪状态;

4) 在就绪状态下,除设备密钥的生成或恢复操作外,应能执行任何操作;

5) 在就绪状态下进行的密钥操作,设备操作员应经过密码设备的认证。

一、下载并查找GMT 0018-2012密码设备应用接口规范原始文档进行学习

数据结构定义

LW4Krd.png

二、实现GMT 0018-2012密码设备应用接口规范的接口函数

①设备管理中的打开设备,关闭设备,获取设备信息,产生随机数

LW4JG8.png

②密钥管理导出 ECC 签名公钥;SDF_ExportSignPublicKey_ECC I.导出 ECC加密公钥∶SDF_ExportEncPublicKey_ECC J. 产生 ECC非对称密钥对并输出∶SDF_GenerateKeyPair_ECC
K.

LW40Zn.png

③非对称算法(至少支持SM2):外部密钥 ECC验证∶SDF_ExternalVerify_ECC ,内部密钥 ECC签名;SDF_InternalSign_ECC ,内部密钥 ECC验证∶SDF_InternalVerify_ECC 外部密钥 ECC加密∶SDF_ExternalEncrypt_ECC

LW4siV.png

④对称算法(至少支持SM4)∶SDF_Encrypt 对称解密∶SDF_Dccrypt 计算 MAC∶SDF_CalculateMAC

LW4hZR.png

⑤杂凑算法(至少支持SM3):· 杂凑运算初始化∶SDF_HashInit· 多包杂凑运算∶SDF_HashUpdate· 杂凑运算结束∶SDF_HashFinal

LW44d1.png

密码管理要求

基于本标准设计、开发的密码设备在密钥管理方面,应满足以下要求;

1)设备密钥的使用不对应用系统开放;

2) 密钥必须用安全的方法产生并存储;

3) 在任何时间、任何情况下,除公钥外的密钥均不能以明文形式出现在密码设备外;

4) 密码设备内部存储的密钥应具备有效的密钥保护机制,防止解剖、探测和非法读取;

5) 密码设备内部存储的密钥应具备权限控制机制,防止非法使用和导出。

LW4TJK.png

设备状态要求

基于本标准设计、开发的密码设备在设备状态方面,应满足以下要求;
1) 密码设备应具有初始和就绪两个状态;

2) 未安装设备密钥的密码设备应处干初始状态,已安装设备密钥的密码设备应处于就绪状态;

3) 在初始状态下,除可读取设备信息、设备密钥的生成或恢复操作外,不能执行任何操作,生成或恢复设备密钥后,密码设备处于就绪状态;

4) 在就绪状态下,除设备密钥的生成或恢复操作外,应能执行任何操作;

5) 在就绪状态下进行的密钥操作,设备操作员应经过密码设备的认证。

LW59W8.png

代码实现如下

码云链接https://gitee.com/ruiruiruiruirui/xx/blob/master/%E5%81%9A%E4%B8%AA%E9%94%A4%E5%AD%90/API.c

注意:在Ubuntu下编译需要openssl,加上-Iinclude -lpthread -lcrypto

如果编译失败可能是openssl版本过旧,参考娄老师的教程安装最新版

https://www.cnblogs.com/rocedu/p/14617763.html

L6QtjU.png

1.0 选择操作

LWIKAI.png

1.1 设备管理中的打开设备,关闭设备,获取设备信息,产生随机数

LW5bt0.png

1.2 导出密钥和生成密钥对

LW5jcF.png

1.3 加解密操作

LWIenH.png

LWImBd.png

1.4 hash操作

LWIGjg.png

posted @ 2022-04-23 14:40  ewdbdvdv  阅读(102)  评论(0编辑  收藏  举报