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

  • GB/T 25061-2020  信息安全技术 XML数字签名语法与处理规范.pdf为pdf格式
  • 文件大小:3 M
  • 下载速度:极速
  • 文件评级
  • 更新时间:2020-12-18
  • 发 布 人: 13648167612
  • 文档部分内容预览:
  • 签名语法通过XML模式定义来定义,所有的XML模式定义使用下面的XML前导说明部分、文

    GB/T250612020

    6.1.2ds:CryptoBinary简单类型

    定义ds:CryptoBinary简单类型,把XML中任意长度的整数表示成字节字符串。具体方法是先把 整数值转化成高位在前格式的位串,在位串前面补0使得位数是8的整数倍,去掉开头为零字节(连续 8个0的位串),然后对这个字节串进行base64编码,base64编码遵循RFC2045。 注:base64Binary与CryptoBinary类型相同,定义一个新的类型主要是兼容不同的使用习惯。 模式定义:

    暖通空调管理!ELEMENTCanonicalizationMethod(#PCDATA%Method.ANY;)*

    6.4.3SignatureMethod元素

    6.4.4Reference元素

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

    文档类型定义:

    6.4.4.2URI属性

    URI属性使用URI引用来标识一个数据对象,URI和XML均使用GB/T13000定义的字符集。 但URI引用中禁止使用除#,%,[,外,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",或 5G Type="http://127.0.0.1/2000/09/xmldsig#Manifest" Type属性应指向具体的对象,而不是其内容,Type属性是辅助性的,不要求验证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中

    若URI引用为非同文档引用,解析URI引用的结果应为一个八位位组流。URI标识的XML文档 指向同文档引用或应用不要求变换时,签名应用程序不必解析它。 若片段出现在一个绝对或者相对URI的前面,那么片段的含义由资源的MIME类型定义。对于 XML文档,也可通过一个代理来完成签名程序对URI的解析(包括对片段的处理)。如果片段处理不 是标准化处理的引用确认可能会失败。本标准建议URI属性不包括片段标识符,而将这种处理过程当 作附加的XPath变换来进行说明 当片段没有出现在URI前面时,XML签名程序应支持空URI和无名Xpointer;若应用程序还要 支持任何保存注释的规范化操作,那么建议对同文档的Xpointer提供支持。由于应用程序可能无法控 制片段的生成,因此所有其他对Xpointer的支持都是可选的,所有对无名和外部引用的Xpointer的支 持也是可选的

    6.4.4.4同文档URI引用

    解析同文档引用应产生一个适合规范化XML使用的Xpath节点集合。特别是,解析一个空URI 应产生一个Xpath节点集合,该集合包含拥有URI属性的XML文档的每个非注释节点。片段URI中 并号后面的字符应符合Xpointer语法,处理Xpointer的时候,应用程序应使用包含URI属性的XML 文档的根节点来初始化Xpointer处理文档。若Xpointer处理后的结果是一个节点集合时,应用程序应 通过下面的方法获得: a)去弃点节点; b)名字空间子资源中包括完整或者部分内容的XPath节点; C 用子节点替换根节点(假设它在节点集合里面); d)把所有元素节点E替换为E和E的后代节点(文本、注释、PI或者元素)以及所有的E和它的 后代元素的名字空间和属性节点; e)如果URI不是一个完整的XPointer,那么删除所有的注释节点。 解析时应执行步骤d)的替换。XPointer是使用子树的根节点元素来指明一个XML文档的语法分 析树的子树,而规范化的XML把一个节点集合当作节点的集合,在这种情况下,缺少后代节点就会导 致在规范形式的内容的不足。 步骤e)用来处理空URI、裸名指针和子序列XPointers。当传递一个节点集合时,需要按照有注释 和没注释对节点集合进行处理,处理成字节流时会调用Xpath表达式(缺省的或者没有注释的),因此, 为了在传递节点集合的时候保留脱模注释的缺省的行为,应去除非完整的XPointer的URI。若要在通 过标识符ID选择元素的时候保留注释,应使用这样的全XPointer:URI=#xpointer(id("ID"));若 要在选择整个文档的时候保留注释,应使用这样的全XPointer:URI=#xpointer(/)",XPointer包含 了一个含有根节点的简单的Xpath表达式,步骤d)会将该根节点替换为语法分析树的所有节点(所有 的后代、所有的属性和所有节点的名字空间)

    6.4.4.5Transforms元素

    5.4.4.6DigestMethod元素

    DigestMethod是指定签名对象的密码杂凑算法的必要元素,使用通用结构来描述算法标识符和实 现算法(可参考附录D)。 如果URI解析的结果和变换处理的结果是一个XPath节点集合,则结果应按Reference处理模型 中规定的方法进行变换;如果URI解析和变换处理结果是字节流,则不需要进行变换,直接对得出的字 节流数据进行密码杂凑算法处理。 模式定义:

    6.4.4.7DigestValue元素

    6.5KeyInfo元素

    KeyInfo是接收者获取确认签名所需密钥材料的可选元素。KeyInfo可包括的信息有:密钥、名字、 证书和其他公开密钥管理信息。本标准定义了一些简单类型,应用程序可扩展这些类型,也可用XMI 名字空间定义自已的密钥标识和交换语义来代替它们。但密钥信息的可信问题(例如,它的真实性或强 度)不在本标准讨论范围之内,而应由应用程序来处理。 接收者能从应用程序的上下文中获取验证签名的密钥时可忽略KeyInfo元素,Keylnfo中的多个 声明可指向同一个密钥,应用程序应实现KeyValue,但不一定实现RetrievalMethod。应用也可通过引 人不同名字空间的元素,来定义和使用自已选择的任意机制。 KeyInfo的子元素(例如X509Data)的模式/文档类型定义规范允许其内容被其他命名空间的元素 扩展,但仅在忽略扩展元素时仍然安全才有效,否则扩展元素(包括元素的替代结构)应为KeyInfo的子 元素。 下面列出了disg:名字空间中已分配标识符的KeyInfo类型,可在RetrievalMethod元素的Type 属性中使用它们来描述一个远程的KeyInfo结构。 http://127.0.0.1/2000/09/xmldsig#RSAKeyValue http://127.0.0.1/2000/09/xmldsig#X509Data 下面列出了在dsig11:名字空间中分配标识符的其他KeyInfo类型。 http://127.0.0.1/2009/xmldsig11# SM2KeyValue

    6.5.3.2RSAKeyValue元素

    3.3SM2KeyValue元

    GB/T250612020

    simpleType name= "ECPointType" 文档类型定义:

    6.5.4RetrievalMethod 元素

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

    6.5.5X509Data元素

    标识: Type="http://127.0.0.1/2000/09/xmldsig#X509Data" (在RetrievalMethod或者Reference元素里用来表示类型) KeyInfo中的X509Data元素包括一个或多个密钥标识符,或X509证书(证书标识符或废止列表) 509Data的内容有: a)至少应使用一个下列元素类型中的元素,当描述或者关联同一个证书时,可一同使用或多次使 用下列元素; b)具体的内容如下: ·X509IssuerSerial元素,应包含一个符合RFC4514的X509issuer的甄别名/序列号对,甄 别名的生成应当符合甄别名编码规则。 ·X509SubjectName元素,应包含一个X509证书主体名字,应遵循RFC4514。 ·X509SKI元素,应包含X509证书主体密钥标识符扩展的base64简单编码。 ·X509Certificate元素,应包含一个base64编码的X509证书。 ·X509CRL元素,应包含一个base64编码的证书撤销列表(CRL)。 ·dsig11:X509Digest元素,应包含一个base64编码的证书杂凑值。该元素应包含

    GB/T250612020

    ·转义所有的后续的空格,用“20”代替“”。 因XML文档逻辑上包含字符,而不是字节,故应根据产生该XML文档的物理表示所使用的字符 编码方法来对结果GB/T13000字符串进行编码。 引人dsig11X509Digest元素后,可弃用X509IssuerSerial元素。

    6.5.6DEREncodedKeyValue元素

    6.5.7KeyInfoReference元素

    6.6Obiect元素

    GB/T250612020

    下面描述Manifest和SignatureProperties元素,并描述如何处理XML处理指令和注释。这些元 索可出现在上级容模型允许的任何地方;Signature内容模型应出现在Object中。本章为可选内容,应 用系统可根据实际情况选用

    7.2Manifest元素

    7.3SignatureProperties元素

    GB/T250612020

    7.4Signature元素中的处理指令

    本标准的语法与处理没有使用XML处理指令 注:如果CanonicalizationMethod没有去掉应用程序放在SignedInfo中的处理指令,那么它们也会被进行签名处理 所有CanonicalizationMethod都包含处理指令。如果一个处理指令是签名处理内容的一部分,那么对处理指令 的任何改变都会导致签名失败

    本标准的语法与处理没有使用XML处理指令, 注:如果CanonicalizationMethod没有去掉应用程序放在SignedInfo中的处理指令,那么它们也会被进行签名处理 所有CanonicalizationMethod都包含处理指令。如果一个处理指令是签名处理内容的一部分,那么对处理指今 的任何改变都会导致签名失败

    有CanonicalizationMethod都包含处理指令。如果一个处理指令是签名处理内容的一部分,那么对处理指令 任何改变都会导致签名失败 lature元素中的注释 准的语法与处理没有使用XML注释 果CanonicalizationMethod不去掉SignedInfo中的注释或者其他引用的XML,那么它们都会被进行签名处 。因此,如果保留了它们,任何注释的改变都会导致签名失败;同样,如果不指定忽视注释的规范化/变换方 法(如规范化的XML),对于任何XML数据的XML签名都会受到注释变化的影响

    7.5Signature元素中的注释

    本标准的语法与处理没有使用XML注释。 注:如果CanonicalizationMethod不去掉SignedInfo中的注释或者其他引用的XML,那么它们都会被进行签名处 理。因此,如果保留了它们,任何注释的改变都会导致签名失败;同样,如果不指定忽视注释的规范化/变换方 法(如规范化的XML),对于任何XML数据的XML签名都会受到注释变化的影响

    本标准的语法与处理没有使用XML注释。 注:如果CanonicalizationMethod不去掉SignedInfo中的注释或者其他引用的XML,那么它们都会被进行签名处 理。因此,如果保留了它们,任何注释的改变都会导致签名失败;同样,如果不指定忽视注释的规范化/变换方 法(如规范化的XML),对于任何XML数据的XML签名都会受到注释变化的影响,

    使用人员在检测签名消息是应验证其是 4、6.5及6.6的要求地基标准规范范本,若使用了附加 的签名消息,还应验证是否符合7.2、7.3的要求,各个元素的具体示例参见附录A。

    附录A (资料性附录) XML数字签名实例

    A. 1.2更多 Reference 的内容

    的签名就是把资源的内容和签署者的密钥绑定到一起

    Object和SignatureProperty扩展实例

    GB/T250612020

    A.3Object和Manifest扩展实例

    GB/T250612020

    家具标准附录B (规范性附录) XML数字签名文档类型定义

    ....
  • 相关专题: 信息安全技术  

相关下载

常用软件