最终版《智能IC卡及智能密码钥匙密码应用接口规范国密封皮》0223修订.docx
- 文档编号:17114616
- 上传时间:2023-07-22
- 格式:DOCX
- 页数:90
- 大小:231.67KB
最终版《智能IC卡及智能密码钥匙密码应用接口规范国密封皮》0223修订.docx
《最终版《智能IC卡及智能密码钥匙密码应用接口规范国密封皮》0223修订.docx》由会员分享,可在线阅读,更多相关《最终版《智能IC卡及智能密码钥匙密码应用接口规范国密封皮》0223修订.docx(90页珍藏版)》请在冰点文库上搜索。
最终版《智能IC卡及智能密码钥匙密码应用接口规范国密封皮》0223修订
智能IC卡及智能密码钥匙
密码应用接口规范
SmartCardandSmartToken
CryptographyApplicationInterfaceSpecification
国家密码管理局
2010年4月
目次
前言IV
1范围1
2规范性引用文件1
3术语和定义1
4缩略语2
5结构模型2
5.1层次关系2
5.2设备的应用结构3
6数据类型定义4
6.1算法标识4
6.1.1分组密码算法标识4
6.1.2非对称密码算法标识5
6.1.3密码杂凑算法标识5
6.2基本数据类型5
6.3常量定义6
6.4复合数据类型6
6.4.1版本6
6.4.2设备信息6
6.4.3RSA公钥数据结构7
6.4.4RSA私钥数据结构8
6.4.5ECC公钥数据结构8
6.4.6ECC私钥数据结构9
6.4.7ECC密文数据结构9
6.4.8ECC签名数据结构9
6.4.9分组密码参数10
6.4.10文件属性10
6.4.11权限类型11
6.4.12设备状态11
7接口函数11
7.1设备管理11
7.1.1概述11
7.1.2等待设备插拔事件11
7.1.3取消等待设备插拔事件12
7.1.4枚举设备12
7.1.5连接设备12
7.1.6断开连接12
7.1.7获取设备状态12
7.1.8设置设备标签12
7.1.9获取设备信息13
7.1.10锁定设备13
7.1.11解锁设备13
7.1.12设备命令传输13
7.2访问控制13
7.2.1概述13
7.2.2修改设备认证密钥14
7.2.3设备认证14
7.2.4修改PIN14
7.2.5获取PIN信息14
7.2.6校验PIN15
7.2.7解锁PIN15
7.2.8清除应用安全状态15
7.3应用管理15
7.3.1概述15
7.3.2创建应用15
7.3.3枚举应用16
7.3.4删除应用16
7.3.5打开应用16
7.3.6关闭应用16
7.4文件管理17
7.4.1概述17
7.4.2创建文件17
7.4.3删除文件17
7.4.4枚举文件17
7.4.5获取文件属性18
7.4.6读文件18
7.4.7写文件18
7.5容器管理18
7.5.1概述18
7.5.2创建容器19
7.5.3删除容器19
7.5.4打开容器19
7.5.5关闭容器19
7.5.6枚举容器19
7.6密码服务20
7.6.1概述20
7.6.2生成随机数21
7.6.3生成外部RSA密钥对21
7.6.4生成RSA签名密钥对21
7.6.5导入RSA加密密钥对21
7.6.6RSA签名22
7.6.7RSA验签22
7.6.8RSA生成并导出会话密钥22
7.6.9RSA外来公钥运算23
7.6.10RSA外来私钥运算23
7.6.11生成ECC签名密钥对23
7.6.12导入ECC加密密钥对24
7.6.13ECC签名24
7.6.14ECC验签24
7.6.15ECC生成并导出会话密钥24
7.6.16ECC外来公钥加密25
7.6.17ECC外来私钥解密25
7.6.18ECC外来私钥签名25
7.6.19ECC外来公钥验签25
7.6.20ECC生成密钥协商参数并输出26
7.6.21ECC产生协商数据并计算会话密钥26
7.6.22ECC计算会话密钥26
7.6.23导出公钥27
7.6.24导入会话密钥27
7.6.25明文导入会话密钥27
7.6.26加密初始化28
7.6.27单组数据加密28
7.6.28多组数据加密28
7.6.29结束加密28
7.6.30解密初始化29
7.6.31单组数据解密29
7.6.32多组数据解密29
7.6.33结束解密30
7.6.34密码杂凑初始化30
7.6.35单组数据密码杂凑30
7.6.36多组数据密码杂凑30
7.6.37结束密码杂凑31
7.6.38消息鉴别码运算初始化31
7.6.39单组数据消息鉴别码运算31
7.6.40多组数据消息鉴别码运算32
7.6.41结束消息鉴别码运算32
7.6.42关闭密码对象句柄32
8设备的安全要求32
8.1设备使用阶段32
8.2权限管理32
8.2.1权限分类32
8.2.2权限使用32
8.2.3设备认证33
8.2.4PIN码安全要求33
8.3密钥安全要求33
8.4设备抗攻击要求33
附录A(规范性附录)错误代码定义和说明34
前言
本规范涉及的密码算法按照国家密码管理部门的要求使用。
本规范的附录A为规范性附录。
本规范由国家密码管理局提出并归口。
本规范起草单位:
北京海泰方圆科技有限公司、北京握奇智能科技有限公司、北京大明五洲科技有限公司、恒宝股份有限公司、深圳市明华澳汉科技股份有限公司、武汉天喻信息产业股份有限公司、北京飞天诚信科技有限公司、华翔腾数码科技有限公司。
本规范主要起草人:
石玉平、柳增寿、胡俊义、管延军、项莉、雷继业、胡鹏、赵再兴、段晓毅、刘玉峰、刘伟丰、陈吉、何永福、李高锋、黄东杰、王建承、汪雪林、赵李明。
本规范责任专家:
刘平、郭宝安。
智能IC卡及智能密码钥匙密码应用接口规范
1范围
本规范规定了基于PKI密码体制的智能IC卡及智能密码钥匙密码应用接口,描述了密码应用接口的函数、数据类型、参数的定义和设备的安全要求。
本规范适用于智能IC卡及智能密码钥匙产品的研制、使用和检测。
2规范性引用文件
下列文件中的条款通过本规范的引用而成为本规范的条款。
凡是注日期的引用文件,其随后所有的修改单(不包括勘误的内容)或修订版均不适用于本规范,然而,鼓励根据本规范达成协议的各方研究是否可使用这些的最新版本。
凡是不注日期的引用文件,其最新版本适用于本规范。
GB/TAAAAA公钥密码基础设施应用技术体系SM2算法使用规范
3术语和定义
以下术语和定义适用于本规范。
3.1
应用application
包括容器、设备认证密钥和文件的一种结构,具备独立的权限管理。
3.2
容器container
特指密钥容器,是一个用于存放非对称密钥对和会话密钥的逻辑对象。
3.3
设备device
智能IC卡及智能密码钥匙的统称。
3.4
设备认证deviceauthentication
智能IC卡或智能密码钥匙对应用程序的认证。
3.5
设备认证密钥deviceauthenticationkey
用于设备认证的密钥。
3.6
设备标签label
设备的别名,可以由用户进行设定并存储于设备内部。
3.7
消息鉴别码messageauthenticationcode(MAC)
消息鉴别算法的输出。
3.8
管理员PINAdministratorPIN
管理员的密码,为ASCII字符串。
3.9
用户PINUserPIN
用户的个人密码,为ASCII字符串。
3.10
智能IC卡smartcard
含CPU的IC卡,这里指能完成密码功能的IC卡。
3.11
智能密码钥匙smarttoken
能完成密码功能和安全存储的终端密码产品,一般采用USB接口。
3.12
SM1算法SM1algorithm
一种国家商用密码分组加密算法,分组长度为128比特,密钥长度为128比特。
3.13
SM2算法SM2algorithm
一种国家商用密码非对称密码算法,密钥长度为256比特。
3.14
SM3算法SM3algorithm
一种国家商用密码密码杂凑算法,输出长度为256比特。
3.15
SMS4算法SMS4algorithm
一种国家商用密码分组加密算法,分组长度为128比特,密钥长度为128比特。
3.16
SSF33算法SSF33algorithm
一种国家商用密码分组加密算法,分组长度为128比特,密钥长度为128比特。
4缩略语
下列缩略语适用于本规范:
API应用编程接口(ApplicationProgrammingInterface)
PKI公钥基础设施(PublicKeyInfrastructure)
PKCS#1公钥密码使用标准系列规范中的第1部分,定义RSA公开密钥算法加密和签名机制(thePublic-KeyCryptographyStandardPart1)
PKCS#5公钥密码使用标准系列规范中的第5部分,描述一种利用从口令派生出来的安全密钥加密字符串的方法(thePublic-KeyCryptographyStandardPart5)
PIN个人身份识别码(PersonalIdentificationNumber)
MAC消息鉴别码(MessageAuthenticationCode)
ECC椭圆曲线密码算法(EllipticCurveCryptography)
5结构模型
5.1层次关系
智能IC卡及智能密码钥匙密码应用接口位于智能IC卡及智能密码钥匙应用程序与设备之间,如图1所示。
图1接口在应用层次关系中的位置
5.2设备的应用结构
一个设备中存在设备认证密钥和多个应用,应用之间相互独立。
设备的逻辑结构如图2所示。
图2设备逻辑结构
应用由管理员PIN、用户PIN、文件和容器组成,可以存在多个文件和多个容器。
每个应用维护各自的与管理员PIN和用户PIN相关的权限状态。
应用的逻辑结构如图3所示。
图3应用逻辑结构图
容器中存放加密密钥对、签名密钥对和会话密钥。
其中加密密钥对用于保护会话密钥,签名密钥对用于数字签名和验证,会话密钥用于数据加解密和MAC运算。
其中,签名密钥对由内部产生,加密密钥对由外部产生并安全导入,会话密钥可由内部产生或者由外部产生并安全导入。
6数据类型定义
6.1算法标识
6.1.1分组密码算法标识
分组密码算法标识包含密码算法的类型和加密模式。
分组密码算法标识的编码规则为:
从低位到高位,第0位到第7位按位表示分组密码算法工作模式,第8位到第31位按位表示分组密码算法类型,分组密码算法的标识如表1所示。
表1分组密码算法标识表
标签
标识符
描述
SGD_SM1_ECB
0x00000101
SM1算法ECB加密模式
SGD_SM1_CBC
0x00000102
SM1算法CBC加密模式
SGD_SM1_CFB
0x00000104
SM1算法CFB加密模式
SGD_SM1_OFB
0x00000108
SM1算法OFB加密模式
SGD_SM1_MAC
0x00000110
SM1算法MAC运算
SGD_SSF33_ECB
0x00000201
SSF33算法ECB加密模式
SGD_SSF33_CBC
0x00000202
SSF33算法CBC加密模式
SGD_SSF33_CFB
0x00000204
SSF33算法CFB加密模式
SGD_SSF33_OFB
0x00000208
SSF33算法OFB加密模式
SGD_SSF33_MAC
0x00000210
SSF33算法MAC运算
SGD_SMS4_ECB
0x00000401
SMS4算法ECB加密模式
SGD_SMS4_CBC
0x00000402
SMS4算法CBC加密模式
SGD_SMS4_CFB
0x00000404
SMS4算法CFB加密模式
SGD_SMS4_OFB
0x00000408
SMS4算法OFB加密模式
SGD_SMS4_MAC
0x00000410
SMS4算法MAC运算
6.1.2非对称密码算法标识
非对称密码算法标识仅定义了密码算法的类型,在使用非对称算法进行数字签名运算时,可将非对称密码算法标识符与密码杂凑算法标识符进行“或”运算后使用,如“RSAwithSHA1”可表示为SGD_RSA|SGD_SHA1,即0x00010002,“|”表示“或”运算。
非对称密码算法标识的编码规则为:
从低位到高位,第0位到第7位为0,第8位到第15位按位表示非对称密码算法的算法协议,如果所表示的非对称算法没有相应的算法协议则为0,第16位到第31位按位表示非对称密码算法类型,非对称密码算法的标识如表2所示。
表2非对称密码算法标识表
标签
标识符
描述
SGD_RSA
0x00010000
RSA算法
SGD_SM2_1
0x00020100
椭圆曲线签名算法
SGD_SM2_2
0x00020200
椭圆曲线密钥交换协议
SGD_SM2_3
0x00020400
椭圆曲线加密算法
6.1.3密码杂凑算法标识
密码杂凑算法标识符可以在进行密码杂凑运算或计算MAC时应用,也可以与非对称密码算法标识符进行“或”运算后使用,表示签名运算前对数据进行密码杂凑运算的算法类型。
密码杂凑算法标识的编码规则为:
从低位到高位,第0位到第7位表示密码杂凑算法,第8位到第31位为0,密码杂凑算法的标识如表3所示。
表3密码杂凑算法标识表
标签
标识符
描述
SGD_SM3
0x00000001
SM3密码杂凑算法
SGD_SHA1
0x00000002
SHA1密码杂凑算法
SGD_SHA256
0x00000004
SHA256密码杂凑算法
6.2基本数据类型
本规范中的字节数组均为高位字节在前(Big-Endian)方式存储和交换。
基本数据类型定义如表4所示:
表4基本数据类型
类型名称
描述
定义
INT8
有符号8位整数
INT16
有符号16位整数
INT32
有符号32位整数
UINT8
无符号8位整数
UINT16
无符号16位整数
UINT32
无符号32位整数
BOOL
布尔类型,取值为TRUE或FALSE
BYTE
字节类型,无符号8位整数
typedefUINT8BYTE
CHAR
字符类型,无符号8位整数
typedefUINT8CHAR
SHORT
短整数,有符号16位
typedefINT16SHORT
USHORT
无符号16位整数
typedefUINT16USHORT
LONG
长整数,有符号32位整数
typedefINT32LONG
ULONG
长整数,无符号32位整数
typedefUINT32ULONG
UINT
无符号32位整数
typedefUINT32UINT
WORD
字类型,无符号16位整数
typedefUINT16WORD
DWORD
双字类型,无符号32位整数
typedefUINT32DWORD
FLAGS
标志类型,无符号32位整数
typedefUINT32FLAGS
LPSTR
8位字符串指针,按照UTF8格式存储及交换
typedefCHAR*LPSTR
HANDLE
句柄,指向任意数据对象的起始地址
typedefvoid*HANDLE
DEVHANDLE
设备句柄
typedefHANDLEDEVHANDLE
HAPPLICATION
应用句柄
typedefHANDLEHAPPLICATION
HCONTAINER
容器句柄
typedefHANDLEHCONTAINER
6.3常量定义
数据常量标识定义了在规范中用到的常量的取值。
数据常量标识的定义如表5所示。
表5常量定义
常量名
取值
描述
TRUE
0x00000001
布尔值为真
FALSE
0x00000000
布尔值为假
DEVAPI
__stdcall
__stdcall函数调用方式
ADMIN_TYPE
0
管理员PIN类型
USER_TYPE
1
用户PIN类型
6.4复合数据类型
6.4.1版本
(1)类型定义
typedefstructStruct_Version{
BYTEmajor;
BYTEminor;
}VERSION;
(2)数据项描述参见表6:
表6版本定义
数据项
类型
意义
备注
major
BYTE
主版本号
主版本号和次版本号以“.”分隔,例如Version1.0,主版本号为1,次版本号为0;Version2.10,主版本号为2,次版本号为10。
minor
BYTE
次版本号
6.4.2设备信息
(1)类型定义
typedefstructStruct_DEVINFO{
VERSIONVersion;
CHARManufacturer[64];
CHARIssuer[64];
CHARLabel[32];
CHARSerialNumber[32];
VERSIONHWVersion;
VERSIONFirmwareVersion;
ULONGAlgSymCap;
ULONGAlgAsymCap;
ULONGAlgHashCap;
ULONGDevAuthAlgId;
ULONGTotalSpace;
ULONGFreeSpace;
BYTEReserved[64];
}DEVINFO,*PDEVINFO;
(2)数据项描述参见表7:
表7设备信息描述
数据项
类型
意义
备注
Version
VERSION
版本号
数据结构版本号,本结构的版本号为1.0
Manufacturer
CHAR数组
设备厂商信息
以‘\0’为结束符的ASCII字符串
Issuer
CHAR数组
发行厂商信息
以‘\0’为结束符的ASCII字符串
Label
CHAR数组
设备标签
以‘\0’为结束符的ASCII字符串
SerialNumber
CHAR数组
序列号
以‘\0’为结束符的ASCII字符串
HWVersion
VERSION
设备硬件版本
FirmwareVersion
VERSION
设备本身固件版本
AlgSymCap
ULONG
分组密码算法标识
AlgAsymCap
ULONG
非对称密码算法标识
AlgHashCap
ULONG
密码杂凑算法标识
DevAuthAlgId
ULONG
设备认证使用的分组密码算法标识
TotalSpace
ULONG
设备总空间大小
FreeSpace
ULONG
用户可用空间大小
Reserved
BYTE
保留扩展
6.4.3RSA公钥数据结构
(1)类型定义
typedefstructStruct_RSAPUBLICKEYBLOB{
ULONGAlgID;
ULONGBitLen;
BYTEModulus[MAX_RSA_MODULUS_LEN];
BYTEPublicExponent[MAX_RSA_EXPONENT_LEN];
}RSAPUBLICKEYBLOB,*PRSAPUBLICKEYBLOB;
MAX_RSA_MODULUS_LEN为算法模数的最大长度;
MAX_RSA_EXPONENT_LEN为算法指数的最大长度。
(2)数据项描述参见表8:
表8RSA公钥数据结构
数据项
类型
意义
备注
AlgID
ULONG
算法标识号
BitLen
ULONG
模数的实际位长度
必须是8的倍数
Modulus
BYTE数组
模数n=p*q
实际长度为BitLen/8字节
#defineMAX_RSA_MODULUS_LEN256
#defineMAX_RSA_EXPONENT_LEN4
PublicExponent
BYTE数组
公开密钥e
一般为00010001
6.4.4RSA私钥数据结构
(1)类型定义
typedefstructStruct_RSAPRIVATEKEYBLOB{
ULONGAlgID;
ULONGBitLen;
BYTEModulus[MAX_RSA_MODULUS_LEN];
BYTEPublicExponent[MAX_RSA_EXPONENT_LEN];
BYTEPrivateExponent[MAX_RSA_MODULUS_LEN];
BYTEPrime1[MAX_RSA_MODULUS_LEN/2];
BYTEPrime2[MAX_RSA_MODULUS_LEN/2];
BYTEPrime1Exponent[MAX_RSA_MODULUS_LEN/2];
BYTEPrime2Exponent[MAX_RSA_MODULUS_LEN/2];
BYTECoefficient[MAX_RSA_MODULUS_LEN/2];
}RSAPRIVATEKEYBLOB,*PRSAPRIVATEKEYBLOB;
MAX_RSA_MODULUS_LEN为RSA算法模数的最大长度;
(2)数据项描述参见表9:
表9RSA私钥数据结构
数据项
类型
意义
备注
AlgID
ULONG
算法标识号
BitLen
ULONG
模数的实际位长度
必须是8的倍数
Modulus
BYTE数组
模数n=p*q
实际长度为BitLen/8字节
PublicExponent
BYTE数组
公开密钥e
一般为00010001
PrivateExponent
BYTE数组
私有密钥d
实际长度为BitLen/8字节
Prime1
BYTE数组
素数p
实际长度为BitLen/16字节
Prime2
BYTE数组
素数q
实际长度为BitLen/16字节
Prime1Exponent
BYTE数组
dmod(p-1)的值
实际长度为BitLen/16字节
Prime2Exponent
BYTE数组
dmod(q-1)的值
实际长度为BitLen/16字节
Coefficient
BYTE数组
q模p的乘法逆元
实际长度为BitLen/16字节
6.4.5ECC公钥数据结构
(1)类型定义
typedefstructStruct_ECC
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 智能IC卡及智能密码钥匙密码应用接口规范国密封皮 最终版 智能 IC 密码 钥匙 应用 接口 规范 密封 0223 修订