首页 > 通信行业标准(YD) > YD/T 3207-2016 多应用 elD 载体商用密码算法接口技术要求
YD/T 3207-2016

基本信息

标准号: YD/T 3207-2016

中文名称:多应用 elD 载体商用密码算法接口技术要求

标准类别:通信行业标准(YD)

标准状态:现行

出版语种:简体中文

下载格式:.zip .pdf

相关标签: 应用 载体 商用 密码 算法 接口技术

标准分类号

关联标准

出版信息

相关单位信息

标准简介

YD/T 3207-2016.Technical requirements for algorithm API of multi application eID equipment.
1范围
YD/T 3207规定了集成eID应用的多应用安全载体(简称多应用eID载体)的商用密码算法接口。
YD/T 3207适用于包括Java卡在内的各种多应用卡。
2规范性引用文件
下列文件对于本文件的应用是必不可少的。凡是注8期的引用文件,仅注8期的版本适用于本文件。凡是不注日期的引用文件,其最新版本(包括所有的修改单)适用于本文件。
GM/T 0003.1-2012 SM2椭圆曲线公钥密码算法
GM/T 0009-2012 SM2密码算法使用规范
GMT 0004-2012 SM3密码杂凑算法
GMT 0002-2012 SM4分组密码算法
GB/T 25069-2010 信息安全术语
3术语、定义和缩略语
GB/T 25069-2010 界定的以及下列术语和定义适用于本文件。
3.1 术语和定义
3.1.1
多应用安全载体 Multi-Application Equipment
集成了多应用软件平台,支持用户应用动态下载、安装、运行的安全载体。
3.1.2
多应用eID载体 Multi-Application elD Equipment
集成了eID应用的多应用安全载体。
3.1.3
命令 Command
终端向载体发出的一条信息,该信息启动一个操作或请求一个应答。

标准图片预览






标准内容

ICS35.240.15
中华人民共和国通信行业标准Www.bzxZ.net
YD/T32072016
多应用eID载体商用密码算法
接口技术要求
Technical requirements for algorithm API of multi-application elDequipment
2016-10-22发布
中华人民共和国工业和信息化部2017-01-01实施
1范围
2规范性引用文件
3术语、定义和缩略语。
3.1术语和定义。
3.2缩略语...
多应用eID载体总体框架,
商用密码算法调用流程..
java技术多应用eID载体商用密码算法调用接口6
6.1简介
6.2包信息
6.3算法接口层次。
6.4类描述
附录A(规范性附录)Java技术多应用eID载体商用密码算法调用接口定义YD/T3207—2016
YD/T3207-2016
本标准依据GB/T1.1一2009给出的规则起草。请注意本文件的某些内容可能涉及专利,本文件的发布机构不承担识别这些专利的责任。本标准由中国通信标准化协会提出并归口。本标准起草单位:北京中电华大电子设计有限责任公司、公安部第三研究所、北京邮电大学、中国信息通信研究院、中国科学院软件研究所、国防科学技术大学计算机学院。本标准主要起草人:兰天、吴秉男、邹翔、陈兵、杨明慧、背怡心、落红卫、柳扬、许普、
高志刚、刘东等。
YD/T32072016
公民网络电子身份标识eID,是由公安管理机关颁发的,用于公民在网上验证其真实身份的电子信息。公民网络电子身份标识eID使用国密商用密码算法(SM系列算法)实现证书的发放及应用。eID在加载到多应用安全载体(如java卡)时,需要安全载体上的多应用平台提供商用密码算法的调用接口。目前安全载体的相关标准未定义商用密码算法接口,造成eID商用密码算法接口不一致、在不同安全载体上无法兼容使用的问题。为此,编制《多应用eID载体商用密码算法接口技术要求》,规范商用密码算法的算法标识、接口定义,保障eID应用的统一性和兼容性。1范围
多应用eID载体商用密码算法接口技术要求YD/T3207—2016
本标准规定了集成eID应用的多应用安全载体(简称多应用eID载体)的商用密码算法接口。本标准适用于包括Java卡在内的各种多应用卡。2规范性引用文件
下列文件对于本文件的应用是必不可少的。凡是注日期的引用文件,仅注日期的版本适用于本文件。凡是不注日期的引用文件,其最新版本(包括所有的修改单)适用于本文件。GM/T0003.1—2012SM2椭圆曲线公钥密码算法GM/T0009—2012SM2密码算法使用规范GM/T0004—2012SM3密码杂凑算法GM/T0002—2012SM4分组密码算法信息安全术语
GB/T25069—2010
3术语、定义和缩略语
GB/T25069—2010界定的以及下列术语和定义适用于本文件。3.1术语和定义
多应用安全载体Multi-ApplicationEquipment集成了多应用软件平台,支持用户应用动态下载、安装、运行的安全载体。3.1.2
多应用elD载体Multi-ApplicationelDEquipment集成了eID应用的多应用安全载体。3.1.3
命令Command
终端向载体发出的一条信息,该信息启动一个操作或请求一个应答。YD/T3207—2016
响应Response
载体处理完收到的命令报文后回送给终端的报文。3.1.5
报文Message
由终端向载体或载体向终端发出的,不含传输控制字符的字节串。3.1.6
SM2Algorithm
SM2算法
一种国家商用密码非对称密码算法,密钥长度为256比特。3.1.7
SM3算法SM3Algorithm
一种国家商用密码密码杂凑算法,输出长度为256比特。3.1.8
SM4算法SM4Algorithm
种国家商用密码分组加密算法,分组长度为128比特,密钥长度为128比特3.2缩略语
下列缩略语适用于本文件。为了便于使用,以下重复列出了其他标准中的某些缩略语。elD
CCEAL4+
ElectronicIdentity
CommonCriteriaEAL4+CertificationPersonalIdentificationNumber4:多应用elD载体总体框架
网络电子身份标识
通用评估准则评估担保等级4
个人识别码
多应用eID载体由硬件层、驱动层、片上操作系统层、应用层构成,如图1所示。应用层
染作系统层
驱动层
硬件员
eID应用
卡上应用2
多应用安全管理环境
其他系统调用接口
密码算法调用接口
片上操作系统内核
接口驱动
芯片硬件
密码算法库
多应用eID安全载体框架
其中硬件层是芯片,包括CPU、密码算法协处理、存储器等。驱动层包括各芯片硬件的接口驱动、以及和密码算法协处理器配套的算法库。YD/T3207—2016
片上操作系统层用于实现卡上多应用的管理和调度,包括片上操作系统内核,系统调用接口,以及商用密码算法调用接口。
应用层包括多应用管理环境和各种用户应用。多应用管理环境是一个特定功能的应用程序,用于实现多应用的安全管理和安全隔离:用户应用实现各种业务应用功能。eID应用是一个用户应用,通过OS层的商用密码算法接口实现商用密码算法的调用。5商用密码算法调用流程
多应用eID载体,eID调用国密算法的流程如图2所示。多应用片上操作系统
调用eID的客户端软件
安全载体上的eID应用
1.调用eID应用(使用商用密码算法)+处理eID调用命
调用商用密码
商密算法API
,调用商用密码算法AP
算法处理
,返回eID应用调用结果
流程结束
3.返回商用密码算法调用结果
图2多应用安全载体商用密码算法调用流程eID应用调用商用密码算法的流程如下:1)调用eID应用接口:客户端软件通过命令接口调用载体上eID应用。安全载体上eID应用收到调用命令后,根据命令进行处理。2)调用商用密码算法API:如果该命令的处理需要使用商用密码算法,通过载体操作系统的商用密码算法API进行调用。
3)返回算法调用结果:商用密码算法API被调用后,进行算法处理并向载体上的eID应用返回算法处理结果。
4)返回eID应用调用结果:载体上的eID应用处理算法结果后,向eID应用客户端返回调用结果,流程结束。
YD/T3207—2016
6java技术多应用elD载体商用密码算法调用接口6.1简介
多应用eID载体中的多应用环境应该提供算法调用的API接口,以便于安全载体上的eID应用进行调用。本章描述了使用Java技术的多应用eID载体中,商用密码算法的算法标识和API定义,使用商用密码算法的Java应用可以调用这些API以达到对商用密码算法的使用,其中包括签名算法、杂凑算法、加解密算法。
商用密码算法中的密钥对象需通过GMKeyBuilder.buildKey方法创建密钥实例,然后通过setXXX等方法设置密钥对象所使用的密钥值,签名算法、加解密算法将使用这些密钥对象。对称密钥对象包括:SM4Key,非对称密钥对象包括:SM2PrivateKey、SM2PublicKey。签名与验证算法是通过GMSignature类实现的,在使用签名与验证算法前需要通过GMSignature.getInstance方法获得相应算法的实例对象,再配合相应的密钥对象以实现生成签名数据与验证签名数据的目的。
数据加解密算法是通过GMCipher类实现的,在使用数据加解密算法前需要通过GMCipher.getlnstance方法获得相应算法的实例对象,再配合相应的密钥对象以实现对数据加密或解密的目的。
数据杂凑算法是通过GMMessageDigest类实现的,在使用数据杂凑算法前需要通过GMMessageDigest.getInstance方法获得SM3算法的实例对象,然后才可对数据进行杂计算。商用密码算法API中定义了GMKeyPair类,用于在卡内生成国密算法中的非对称密钥(SM2)。6.2包信息
java技术多应用eID载体商用密码算法调用接口被封装为多个类,这些类整合到一个Java包中,包基本信息见表1。
表1包信息
主版本号
次版本号
6.3算法接口层次
6.3.1类层次
com.guomi
0xA0:0x0:0x0:0x0:0x0:0x53:0x43:0x43:0x41:0x011
java技术多应用eID载体商用密码算法调用接口被封装为多个类,每个类实现具体特定的算法功能,类层次定义如下:
class java.lang.Object
class com.guomi.GMCipher
classcom.guomi.GMKeyBuilden
classcom.guomi.GMKeyPair
class com.guomi.GMMessageDigestclass com.guomi.GMSignature
class com.guomi.GMCipherExtendclasscom.guomi.GMSM2KeyExchange6.3.2接口层次
YD/T3207—2016
java技术多应用elD载体商用密码算法调用接口的函数方法被封装为接口(interface),接口层次定义如下:
interfacejavacard.security.Key-interface javacard.security.SecretKeyinterfacecom.guomi.SM4Key
interface javacard.security.PrivateKeyinterfacecom.guomi.SM2PrivateKeyinterfacejavacard.security.PublicKeyinterfacecom.guomi.SM2PublicKeyinterfacecom.guomi.SM2Key
interfacecom.guomi.SM2PrivateKeyinterface com.guomi.SM2PublicKey6.4类描述
SM4Key
SM4Key包含一个16字节的密钥,用于SM4算法的加解密运算。一旦密钥数据被设置,该密钥对象就将处于初始化完成状态,该密钥可以被使用了。SM4Key的详细定义见附录A.1。
6.4.2SM2Key
SM2Key是非对称密钥的实现类,分为公钥和私钥,用于SM2算法的运算。SM2Key的详细定义见附录A.2。
6.4.3SM2PrivateKey
SM2PrivateKey接口用于生成数据的签名。由于SM2算法曲线方程和参数已经固定,一旦私钥数据被设置,该私钥对象就将处于初始化完成状态,该密钥可以被使用了。
SM2PrivateKey的详细定义见附录A.3。6.4.4SM2PublicKey
SM2PublicKey接口用于验证数据的签名和生成共享秘密数据。5
YD/T3207—2016
因为曲线方程和参数已经固定,因此一旦公钥数据被设置,该公钥对象就将处于初始化完成状态该公钥可以被使用。
SM2PublicKey的详细定义见附录A.4。6.4.5GMKeyPair
GMKeyPair类是一个密钥对(一个公开密钥和一个私有密钥)的容器。该类创建之后,容器中的公钥和私钥都处于未初始化状态。GMKeyPair的详细定义见附录A.5。6.4.6GMSignature
GMSignature类是密码算法签名算法的基类。密码算法签名算法的实现必须扩展这个类,并实现所有的抽象方法。
GMSignature的详细定义见附录A.6。6.4.7GMMessageDigest
GMMessageDigest类扩展自Object类,用于计算指定算法的消息杂凑。GMMessageDigest的详细定义见附录A.7。6.4.8GMKeyBuilder
GMKeyBuilder类是国密算法的密钥工厂类,通过指定参数能够创建各种国密算法的密钥对象。GMKeyBuilder的详细定义见附录A.8。6.4.9GMCipher
GMCipher类是加密算法的抽象基类。实现国密算法必须继承该类并实现所有抽象方法。非对称密钥算法使用公钥(加密)或私钥(签名)进行加密。另外,它们使用私钥(解密)或公钥(验证)解密。
GMCipher类的对象在拔卡或复位事件发生后重置到未初始化状态。当GMCipher类的对象对应的密钥失效时(遇到密钥对象相关的清除事件时),GMCipher类的对象也恢复到未初始化状态。GMCipher的详细定义见附录A.9。6.4.10GMSM2KeyExchange
GMSM2KeyExchange类是国密算法中SM2密钥交换算法类。实现国密算法中SM2密钥交换算法相关内容。
GMSM2KeyExchange的详细定义见附录A.10。6.4.11GMCipherExtend
GMCipherExtend类是国密算法扩展类,用于实现在GMCipher和GMSM2KeyExchange类中没有涉及的国密算法相关计算方法。
GMCipherExtend的详细定义见附录A.11。6
A.1SM4Key
A.1.1SM4Key定义
附录A
(规范性附录)
Java技术多应用elD载体商用密码算法调用接口定义SM4Key定义见表A.1。
表A.1SM4Key
返回值
getKey(bytekeyData,shortkf)
setKey(bytekeyData[l,shortkoff)A.1.2setKey
A.1.2.1声明
public abstractvoid setKey
bytekeyData[
shortkoff
获得密钥数据
设置密钥数据
YD/T3207—2016
)throwsCryptoException,NullPointerException,ArrayIndexOutOfBoundsException;A.1.2.2描述
本方法用于设置SM4密钥数据。输入的明文密钥数据长度为16字节。数据格式为大端并且右对齐,即最低有效位为最后那个字节的最低有效位。A.1.2.3参数
keyData
一此byte数组存放待设置的密钥数据。一密钥数据在byte数组中的起始位置。A.1.2.4返回值
A.1.2.5抛出异常
CryptoException.ILLEGAL_VALUENullPointerException
ArraylndexOutOfBoundsException一密码数据需要解密而且解密出错时抛出该异常。keyData参数为null时抛出该异常。一koff参数为负数或者超过keyData数组时抛出该异常。7
YD/T3207—2016
A.1.3getKey
A.1.3.1声明
publicabstractbytegetKey(
bytekeyData
shortkoff
)throwsCryptoException,NuliPointerException,ArraylndexOutOfBoundsException;A.1.3.2描述
本方法获得明文形式的SM4密钥数据。输出的明文密钥数据长度为16字节。数据格式为大端并且右对齐,即最低有效位为最后那个字节的最低有效位。A.1.3.3参数
keyData
一此byte数组存放返回的密钥数据。密钥数据在byte数组中的起始位置。返回值
以字节计的密钥数据的长度。
抛出异常
CryptoException.UNINITIALIZEDKEYNullPointerException
ArrayIndexOutOfBoundsExceptionA.2SM2Key
A.2.1SM2Key定义
SM2Key定义见表A.2。
一密钥对象没有正确初始化时。一keyData参数为null时。
一koff参数为负数或者超过keyData数组时。表A.2SM2Key
返回值
A.2.2getA
A.2.2.1声明
getA(bytebuffer,shortoffset)getB(bytebuffer,shortoffset)getG(bytebuffer, short offset)public short getA(
bytebufferl
shortoffset
获得曲线参数A
获得曲线参数B
获得曲线参数G
小提示:此标准内容仅展示完整标准里的部分截取内容,若需要完整标准请到上方自行免费下载完整标准文档。