最终版《智能ic卡及智能密码钥匙密码应用接口规范国密.docx
- 文档编号:28565371
- 上传时间:2023-07-19
- 格式:DOCX
- 页数:88
- 大小:236.77KB
最终版《智能ic卡及智能密码钥匙密码应用接口规范国密.docx
《最终版《智能ic卡及智能密码钥匙密码应用接口规范国密.docx》由会员分享,可在线阅读,更多相关《最终版《智能ic卡及智能密码钥匙密码应用接口规范国密.docx(88页珍藏版)》请在冰豆网上搜索。
最终版《智能ic卡及智能密码钥匙密码应用接口规范国密
智能IC卡及智能密码钥匙
密码应用接口规范
SmartCardandSmartToken
CryptographyApplicationInterfaceSpecification
国家密码管理局
2010年4月
目次
前言IV
前言
本规范涉及的密码算法按照国家密码管理部门的要求使用。
本规范的附录A为规范性附录。
本规范由国家密码管理局提出并归口。
本规范起草单位:
北京海泰方圆科技、北京握奇智能科技、北京大明五洲科技、恒宝股份、深圳市明华澳汉科技股份、武汉天喻信息产业股份、北京飞天诚信科技、华翔腾数码科技。
本规范主要起草人:
石玉平、柳增寿、胡俊义、管延军、项莉、雷继业、胡鹏、赵再兴、段晓毅、刘玉峰、刘伟丰、陈吉、何永福、李高锋、黄东杰、王建承、汪雪林、赵李明。
本规范责任专家:
刘平、郭宝安。
智能IC卡及智能密码钥匙密码应用接口规范
1范围
2
本规范规定了基于PKI密码体制的智能IC卡及智能密码钥匙密码应用接口,描述了密码应用接口的函数、数据类型、参数的定义和设备的安全要求。
本规范适用于智能IC卡及智能密码钥匙产品的研制、使用和检测。
3规范性引用文件
4
下列文件中的条款通过本规范的引用而成为本规范的条款。
凡是注日期的引用文件,其随后所有的修改单(不包括勘误的内容)或修订版均不适用于本规范,然而,鼓励根据本规范达成协议的各方研究是否可使用这些的最新版本。
凡是不注日期的引用文件,其最新版本适用于本规范。
GB/TAAAAA公钥密码基础设施应用技术体系SM2算法使用规范
5术语和定义
6
以下术语和定义适用于本规范。
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比特。
7缩略语
8
下列缩略语适用于本规范:
API应用编程接口(ApplicationProgrammingInterface)
PKI公钥基础设施(PublicKeyInfrastructure)
PKCS#1公钥密码使用标准系列规范中的第1部分,定义RSA公开密钥算法加密和签名机制(thePublic-KeyCryptographyStandardPart1)
PKCS#5公钥密码使用标准系列规范中的第5部分,描述一种利用从口令派生出来的安全密钥加密字符串的方法(thePublic-KeyCryptographyStandardPart5)
PIN个人身份识别码(PersonalIdentificationNumber)
MAC消息鉴别码(MessageAuthenticationCode)
ECC椭圆曲线密码算法(EllipticCurveCryptography)
9结构模型
10
10.1层次关系
10.2
智能IC卡及智能密码钥匙密码应用接口位于智能IC卡及智能密码钥匙应用程序与设备之间,如图1所示。
图1接口在应用层次关系中的位置
10.3设备的应用结构
10.4
一个设备中存在设备认证密钥和多个应用,应用之间相互独立。
设备的逻辑结构如图2所示。
图2设备逻辑结构
应用由管理员PIN、用户PIN、文件和容器组成,可以存在多个文件和多个容器。
每个应用维护各自的与管理员PIN和用户PIN相关的权限状态。
应用的逻辑结构如图3所示。
图3应用逻辑结构图
容器中存放加密密钥对、签名密钥对和会话密钥。
其中加密密钥对用于保护会话密钥,签名密钥对用于数字签名和验证,会话密钥用于数据加解密和MAC运算。
其中,签名密钥对由内部产生,加密密钥对由外部产生并安全导入,会话密钥可由内部产生或者由外部产生并安全导入。
11数据类型定义
12
12.1算法标识
12.2
12.2.1分组密码算法标识
12.2.2
分组密码算法标识包含密码算法的类型和加密模式。
分组密码算法标识的编码规则为:
从低位到高位,第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运算
12.2.3非对称密码算法标识
12.2.4
非对称密码算法标识仅定义了密码算法的类型,在使用非对称算法进行数字签名运算时,可将非对称密码算法标识符与密码杂凑算法标识符进行“或”运算后使用,如“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
椭圆曲线加密算法
12.2.5密码杂凑算法标识
12.2.6
密码杂凑算法标识符可以在进行密码杂凑运算或计算MAC时应用,也可以与非对称密码算法标识符进行“或”运算后使用,表示签名运算前对数据进行密码杂凑运算的算法类型。
密码杂凑算法标识的编码规则为:
从低位到高位,第0位到第7位表示密码杂凑算法,第8位到第31位为0,密码杂凑算法的标识如表3所示。
表3密码杂凑算法标识表
标签
标识符
描述
SGD_SM3
0x00000001
SM3密码杂凑算法
SGD_SHA1
0x00000002
SHA1密码杂凑算法
SGD_SHA256
0x00000004
SHA256密码杂凑算法
12.3基本数据类型
12.4
本规范中的字节数组均为高位字节在前(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
12.5常量定义
12.6
数据常量标识定义了在规范中用到的常量的取值。
数据常量标识的定义如表5所示。
表5常量定义
常量名
取值
描述
TRUE
0x00000001
布尔值为真
FALSE
0x00000000
布尔值为假
DEVAPI
__stdcall
__stdcall函数调用方式
ADMIN_TYPE
0
管理员PIN类型
USER_TYPE
1
用户PIN类型
12.7复合数据类型
12.8
12.8.1版本
12.8.2
(1)类型定义
typedefstructStruct_Version{
BYTEmajor;
BYTEminor;
}VERSION;
(2)数据项描述参见表6:
表6版本定义
数据项
类型
意义
备注
major
BYTE
主版本号
主版本号和次版本号以“.”分隔,例如Version1.0,主版本号为1,次版本号为0;Version2.10,主版本号为2,次版本号为10。
minor
BYTE
次版本号
12.8.3设备信息
12.8.4
(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
保留扩展
12.8.5RSA公钥数据结构
12.8.6
(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
12.8.7RSA私钥数据结构
12.8.8
(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字节
12.8.9ECC公钥数据结构
12.8.10
(1)类型定义
typedefstructStruct_ECCPUBLICKEYBLOB{
ULONGBitLen;
BYTEXCoordinate[ECC_MAX_XCOORDINATE_BITS_LEN/8];
BYTEYCoordinate[ECC_MAX_YCOORDINATE_BITS_LEN/8];
}ECCPUBLICKEYBLOB,*PECCPUBLICKEYBLOB;
ECC_MAX_XCOORDINATE_LEN为ECC算法X坐标的最大长度;
ECC_MAX_YCOORDINATE_LEN为ECC算法Y坐标的最大长度。
(2)数据项描述参见表10:
表10ECC公钥数据结构
数据项
类型
意义
备注
BitLen
ULONG
模数的实际位长度
必须是8的倍数
XCoordinate
BYTE数组
曲线上点的X坐标
有限域上的整数
#defineECC_MAX_XCOORDINATE_BITS_LEN512
YCoordinate
BYTE数组
曲线上点的Y坐标
有限域上的整数
#defineECC_MAX_YCOORDINATE_BITS_LEN512
12.8.11ECC私钥数据结构
12.8.12
(1)类型定义
typedefstructStruct_ECCPRIVATEKEYBLOB{
ULONGBitLen;
BYTEPrivateKey[ECC_MAX_MODULUS_BITS_LEN/8];
}ECCPRIVATEKEYBLOB,*PECCPRIVATEKEYBLOB;
ECC_MAX_MODULUS_BITS_LEN为ECC算法模数的最大长度。
(2)数据项描述参见表11:
表11ECC私钥数据结构
数据项
类型
意义
备注
BitLen
ULONG
模数的实际位长度
必须是8的倍数
PrivateKey
BYTE数组
私有密钥
有限域上的整数
#defineECC_MAX_MODULUS_BITS_LEN512
12.8.13ECC密文数据结构
12.8.14
(1)类型定义
(2)
typedefstructStruct_ECCCIPHERBLOB{
BYTEXCoordinate[ECC_MAX_XCOORDINATE_BITS_LEN/8];
BYTEYCoordinate[ECC_MAX_XCOORDINATE_BITS_LEN/8];
BYTEHASH[32];
ULONGCipherLen;
BYTECipher[1];
}ECCCIPHERBLOB,*PECCCIPHERBLOB;
(2)数据项描述参见表12:
表12ECC密文数据结构
数据项
类型
意义
备注
XCoordinate
BYTE数组
与y组成椭圆曲线上的点(x,y)
YCoordinate
BYTE数组
与x组成椭圆曲线上的点(x,y)
HASH
BYTE数组
明文的杂凑值
CipherLen
ULONG
密文数据长度
Cipher
BYTE数组
密文数据
实际长度为CipherLen
12.8.15ECC签名数据结构
12.8.16
(1)类型定义
typedefstructStruct_ECCSIGNATUREBLOB{
BYTEr[ECC_MAX_XCOORDINATE_BITS_LEN/8];
BYTEs[ECC_MAX_XCOORDINATE_BITS_LEN/8];
}ECCSIGNATUREBLOB,*PECCSIGNATUREBLOB;
ECC_MAX_MODULUS_BITS_LEN为ECC算法模数的最大长度;
(2)数据项描述参见表13:
表13ECC签名数据结构
数据项
类型
意义
备注
r
BYTE数组
签名结果的r部分
s
BYTE数组
签名结果的s部分
12.8.17分组密码参数
12.8.18
(1)类型定义
typedefstructStruct_BLOCKCIPHERPARAM{
BYTEIV[MAX_IV_LEN];
ULONGIVLen;
ULONGPaddingType;
ULONGFeedBitLen;
}BLOCKCIPHERPARAM,*PBLOCKCIPHERPARAM;
(2)数据项描述参见表14:
表14分组密码参数
数据项
类型
意义
备注
IV
BYTE数组
初始向量,MAX_IV_
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 最终版 智能 ic 密码 钥匙 应用 接口 规范