信息安全技术XML数字签名语法与处理规范(GB-T 25061-2020).pdf

上传人:wo****o 文档编号:96297191 上传时间:2023-10-18 格式:PDF 页数:60 大小:579.52KB
返回 下载 相关 举报
信息安全技术XML数字签名语法与处理规范(GB-T 25061-2020).pdf_第1页
第1页 / 共60页
信息安全技术XML数字签名语法与处理规范(GB-T 25061-2020).pdf_第2页
第2页 / 共60页
点击查看更多>>
资源描述

《信息安全技术XML数字签名语法与处理规范(GB-T 25061-2020).pdf》由会员分享,可在线阅读,更多相关《信息安全技术XML数字签名语法与处理规范(GB-T 25061-2020).pdf(60页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、ICS 35.04035.040L 8080中 华 人 民 共 和 国 国 家 标 准GB/T 25061XXXX代替 GB/T 25061-2010信息安全技术XML 数字签名语法与处理规范Information security technology-XML digital signature syntax andprocessing specification(报批稿)XXXX-XX-XX 发布XXXX-XX-XX 实施GB/T 25061-XXXXI目次前言.11 范围.12 规范性引用文件.13 术语和定义.13.1 术语和定义.13.2 符号和缩略语.24 XML 签名概述.24.

2、1 概述.24.2 定义文件用法说明.35 处理规则.35.1 生成.35.2 确认.46 签名语法.46.1 概述.46.2 Signature 元素.66.3 SignatureValue 元素.66.4 SignedInfo 元素.66.5 KeyInfo 元素.126.6 Object 元素.187 附加的签名语法.197.1 概述.197.2 Manifest 元素.197.3 SignatureProperties 元素.197.4 Signature 元素中的处理指令.207.5 Signature 元素中的注释.20附录 A(规范性附录)XML 数字签名文档类型定义.21附录

3、B(规范性附录)XML 数字签名模式定义.31附录 C(资料性附录)算法.40附录 D(资料性附录)XML 数字签名实例.47参考文献.53GB/T 25061-XXXX1前言本标准根据GB/T 1.1-2009给出的规则起草。本标准代替GB/T 25061-2010 信息安全技术 公钥基础设施 XML数字签名语法与处理规范,与GB/T 25061-2010文件相比,主要技术变化如下:修改了标准名称,由信息安全技术 公钥基础设施 XML 数字签名语法与处理规范改为信息安全技术 XML 数字签名语法与处理规范;在规范性引用文件中,增加了新的引用文件(见 2);修改了 4.2 节的名称,增加了 x

4、mldsig11 的相关说明(见 4.2);修改了 5.1、5.2 和第 6 章的章节名称(见 5.1,5.2 和 6);在 KeyInfo 中,增加了 SM2 KeyValue 类型定义,表示 SM2 椭圆曲线密码算法密钥值(见6.5.3.3);在 KeyInfo 元素中,增加了 DEREncodedKeyValue 和 KeyInfoReference 子元素,并给出模式定义(见 6.5.6 和 6.5.7);在附录 B 中,增加了 xmldsig11.xsd 定义和 xmldsig1-schema.xsd(B.2,B.3);在附录 C 中,增加了密码杂凑算法 SM3,消息鉴别算法 HMA

5、C-SM3,签名算法 SM2-SM3 的定义(见C.3.2,C.4.3);在附录 C 中,增加了 XML 规范化 1.1 算法和独占 XML 规范化 1.0 算法(见 C.6.3 和 C.6.4)。本标准由全国信息安全标准化技术委员会(SAC/TC 260)提出并归口。本标准起草单位:北京信安世纪科技股份有限公司、格尔软件股份有限公司、数安时代科技股份有限公司、国家密码管理局商用密码检测中心。本标准起草人:汪宗斌、刘婷、郑强、张永强、吕春梅、焦靖伟、史晓峰。本标准的历次版本发布情况为:GB/T 25061-2010。GB/T 25061-XXXX2GB/T XXXXX-XXXX1信息安全技术X

6、ML 数字签名语法与处理规范1范围本标准规定了创建和表示 XML 数字签名的处理规则、签名语法和附加的签名语法。本标准适用于制作和处理 XML 数字签名的应用程序、系统或服务。2规范性引用文件下列文件对于本文件的应用是必不可少的。凡是注日期的引用文件,仅注日期的版本适用于本文件,凡是不注日期的引用文件,其最新版本(包括所有的修改单)适用于本文件。GB/T 1988-1998 信息技术 信息交换用七位编码字符集GB/T 13000-2010 信息技术 通用多八位编码字符集(UCS)GB/T 16264.8-2005 信息技术 开放系统互连 目录 第8部分:公钥和属性证书框架GBT 18793-2

7、002 信息技术 可扩展置标语言(XML)1.0GB/T 20518-2018 信息安全技术 公钥基础设施 数字证书格式GB/T 32905-2016 信息安全技术 SM3密码杂凑算法GB/T 32918-2016(所有部分)信息安全技术 SM2椭圆曲线公钥密码算法GB/T 35276-2017 信息安全技术 SM2密码算法使用规范RFC 2045 基于多用途互联网邮件扩展第一部分:互联网消息体格式RFC 3279 证书和证书撤销列表轮廓RFC 3986 统一资源标识符(URI):通用语法RFC 4514 轻型目录访问协议(LDAP):甄别名的字符串表示RFC 5480 椭圆曲线密码主体公钥信

8、息3术语和定义3.1术语和定义GB/T 187932002界定的以及下列术语和定义适用于本文件。3.1.1分离签名 detached signature签名于 Signature 元素以外的内容上,通过 URI 或者变换来进行标识和它所签署的内容是分开的。即签名和数据对象位于不同 XML 文档中。适用于签名与数据分离的情形(即不同的 XML 文档),或者相同的 XML 文件包括了签名和数据对象,但签名和数据对象是兄弟元素的情形。3.1.2封内签名 enveloping signature签名于Signature元素中的Object元素之上,以Signature为父元素,将原始文档包含在Sign

9、ature中的XML签名文档的组织形式。即通过对封装了的对象的签名进行封装。GB/T 25061-XXXX23.1.3封皮签名 envelopedsignature签名于整个 XML 内容之上,然后将 Signature 作为子元素插入到原始文档中,组织成 XML 签名文档格式。即将签名封装到 XML 对象中,显然封皮签名在计算 SignatureValue 时不包含其自身。3.1.4引用确认 referencevalidation确认由 Reference 所指定的元素经变换后的杂凑值是否与 DigestValue 指定的匹配。3.1.5签名 Signature签名者使用私钥对待签名数据的杂

10、凑值做密码运算得到的结果,该结果只能用签名者的公钥进行验证,用于确认待签名数据的完整性、签名者身份的真实性和签名行为的抗抵赖性。XML 签名有三种描述方式(非独占的):分离签名、封内签名和封皮签名。3.1.6签名应用 signature application指实现了本标准要求的必备部分,且 Signature 元素类型的结构及其子结构符合本标准的要求的应用程序。3.1.7签名确认 signature validation指比较确认中以 CanonicalizationMethod 指定的规范化方法和 SignatureMethod 指定的签名方法处理 SignedInfo 的结果是否与 Si

11、gnatureValue 中的值是否匹配。3.1.8变换 transform把一个数据从原始状态转化成导出状态的处理。典型的变换包括 XML 规范化,XPath 和 XSLT。3.2符号和缩略语下列符号和缩略语适用于本文件:CA证书认证机构(Certificate Authority)CRL证书撤销列表(Certificate Revocation List)HTTP超文本传输协议(Hypertext Transfer Protocol)PKI公钥基础设施(Public Key Infrastructure)URI统一资源标识符(Universal Resource Identifier)XM

12、L可扩展置标语言(Extensible Markup Language)XPathXML路径(XML Path)XSL可扩展样式表语言(Extensible Stylesheet Language)XSLTXSL变换(Extensible Stylesheet Language Transformations)?代表前一符号出现0次或1次代表前一符号出现1次或多次*代表前一符号出现0次、1次或多次4XML 签名概述4.1概述GB/T XXXXX-XXXX3本章描述了XML数字签名的结构,XML格式符合GB/T 18793-2002要求,第5章给出了处理规则、第6章签名语法和第7章附加的签名语法

13、。XML签名可通过间接方式作用于任意数据对象,处理的步骤是先对数据对象进行杂凑处理,处理后的结果放置在一个元素中,再对得到的元素进行杂凑处理并且通过密码学方法进行签名。XML数字签名使用Signature元素来表示,其结构如下:()?)+()?()*签名是通过URI关联数据对象的。在XML文档内部,签名通过XML片段标识符关联本地的数据对象,本地数据可包含在封内签名中,也可包含在封皮签名中。分离签名作用于外部网络资源或者作用于以兄弟元素形式出现的同一个XML文档的本地数据对象,因此这种签名既不是封内签名也不是封皮签名。一个XML文档中签名元素(以及它的ID和属性值和名字)可与其他元素同时存在,

14、也可和其他元素结合在一起,命名时应注意避免违反XML标识的唯一性。本标准凡涉及密码算法相关内容,按照国家有关法规实施。签名实例参见附录D。4.2定义文件用法说明本标准有两个规范性附录,附录 A 数字签名文档类型定义,附录 B XML 数字签名模式定义。在应用本标准时,应将附录 A 和附录 B 的文件存放到应用可访问的位置,例如本标准中假定存放在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 和

15、 http:/127.0.0.1/TR/xmldsig-core1/xmldsig1-schema.xsd 中,可根据实际情况调整存放位置,可使用本标准附录 B.3 定义的方法来集合这些定义。5处理规则5.1生成5.1.1Reference 生成对于每个要签名的数据对象,Reference元素生成的步骤如下:a)根据应用程序的要求,对数据对象进行变换;b)计算变换后的数据对象的杂凑值;GB/T 25061-XXXX4c)创建一个 Reference 元素,包括一个可选的数据对象的标识,可选的变换元素,密码杂凑算法和杂凑值。5.1.2Signature 生成Signature元素生成的步骤如下:

16、a)以 SignatureMethod 指定的签名算法、CanonicalizationMethod 指定的规范化算法和引用生成的 Reference 为内容,创建 SignedInfo 元素;b)用 SingedInfo 中指定的规范化算法进行处理,并用 SignedInfo 指定的签名算法来计算SignedInfo 的签名值;c)构建包括 SignedInfo、Object、KeyInfo 和 SignatureValue 的 Signature 元素。Signature元素中各个子元素的含义和具体构造方法参见本标准第 6 章。5.2确认5.2.1概述确认应包括:a)引用确认,验证 Sig

17、nedInfo 中每个 Reference 包含的杂凑值;b)签名确认,使用密码方法对计算 SignedInfo 得到的签名进行签名确认。5.2.2Reference 确认引用确认的步骤如下:a)根据 SignedInfo 中 CanonicalizationMethod 指定的规范化方法来处理 SignedInfo 元素;b)对于 SignedInfo 中的每个 Reference:1)获得进行杂凑处理的数据对象;2)使用 Reference 中指定的密码杂凑算法对结果数据对象计算出杂凑值;3)将上一步生成的杂凑值和 SignedInfo 中的 DigestValue 元素的值进行比较,如果

18、有不同,那么确认失败。注:SignedInfo在步骤a)进行了规范化,应用程序确保CanonicalizationMethod不会产生错误。5.2.3Signature 确认签名确认的步骤如下:a)从 KeyInfo 或者外部源获得密钥信息;b)使用 CanonicalizationMethod 来获得 SignatureMethod 的规范化形式,然后用得出的结果和上面得到的密钥信息对 SignedInfo 元素进行签名值验证。6签名语法6.1概述6.1.1模式定义签名语法通过XML模式定义来定义,所有的XML模式定义使用下面的XML前导说明部分、文件类型声明和内部实体。模式定义:GB/T

19、XXXXX-XXXX5注:上一行为XML声明,该行中的?xml是一个整体,表示是XML文件的开始,而本标准4.1中定义的?则表示元素的个数,请注意区分。!DOCTYPE schemaPUBLIC-/W3C/DTD XMLSchema 200102/EN http:/127.0.0.1/2001/XMLSchema.dtd文档类型定义:!ENTITY%.ANY 扩展标记使用dsig11:名字空间。新的模式定义如下:6.1.2ds:CryptoBinary 简单类型本标准定义了ds:CryptoBinary简单类型,把XML中任意长度的整数表示成字节字符串。具体方法是先把整数值转化成高位在前格式的

20、位串,在位串前面补0使得位数是8的整数倍,去掉开头为零字节(连续8个0的位串),然后对这个字节串进行base64编码,base64编码遵循RFC 2045。注:base64Binary与CryptoBinary类型相同,定义一个新的类型主要是兼容不同的使用习惯。模式定义:GB/T 25061-XXXX66.2Signature 元素Signature元素是XML签名的根元素,Signature元素的组织应遵循下面说明的模式。模式定义:文档类型定义:6.3SignatureValue 元素SignatureValue元素包含了数字签名的具体值,通常使用base64进行编码。当给出两个Signat

21、ureMethod算法时,一个是应实现的,另一个是可选实现的,用户可使用自己定义的算法。模式定义:文档类型定义:6.4SignedInfo 元素6.4.1概述SignedInfo的结构包括规范化算法、签名算法和一个或者多个引用。SignedInfo元素可包含一个可选的ID属性,供其它签名或者对象引用。SignedInfo不包括显式的签名或杂凑属性(例如处理时间、加密设备序列号等),如果应用程序需要将属性与签名或杂凑相关联,则可在Object元素内的SignatureProperties元素中包含此类信息。GB/T XXXXX-XXXX7模式定义:文档类型定义:6.4.2Canonicaliza

22、tionMethod 元素CanonicalizationMethod是SignedInfo元素中用于指定规范化算法的必要元素,指明签名处理之前进行规范化处理的算法,CanonicalizationMethod元素使用算法标识符和实现需求中给出的算法。应用实现应支持必要的规范化算法。可选用需要的规范化算法,若不明确指定,缺省的规范化算法是Canonical XML。对SignedInfo元素的呈现与规范化算法本身有关。下面的步骤适用于处理XML节点的算法:基于XML的规范化实现,实现带有一个XPath节点集合,节点集合源于包含SignedInfo元素的文档,并指明当前的SignedInfo,后

23、代、属性、SignedInfo名字空间节点和它的后代元素。模式定义:文档类型定义:6.4.3SignatureMethod 元素SignatureMethod是用来指定进行签名生成和验证算法的必要元素,表明签名操作中用到的密码函数(如密码杂凑算法,公钥算法,MAC,填充方式等等)。这个元素使用算法标识符(算法标识符实例可参考附录C)。模式定义:GB/T 25061-XXXX8文档类型定义:6.4.4Reference 元素6.4.4.1概述Reference元素可出现一次或者多次,用来指明密码杂凑算法、杂凑值、签名对象的标识符、签名对象的类型和进行杂凑处理前的一个变换列表。标识(URI)和变换

24、描述了如何对内容进行杂凑处理。Type属性指明如何处理引用的数据。可选的ID属性允许Reference引用其他的内容。模式定义:文档类型定义:6.4.4.2URI 属性URI属性使用URI引用来标识一个数据对象,URI和XML均使用GB/T 13000-2010的字符集。但URI引用中禁止使用除#,%,外,RFC3986中列出的所有非GB/T 1988字符和保留字等特定字符。禁止使用的字符应通过下面的方法进行转义:GB/T XXXXX-XXXX9a)每个禁止字符按照一个或多个字节转化成 GB/T 13000-2010 编码。b)任何与一个禁止字符相应的字节序列使用 URI 的转义方法进行转义。

25、c)用生成的字符序列代替原始的字符。XML签名的应用程序应能解析URI语法,并能够依据HTTP标准来解析URI引用、理解协议的参数和状态信息,处理HTTP的状态码。一个资源有多个URI标识时,应使用最具体的URI标识。应用程序预先知道对象的标识时,可不提供URI属性。URI的Type属性包含被签名对象的类型信息,表示成URI,Type属性是可选的。例如:Type=http:/127.0.0.1/2000/09/xmldsig#ObjectType=http:/127.0.0.1/2000/09/xmldsig#ManifestType属性应指向具体的对象,而不是其内容,Type属性是辅助性的,

26、不要求验证Type的有效性。6.4.4.3Reference 处理模型签名应用程序不必为了符合本标准而与XPath规范一致,但对于那些希望充分利用XML特性,将XML签名生成作为应用程序的一部分来处理的应用程序则应使用XPath数据模型、定义和语法。采用XPath的目的是为那些希望使用这些特征,而又符合XPath规范的应用提供一种可选途径。应用可对一个节点集合进行充分的功能替换,并且仅实现本标准需要的那些Xpath表达式行为,为了简单起见,本标准通常使用Xpath术语而不在每个地方都注明。对于XPath节点集合需求可实现一个包含节点集合功能相同的应用程序。应用程序应对XML文档采用与Xpath

27、处理等效的方式处理文档。解析URI或者一系列Transform的变换结果的数据类型是一个八位位组流或者是一个Xpath的节点集合。本标准中所涉及的变换是根据输入定义的。签名应用程序的正常行为应为:a)如果数据对象是八位位组流且下一个变换要求一个节点集合,签名应用程序应对字节流进行分析,通过 XML 标准处理过程来得出必须的节点集合;b)如果数据对象是一个节点集合而下一个变换需要八位位组,签名应用程序必须使用规范的 XML来把节点集合转化成八位位组流。在需要不同输入的变换中进行变换时,用户可指定替代的变换来覆盖这些缺省的变换,最终的八位位组流包含了受保护的数据,用DigestMethod指定的密

28、码杂凑算法对这些数据对象进行处理,得出的结果放在DigestValue中。若URI引用为非同文档引用,解析URI引用的结果应为一个八位位组流。URI标识的XML文档指向同文档引用或应用不要求变换时,签名应用程序不必解析它。若片段出现在一个绝对或者相对URI的前面,那么片段的含义由资源的MIME类型定义。对于XML文档,也可通过一个代理来完成签名程序对URI的解析(包括对片段的处理)。如果片段处理不是标准化处理的引用确认可能会失败。本标准建议URI属性不包括片段标识符,而将这种处理过程当作附加的XPath变换来进行说明。当片段没有出现在URI前面时,XML签名程序应支持空URI和无名Xpoint

29、er;若应用程序还要支持任何保存注释的规范化操作,那么建议对同文档的Xpointer提供支持。由于应用程序可能无法控制片段的生成,因此所有其它对Xpointer的支持都是可选的,所有对无名和外部引用的Xpointer的支持也是可选的。6.4.4.4同文档 URI 引用GB/T 25061-XXXX10解析同文档引用应产生一个适合规范化XML使用的Xpath节点集合。特别是,解析一个空URI应产生一个Xpath节点集合,该集合包含拥有URI属性的XML文档的每个非注释节点。片段URI中#号后面的字符应符合Xpointer语法,处理Xpointer的时候,应用程序应使用包含URI属性的XML文档的

30、根节点来初始化Xpointer处理文档。若Xpointer处理后的结果是一个节点集合时,应用程序应通过下面的方法获得:a)丢弃点节点。b)名字空间子资源中包括完整或者部分内容的 XPath 节点。c)用子节点替换根节点(假设它在节点集合里面)。d)把所有元素节点 E 替换为 E 和 E 的后代节点(文本、注释、PI 或者元素)和所有的 E 和它的后代元素的名字空间和属性节点。e)如果 URI 不是一个完整的 XPointer,那么删除所有的注释节点。步骤d)替换是必须的。XPointer是使用子树的根节点元素来指明一个XML文档的语法分析树的子树,而规范化的XML把一个节点集合当作节点的集合。

31、在这种情况下,缺少后代节点就会导致在规范形式的内容的不足。步骤e)用来处理空URI、裸名指针和子序列XPointers。当传递一个节点集合时,需要按照有注释和没注释对节点集合进行处理,处理成字节流时会调用Xpath表达式(缺省的或者没有注释的),因此,为了在传递节点集合的时候保留脱模注释的缺省的行为,应去除非完整的XPointer的URI。若要在通过标识符ID选择元素的时候保留注释,应使用这样的全XPointer:URI=#xpointer(id(ID);若要在选择整个文档的时候保留注释,应使用这样的全XPointer:URI=#xpointer(/),XPointer包含了一个含有根节点的简

32、单的Xpath表达式,步骤d)会将该根节点替换为语法分析树的所有节点(所有的后代、所有的属性和所有节点的名字空间)。6.4.4.5Transforms 元素可选的Transforms元素包括一个有序的Transform元素列表,这些元素描述签名者如何获得将要进行杂凑处理的数据对象,每个Transform的输出都要作为下一个Transform的输入,第一个Transform的输入是解析Reference元素的URI属性所得到的结果,最后一个Transform的结果是DigestMethod算法的输入。使用Transform后,签名者处理的已经不是原始的文档,而是Transform处理后的文档。每

33、个Transform元素由一个算法属性和与这个算法配套的内容参数构成(如果有参数的话),算法属性值指定要进行处理的算法的名字,Transform内容提供附加的数据来控制算法处理Transform输入的过程。在Reference处理模型中曾经提到,一些Transform使用XPath节点集合为输入,而其他一些需要一个字节流。若实际的输入符号Transform的需求,则Transform在操作的时候不会更改输入。若Transform的输入要求和实际输入的格式不同,则实际的输入需要进行一些变换。Transform可能需要显式的MIME类型、字符集或者是它们从前面的Transform或源数据收到的数据

34、的相关信息,应以Transform算法参数的形式提供这种数据的特征,通过参数的形式把这些数据特征提供给Transform算法,且应在算法的规范中描述出来。Transform例子包括但不仅限于base64解码,XML规范化,XPath过滤和XSLT。模式定义:GB/T XXXXX-XXXX11文档类型定义:!ELEMENT Transforms(+)!ELEMENT (#PCDATA|XPath%.ANY;)*!ATTLIST AlgorithmCDATA#REQUIRED 6.4.4.6DigestMethod 元素DigestMethod是指定签名对象的密码杂凑算法的必要元素,使用通用结构来

35、描述算法标识符和实现算法(可参考附录C)。如果URI解析的结果和变换处理的结果是一个XPath节点集合,则结果应按Reference处理模型中规定的方法进行变换;如果URI解析和变换处理结果是字节流,则不需要进行变换,直接对得出的字节流数据进行密码杂凑算法处理。模式定义:文档类型定义:6.4.4.7DigestValue 元素DigestValue元素包含了杂凑值编码后的结果,杂凑值应使用base64进行编码。模式定义:GB/T 25061-XXXX12文档类型定义:6.5KeyInfo 元素6.5.1概述KeyInfo是接收者获取确认签名所需密钥材料的可选元素。KeyInfo可包括的信息有:

36、密钥、名字、证书和其他公开密钥管理信息。本标准定义了一些简单类型,应用程序可扩展这些类型,也可用XML名字空间定义自己的密钥标识和交换语义来代替它们。但密钥信息的可信问题(例如,它的真实性或强度)不在本标准讨论范围之内,而应由应用程序来处理。接收者能从应用程序的上下文中获取验证签名的密钥时可忽略KeyInfo元素,KeyInfo中的多个声明可指向同一个密钥,应用程序应实现KeyValue,但不一定实现RetrievalMethod。应用也可通过引入不同名字空间的元素,来定义和使用自己选择的任意机制。忽略扩展元素安全时,本标准支持类型扩展,否则外部元素(包括本标准中定义的元素的替代结构)应为Ke

37、yInfo的子元素。KeyInfo的子元素的模式和文档类型定义规范(例如X509Data)允许使用来自于其它名字空间的元素来扩展和补充它们的内容。下面列出了disg:名字空间中已分配标识符的KeyInfo类型,可在RetrievalMethod元素的Type属性中使用它们来描述一个远程的KeyInfo结构。http:/127.0.0.1/2000/09/xmldsig#RSAKeyValuehttp:/127.0.0.1/2000/09/xmldsig#X509Data下面列出了在dsig11:名字空间中分配标识符的其他KeyInfo类型。http:/127.0.0.1/2009/xmldsi

38、g11#SM2KeyValuehttp:/127.0.0.1/2009/xmldsig11#DEREncodedKeyValue除了上面用XML结构定义的这些类型,本标准定义了一个类型来表示二进制的GB/T 16264.8中定义的数字证书(又称X509证书)。http:/127.0.0.1/2000/09/xmldsig#rawX509Certificate模式定义:!-!-GB/T XXXXX-XXXX13文档类型定义:6.5.2KeyName 元素KeyName元素应包含一个字符串(其中的空格是不能忽略的),签名者可用它与接收者传递密钥标识符。KeyName应包含签名的密钥对的相关标识符,

39、也可包括对其它与协议相关的间接标识密钥对的信息。模式定义:文档类型定义:6.5.3KeyValue 元素6.5.3.1概述KeyValue应包含唯一有效确认签名的公钥。KeyValue元素可包括在外部定义的公钥值,它们以PCDATA或外部名字空间的元素类型来表示。在附录D中给出了SM2公开密钥的结构化格式的实例。模式定义:文档类型定义:6.5.3.2RSAKeyValue 元素标识符:Type=http:/127.0.0.1/2000/09/xmldsig#RSAKeyValue(可用在RetrievalMethod或者Reference元素中用来表示类型)RSA 密钥值有两个域:模和指数实例

40、:xA7SEU+e0yQH5rm9kbCDN9o3aPIo7HbP7tX6WOocLZAtNfyxSZDU16ksL6WjubafOqNEpcwR3RdFsT7bCqnXPBe5ELh5u4VEy19MzxkXRgrMvavzyBpVRgBUwUlV5foK5hhmbktQhyGB/T 25061-XXXX14Ndy/6LpQRhDUDsTvK+g9Ucj47es9AQJ3U=AQAB任意长度的整数应遵循XML中ds:CryptoBinary类型的定义,用XML表示为字节串。模式定义:文档类型定义:6.5.3.3SM2KeyValue 元素标识符:Type=http:/127.0.0.1/20

41、09/xmldsig11#SM2KeyValue(可用在RetrievalMethod或者Reference元素中用来表示类型)SM2KeyValue元素定义在 http:/127.0.0.1/2009/xmldsig11#名字空间中。SM2公钥由域参数和PublicKey两部分组成。实例:BDanuWjsEP0Ki2ursklRv+pBeXNnGFkrS2Veu/FrudFKFTiscMJ1TCa0K23Lk0+L7HIGz+SWFZZjDAnHPD7n+YQ 域参数可通过引用使用dsig11:NamedCurve元素编码。命名曲线由URI属性指定,通过OID定义。程序必须支持dsig11:

42、NamedCurve元素和OID为 1.2.156.10197.1.301的256位素域椭圆曲线。PublicKey元素包含该点x和y坐标二进制的Base64编码。其值计算方法如下:a)首先将字段元素 x 和 y 转换为八位字符串,然后将椭圆曲线点(x,y)转换为八位字节字符串,再将转换结果前面加上 0 x04,OID 为 1.2.156.10197.1.301 时公钥的 x 分量和 y 分量的长度为 256 比特。b)Base64 对步骤 a)中的转换所产生的八位组串进行编码。模式定义:GB/T XXXXX-XXXX15文档类型定义:6.5.4RetrievalMethod 元素KeyInf

43、o中的RetrievalMethod元素用于传递存储在另一个位置的KeyInfo信息的引用。例如,一个文档内的几个签名使用一个内部或者外部的X509证书链来验证签名,每个签名的KeyInfo都可用一个RetrievalMethod元素来引用证书链,而无须每次都使用X509Certificate元素的完整证书链。除了没有DigestMethod或DigestValue子元素,RetrievalMethod使用与Reference的URI属性和Reference处理模型同样的语法和解析引用的行为,且应包含URI。Type是表示要检索的数据类型的可选标识符。本标准定义了具有相应XML结构的KeyIn

44、fo类型,解析一个RetrievalMethod的Reference的结果是一个XML元素或者是以此元素为根的文档。KeyInfo的rawX509Certificate类型(不包含XML结构)返回一个二进制X509证书。模式定义:文档类型定义:6.5.5X509Data 元素标识符:GB/T 25061-XXXX16Type=http:/127.0.0.1/2000/09/xmldsig#X509Data(在RetrievalMethod或者Reference元素里用来表示类型)KeyInfo中的X509Data元素包括一个或多个密钥标识符,或X509证书(证书标识符或废止列表)。X509Da

45、ta的内容有:a)至少应使用一个下列元素类型中的元素,当描述或者关联同一个证书时,可一同使用或多次使用下列元素:b)具体的内容如下:X509IssuerSerial 元素,应包含一个符合 RFC4514 规范的 X509issuer 的甄别名/序列号对,甄别名的生成应当符合甄别名编码规则。X509SubjectName 元素,应包含一个 X509 证书主体名字,应遵循 RFC4514 标准。X509SKI 元素,应包含 X509 证书主体密钥标识符扩展的 base64 简单编码。X509Certificate 元素,应包含一个 base64 编码的 X509 证书。X509CRL 元素,应包含

46、一个 base64 编码的证书撤销列表(CRL)。dsig11:X509Digest 元素,应包含一个 base64 编码的证书杂凑值。该元素应包含 Algorithm属性标识的密码杂凑算法的 URI,杂凑的输入应为证书的原始八位字节串。伴随或补充上述元素的外部名字空间的元素。X509IssuerSerial,X509SKI,X509SubjectName和dsig11:X509Digest元素应指向证书或者包含确认密钥的证书。所有指向一个特定的证书的元素应放在X509Data元素中,而且引用应指向这个X509Data元素。同一个密钥而和不同证书关联的X509IssuerSerial,X509

47、SKI,X509SubjectName和dsig11:X509Digest元素应分组到一个KeyInfo元素中,但是可出现在多个X509Data元素中。出现在X509Data元素中的证书应能关联到确认密钥,可通过包含确认密钥,或作为证书链的一部分包含这个确认密钥,但不要求证书链有序。下面是具体的例子:CN=Zongbin WANG,OU=R&D,O=INFOSEC,L=Haidian District,ST=Beijing,C=CN1234567831d97bd7 Subject of Certificate B MIICXTCCA.MIICPzCCA.GB/T XXXXX-XXXX17MII

48、CSTCCA.注:对于PKCS#7编码的证书链或者CRL没有直接的规定。在一个元素中可出现一组证书和CRL,而且在一个KeyInfo元素中可出现多个X509Data元素。每当一个元素中出现多个证书时,至少其中一个证书应包含验证签名的公钥。DN中的字符串(、或)应按照下述方法编码:把字符串当作连续的 GB/T 13000 字符串特殊字符应加上”来转义,特殊字符包括字符串的最前面#或字符中的,、+、或者;转义所有的 GB/T 1988 控制字符(GB/T 13000 范围是x00-x1f),即在它们的 GB/T 13000两位 16 进制数之前加上”字符。转义所有的后续的空格,用20代替”因XML

49、文档逻辑上包含字符,而不是字节,故应根据产生该XML文档的物理表示所使用的字符编码方法来对结果GB/T 13000字符串进行编码。引入dsig11:X509Digest元素后,可弃用X509IssuerSerial元素。6.5.6DEREncodedKeyValue 元素标识符:Type=http:/127.0.0.1/2009/xmldsig11#DEREncodedKeyValue(可在RetrievalMethod或Reference元素中使用,来识别指示对象的类型)公钥算法和值,依据GB/T 20518-2018中X.509证书的主体公钥信息字段中使用的值进行DER编码,然后进行bas

50、e64简单编码。对于本标准中支持的密钥类型,下面的标准文件标识了密钥/算法类型的主体公钥信息格式和相关OID值:SM2见GB/T 35276-2017第7.1节RSA见RFC3279第2.3.1节EC见RFC5480第2节自定义扩展密钥类型可见下面的方式。模式定义:6.5.7KeyInfoReference 元素GB/T 25061-XXXX18KeyInfo中的KeyInfoReference元素用于传递KeyInfo元素的位置引用。例如,文档中的多个签名可能使用同一个证书链验证的密钥。每个签名的KeyInfo可使用一个KeyInfoReference元素来引用这个证书链,而不是证书链包含多

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 国家标准

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁