GB/T25061-2020

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

Informationsecuritytechnology—XMLdigitalsignaturesyntaxandprocessingspecification

本文分享国家标准信息安全技术XML数字签名语法与处理规范的全文阅读和高清PDF的下载,信息安全技术XML数字签名语法与处理规范的编号:GB/T25061-2020。信息安全技术XML数字签名语法与处理规范共有62页,发布于2021-06-01
  • 中国标准分类号(CCS)L80
  • 国际标准分类号(ICS)35.040
  • 实施日期2021-06-01
  • 文件格式PDF
  • 文本页数62页
  • 文件大小2.89M

以图片形式预览信息安全技术XML数字签名语法与处理规范

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


国家标准 GB/T25061一2020 代替GB/T250612010 信息安全技术 XM数字签名语法与处理规范 Informationseeuritytechnology一 XMLdigitalsignaturesyntaxandproeessimgspeeifieation 2020-11-19发布 2021-06-01实施 国家市场监督管理总局 发布 国家标涯花警理委员会国家标准
GB/T25061一2020 目 次 前言 范围 2 规范性引用文件 术语、定义和缩略语 3.1术语和定义 3.2符号和缩略语 XMI签名概述 4.1概述 4.2定义文件用法说明 处理规则 5.1 生成 确认 签名语法 概述 Signature元素 6.3SignatureValue元素 6.4SignedInfo元素 6.5Keylnfo元素 6.6Object元素 附加的签名语法 19 7.1概述 19 7.2Manifest元素 19 7.3SignatureProperties元素 20 Signature元素中的处理指令 21 7.5Signature元素中的注释 21 证实方法 21 附录A资料性附录XMM数字签名实例 22 附录B规范性附录XML数字签名文档类型定义 29 39 附录c规范性附录XML数字签名模式定义 49 附录D资料性附录算法标识符 57 参考文献
GB/T25061一2020 前 言 本标准按照GB/T1.1一2009给出的规则起草 本标准代替GB/T25061一2010信息安全技术公钥基础设施XML数字签名语法与处理规范》 与GB/T25061一2010相比,主要技术变化如下 -增加了新的引用文件(见第2章); 在Keylnfo中,增加了sSM2KeyValue类型定义表示SM2椭圆曲线密码算法密钥值 见6.5.3.3); 在Keylnfo元素中,增加了DEREncodedKeyValue和KeylnfoRefe 子元素,并给出模式 rence 定义(见6.5.6和6.5.7); 增加了xmldsigllschema.xsd和xmldsigl-schema.xsd的定义(见附录C中C.2和C.3); 增加了密码杂凑算法SM3,消息鉴别算法HMACSM3,签名算法SM2-SM3的定义(见附录D 中D.3.2、D.4.3和D.5.3); 增加了xML规范化1.1算法和独占xMn规范化1.0算法(见附录D中D.6.3和D.6.4). 请注意本文件的某些内容可能涉及专利 本文件的发布机构不承担识别这些专利的责任 本标准由全国信息安全标准化技术委员会(SsAc/TC260)提出并归口 本标准起草单位;北京信安世纪科技股份有限公司、格尔软件股份有限公司、数安时代科技股份有 限公司、,国家密码管理局商用密码检测中心 本标准主要起草人:汪宗斌、刘婷、郑强、张永强、吕春梅、焦靖伟、史晓峰 本标准所代替标准的历次版本发布情况为 GB/T25061一2010o
GB/T25061一2020 信息安全技术 XML数字签名语法与处理规范 范围 本标准规定了创建和表示XM数字签名的处理规则、签名语法、附加的签名语法和证实方法 本标准适用于制作和处理XMI数字签名的应用程序、系统或服务 规范性引用文件 下列文件对于本文件的应用是必不可少的 凡是注日期的引用文件,仅注日期的版本适用于本文 件 凡是不注日期的引用文件,其最新版本(包括所有的修改单)适用于本文件 GB/T1988信息技术信息交换用七位编码字符集 GB/T13000信息技术通用多八位编码字符集(UCS) GB/T16264.8一2005信息技术开放系统互连目录第8部分;公钥和属性证书框架 信息技术可扩展置标语言(ML.)10 GB/T187932002 GB/T205182018信息安全技术公钥基础设施数字证书格式 GB/T35276一2017信息安全技术SM2密码算法使用规范 RFC2045基于多用途互联网邮件扩展第1部分:互联网消息体格式(MultipurposeInternet MailExtensions(MIMEPartOne:FormatoflnternetMessageBodies) RFC3279互联网X.509公钥基础设施的算法和标识符证书和证书撤销列表轮廓[Algorithms andldentifiersfortheInternetX.509PublicKeylnfrastructureCertificateandCertificateRevocation List(CRL)Profile] RFC3986统一资源标识符(URI);通用语法[UniformResoureeIdentifier(URI);GeneriecSyn- tax RFC4514轻型目录访问协议(LDAP);甄别名的字符串表示[LightweightDirectoryAccessPro tocolLDAP):StringRepresentationofDistinguishedNames RFC5480椭圆曲线密码主体公钥信息(EllipticCurveCr ryptographySubjectPublicKeyInfor matlon 术语定义和缩略语 3.1术语和定义 GB/T18793一2002界定的以及下列术语和定义适用于本文件 3.1.1 分离签名 detachedsigature 签名于Signature元素以外的内容上,签名和数据对象位于不同XMI文档中的XML签名文档的 组织形式
GB/T25061一2020 3.1.2 封内签名 envelopingsignature 签名于Signature元素中的Object元素之上,以Signature为父元素,将原始文档包含在Signature 中的XML签名文档的组织形式 3.1.3 封皮签名 evelopedsignature 签名于整个xML内容之上,然后将Signature作为子元素插人到原始文档中的xMI签名文档组 织形式 3.1.4 签名 Signature 签名者使用私钥对待签名数据的杂凑值做密码运算得到的结果 注:XML签名有三种描述方式:;分离签名、封内签名和封皮签名 3.1.5 签名应用程序 signatureapplication 实现了Sigature元素类型的结构及其子结构的应用程序 3.1.6 变换 transform 把一个数据从原始状态转化成导出状态的处理 示例xML规范化.xPath和xsL.T变换等 3.2符号和缩略语 下列符号和缩略语适用于本文件 ?;前一符号出现0次或1次 十;前一符号出现1次或多次 *;前一符号出现0次、1次或多次 CA:证书认证机构(CertificateAuthority CRL.证书撤销列表(CerifieateReocationListD) HTTP;超文本传输协议(HypertextTransferProtocol MIME;基于多用途互联网邮件扩展(MultipurposeInternetMailExtensions) OID:对象标识符(Objectldentifier) PKI:公钥基础设施(PublicKeyInfrastructure) URI统一资源标识符(UniversalResourceIdentifier) XML;可扩展置标语言(ExtensibleMarkupLanguage) XPath.XML路径(XMIPath) XSL;可扩展样式表语言(ExtensiblestylesheetLanguage XSLT:XSL变换(ExtensibletylesheetLanguageTransformations) XML签名概述 4.1概述 本章描述了XML数字签名的结构,第5章给出了处理规则第6章签名语法和第7章附加的签名
GB/T25061一2020 语法,XML格式要求见GB/T18793一2002 XM1签名可通过间接方式作用于任意数据对象,处理的步骤是先对数据对象进行杂凑处理,处理 后的结果放置在一个元素中,再对得到的元素进行杂凑处理并且通过密码学方法进行签名 XML数 字签名使用siegatue冗素来表示,其结构如下 signatureID? Signedlnfo anonicalizationMethod/ SignatureMethod ReferenceURI? Transforms>)? DigestMethod> 一/Reference>)十 SignatureValue Keylnfo>)? ( /Signature 签名是通过URRI关联数据对象的 在XML文档内部,签名通过XML 片段标识符关联本地的数 据对象,本地数据可包含在封内签名中,也可包含在封皮签名中 分离签名作用于外部网络资源或者作 用于以兄弟元素形式出现的同一个XML文档的本地数据对象,因此这种签名既不是封内签名也不是 封皮签名 一个XML文档中签名元素(以及它的ID和属性值和名字)可与其他元素同时存在,也可和 其他元素结合在一起,命名时应注意避免违反XML标识的唯一性 本标准凡涉及密码算法相关内容,按照国家有关法规实施 签名实例参见附录A 4.2定义文件用法说明 本标准附录B为数字签名文档类型定义,附录C为XMI数字签名模式定义 在应用本标准时,应将附录B和附录C的文件存放到应用可访问的位置,例如,假定存放在IP地 址为127.0.0.1的服务器上,各个文件的路径为:http://127.0.0.1/2001/XMLSehema.dtd、http:// 127.0.0.1/2000/09/xmldsi sgcoresedhema.xsd,htp:/127.0.0.1/2009/xmldsigllscdhema.xsd,htp:/ 127.0.0.1/TR/x /smldsigcorel/xmldsg! schema.xsd,应用可根据实际情况调整存放位置,可使用附录 C中C.3定义的方法来集合这些定义 本标准提及的上述地址(“127.0.0.1”)仅是为了明确一个特定空间,实际应用中可视情况调整 处理规则 5.1生成 5.1.1Referenee生成 对于每个要签名的数据对象,Reference元素生成的步骤如下 根据应用程序的要求,对数据对象进行变换; a
GB/T25061一2020 b 计算变换后的数据对象的杂凑值; c 创建一个Reference元素,包括一个可选的数据对象的标识,可选的变换元素,密码杂凑算法 和杂凑值 5.1.2Signature生成 Signature元素生成的步骤如下: 以signatureMethod指定的签名算法、CanonicalizationMethod指定的规范化算法和引用生成 a 的Reference为内容,创建Signedlnfo元素 b用Singednfo中指定的规范化算法进行处理,并用signednfo指定的签名算法来计算Signed- nfo的签名值 构建包括Signedlnfo,Objeet,Keylnfo和SignatureValue的Signature元素 Signature元素 中各个子元素的含义和具体构造方法见第6章 5.2确认 5.2.1概述 确认应包括 引用确认,验证SignedInfo中每个Reference包含的杂凑值 a b)签名确认,使用密码方法对计算SignedInfo得到的签名进行签名确认 5.2.2Reference确认 引用确认的步骤如下 根据Signednfo中CanonicalizationMethod指定的规范化方法来处理Signedlnfo元素; a b) 对于Signedlnfo中的每个Reference: 获得进行杂凑处理的数据对象; 1) 2) 使用Reference中指定的密码杂凑算法对结果数据对象计算出杂凑值; 3)将上一步生成的杂凑值和Signednfo中的DigestValue元素的值进行比较,如果有不同 那么确认失败 注:Signedlnfo在步骤a)进行了规范化,应用程序宜确保CanoniealizationMethod不会产生错误 5.2.3Signatue确认 Si 确认应比较以CanoniealizationMethod指定的规范化方法和signatureMethod指定的签 gnature 名方法处理SignedInfo的结果是否与Sig rreValue中的值是否匹配 gnatu Signature确认的步骤如下 从Keylnfo或者外部源获得密钥信息 a b)使用CanonicalizationMethod来获得signatureMethod的规范化形式.然后用得出的结果和上 面得到的密钥信息对Signedlnfo元素进行签名值验证 签名语法 6 6.1概述 6.1.1模式定义 签名语法通过XML模式定义来定义,所有的XML模式定义使用下面的XML前导说明部分、文
GB/T25061一2020 件类型声明和内部实体 模式定义 xmlversion="1.0”encoding="UTF-8"?> 注上一行为xML声明,该行中的 xmlns="http:/127.0.0.1/2001/XMI.schemar schema xmlns:ds="http://127.0.0.1/2000/09/xmldsig井" targetNamespace= -"htp //127.0.0.1/2000/09/xmldsig井" ersion="o.1"dlemenmuFormDetaul="qualfiel" 文档类型定义 ENTITY % Objeet.ANY ENTITY%Method.ANY> ENTITY%<一Transform>.ANY y.ANY'> ENTITY %SigeatuePopuert ENTITY%Keylnfo.ANY ENTITY%KeyValue.ANY ENTITY%X509Data.ANY'' 扩展标记使用dsigl1;名字空间 新的模式定义如下 ??xmlversion="1.0”encoding="utf-8"? schemaxmlns= -"htp tp;//127.0.0.1/2001/XMISchema" xmlns;ds="http://127.0.0.1/200/09/xmldsig" xmlhne;dsig1-"htp:/127.001/209/smldsigl# " argetNamespace="http://127.0.0.1/2009/xmldsigl1l# version="o.1"elementFormDefault一"qualifed" 6.1.2ds;CryptoBinary简单类型 定义ds:CryptoBinary简单类型,把XMI中任意长度的整数表示成字节字符串 具体方法是先把 整数值转化成高位在前格式的位串,在位串前面补0使得位数是8的整数倍,去掉开头为零字节(连续 8个0的位串),然后对这个字节串进行base64编码,base64编码遵循RFC2045 注base64Bbinary与CryptoBinary类型相同,定义一个新的类型主要是兼容不同的使用习惯 模式定义 GB/T25061一2020 "ase64Binary" restrictionbase /restriction /simpleType 6.2Signature元素 Signature元素是XML签名的根元素,Sig ture元素的组织应遵循下面说明的模式 1gnat 模式定义: complexTypename "SignatureType" seguence ds:Signedlnfo"/ ret eValue"/ 'ds;Signature element -"o" ds;Keylnfo”minOeeurs=! elementref "o" elementref="ds:Object”minOccurs= max(Occurs="unbounded"/ seguence attributename="Id" "ID"use="optional"/> type= exType comple 文档类型定义 ELEMENTSignature(Signednfo.SignatureValue,Keylnfo?.Object*> cOmpleXIy lypename5 simpleContent extensionbase="base64Bin inary"" atributename="Id”type="I["use="optional"> extension /simpleContent 文档类型定义 GB/T25061一2020 6.4Signelnfo元素 6.4.1概述 signednfo的结构包括规范化算法、签名算法和一个或者多个引用 Signednfo元素可包含 可选的D属性,供其他签名或者对象引用 Signedlnfo不包括显式的签名或杂凑属性(例如处理时间加密设备序列号等),如果应用程序需要 将属性与签名或杂凑相关联,则可在Objeet元素内的signatureProperties元素中包含此类信息 模式定义 elementname="SignedInfo”type="ds:SignedlnfoType"/> complexTypename "SignedlnfoType"> segence "ds;Canonicalizationm nMethod"/> elementref "ds;SignatureMethod"> ref n "ds;Reference”nmaxOceurs="unbounded"> lementret attributename="Id" -"ID"use= "optional" type= complexIype 文档类型定义 EIEMENTSignedlnfoCanonicalizationMethod, SignatureMethod,Reference十 ATTLISTSignednfo ID Id #IMPLIED CanonicalizationMethod元素 6.4.2 CanoniealizationMethod是signednfo元素中用于指定规范化算法的必要元素,指明签名处理之前 进行规范化处理的算法,CanoniealizationMethod元素使用算法标识符和实现需求中给出的算法 应用 实现应支持必要的规范化算法 可选用需要的规范化算法,若不明确指定,缺省的规范化算法是CanoniealXML 对Signednfo元素的呈现与规范化算法本身有关 下面的步骤适用于处理XML节点的算法 基于XM的规范化实现,实现带有一个XPath节点集合,节点集合源于包含Signedlnfo元素的文 档,并指明当前的Signedlnfo,后代、属性、Signedlnfo名字空间节点和它的后代元素 模式定义 "CanonirealizationMethod”ype="ds.:CanoniealiationMethodType"> elementname= complexTypename="CanonicalizationMethodType”mixed="true" seguence -"井井any"minOccurs="0"maxOccurs="unbounded" anynamespace= elementsfrom(1,l)namespace (O,umnbonded /sequence attributename="Algorithm”type="anyURI”use="required"/ 文档类型定义:
GB/T25061一2020 !ELEMENTCanoniealizationMethod#PCDATA%Method.ANY;关> 6.4.3SignatureMethod元素 SignatureMethod是用来指定进行签名生成和验证算法的必要元素,表明签名操作中用到的密吗 函数(如密码杂凑算法,公钥算法,MAC,填充方式等) 这个元素使用算法标识符(算法标识符实例可 参考附录D). 模式定义 mixed="true" "SignatureMethodType" name= complexIype sequence HMAcOutputl.ength”type="ds:HMAcOutputl.engthType elementname minOccurs= anynamespace="井井other"minOccurs="o”maxOceurs="unbounded"/> 0,unboundedelementsfromm1,1externalnamespace sequence 二attributename="AIgorithm"type="anyURI”use="required" /complexType 文档类型定义 !ELEMENTsSignatureMetbhod(#cDATAIHMAcoupuL.engh%Metbod.ANY)" elementname= "ReferenceType"一 complexIypename tOOlOl elementref="ds:Transforms”minOccurs="0"/ ds:DigestMethod"/ lementrel "ds:l stValue" elementref Dige" sequence. 二attributename="Id”type="I"use= "opional"> attributenamme= type="anyURI”use="optional"/> "Type" GB/T25061一2020 文档类型定义: 6.4.4.2URI属性 URI属性使用URI引用来标识一个数据对象,URI和XML均使用GB/T13000定义的字符集 但URI引用中禁止使用除#,%,[,]外,RFC3986中列出的所有非GB/T1988字符和保留字等特定 字符 禁止使用的字符应通过下面的方法进行转义 每个禁止字符按照一个或多个字节转化成GB/T13000编码 a b) 任何与一个禁止字符相应的字节序列使用URI的转义方法进行转义; 用生成的字符序列代替原始的字符 c XML签名的应用程序应能解析URI语法,并能够依据HTTP标准来解析URI引用、理解协议的 参数和状态信息,处理HTTP的状态码 一个资源有多个URI标识时,应使用最具体的URI标识 应用程序预先知道对象的标识时,可不提供UR1属性 URI的Type属性包含被签名对象的类型信息,表示成URI,Type属性是可选的 例如: Type="http://127.0.0.1/2000/09/xmldsig#Objeet",或 Type-"http://127.0.0.1/2000/09/xmldsig井Manifest" Type属性应指向具体的对象,而不是其内容,Type属性是辅助性的,不要求验证Type的有效性 6.4.4.3Referene处理模型 签名应用程序不必为了符合本标准而与XPath规范一致,但对于那些希望充分利用xML特性,将 XML签名生成作为应用程序的一部分来处理的应用程序则应使用XPath数据模型、定义和语法 采 用XPath的目的是为那些希望使用这些特征,而又符合XPath规范的应用提供一种可选途径 应用可 对一个节点集合进行充分的功能替换,并且仅实现本标准需要的那些Xpath表达式行为,为了简单起 见,本标准通常使用Xpath术语而不在每个地方都注明 对于“XPath节点集合”需求可实现一个包含 节点集合功能相同的应用程序 应用程序应对XML文档采用与Xpath处理等效的方式处理文档 解析URI或者一系列Transform的变换结果的数据类型是一个八位位组流或者是一个Xpath的 节点集合 本标准中所涉及的变换是根据输人定义的 签名应用程序的正常行为应为: 如果数据对象是八位位组流且下一个变换要求一个节点集合,签名应用程序应对字节流进行 a 分析,通过XM标准处理过程来得出必需的节点集合; b 如果数据对象是一个节点集合而下一个变换需要八位位组,签名应用程序必须使用规范的 XML来把节点集合转化成八位位组流 在需要不同输人的变换中进行变换时,用户可指定替代的变换来覆盖这些缺省的变换,最终的八位 位组流包含了受保护的数据,用DigestMethod指定的密码杂凑算法对这些数据对象进行处理,得出的 结果放在DigestValue中
GB/T25061一2020 若UR1引用为非同文档引用,解析UR1引用的结果应为一个八位位组流 URI标识的XML文档 指向同文档引用或应用不要求变换时,签名应用程序不必解析它 若片段出现在一个绝对或者相对URI的前面,那么片段的含义由资源的MME类型定义 对于 XML.文档,也可通过一个代理来完成签名程序对URI的解析包括对片段的处理) 如果片段处理不 是标准化处理的引用确认可能会失败 本标准建议URI属性不包括片段标识符,而将这种处理过程当 作附加的XPath变换来进行说明 当片段没有出现在URI前面时.xML签名程序应支持空URI和无名xpointer;若应用程序还要 支持任何保存注释的规范化操作,那么建议对同文档的Xpointer提供支持 由于应用程序可能无法控 制片段的生成,因此所有其他对Xpointer的支持都是可选的,所有对无名和外部引用的Xpointer的支 持也是可选的 6.4.4.4同文档URI引用 解析同文档引用应产生一个适合规范化XML使用的Xpath节点集合 特别是,解析一个空URl 应产生一个Xpath节点集合,该集合包含拥有URI属性的XML文档的每个非注释节点 片段URI中 #号后面的字符应符合Xpointer语法,处理Xpointer的时候,应用程序应使用包含URI属性的XM 文档的根节点来初始化Xpointer处理文档 若Xpointer处理后的结果是一个节点集合时,应用程序应 通过下面的方法获得 丢弃点节点; a) b)名字空间子资源中包括完整或者部分内容的XPath节点 用子节点替换根节点(假设它在节点集合里面); c 把所有元素节点E替换为E和E的后代节点(文本、注释、PI或者元素)以及所有的E和它的 d 后代元素的名字空间和属性节点; 如果URI不是一个完整的XPointer,那么删除所有的注释节点 解析时应执行步骤d)的替换 XPointer是使用子树的根节点元素来指明一个XMI文档的语法分 析树的子树,而规范化的XML把一个节点集合当作节点的集合在这种情况下,缺少后代节点就会导 致在规范形式的内容的不足 步骤e)用来处理空UR1,裸名指针和子序列XPointers 当传递一个节点集合时,需要按照有注释 和没注释对节点集合进行处理,处理成字节流时会调用Xpath表达式缺省的或者没有注释的),因此 为了在传递节点集合的时候保留脱模注释的缺省的行为,应去除非完整的XPointer的URI 若要在通 过标识符ID选择元素的时候保留注释,应使用这样的全XNPointer:URI='井xpointer(id('ID')';若 要在选择整个文档的时候保留注释,应使用这样的全XPointer:URI='井xpointer()',XPointer包含 了一个含有根节点的简单的Xpath表达式,步骤d会将该根节点替换为语法分析树的所有节点所有 的后代、所有的属性和所有节点的名字空间 6.4.4.5Iransforms元素 可选的Transforms元索包括一个有序的Transform元素列表,这些元素描述签名者如何获得将 要进行杂凑处理的数据对象,每个Transform的输出都要作为下一个Transform的输人,第一个 ransform的输人是解析Reference元素的URI属性所得到的结果,最后一个Transform的结果是D: gestMethod算法的输人 使用Transform后,签名者处理的已经不是原始的文档,而是Transform处 理后的文档 每个Transform元素由一个算法属性和与这个算法配套的内容参数构成(如果有参数的话),算法 10
GB/T25061一2020 属性值指定要进行处理的算法的名字,Transform内容提供附加的数据来控制算法处理Tr 输 ransform 人的过程 Transform使用xPath节点集合为输人,而其他一 些需要 在Reference处理模型中曾经提到,一些 -个字节流 若实际的输人符号Transform的需求,则Transform在操作的时候不会更改输人 若 Transform的输人要求和实际输人的格式不同,则实际的输人需要进行一些变换 Transform可能需 要显式的MIME类型、字符集或者是它们从前面的Transform或源数据收到的数据的相关信息,应以 Transform算法参数的形式提供这种数据的特征,通过参数的形式把这些数据特征提供给Transorm 算法,且应在算法的规范中描述出来 Transform例子包括但不仅限于base64解码.XML规范化,XPath过滤和XSLT 模式定义: elemmentname="Transforms type="ds:TransformmsType"/ 1s" "TransformsType" complexITypename sequence elementref="ds:Transform”max(Occurs="unbounded"/ Sequence /complexIype elementname="Transform' type="ds:TransformType"/> "true" complexTypename ransformType”mixed= choiceminOccurs= mmaxOccurs="unbounded" 井井other”processContents="lax"/ anynameSpace= elementsfrom(0,unbounded namespaces /complexTy ype 文档类型定义 ELEMENTTransforms(十)> ELEMENTTransform>井PCDATAXPath%Transform>.ANY;关 ATTLIST CDATA 井REQUIRED> Algorithm EIEMENTXPath井PCDATA 6.4.4.6DigestMethod元素 . DDigestMethod是指定签名对象的密码杂凑算法的必要元素,使用通用结构来描述算法标识符和实 现算法(可参考附录D) 如果URI解析的结果和变换处理的结果是一个XPath节点集合,则结果应按Reference处理模型 中规定的方法进行变换;如果URI解析和变换处理结果是字节流,则不需要进行变换,直接对得出的字 节流数据进行密码杂凑算法处理 模式定义 elementname="DigestMethod" type-"ds;DigestMethodType"/> 1
GB/T25061一2020 Iypename="DigestMethodType”mixed="rue"> attributename一 red"/ "Algoritlh -"anyUR!" use一 -"eqguir hm”type= 一/complexType> 文档类型定义 !EILEMENTDigestMethod井PCDATA%Method.ANY;* /simple'Type 文档类型定义 6.5Keylnfo元素 6.5.1概述 Keylnfo是接收者获取确认签名所需密钥材料的可选元素 KeyInfo可包括的信息有:密钥、名字、 证书和其他公开密钥管理信息 本标准定义了一些简单类型,应用程序可扩展这些类型,也可用XMl 名字空间定义自已的密钥标识和交换语义来代替它们 但密钥信息的可信问题(例如,它的真实性或强 度)不在本标准讨论范围之内,而应由应用程序来处理 接收者能从应用程序的上下文中获取验证签名的密钥时可忽略Keylnfo元素,Keylnfo中的多个 声明可指向同一个密钥,应用程序应实现KeyValue,但不一定实现RetrievalMethod 应用也可通过引 人不同名字空间的元素,来定义和使用自已选择的任意机制 Keylnfo的子元素(例如X509Data)的模式/文档类型定义规范允许其内容被其他命名空间的元素 扩展,但仅在忽略扩展元素时仍然安全才有效,否则扩展元素(包括元素的替代结构)应为Keylnfo的子 元素 下面列出了disg;名字空间中已分配标识符的Keylnfo类型,可在RetrievalMethod元素的Type 属性中使用它们来描述一个远程的Keylnfo结构 -http://127.0.0.1/2000/09/xmldsig#RSAKeyValue -http://127.0.0.1/2000/09/xnmldsig#X509Data 下面列出了在dsigl1:名字空间中分配标识符的其他KeyInfo类型 http://127.0.0.1/2009/xmldsigll#SM2KeyValue 12
GB/T25061一2020 http;//127.0.0.1/2009/xmldsigl1井DEREncodedKeyValue 除了上面用XML结构定义的这些类型,本标准定义了一个类型来表示二进制的数字证书又称 X509证书),具体定义见GB/T16264.82005的第7章 http:/127.0,.0.1/2000,/09/xmldig井rawX50Cerifceatce 模式定义 -"ds:KeyhndoTye"> elementname="Keylnfo”type= esylnfoType”nmixed="rue" complexTypename unbounded" chO1cemaXOcCurS 'ds:KeyName" ds;KeyValue" ds;RetrievalMethod"/> 'ds:X509Data" lnTn elementref="dsigl1;DEREncodedKeyValue"/> DEREncodedKeyValue(XMLDsig1.l)willusetheanyelement elementref-"dsigll;KeylnfoReference"/> KeyhnfoRderence(XMIDigl.1)willusetheanyedlement 心 anyprocessContents="lax”namespace="井井other"7 l,lelementsfrom0,unboundednamespaces /choice attributename="Id" "ID"uuse= -"optional"> type= /complexType> 文档类型定义 ELEMENTKeylnfo井PCDATAKeyNamelKeyValuelRetrievalMethodX509Data%Key Info.ANY;关 文档类型定义: !ELEMENTKeyName井PCDATA 6.5.3KeyYalue元素 6.5.3.1概述 KeyValuee应包含唯一有效确认签名的公钥 KeyValue元素可包括在外部定义的公钥值.它们以 PCDATA或外部名字空间的元素类型来表示 在附录A中给出了SM2公开密钥的结构化格式的 实例 13
GB/T25061一2020 模式定义 anynamespace="井井other" ssContents="lax"/ process /choice 文档类型定义: ELEMENTKeyValue井PCDATARSAKeyValue%KeyValue.ANY;关 6.5.3.2RsAKeyYalue元素 标识符 Type="http;//127.0.0.1/2000/09/xmldsig井RSAKeyValue" 可用在RetrievalMethod或者Reference元素中用来表示类型 RSsA密钥值有两个域;模和指数 实例 xA7SEU十eOyQH5rm9kbCDN9o3aPlo7HbP7tX6wOoe LZAtNfyxSZDU16ksL6wjubafOqNEpewR3RdFsT7bCqnXPBe5E Ih5u4VEy19MzxkXRgrMvavzyBpVRgBUwUIV5foK5hhmbktQhy Ndy/6LpQRhDUDsTvK十g9Ucj47es9AQJ3U= 之/Modulus> E Exponent>AQAB< 2xponent /RSAKeyVal ue 任意长度的整数应遵循XML中dsCryptoBinary类型的定义,用XML表示为字节串 模式定义 elementname="RsAKeyValue”type一-! ="ds;RSAkeyValueType"> -"RsAKeyVaucType"> complexTypename= Seqence elementnamme="Modulus" ype="ds,CrypolBinary" elementname "Exponent”type="ds:CryptoBinary" sequence /complexType> 文档类型定义 GB/T25061一2020 Type="http://127.0.0.1/2009/xmldsigll#SM2KeyValue" 可用在RetrievalMethod或者Reference元素中用来表示类型 sM2KeyValue元素定义在http:/127.0.0.1/2009/xmldsigl1井名字空间中 SM2公钥由域参数和PublicKey两部分组成 实例 SM2KeyValuexmlns="http://127.0.0.1/2009/xmldsigll井"> NamedCurveURI="urn:oid:1.2.156.10197.1.301” Publiekey>DanuWsEPKi2urskIRv十pBeYNnGFlkrS2Vveu/FrudlFKFTisceMU1TCa0K23Lko 十L7HIGz+swFDAnHPD7n十YQ elementname="PublicKey"type="dsigll:ECPointType" seguence 二attributename="Id" "ID”use= "optional" type= /complexType complexTypename="NamedCurveType"> attributenanme="URI”type="anyURI”use="required" /complexType restrictionbase="ds:CryptoBinary" 文档类型定义: ELEMENTPublickey#PCDATA 15
GB/T25061一2020 6.5.4RetrievalMetho元素 Keylnfo中的RetrievalMethod元素用于传递存储在另一个位置的Keylnfo信息的引用 例如,一 个文档内的几个签名使用一个内部或者外部的X509证书链来验证签名,每个签名的Keylnfo都可用 个RetrievalMethod元素来引用证书链,而无须每次都使用X509Certifieate元素的完整证书链 除了没有DigestMethod或DigestValue子元素,RetrievalMethod使用与Reference的URI属性和 Reference处理模型同样的语法和解析引用的行为,且应包含URI Type是表示要检索的数据类型的可选标识符 本标准定义了具有相应xMn结构的KeyInfo类 型,解析一个RetrievalMethod的Reference 的结果是一个XML元素或者是以此元素为根的文档 Keylnfo的rawX509Certificate类型(不包含XML结构)返回一个二进制X509证书 模式定义 ype"> attributename="Type”type="anyURI”use="optional"/ 文档类型定义 GB/T25061一2020 Algorithm属性标识的密码杂凑算法的URI,杂凑的输人应为证书的原始八位字节串 伴随或补充上述元素的外部名字空间的元素 X509IssuerSerial,X509SKI,.X509SubjectName和dsigl1:X509Digest元素应指向证书或者包含 确认密钥的证书 所有指向一个特定的证书的元索应放在X509Data元素中,而且引用应指向这个 X509Data元素 同一个密钥而和不同证书关联的X509IssuerSerial,X509SKI,X509SubjeetName和dsigll: X509Digest元素应分组到一个Keylnfo元素中,但是可出现在多个X509Data元素中 出现在X509Data元素中的证书应能关联到确认密钥,可通过包含确认密钥,或作为证书链的一部 分包含这个确认密钥,但不要求证书链有序 下面是具体的例子 <!--twopointerstocertifieateA> X509IssuerSerial CN=ZongbinwANG,OU=R8.D,O=INFOSEC L=HaidianDistriet,ST=Beijing,C=CN1234567831d97bd7之/X509SKI 一/X509Data <!--singlepointertocertificeate- X509subjectName>SubjectofCertificateB一/X509SubjectName> /X509Data> X509Data> certificatechain- -Sig ignercert,issuerCN=arbolCA,OU=R8.D,O=INFOsEC,C=CN,serial4-- MCXTcCA..MIICPzCCA !--RootcertsubjectCN=tootiseCA,OU=R8.D,O=INFOSEC,C=CN-- X509Certificate>MIICSTCCA..之/X509Certificate 一个 注,对于PKCS#7编码的证书链或者CRL没有直接的规定 元素中可出现一组证书和 必 CRL,而且在一个Keylnfo元素中可出现多个X509Data元素 每当一个 X509SubjectName >或”或者“;”; 转义所有的G;B/T1988控制字符GB/T13000范围内的\x00\xlf),即在它们的 GB/T13000两位16进制数之前加上“\”字符; 17
GB/T25061一2020 转义所有的后续的空格,用“\20”代替“\” 因XM文档逻辑上包含字符,而不是字节,故应根据产生该XM1文档的物理表示所使用的字符 编码方法来对结果GB/T13000字符串进行编码 引人dsigl1:X509Digest元素后,可弃用X509IssuerSerial元素 6.5.6DEREneodedkeyVaue元素 标识符: Type="http://127.0.0.1/2009/xmldsigll#DEREncodedKeyVaue" 可在RetrievalMethod或Referenee元素中使用,来识别指示对象的类型 X.509证书的主体公钥信息字段中公钥算法和值,编码的要求见GB/T20518一2018中5,2.3.7,编 码后再进行base64简单编码 对于本标准中支持的密钥类型,下面的标准文件标识了密钥/算法类型的主体公钥信息格式和相关 OID值: SM2:见GB/T352762017中7.1 RSA:见RFC3279 EC;见RFC5480. 自定义扩展密钥类型可见下面的方式 模式定义 argetNamespace="http://127.0.0.1/2009/xmldsigl1l井”-> "DEREncodedKeyValue"type="dsig11;DEREncodedKeyValueType"/> elementname "DEREncodedKeyValueType" .complexT ypename= S1mpleContent extensionbase="base64Bin nary" /extension /simpleContent /complexType> 6.5.7KeylnfoReference元素 Keylnfo中的KeyInfoReference元素用于传递Keylnfo元素的位置引用 例如,文档中的多个签 名可能使用同一个证书链验证的密钥 每个签名的Keylnfo可使用一个KeylnfoReference元素来引用 这个证书链.而不是证书链包含多个X509Certificate元素的序列 KeylnfoReferenee的使用与Reference的URI属性和Reference处理模型相同的语法,但没有子元 素且要求使用URI属性 KeyInfoReference取得的结果应为一个Keylnfo元素,或者一个以Keylnfo为根元素的XML 文档 模式定义 tNamespaee-"htp://127.0.0.1/2009/xnldsigll#”- ! target complexTypename="KeylnfoReferenceType" attributename="URI" type="anyURI" "required"/> use 18
GB/T25061一2020 attribute -"Id" "ID"uuse= "optional"> name= type= /complexType 6.6objeet元素 标识符 Type=http://127.0.0.1/2000/09/xtmldsig#Objeet可用在Reference元素中表示类型 Object是可包含任何数据的可选元素,可出现一次或多次 Objeet元素可包括可选的MIME类 型、,ID和编码属性 Object的编码属性可用UR1方式标识object所用编码例如一个二进制文件) MimeType可选属性是描述.obget中数据编码的字符串值,具体的类型定义见RFc230t5,此属性 纯粹是辅助性的,本标准不要求对MimeType信息进行验证,应用程序应处理标准类型编码和签名确 认编码的变换 例如,如果对象中包括base64编码的PNG,那么Encoding可指定为base64并且Mim CType指定为“image/png” signedlnfo或Manifes通过Refer 来引用Objeet的ld,Objeet元素常用于封内签名,被签名 rence 的对象将成为签名元素的一部分 对整个Object元素计算杂凑值,包括开始和结束标签 模式定义 GB/T25061一2020 Iype=http;//127.0.0.1/2000/09/xmldsig井Manifest可用在Reference元素中表示类型 Manifest元素提供一张Reference列表,与Signedlnfo中的列表不同,Manifest列表中的应用程序 应规定实际上使用了哪个密码杂凑算法来核对引用的数据对象,还应规定如果对象不可访问或者杂凑 值比较失败时,采取什么措施 若从Signedlnfo中指向Manifest,应用签名确认行为来验证Manifest 本身的杂凑值 应用程序可自主决定如何验证Manifest中的杂凑值 若从一个Manifest中引用另 个Manifest,则导致不能验证这种两层嵌套的杂凑值 模式定义: elementname="Manifest" type-"ds;ManifestType"/> -"ManilesIType" complexTypename一 seguence elementref一"ds:Reference"mmaxOccurs="unbounded"/> sequence attributename="Id”type="D”use="optional"> /complexType 文档类型定义 roperties”type="ds:SignaturePropertiesType Signatu complexTypename="SignaturePropertiesType" Seguence maxOccurs="unbounded" elementref="ds;SignatureProperty" /sequence attributename="d”type="ID”use="optional!"> /complexType> complexTypename="SignaturePropertyType”mixed="true" choicemaxOccurs unbounded" ="lax"/ anynamespace 井井other”processContents 1,lelementsfrom1,unboundednamespaces /choice attributename="Target" arget"type="anyURI" "required"> use= 20
GB/T25061一2020 "ID"use= type= /complexType> 文档类型定义 !ELEMENTSignaturePropertiesSignatureProperty十> GB/T25061一2020 附 录 A 资料性附录 XMIL数字签名实例 简单实例 A.1 A.1.1概述 下面是符合XML规范的描述HTML4内容的分离签名的例子 s01 reMethod [s04a] -Signature" [s04b] Algorithm="htp:/127.0.0.1/20o1/04/xmltsig-more#sm2-sm3"/> [s05] ReferenceURI="http;//127.0.0.1/TR/2000/RECxhtml1-2000o126/" [s06] Transforms> [s07们 Algorithm="http://127.0.0.1/2006/12/xmlel4nl1"/> lransform [s08] /Transforms [s09a DigestMethod [09b Algorithm="http://127.0.0.1/2001/04/xmldsig-more#smn3"> [sl0a BZT3Gnm27GRs十4fdl2+vNWZ5ybl48cgO4PtalJUhE- [s10 [sl3a SignatureValue>xll4qrUK7I8fU94Xfmh88DUaleaSAeWpy6c/ = [sl4] Keylnfo [sl5a KeyValue> [sl5b [sl5e] NamedCurveURI-"urn;oid1.2.156.10197.1.301" [s15d BMKRxUw78ThPCi8FGtn4k4xm6XhsgcMoK5LIO86L [[sl5 HVqUOI十R3pleNAVhg00yjXZisplIbmKulmCIIlrEin8fH68= PublieKey> [s15门 /SM2KeyValue> [sI5g /Signature [sl7] 其中,[s02-12]Signednfo元素是必需的,实际上它就是要进行签名的信息 Singedlnfo的确认包 22
GB/T25061一2020 括两个必备的处理过程;在Singedlnfo上的Signature确认和在Singedlnfo中的每个引用杂凑的确认 要注意的是,计算SignatureValue使用的算法在SignatureValue元素处于Signednfo范围外时,也被 包括在要签名的信息中 [s03]把Signedlnfo元素当作签名操作的一部分进行杂凑处理之前,先使用规范化算法对它进行 规范化 要注意,这个例子以及本附录的所有的例子都不是规范化的形式 s04]使用SigatureMethod算法把规范化的Signednfo转换成SignatureValue,它是一个密码杂 读算法和一个依赖于密钥的算法,还可能和其他算法(如RSAsHA1的填充算法)的结合,将算法名字 进行签名,以抵御那种替换成算法复杂度较弱的算法的攻击 为了提高应用互操作性,尽管是否使用这 些算法完全取决于签名的创建者,本附录仍列举了一系列的签名算法,本附录推荐了一些,也允许用户 声明自己的算法 [s05-l1]每个Referenee元素包括密码杂凑算法和对标识出的数据对象进行处理后的杂凑结果 也可包括产生杂凑处理输人的变换,通过计算数据对象的杂凑值并且对该值进行签名,从而为该数据对 象加上签名,随后可通过引用确认和签名确认来检验签名结果 [sl416]Kesylnfo指示用来确认签名的公钥 标识的可能形式包括证书,密钥名称和密钥交换算 法和信息 Keylnfo是可选的有两个原因,第一;签名者可能不愿意把公钥信息展现给文档处理的各 方;第二;公钥信息可能在应用的上下文中就能够得到,不用显式的表示出来 由于Keylnfo在Singed ln的外部,如果签名者想把公钥信息也加人签名信息中使用Relerence可很容易来标识它并把Key nfo加人签名中 A.1.2更多Referenee的内容 [[s057 ReferenceURI-"http;//127.0.0.1/TR/2000/RECxhtml1-20000126/"> [s06 Transforms> orithm= s07 Aeon Iransform "http:/127.00.1/20/12/xmlel4nl1"> K [[s08 Transforms. [s09 DigestMethodAlgorithm="http://127.0.0.1/2001/04/xmldisg-more井sm3"/ [sl0 BZT3Gm27GRs十4fdf2+NWZ5ybl48cg04PtalJUhE=GB/T25061一2020 的签名就是把资源的内容和签署者的密钥绑定到一起 A.2ojee和SignatureProperty扩展实例 本附录展示了xM数字签名处理的概念(数据完整性和消息认证),希望表示其他语义的应用应 依赖诸如XML,RDF等其他的技术 签名应用程序应注意它所签名的内容,接收应用程序但不必明 白那些语义 任何关于签名生成的内容都可位于SignatureProperty元素中 必需的Target属性把 Signature元素指向属性应用到的Signature元素上 考虑上面的例子,加人一个附加的指向一个包括SignaturePro roperty元素的本地对象的引用 ] SignatureId="MySecondSignature" Signednfo一 " [p02] [no [p07 Transformms e井sm3"/ [p08] DigestMethodAlgorithmm="http://127.0.0.1/2001/04/xmdi、 isgmore Cp09] DigestValue>BZT3(Gm27GRs十4fd2J十vNwZ5ybl48cgO4PtalJUhE= [pl0] 二/Signedlntfo> [pl1] [p1l2] pl3] Sig [pln ignatureProperties " SignaturePropertyd-"AMadeUpTmeStamp”Target="#MySecondSignature" [pl5 [pam timestampxmlns="http://www.ietf.org/rfexXXX.txt" [pl7刀 date>19990914之/date> [p8 /timestamp [plg [p20] /SignatureProperty /SignatureProperties [p21] [p22] /Object> Dp23幻 /Signature> 其中[pD4]可选Referenee中的Type属性提供了由URI标识的资源的相关信息,可指明是ob6 ject,SignatureProperty还是Manifest元素,应用程序可根据这一点来对一些Reference元素进行特殊 的初始化处理 指向一个Object元素中的一个XMI 数据元素的引用应该标明它指向的真正的元素 如果元素内容不是xMI(也许是二进制或者编码后的数据),引用应标明obye和Referenee类型;如 果是,应指明Object 要注意的是,Type是一个辅助性的属性,签名不需要对它采取任何处理,也不用 24
GB/T25061一2020 检查它的正确性 [pl3]Objeet是一个可选的元素,用于在Signature元素或者其他地方引人数据对象 可选择对 Object进行编码 [pl4s21]签名属性,例如签名时间,可选地通过在Refe 里面指明它们而对它们进行签名 rence A.3objeet和anifest扩展实例 本附录使用Manifest元素来展示如何满足附加的一些需求 下面是两个需求以及Manifes是如 何满足它们的 尽管签名操作本身是开销很大的公开密钥签名,应用程序仍然经常需要高效地对多个数据对 a 象进行签名操作 这个需要可通过在Singednfo里面包含多个Reference元素来实现,因为 加人的每个杂凑都保证了进行杂凑处理的数据的安全 然而,一些应用也许不需要这种方法 伴随而来的确认行为,因为它需要Singedlnfo中的每个Reference 都经过引用确认过程的处 理,这些应用可能希望为它们保留引用确认决策逻辑 例如,一个应用可能收到一个包含三个 Reference元素的signature的合法的singednfo元素 如果其中一个Reference操作失败 ,签名就会在确认过程中失败 然而,应用程序可能就想把两个有效的Reference元素当作 有效来处理,或者就想根据不同的失败原因采取不同的对策,为了实现这一点,Singednfo要 参考包含一个或多个Reference元素的Manifest元素 然后,Manifest的引用确认就处于应 用程序的控制中了 b 考虑这样一种应用,对大量的文档进行了许多签名操作(使用不同的密钥) 一个效率不太高 的解决方案是使用一个分离的签名反复地应用到大量的Singedlnfo元素中(使用很多Refer ence);这种方法很浪费而且很冗余 一个高效的方法是在一个Manifest元素中加人多个 Reference,然后在多个Signatun re元素中引用这个Manifest 下面的例子包括了一个Reference,它签署了一个在Objeect元素中的Manifest m01] 、7 [m03] ransforms> [[nm0 TransformAlgorithm="http:/127.0.0.1/2006/12/xnmlel4nl1"八 /Transforms [[m05 [m06 -DigestMethodAlgorithm="htp:/127.0.a.1/20o1/04/xmldsgmore#sm3" [[m07] DigestValue>8/几LEOkfjEE/FSEIFTptZrlmUh00sAJUhH3BIPbx0= /Reference [m08 [m09]Object> [ml01 [ml1 [[ml27 GB/T25061一2020 [ml5 [ml6] Reference Lml7 /Manifest> m18] A.4签名实例 A.4.1分离签名 签名结果 xmlversion="1.0”encoding="UTF-8”standalone="no"? re井sm2-sm3"/一 DgestValue>T3Gm27GRJs十4fdl2+NwZybl48cgO4PtalJUhE=之/DigestValue> //Reference /Signedlnfo>" xll4qrUK7I8fU94Xfmh88DUaLeaSAeWpy6c/jbzohF6qszDkvmHy0FDufomhi30asLEkP2DCdfee M5IMlpn0w== KeyInfo> 一ECKeyValuexmlns="http:/127.0.0.1/2009/xmldsigll井"> NamedCurveURI="urn:oid:l.2.840.10045.3.1.7"/> PdbiekKey BMKRxUw78ThPCi8FG4n4k4xm6XhsgcM0K5LIO86LIHVqUO1l十R3pLeNAVhg00yXZispILb- nmKulmCIIrEin8fH68=<之/Pubiekey /Signature A.4.2封内签名 签名后: xmlversion="1.0”encoding="UTF-8”standalone="no"? GB/T25061一2020 Algorithm="http://127.0.0.1/2006/12/xmlel4nl1l井WithCo omments/ SignatureMethodAlgorithm="http;//127.0.0.1/2001/04/xmldsig-more井sm2 sm3"/ 一yG0h7Glg/ngiB5NE十UssQmtz9TnZUqhr08B0KJGr3E=之/Di- gestValue> 一/Reference /Signedlnfo一 SignatureValue hHGxS4xCV1D6R2oM7GmDM2Kh8m十sWntGuDu33gVENr2nC2YUqBDPi7b9t707x4ijq6sA6 Re9yf9DuPYEPsJg一 /SignatureValue KeyValue 一/ECKeyValue> /KeyValue sometext一/Object> /Signature A.4.3封皮签名 签名前 /Envelope 签名后: xmlversion="1.0”encoding="UTF-8"? Envelopexmlns="urn:envelope" Signaturexmlns="http://127.0.0.1/2000/09/xmldsig井"> Si sgnedlhnfo> CanonicalizationMethod Algorithm="http://127.0.0.1/2006/12/xml-el4nl1井WithComments"/> Sig reMethodAlgorithm="http://127.0.0.1/2001/04/xmldsig-more井sm2 ignatur sm3"/

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

随着互联网技术的不断发展,信息安全已经成为了互联网应用中不可避免的问题。而XML数字签名技术可以有效提升信息安全领域的安全性能。在这方面,GB/T25061-2020在XML数字签名的语法和处理规范方面进行了详细的规范。 XML数字签名是一种基于公钥加密技术的数字签名方法,它可以对XML文档或其他数据进行数字签名处理,从而确保文件的完整性、不可否认性和真实性。GB/T25061-2020标准明确了XML数字签名的相关概念及其使用方法,并规定了XML数字签名中所涉及到的算法和证书格式等细节。 此外,标准还指出了XML数字签名过程中需要注意的事项,如何进行数字签名的验证以及如何处理数字签名过程中可能出现的异常情况。这些规范的制定,可以有效地保障XML数字签名技术在信息安全领域的应用和实践。 总之,GB/T25061-2020标准的出台,为保障信息安全提供了重要的工具和指导,有助于信息安全领域的规范化、专业化、标准化和国际化的进程。同时,该标准也能够帮助从业者更好地理解和应用XML数字签名技术,提高信息安全领域的整体水平。

信息安全技术XML数字签名语法与处理规范的相关资料

    和信息安全技术XML数字签名语法与处理规范类似的标准

    信息安全技术网络安全漏洞标识与描述规范
    上一篇 本文分享国家标准信息安全技术网络安全漏洞标识与描述规范的全文阅读和高清PDF的下载,信息安全技术网络安全漏洞标识与描述规范的编号:GB/T28458-2020。信息安全技术网络安全漏洞标识与描述规范共有8页,发布于2021-06-01
    内燃机动力内河船舶系泊和航行试验大纲
    本文分享国家标准内燃机动力内河船舶系泊和航行试验大纲的全文阅读和高清PDF的下载,内燃机动力内河船舶系泊和航行试验大纲的编号:GB/T3221-2020。内燃机动力内河船舶系泊和航行试验大纲共有82页,发布于2021-06-01 下一篇
    相关推荐