首页 > 国家标准(GB) > GB∕T 25061-2020 信息安全技术 XML数字签名语法与处理规范
GB∕T 25061-2020

基本信息

标准号: GB∕T 25061-2020

中文名称:信息安全技术 XML数字签名语法与处理规范

标准类别:国家标准(GB)

标准状态:现行

出版语种:简体中文

下载格式:.rar .pdf

下载大小:2030KB

相关标签: 信息安全 技术 数字签名 语法 处理 规范

标准分类号

关联标准

出版信息

相关单位信息

标准简介

GB∕T 25061-2020 信息安全技术 XML数字签名语法与处理规范 GB∕T25061-2020 标准压缩包解压密码:www.bzxz.net

标准图片预览






标准内容

ICS35.040
中华人民共和国国家标准
GB/T25061—2020
代替GB/T25061—2010
信息安全技术
XML数字签名语法与处理规范
Information securitytechnology-XML digital signature syntax and processing specification2020-11-19发布
国家市场监督管理总局
国家标准化管理委员会
2021-06-01实施
GB/T25061—2020
规范性引用文件
3术语、定义和缩略语bZxz.net
3.1术语和定义
3.2符号和缩略语
4XML签名概述
定义文件用法说明
处理规则
6签名语法
Signature元素
SignatureValue元素
SignedInfo元素
KeyInfo元素
Object元素·
附加的签名语法·
Manifest元素
7.3SignatureProperties元素
7.4Signature元素中的处理指令7.5Signature元素中的注释
8证实方法
附录A(资料性附录)XML数字签名实例目
附录B(规范性附录)XML数字签名文档类型定义附录C(规范性附录)XML数字签名模式定义附录D(资料性附录)
参考文献
算法标识符
rKaeerKAca-
本标准按照GB/T1.1—2009给出的规则起草。本标准代替GB/T25061—2010《信息安全技术与GB/T25061一2010相比,主要技术变化如下:一增加了新的引用文件(见第2章);GB/T25061—2020
公钥基础设施XML数字签名语法与处理规范》,一在KeyInfo中,增加了SM2KeyValue类型定义,表示SM2椭圆曲线密码算法密钥值(见6.5.3.3);
一在KeyInfo元素中,增加了DEREncodedKeyValue和KeyInfoReference子元素,并给出模式定义(见6.5.6和6.5.7);
一增加了xmldsigl1-schema.xsd和xmldsigl-schema.xsd的定义(见附录C中C.2和C.3);增加了密码杂凑算法SM3.消息鉴别算法HMAC-SM3.签名算法SM2-SM3的定义(见附录D中D.3.2、D.4.3和D.5.3);
增加了XML规范化1.1算法和独占XML规范化1.0算法(见附录D中D.6.3和D.6.4)。请注意本文件的某些内容可能涉及专利。本文件的发布机构不承担识别这些专利的责任本标准由全国信息安全标准化技术委员会(SAC/TC260)提出并归口。本标准起草单位:北京信安世纪科技股份有限公司、格尔软件股份有限公司、数安时代科技股份有限公司、国家密码管理局商用密码检测中心。本标准主要起草人:汪宗斌、刘婷、郑强、张永强、吕春梅、焦靖伟、史晓峰本标准所代替标准的历次版本发布情况为:GB/T25061—2010.
nKaeerKAca-
1范围
信息安全技术
XML数字签名语法与处理规范
GB/T25061—2020
本标准规定了创建和表示XML数字签名的处理规则、签名语法、附加的签名语法和证实方法。本标准适用于制作和处理XML数字签名的应用程序、系统或服务。2规范性引用文件
下列文件对于本文件的应用是必不可少的。凡是注日期的引用文件,仅注日期的版本适用于本文件。凡是不注日期的引用文件,其最新版本(包括所有的修改单)适用于本文件。GB/T1988信息技术信息交换用七位编码字符集信息技术通用多八位编码字符集(UCS)GB/T13000
GB/T16264.8-2005信息技术开放系统互连目录第8部分:公钥和属性证书框架GB/T18793—2002信息技术可扩展置标语言(XML)1.0GB/T20518—2018信息安全技术公钥基础设施数字证书格式GB/T35276—2017信息安全技术SM2密码算法使用规范RFC2045基于多用途互联网邮件扩展第1部分:互联网消息体格式(MultipurposeInternetMail Extensions(MIME)Part One:Format of Internet MessageBodies)RFC3279互联网X.509公钥基础设施的算法和标识符证书和证书撤销列表轮廊[Algorithmsand Identifiers forthe InternetX.5o9 PublicKey Infrastructure Certificate and Certificate RevocationList (CRL)Profile
RFC3986统一资源标识符(URI):通用语法[UniformResourceIdentifier(URI):GenericSyntax]
RFC4514轻型目录访问协议(LDAP):甄别名的字符串表示[LightweightDirectoryAccessProtocol (LDAP): String Representation of Distinguished NamesRFC5480椭圆曲线密码主体公钥信息(EllipticCurveCryptographySubjectPublicKeyInformation)
3术语、定义和缩略语
3.1术语和定义
GB/T18793—2002界定的以及下列术语和定义适用于本文件。3.1.1
分离签名detached signature
签名于Signature元素以外的内容上,签名和数据对象位于不同XML文档中的XML签名文档的组织形式。
rrKaerkAca-
GB/T25061—2020
envelopingsignature
封内签名
签名于Signature元素中的Object元素之上,以Signature为父元素,将原始文档包含在Signature中的XML签名文档的组织形式。
封皮签名
enveloped signature
签名于整个XML内容之上,然后将Signature作为子元素插人到原始文档中的XML签名文档组织形式。
签名Signature
签名者使用私钥对待签名数据的杂凑值做密码运算得到的结果。注:XML签名有三种描述方式:分离签名、封内签名和封皮签名。3.1.5
签名应用程序
signatureapplication
实现了Signature元素类型的结构及其子结构的应用程序。3.1.6
transform
把一个数据从原始状态转化成导出状态的处理,示例:XML规范化,XPath和XSLT变换等2符号和缩略语
下列符号和缩略语适用于本文件。?:前一符号出现0次或1次
十:前一符号出现1次或多次
*:前一符号出现0次、1次或多次CA:证书认证机构(CertificateAuthority)CRL:证书撤销列表(CertificateRevocationList)HTTP:超文本传输协议(HypertextTransferProtocol)MIME:基于多用途互联网邮件扩展(MultipurposeInternetMailExtensions)OID:对象标识符(ObjectIdentifier)PKI:公钥基础设施(PublicKeyInfrastructure)URI:统一资源标识符(UniversalResourceIdentifier)XML:可扩展置标语言(ExtensibleMarkupLanguage)XPath:XML路径(XMLPath)
XSL:可扩展样式表语言(ExtensibleStylesheetLanguage)XSLT:XSL变换(Extensible Stylesheet LanguageTransformations)4XML签名概述
4.1概述
本章描述了XML数字签名的结构,第5章给出了处理规则、第6章签名语法和第7章附加的签名rKaeerKAca-
语法,XML格式要求见GB/T18793一2002GB/T25061—2020
XML签名可通过间接方式作用于任意数据对象,处理的步骤是先对数据对象进行杂凑处理,处理后的结果放置在一个元素中,再对得到的元素进行杂凑处理并且通过密码学方法进行签名。XML数字签名使用Signature元素来表示,其结构如下:



()?

)+


()?
() *
/Signature
签名是通过URI关联数据对象的。在XML文档内部,签名通过XML片段标识符关联本地的数据对象,本地数据可包含在封内签名中,也可包含在封皮签名中。分离签名作用于外部网络资源或者作用于以弟元素形式出现的同一个XML文档的本地数据对象,因此这种签名既不是封内签名也不是封皮签名。一个XML文档中签名元素(以及它的ID和属性值和名字)可与其他元素同时存在,也可和其他元素结合在一起,命名时应注意避免违反XML标识的唯一性。本标准凡涉及密码算法相关内容,按照国家有关法规实施。签名实例参见附录A。
4.2定义文件用法说明
本标准附录B为数字签名文档类型定义,附录C为XML数字签名模式定义在应用本标准时,应将附录B和附录C的文件存放到应用可访问的位置,例如:假定存放在IP地址为127.0.0.1的服务器上,各个文件的路径为:http://127.0.0.1/2001/XMLSchema.dtd、http://127.0.0.1/2000/09/xmldsig-core-schema.xsd,http://127.0.0.1/2009/xmldsig11-schema.xsd,http://127.0.0.1/TR/xmldsig-core1/xmldsig1-schema.xsd,应用可根据实际情况调整存放位置,可使用附录C中C.3定义的方法来集合这些定义。本标准提及的上述地址(\127.0.0.1”)仅是为了明确一个特定空间,实际应用中可视情况调整。处理规则
5.1生成
5.1.1Reference生成
对于每个要签名的数据对象,Reference元素生成的步骤如下:a)
根据应用程序的要求,对数据对象进行变换;rKaeerKAca-
GB/T25061—2020
b)计算变换后的数据对象的杂凑值;c)
创建一个Reference元素,包括一个可选的数据对象的标识,可选的变换元素,密码杂凑算法和杂凑值。
5.1.2Signature生成
Signature元素生成的步骤如下:a)
以SignatureMethod指定的签名算法,CanonicalizationMethod指定的规范化算法和引用生成的Reference为内容,创建SignedInfo元素。b)用SingedInfo中指定的规范化算法进行处理,并用SignedInfo指定的签名算法来计算SignedInfo的签名值。
构建包括SignedInfo、Object、Keylnfo和SignatureValue的Signature元素。Signature元素e
中各个子元素的含义和具体构造方法见第6章。5.2确认
5.2.1概述
确认应包括:
引用确认,验证SignedInfo中每个Reference包含的杂凑值;a)
b)签名确认,使用密码方法对计算SignedInfo得到的签名进行签名确认。5.2.2Reference确认
引用确认的步骤如下:
根据SignedInfo中CanonicalizationMethod指定的规范化方法来处理SignedInfo元素;a
b)对于SignedInfo中的每个Reference:1)获得进行杂凌处理的数据对象;2)使用Reference中指定的密码杂凑算法对结果数据对象计算出杂凑值;将上一步生成的杂凑值和SignedInfo中的DigestValue元素的值进行比较,如果有不同,3)
那么确认失败。
注:SignedInfo在步骤a)进行了规范化,应用程序宜确保CanonicalizationMethod不会产生错误5.2.3Signature确认
Signature确认应比较以CanonicalizationMethod指定的规范化方法和SignatureMethod指定的签名方法处理SignedInfo的结果是否与SignatureValue中的值是否匹配。Signature确认的步骤如下:
a)从KeyInfo或者外部源获得密钥信息;b)
使用CanonicalizationMethod来获得SignatureMethod的规范化形式,然后用得出的结果和上面得到的密钥信息对Signedlnfo元素进行签名值验证。6签名语法
6.1概述
模式定义
签名语法通过XML模式定义来定义,所有的XML模式定义使用下面的XML前导说明部分、文4
rrKaerKAca-
件类型声明和内部实体。
模式定义:
GB/T25061—2020
注:上一行为XML声明,该行中的<?xml是一个整体,表示是XML文件的开始,而本标准3.2中定义的\\则表示元素的个数,请注意区分
PUBLIC\-//W3C//DTDXMLSchema200102//EN\\http://127.0.0.1/2001/XMLSchema.dtd'xmlns:dsCDATA#FIXED\http://127.0.0.1/2000/09/xmldsig#\>

xmlns-\http://127.0.0.1/2001/XMLSchema\xmlns:ds=\http://127.0.0.1/2000/09/xmldsig#\targetNamespace=\http://127.0.0.1/2000/09/xmldsig#\version=\o.1\elementFormDefault-\qualified\文档类型定义:

.ANY\>


扩展标记使用dsigll:名字空间。新的模式定义如下:?xmlversion=\l.o\encoding=\utf-8\?>schemaxmlns=\http://127.0.0.1/2001/XMLSchema\xmlns:ds=\http://127.0.0.1/2000/09/xmldsig#\xmlns:dsig11=\http://127.0.0.1/2009/xmldsig11#\targetNamespace=\http://127.0.0.1/2009/xmldsig11#\version-\0.1\elementFormDefault=\qualified\>6.1.2ds:CryptoBinary简单类型定义ds:CryptoBinary简单类型,把XML中任意长度的整数表示成字节字符串。具体方法是先把整数值转化成高位在前格式的位串,在位串前面补0使得位数是8的整数倍,去掉开头为零字节(连续8个0的位串),然后对这个字节串进行base64编码,base64编码遵循RFC2045。注:base64Binary与CryptoBinary类型相同,定义一个新的类型主要是兼容不同的使用习惯。模式定义:
5
KaeerKAca-
GB/T25061—2020


2Signature元素
Signature元素是XML签名的根元素,Signature元素的组织应遵循下面说明的模式。模式定义:
sequence>
elementref-\ds:SignedInfo\/>elementref=\ds:Keylnfo\minOccurs=\o\/>

文档类型定义:
<!ATTLISTSignature
xmlnsCDATA#FIXEDhttp://127.0.0.1/2000/09/xmldsig#Id
SignatureValue元素
#IMPLIED
SignatureValue元素包含了数字签名的具体值,通常使用base64进行编码。当给出两个SignatureMethod算法时,一个是应实现的,另一个是可选实现的,用户可使用自己定义的算法。注:封皮签名在计算SignatureValue时不包含其自身。模式定义:

/extension>


文档类型定义:
<!ELEMENTSignatureValue(#PCDATA)!ATTLISTSignatureValue
#IMPLIED>
rKaeerKAca-
6.4SignedInfo元素
6.4.1概述
GB/T25061—2020
SignedInfo的结构包括规范化算法、签名算法和一个或者多个引用。SignedInfo元素可包含一个可选的ID属性,供其他签名或者对象引用。SignedInfo不包括显式的签名或杂凑属性(例如处理时间、加密设备序列号等),如果应用程序需要将属性与签名或杂凑相关联,则可在Object元素内的SignatureProperties元素中包含此类信息。模式定义:
elementname-\SignedInfo\type-\ds:SignedInfoType\/>sequence>


文档类型定义:
<!ATTLISTSignedInfo
#IMPLIED>
6.4.2CanonicalizationMethod元素SzC
CanonicalizationMethod是SignedInfo元素中用于指定规范化算法的必要元素,指明签名处理之前进行规范化处理的算法,CanonicalizationMethod元素使用算法标识符和实现需求中给出的算法。应用实现应支持必要的规范化算法。可选用需要的规范化算法,若不明确指定,缺省的规范化算法是CanonicalXML。对SignedInfo元素的呈现与规范化算法本身有关。下面的步骤适用于处理XML节点的算法:基于XML的规范化实现,实现带有一个XPath节点集合,节点集合源于包含SignedInfo元素的文档,并指明当前的SignedInfo.后代、属性、SignedInfo名字空间节点和它的后代元素。模式定义:



文档类型定义:
K! ATTLIST SignatureMethod
AlgorithmCDATA#REQUIRED>
6.4.4Reference元素
6.4.4.1概述
Reference元素可出现一次或者多次,用来指明密码杂凑算法、杂凑值、签名对象的标识符、签名对象的类型和进行杂凑处理前的一个变换列表。标识(URI)和变换描述了如何对内容进行杂凑处理Type属性指明如何处理引用的数据。可选的ID属性允许Reference引用其他的内容模式定义:

elementref=\ds:DigestValue\/>
rKaeerKAca-
文档类型定义:
<!ELEMENTReference(Transforms?DigestMethod,DigestValue)#IMPLIED
CDATA#IMPLIED
CDATA#IMPLIED
6.4.4.2URI属性
GB/T25061—2020
URI属性使用URI引用来标识一个数据对象,URI和XML均使用GB/T13000定义的字符集。但URI引用中禁止使用除#,%,L,]外RFC3986中列出的所有非GB/T1988字符和保留字等特定字符。禁止使用的字符应通过下面的方法进行转义:a)每个禁止字符按照一个或多个字节转化成GB/T13000编码;b)任何与一个禁止字符相应的字节序列使用URI的转义方法进行转义;c)用生成的字符序列代替原始的字符。XML签名的应用程序应能解析URI语法,并能够依据HTTP标准来解析URI引用、理解协议的参数和状态信息,处理HTTP的状态码一个资源有多个URI标识时,应使用最具体的URI标识。应用程序预先知道对象的标识时,可不提供URI属性。URI的Type属性包含被签名对象的类型信息,表示成URI,Type属性是可选的。例如:
Type=\http://127.0.0.1/2000/09/xmldsig#Object\,或Type=\http://127.0.0.1/2000/09/xmldsig#Manifest\Type属性应指向具体的对象,而不是其内容,Iype属性是辅助性的,不要求验证Type的有效性。6.4.4.3Reference处理模型
签名应用程序不必为了符合本标准而与XPath规范一致,但对于那些希望充分利用XML特性,将XML签名生成作为应用程序的一部分来处理的应用程序则应使用XPath数据模型、定义和语法。采用XPath的自的是为那些希望使用这些特征,而文符合XPath规范的应用提供一种可选途径。应用可对一个节点集合进行充分的功能替换,并且仅实现本标准需要的那些Xpath表达式行为,为了简单起见,本标准通常使用Xpath术语而不在每个地方都注明。对于“XPath节点集合”需求可实现一个包含节点集合功能相同的应用程序。应用程序应对XML文档采用与Xpath处理等效的方式处理文档。解析URI或者一系列Transform的变换结果的数据类型是一个八位位组流或者是一个Xpath的节点集合。
本标准中所涉及的变换是根据输入定义的。签名应用程序的正常行为应为:a)如果数据对象是八位位组流且下二个变换要求二个节点集合,签名应用程序应对字节流进行分析,通过XML标准处理过程来得出必需的节点集合:如果数据对象是一个节点集合而下二个变换需要八位位组,签名应用程序必须使用规范的b)
XML来把节点集合转化成八位位组流。在需要不同输入的变换中进行变换时,用户可指定替代的变换来覆盖这些缺省的变换,最终的八位位组流包含了受保护的数据,用DigestMethod指定的密码杂凑算法对这些数据对象进行处理,得出的结果放在DigestValue中
nKaeerKAca
小提示:此标准内容仅展示完整标准里的部分截取内容,若需要完整标准请到上方自行免费下载完整标准文档。