[PDF] GB/T 25061-2010 - 自动发货. 英文版
| 标准号码 | 美元 | 购买PDF | 工期 | 标准名称(英文版) |
| GB/T 25061-2010 | 320 | GB/T 25061-2010 | 9秒内发货PDF | 信息安全技术 公钥基础设施 XML数字签名语法与处理规范 |
| 基本信息 | |
|---|---|
| 标准编号 | GB/T 25061-2010 (GB/T25061-2010) |
| 中文名称 | 信息安全技术 公钥基础设施 XML数字签名语法与处理规范 |
| 英文名称 | Information security technology -- Public key infrastructure -- XML digital signature syntax and processing specification |
| 行业 | 国家标准 (推荐) |
| 中标分类 | L80 |
| 国际标准分类 | 35.040 |
| 字数估计 | 46,496 |
| 发布日期 | 2010-09-02 |
| 实施日期 | 2011-02-01 |
| 引用标准 | GB/T 1988; GB 13000.1; GB/T 16264.8; GB/T 18793-2002; RFC 2253; RFC 2396; RFC 2732 |
| 标准依据 | 国家标准批准发布公告2010年第4号(总第159号) |
| 发布机构 | 中华人民共和国国家质量监督检验检疫总局、中国国家标准化管理委员会 |
| 范围 | 本标准规定了创建和表示XML数字签名的语法和处理规则, XML数字签名为任何类型的数据提供了完整性、消息鉴别和签名者鉴别服务;本标准适用于制作和处理XML数字签名的应用程序、系统或服务; |
GB/T 25061-2010
Information security technology.Public key infrastructure.XML digital signature syntax and processing specification
ICS 35.040
L80
中华人民共和国国家标准
信息安全技术 公钥基础设施
XML数字签名语法与处理规范
2010-09-02发布
2011-02-01实施
中华人民共和国国家质量监督检验检疫总局
中国国家标准化管理委员会发布
目次
前言 Ⅲ
引言 Ⅳ
1 范围 1
2 规范性引用文件 1
3 术语、定义和缩略语 1
4 XML签名概述 2
5 处理规则 3
6 核心签名语法 4
7 附加签名语法 14
附录A(规范性附录) XML数字签名文档类型定义 17
附录B(规范性附录) XML数字签名模式定义 25
附录C(资料性附录) 算法 30
附录D(资料性附录) XML数字签名实例 35
参考文献 40
前言
本标准的附录A和附录B是规范性附录,附录C和附录D是资料性附录。
本标准主要参照Internet工程任务组(IETF)的RFC3275文件制定。
本标准由全国信息安全标准化技术委员会(SAC/TC260)提出并归口。
本标准起草单位:北京信安世纪科技有限公司、中国电子技术标准化研究所。
本标准起草人:汪宗斌、张萌、黄勇、周鹏、王延鸣。
引 言
XML是一种信息描述的置标语言,用于数据对象交换。它已经广泛地应用在电子商务、电子政务
等应用之中,成为数据交换当中数据描述的基础格式,并且仍在不断发展当中。基于XML格式的数字
签名是XML在安全领域的一种新的应用,与传统的PKCS#7数字签名相比,能够更好地与XML应用
结合。
本标准凡涉及密码算法相关内容,标准文本中引用的RSA和SHA-1等密码算法为举例性说明,具
体使用时均须采用国家密码管理局批准的相应算法。
信息安全技术 公钥基础设施
XML数字签名语法与处理规范
1 范围
本标准规定了创建和表示XML数字签名的语法和处理规则。XML数字签名为任何类型的数据
提供了完整性、消息鉴别和签名者鉴别服务。
本标准适用于制作和处理XML数字签名的应用程序、系统或服务。
2 规范性引用文件
下列文件中的条款通过本标准的引用而成为本标准的条款。凡是注日期的引用文件,其随后所有
的修改单(不包括勘误的内容)或修订版均不适用于本标准,然而,鼓励根据本标准达成协议的各方研究
是否可使用这些文件的最新版本。凡是不注日期的引用文件,其最新版本适用于本标准。
GB/T 1988 信息技术 信息交换用七位编码字符集(GB/T 1988-1998,eqvISO/IEC 646-1991)
GB 13000.1 信息技术 通用多八位编码字符集(UCS) 第一部分:体系结构和基本多文种平面
(GB 13000.1-1993,idtISO/IEC 10646-1:1993)
GB/T 16264.8 信息技术 开放系统互连 目录 第 8 部分:公钥和属性证书框架
(GB/T 16264.8-2005,ISO/IEC 9594-8:2001,IDT)
GB/T 18793-2002 信息技术 可扩展置标语言(XML)1.0(W3CRFC-xml:1998,NEQ)
RFC2253 轻型目录访问协议(v3):甄别名的UTF-8字符串表示
RFC2396 统一资源标识符(URI):通用语法
RFC2732 URL中IPv6地址文字格式
3 术语、定义和缩略语
3.1 术语和定义
下列术语和定义适用于本标准。
3.1.1
分离签名 detachedsignature
签名于Signature元素以外的内容上,通过 URI或者变换来进行标识,和它所签署的内容是分开
的。即签名和数据对象位于不同XML文档中。适用于签名与数据分离的情形(即不同的XML文档),
或者相同的XML文件包括了签名和数据对象,但签名和数据对象是兄弟元素的情形。
3.1.2
封内签名 envelopingsignature
签名于Signature元素中的Object元素之上,以Signature为父元素,将原始文档包含在Signature
中的XML签名文档的组织形式。即通过对封装了的对象的签名进行封装。
3.1.3
封皮签名 envelopedsignature
签名于整个XML内容之上,然后将Signature作为子元素插入到原始文档中,组织成XML签名文
档格式。即将签名封装到XML对象中,封皮签名在计算SignatureValue时不包含其自身。
3.1.4
引用确认 referencevalidation
确认由Reference所指定的元素经变换后的摘要值是否与DigestValue指定的匹配。
3.1.5
签名 Signature
签名是由一个应用程序通过密码算法用私钥运算所产生的值,具有完整性,消息鉴别和/或签名者
鉴别的特性。签名有三种非独占的描述方式:分离签名、封内签名和封皮签名。
3.1.6
签名应用 signatureapplication
指实现了本标准要求的必备部分,且Signature元素类型的结构及其子结构符合本标准的要求的
应用程序。
3.1.7
签名确认 signaturevalidation
处理SignedInfo的结果是否与SignatureValue中的值匹配。
3.1.8
签名者鉴别 signerauthentication
用来声明标识签名者属性,签名应指明谁签署了一个文档、消息或记录,他人没有授权很难产生。
签名者鉴别由应用实现,本标准支持签名者鉴别,但具体如何鉴别由相关的鉴别标准规定。
3.1.9
变换 transform
把一个数据从原始状态转化成导出状态的处理。典型的变换包括XML规范化,XPath和XSLT。
3.2 缩略语
下列缩略语适用于本标准:
DN 甄别名(DistinguishedName)
4 XML签名概述
4.1 概述
本章描述了XML数字签名结构,第5章给出处理规则、第6章核心签名语法和第7章附加元素签
名语法。
XML签名可以通过间接方式作用于任意数据对象,处理的步骤是先对数据对象进行摘要,处理后
的结果放置在一个元素中,再把得到的元素再进行摘要处理并且通过密码学方法进行签名。XML数
字签名使用Signature元素来表示,其结构如下(? 代表出现0次或1次;+代表出现1次或多次;*代
表0次、1次或多次):
< SignatureID? >
< SignedInfo >
< SignatureMethod/ >
(< ReferenceURI? >
(< Transforms >)?
< DigestMethod >
< DigestValue >
< /Reference >)+
< /SignedInfo >
< SignatureValue >
(< KeyInfo >)?
(< ObjectID? >)*
< /Signature >
签名是通过URI关联数据对象的。XML文档内部,签名是通过XML片段标识符关联本地的数
据的,本地数据可以包含在封内签名中,也可以包含在封皮签名中。分离签名作用于外部网络资源或者
作用于以兄弟元素形式出现的同一个XML文档中的本地数据对象,因此这种签名既不是封内签名也
不是封皮签名。一个XML文档中签名元素(以及它的ID和属性值和名字)可以与其他元素同时存在,
也可以和其他元素结合在一起,命名时应注意避免违反XML标识唯一性。
本标准附录D列举了各种签名的实例,供实现本标准时参考。
4.2 特别说明
本标准有两个规范性附录,附录AXML数字签名文档类型定义,附录BXML数字签名模式定义。
在应用本标准时,应将附录A和附录B的文件存放到应用可以访问的位置,例如本标准中假定存放在
http://127.0.0.1/2001/XMLSchema.dtd和http://127.0.0.1/2000/09/xmldsig中,可根据实际情
况调整存放位置。
5 处理规则
本章规定签名生成和核心确认中所用到的操作。
5.1 核心生成
5.1.1 概述
规定核心部分生成的步骤,包括Reference元素的生成和SignedInfo元素中的签名值的生成。
5.1.2 Reference生成
对于每个要签名的数据对象,Reference元素生成的步骤如下:
a) 根据应用程序的要求,对数据对象进行变换;
b) 计算变换后的数据对象的摘要值;
c) 创建一个Reference元素,包括一个可选的数据对象的标识,可选的变换元素,摘要算法和摘
要值。
5.1.3 Signature生成
Signature元素生成的步骤如下:
的Reference为内容,创建SignedInfo元素;
b) 用SingedInfo中指定的规范化算法来规范化,并用SignedInfo指定的签名算法来计算
SignedInfo的签名值;
c) 构建包括SignedInfo、Object、KeyInfo和SignatureValue的Signature元素。
5.2 核心确认
5.2.1 概述
核心确认应包括:
a) 引用确认,验证SignedInfo中每个Reference包含的摘要;
b) 签名确认,使用密码方法对计算SignedInfo得到的签名进行签名确认。
5.2.2 引用确认
引用确认的步骤如下:
b) 对于SignedInfo中的每个Reference:
1) 获得进行摘要处理的数据对象;
2) 使用Reference中指定的摘要算法对结果数据对象计算出摘要值;
3) 比较上一步生成的摘要值和SignedInfo中的DigestValue元素的内容,如果有不同,那么
确认失败。
5.2.3 签名确认
签名确认的步骤如下:
a) 从KeyInfo或者其他方式获得密钥信息;
面得到的密钥信息来与SignedInfo元素上的签名值比较。
6 核心签名语法
6.1 概述
本章规定核心签名元素的详细语法,若无特别声明,应支持本章所涉及到的元素。签名语法通过文
档类型定义和XML模式定义来定义,所有的文档类型定义和XML模式定义使用下面的XML前同步
码、声明和内部实体。
模式定义:
< ?xmlversion="1.0"encoding="GB 13000"? >
注:上一行为XML声明,该行中的< ?xml是一个整体,表示是XML文件的开始,而本标准4.1中定义的? 表示的
是元素的个数,请注意区分。
< DOCTYPEschema
PUBLIC"-//W3C//DTDXMLSchema200102//EN""http://127.0.0.1/2001/XMLSchema.dtd"
< ATTLISTschema
xmlns:dsCDATA#FIXED"http://127.0.0.1/2000/09/xmldsig#" >
< ENTITYdsig′http://127.0.0.1/2000/09/xmldsig#′ >
< ENTITY%p" >
< ENTITY%s" >
] >
< schemaxmlns="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="0.1"elementFormDefault="qualified" >
文档类型定义:
< ENTITY%Object.ANY" >
< ENTITY%Method.ANY" >
< ENTITY% < Transform >.ANY" >
< ENTITY%KeyInfo.ANY" >
< ENTITY%KeyValue.ANY" >
< ENTITY%X509Data.ANY" >
6.1.1 ds:CryptoBinary简单类型
本标准定义了ds:CryptoBinary简单类型,把XML中的任意长度的整数当作字节字符串。具体方
法是先把整数值转化成高位在前格式的位串,在位串前面补0使得位的个数是8的整数倍,去掉开头为
零字节(连续8个0的位串),然后对这个字节串进行base64编码。
base64Binary与CryptoBinary类型相同,定义一个新的类型主要是兼容不同的使用习惯。
模式定义:
< simpleTypename="CryptoBinary" >
< restrictionbase="base64Binary" >
< /restriction >
< /simpleType >
6.2 Signature元素
Signature元素是XML签名的根元素,Signature元素的组织应遵循下面说明的模式。
模式定义:
< elementname="Signature"type="ds:SignatureType"/ >
< complexTypename="SignatureType" >
< sequence >
< elementref="ds:SignedInfo"/ >
< elementref="ds:SignatureValue"/ >
< elementref="ds:KeyInfo"minOccurs="0"/ >
< elementref="ds:Object"minOccurs="0"maxOccurs="unbounded"/ >
< /sequence >
< attributename="Id"type="ID"use="optional"/ >
< /complexType >
文档类型定义:
< ATTLISTSignature
Id ID #IMPLIED >
6.3 SignatureValue元素
SignatureValue元素包含了数字签名的具体值,通常使用base64对它进行编码。当给出两个Sig-
natureMethod算法时,一个是应实现的,另一个是可选实现的,用户可以使用自己定义的算法。
模式定义:
< elementname="SignatureValue"type="ds:SignatureValueType"/ >
< complexTypename="SignatureValueType" >
< simpleContent >
< extensionbase="base64Binary" >
< attributename="Id"type="ID"use="optional"/ >
< /extension >
< /simpleContent >
< /complexType >
文档类型定义:
Id ID #IMPLIED >
6.4 SignedInfo元素
6.4.1 概述
SignedInfo元素结构包括规范化算法,签名算法和一个或者多个引用。SignedInfo元素可以包含
一个可选的ID属性,供其他签名或者对象来引用。
SignedInfo不包括显式的签名或者摘要属性(例如处理时间,加密设备序列号等),如果应用程序需
要给签名和摘要关联上属性信息,可在Object元素内加上SignatureProperties元素。
模式定义:
< elementname="SignedInfo"type="ds:SignedInfoType"/ >
< complexTypename="SignedInfoType" >
< sequence >
< elementref="ds:SignatureMethod"/ >
< elementref="ds:Reference"maxOccurs="unbounded"/ >
< /sequence >
< attributename="Id"type="ID"use="optional"/ >
< /complexType >
文档类型定义:
SignatureMethod, Reference+) >
< ATTLISTSignedInfo
Id ID #IMPLIED >
实现应支持必要的规范化算法。
可选用需要的规范算法,若不明确指定,缺省的规范化算法是CanonicalXML。
对SignedInfo元素的呈现与规范化算法本身有关。下面的步骤适用于处理XML节点的算法:
基于XML的规范化实现,实现带有一个XPath节点集合,节点集合源于包含SignedInfo的文档,
并指明当前的SignedInfo,它的后代、属性、SignedI......
英文网页English: GB/T 25061-2010
相关标准: GB/T 25068.1|GB/T 25068.3|GB/T 25068.4|GB/T 25069|GB/T 25061-2010|GB/T 25061|