密标委发布的行业标准有上百条,此系列可视为标准规范的学习摘要,我们将定期对密码行业的一些关键标准进行功能概述。更权威更及时的标准信息,请在密标委或国密局网站查询。
一、目标
密码设备应用接口规范是公钥密码基础设施应用体系框架下服务类密码设备统一应用接口标准,通过该接口调用密码设备,向上层提供基础密码服务。
服务类密码设备的开发以及应用开发应遵循此接口规范。
二、设备接口
1、密码设备服务层由密码机、密码卡、智能密码终端等设备组成,通过密码设备应用接口向通用密码服务层提供基础密码服务。
基础密码服务包括密钥生成、单一的密码运算、文件管理等的服务。
密码设备应用接口在公钥密码基础设施应用技术体系中的位置:
2、设备管理类函数
A. 打开设备:SDF_OpenDevice
B. 关闭设备:SDF_CloseDevice
C. 创建会话:SDF_OpenSession
D. 关闭会话:SDF_CloseSession
E. 获取设备信息:SDF_GetDeviceInfo
F. 产生随机数:SDF_GenerateRandom
G. 获取私钥使用权限:SDF_GetPrivateKeyAccessRight
H. 释放私钥使用权限:SDF_ReleasePrivateKeyAccessRight
3、密钥管理类函数
A. 导出RSA签名公钥:SDF_ExportSignPublicKey_RSA
B. 导出RSA加密公钥:SDF_ExportEncPublicKey_RSA
C. 产生RSA非对称密钥对并输出:SDF_GenerateKeyPair_RSA
D. 生成会话密钥并用内部RSA公钥加密输出:SDF_GenerateKeyWithIPK_RSA
E. 生成会话密钥并用外部RSA公钥加密输出:SDF_GenerateKeyWithEPK_RSA
F. 导入会话密钥并用内部RSA私钥解密:SDF_ImportKeyWithISK_RSA
G. 基于RSA算法的数字信封转换:SDF_ExchangeDigitEnvelopeBaseOnRSA
H. 导出ECC签名公钥:SDF_ExportSignPublicKey_ECC
I. 导出ECC加密公钥:SDF_ExportEncPublicKey_ECC
J. 产生ECC非对称密钥对并输出:SDF_GenerateKeyPair_ECC
K. 生成会话密钥并用内部ECC公钥加密输出:SDF_GenerateKeyWithIPK_ECC
L. 生成会话密钥并用外部ECC公钥加密输出:SDF_GenerateKeyWithEPK_ECC
M. 导入会话密钥并用内部ECC私钥解密:SDF_ImportKeyWithISK_ECC
N. 生成密钥协商参数并输出:SDF_GenerateAgreementDataWithECC
O. 计算会话密钥:SDF_GenerateKeyWithECC
P. 产生协商数据并计算会话密钥:SDF_GenerateAgreementDataAndKeyWithECC
Q. 基于ECC算法的数字信封转换:SDF_ExchangeDigitEnvelopeBaseOnECC
R. 生成会话密钥并用密钥加密密钥加密输出:SDF_GenerateKeyWithKEK
S. 导入会话密钥并用密钥加密密钥解密:SDF_ImportKeyWithKEK
T. 导入明文会话密钥:SDF_ImportKey
U. 销毁会话密钥:SDF_DestroyKey
4、非对称算法运算类函数
● 外部公钥RSA运算:SDF_ExternalPublicKeyOperation_RSA
● 外部私钥RSA运算:SDF_ExternalPrivateKeyOperation_RSA
● 内部公钥RSA运算:SDF_InternalPublicKeyOperation_RSA
● 内部私钥RSA运算:SDF_InternalPrivateKeyOperation_RSA
● 外部密钥ECC签名:SDF_ExternalSign_ECC
● 外部密钥ECC验证:SDF_ExternalVerify_ECC
● 内部密钥ECC签名:SDF_InternalSign_ECC
● 内部密钥ECC验证:SDF_InternalVerify_ECC
● 外部密钥ECC加密:SDF_ExternalEncrypt_ECC
● 外部密钥ECC解密:SDF_ExternalDecrypt_ECC
5、对称算法运算类函数
● 对称加密:SDF_Encrypt
● 对称解密:SDF_Decrypt
● 计算MAC:SDF_CalculateMAC
6、杂凑运算类函数
● 杂凑运算初始化:SDF_HashInit
● 多包杂凑运算:SDF_HashUpdate
● 杂凑运算结束:SDF_HashFinal
7、用户文件操作类函数 A) 创建文件:SDF_CreateFile B) 读取文件:SDF_ReadFile C) 写文件:SDF_WriteFile D) 删除文件:SDF_DeleteFile
三、密钥分类及存储
1、设备密钥与用户密钥
设备密钥只能在设备初始化时生成或安装,用户密钥通过密码设备管理工具生成或安装。设备密钥和用户密钥存放于密钥存储区,索引号从0开始检索,每个索引号对应一个签名密钥对和一个加密密钥对。索引号为0表示设备密钥,从1开始表示用户密钥。
2、密钥加密密钥
密钥加密密钥通过密码设备管理工具生成或安装,密钥长度为128位,存放于密钥存储区,使用索引号从1开始。
3、会话密钥
会话密钥使用设备接口函数生成或导入,会话密钥使用句柄检索。
四、安全要求
1、密钥管理要求
1) 设备密钥的使用不对应用系统开放;
2) 密钥必须用安全的方法产生并存储;
3) 在任何时间、任何情况下,除公钥外的密钥均不能以明文形式出现在密码设备外;
4) 密码设备内部存储的密钥应具备有效的密钥保护机制,防止解剖、探测和非法读取;
5) 密码设备内部存储的密钥应具备权限控制机制,防止非法使用和导出。
2、密码服务要求
1) 配用的密码算法应得到国家密码主管部门的批准;
2) 使用国家密码主管部门认可的密码算法芯片;
3) 本标准所列的所有接口函数均应能被应用系统任意调用。
3、设备状态要求
1) 密码设备应具有初始和就绪两个状态;
2) 未安装设备密钥的密码设备应处于初始状态,已安装设备密钥的密码设备应处于就绪状态;
3) 在初始状态下,除可读取设备信息、设备密钥的生成或恢复操作外,不能执行任何操作,生成或恢
复设备密钥后,密码设备处于就绪状态;
4) 在就绪状态下,除设备密钥的生成或恢复操作外,应能执行任何操作;
5) 在就绪状态下进行的密钥操作,设备操作员应经过密码设备的认证。
4、其他安全要求
-
密码设备内部存储的私钥的使用权限设置应由设备管理员完成,可采用口令字方式,口令字编码长度
-
应不低于8个字符,同时口令字内容应为字符与数字的混合体。
-
密码设备应有安全机制和措施,保证密钥在生成、安装、导入、存储、备份、恢复及销毁整个生存期间的安全,此安全机制可由设备厂商自行设计实现。