首页 购物车 询价
www.GB-GBT.com 收录标准: 222618 (2026-05-27)

GM/T 0125.2-2022 相关标准英文版PDF

搜索结果: GM/T 0125.2-2022, GM/T0125.2-2022, GMT 0125.2-2022, GMT0125.2-2022
标准号码内文价格美元第2步(购买)交付天数标准名称详情状态
GM/T 0125.2-2022 英文版 455 GM/T 0125.2-2022 3分钟内自动发货[PDF] JSON Web 密码应用语法规范 第2部分:数字签名 GM/T 0125.2-2022 有效
基本信息
标准编号 GM/T 0125.2-2022 (GM/T0125.2-2022)
中文名称 JSON Web 密码应用语法规范 第2部分:数字签名
英文名称 JavaScript object notation web cryptographic application syntax specification - Part 2: Signature
行业 Chinese Industry Standard (推荐)
中标分类 L80
字数估计 20,267
发布日期 2022-11-20
实施日期 2023-06-01
发布机构 国家密码管理局

GM/T 0125.2-2022: JSON Web 密码应用语法规范 第2部分:数字签名 ICS 35.030 CCSL80 中华人民共和国密码行业标准 JSONWeb密码应用语法规范 第2部分:数字签名 specification-Part2:Signature 2022-11-20发布 2023-06-01实施 国家密码管理局 发 布 目次 前言 Ⅰ 引言 Ⅱ 1 范围 1 2 规范性引用文件 1 3 术语和定义 1 4 缩略语 2 5 符号 2 6 JSONWeb数字签名(JWS) 2 6.1 概述 2 6.2 JOSE头部 2 7 JWS数字签名算法 4 7.1 概述 4 7.2 SM2数字签名算法 4 8 JWS消息鉴别算法 5 8.1 概述 5 8.2 基于SM3算法的消息鉴别算法 5 9 JWS生成和验证 5 9.1 概述 5 9.2 生成流程 5 9.3 验证流程 5 10 字符串比较规则 6 11 密钥身份识别 6 12 序列化 6 12.1 概述 6 12.2 紧凑序列化 7 12.3 JSON序列化 7 附录A(资料性) JWS示例 9 A.1 综述 9 A.2 SM2算法对有效载荷进行签名示例 9 A.3 SM2算法对有效载荷生成消息鉴别码示例 10 A.4 SM2算法对有效载荷进行多人签名示例 11 前言 本文件按照GB/T 1.1-2020《标准化工作导则 第1部分:标准化文件的结构和起草规则》的规定 起草。 本文件是GM/T 0125《JSONWeb密码应用语法规范》的第2部分。GM/T 0125已经发布了以下 部分: ---第1部分:算法标识; ---第2部分:数字签名; ---第3部分:数据加密; ---第4部分:密钥。 请注意本文件的某些内容可能涉及专利。本文件的发布机构不承担识别专利的责任。 本文件由密码行业标准化技术委员会提出并归口。 本文件起草单位:广东省电子商务认证有限公司、智巡密码(上海)检测技术有限公司、格尔软件股 份有限公司、北京信安世纪科技股份有限公司、北京数字认证股份有限公司、北京国脉信安科技有限公 司、中国科学院信息工程研究所、广东南方通信建设有限公司、上海市数字证书认证中心有限公司。 本文件主要起草人:陈树乐、韩玮、郑强、张永强、袁峰、高能、张庆勇、赵敏、刘义、黄志伟、林少柳、 梁宁宁、梁家声、傅大鹏、傅鹏、王维初。 引 言 《JSONWeb密码应用语法规范》旨在以国产商用密码算法为核心,来保证数据机密性和完整性,适 用于JSONWeb密码应用产品的研发与检测,其他使用JSON数据交换格式的安全产品,可参考使用。 《JSONWeb密码应用语法规范》由四个部分构成。 ---第1部分:算法标识。定义了JSONWeb密码应用的算法标识。 ---第2部分:数字签名。描述了基于JSON数据结构来保护消息内容的数字签名或消息鉴别码 的语法规范,并给出了相应的生成和验证流程。 ---第3部分:数据加密。描述了使用身份鉴别和加密来确保数据的机密性和完整性的技术要求。 ---第4部分:密钥。定义了密钥的JSON数据结构表示方法。 本文件为《JSONWeb密码应用语法规范》的第2部分,描述了基于JSON数据结构来保护消息内 容的数字签名或消息鉴别码的语法规范,并给出了相应的生成和验证流程。 JSONWeb密码应用语法规范 第2部分:数字签名 1 范围 本文件描述了基于JSON数据结构来保护消息内容的数字签名或消息鉴别码的语法规范,并给出 了相应的生成和验证流程。 本文件适用于JSONWeb密码应用产品的研发与检测,其他使用JSON数据交换格式的安全产 品,可参考使用。 2 规范性引用文件 下列文件中的内容通过文中的规范性引用而构成本文件必不可少的条款。其中,注日期的引用文 件,仅该日期对应的版本适用于本文件;不注日期的引用文件,其最新版本(包括所有的修改单)适用于 本文件。 GB/T 15852.2 信息技术 安全技术 消息鉴别码 第2部分:采用专用杂凑函数的机制 GB/T 16263.1 信息技术 ASN.1编码规则 第1部分:基本编码规则(BER)、正则编码规则 (CER)和非典型编码规则(DER)规范 GB/T 32905 信息安全技术 SM3密码杂凑算法 GB/T 32918(所有部分) 信息安全技术 SM2椭圆曲线公钥密码算法 GB/T 35276 信息安全技术 SM2密码算法使用规范 GM/T 0125.1 JSONWeb密码应用语法规范 第1部分:算法标识 GM/T 0125.4 JSONWeb密码应用语法规范 第4部分:密钥 3 术语和定义 下列术语和定义适用于本文件。 3.1 JOSE头部 JOSEheader 描述密码运算和参数的JSON对象,由一组参数组成。 3.2 JWS有效载荷 JWSpayload 受保护的字节串消息数据,指JWS待签名或消息鉴别的数据。 3.3 JWS签名 JWSsignature 对有效载荷和保护头部提供完整性保护的数字签名或消息鉴别码。 3.4 头部参数 headerparameter JOSE头部里面的“参数名称/值”对。 3.5 JWS保护头部 JWSprotectedheader 受JWS数字签名或消息鉴别码完整性保护的头部参数,是一个JSON对象。如果是紧凑序列化, 保护头部等价于JOSE头部。 3.6 JWS无保护头部 JWSunprotectedheader 不受JWS数字签名或消息鉴别码完整性保护的JSON对象。只存在于JSON序列化格式中。 3.7 JWS使用紧凑URL安全的字符串形式表示的序列化。 3.8 JWSJSON序列化 JWSJSONserialization 头部和多个数字签名或消息鉴别码。 4 缩略语 下列缩略语适用于本文件。 JWS:JSONWeb数字签名(JSONWebSignature) 5 符号 下列符号适用于本文件。 ASCII(X):对数据X进行ASCII编码 base64url(X):对数据X进行base64url编码 UTF8(X):对数据X进行UTF-8编码 x‖y:x与y的拼接,x、y是比特串或字节串 6 JSONWeb数字签名(JWS) 6.1 概述 JWS是使用JSON方式来表示对消息数据的数字签名或消息鉴别码的数据结构。 JWS由JOSE头部、JWS有效载荷、JWS签名三部分组成。JWS签名分为两种序列化格式,紧凑 序列化和JSON序列化。JSON序列化可包括无保护头部,也可表示多于一个的签名。 6.2 JOSE头部 6.2.1 通则 JOSE头部是一个JSON对象,JSON对象的每个参数描述了JWS的头部参数,JOSE头部中的头 部参数名称应唯一。JWS的JOSE头部由JWS保护头部和JWS无保护头部组成。本文件使用的 DER编码规则应符合GB/T 16263.1。 JWS头部参数名称有三类:已定义参数名称、扩展头部参数名称和自定义头部参数名称。 应用解析和处理已定义的头部参数时应符合6.2.2的要求。 6.2.2 已定义的头部参数名称 6.2.2.1 概述 已经定义的头部参数名称具体见表1。 表1 JWS头部参数 参数值 类型 说明 要求 alg 字符串 算法 必选 jku 字符串 密钥资源的URI 可选 jwk JSON对象 JSONWeb密钥 可选 kid 字符串 密钥ID 可选 x5u 字符串 证书URL 可选 x5c 数组 证书链 可选 x5t#sm3 字符串 证书SM3杂凑值 可选 typ 字符串 整个JWS的媒体类型 可选 cty 字符串 JWS有效载荷媒体类型 可选 crit 数组 应被处理的关键头部参数列表 可选 6.2.2.2 “alg”(算法)头部参数 “alg”头部参数是一个字符串,用于标识JWS数字签名或消息鉴别算法。该头部参数必选,取值应 符合GM/T 0125.1。 6.2.2.3 “jku”(JWKSetURL)头部参数 “jku”头部参数是一个URI的字符串,它引用一组JSON结构的公钥,其中每个公钥对应的私钥用 于对JWS进行数字签名。公钥应编码为JWK集合格式。该头部参数可选,应设置为保护头部参数。 6.2.2.4 “jwk”(JSONWeb密钥)头部参数 “jwk”头部参数是一个JSON对象,用于标识对JWS进行数字签名的用户,是一个JSON对象。该 头部参数可选,取值应符合GM/T 0125.4。 6.2.2.5 “kid”(密钥ID)头部参数 “kid”头部参数用于标识使用哪个密钥进行JWS签名。此头部参数可选,其值以字符串形式表示, 区分大小写。当与JWK一起使用时,“kid”值用于匹配JWK里面的“kid”参数值。 6.2.2.6 “x5u”(证书URL)头部参数 “x5u”头部参数用于标识对JWS进行数字签名的私钥对应的签名证书URL,其值是一个 URI形 式的字符串,该资源应提供PEM编码形式的证书或证书链的表示,每个证书使用以下分隔符隔开: -----BEGINCERTIFICATE----- -----ENDCERTIFICATE----- 第一张证书应是JWS的签名证书。该头部参数可选,应设置为保护头部参数。 6.2.2.7 “x5c”(证书链)头部参数 “x5c”头部参数用于标识JWS进行数字签名的签名证书或证书链,其值是一个JSON字符串数组。 数组中的元素是数字证书DER编码的base64编码字符串。数组第一个元素应是用于对JWS进行数 字签名的证书,后面的元素依次是前一个元素颁发证书的CA所持有的证书。该头部参数可选。 6.2.2.8 “x5t#sm3”(证书SM3杂凑值)头部参数 “x5t#sm3”头部参数是一个字符串,用于标识数字签名证书的SM3指纹,可用来匹配密钥。 该值生成过程:使用数字证书的DER编码进行SM3杂凑后再进行base64url编码。SM3算法的 计算方法和步骤应符合GB/T 32905。该头部参数可选。 6.2.2.9 “typ”(类型)头部参数 “typ”头部参数是一个字符串,用于标识整个JWS的媒体类型,该头部参数可选。 6.2.2.10 “cty”(内容类型)头部参数 “cty”头部参数是一个字符串,用于标识JWS有效载荷的媒体类型,该头部参数可选。 6.2.2.11 “crit”(关键)头部参数 “crit”头部参数用于标识应解析和处理的头部参数。它是一个JSON数组,列出了JOSE头部中应 处理的头部参数名称,该头部参数可选。 6.2.3 扩展的头部参数名称 本文件可扩展定义新的头部参数。为了防止冲突,禁止新定义的头部参数名称与已定义的头部名 称重复。应谨慎引入新的头部参数,避免导致JWS之间无法互操作。 6.2.4 自定义头部参数名称 JWS的应用双方可约定互操作的头部参数名称。与已定义参数名称不同,不同应用的自定义头部 参数名称可能会发生冲突,应谨慎使用。 7 JWS数字签名算法 7.1 概述 JWS数字签名算法是用于对消息数据进行数字签名的算法。该算法通过JOSE头部的“alg”头部 参数来标识,标识取值应符合 GM/T 0125.1。 本文件规定了SM2数字签名算法的实现要求。JWS签名的值为数字签名结果。 7.2 SM2数字签名算法 本节描述了SM2数字签名算法的相关要求。 SM2数字签名算法的签名验证方法应符合GB/T 32918,指定杂凑算法为SM3算法,SM3算法的 运算方法和步骤应符合GB/T 32905。 该算法数字签名的输出结果应符合GB/T 35276,编码规则采用DER编码且应符合GB/T 16263.1。 8 JWS消息鉴别算法 8.1 概述 JWS消息鉴别算法是对消息数据提供完整性保护的算法。该算法通过JOSE头部的“alg”头部参 数来标识,标识取值应符合 GM/T 0125.1。 本文件规定了基于SM3的消息鉴别算法的实现要求,JWS签名的值为消息鉴别算法输出结果。 8.2 基于SM3算法的消息鉴别算法 本节描述了基于SM3算法的消息鉴别算法的相关要求。 消息鉴别算法的计算过程和结果应符合GB/T 15852.2,采用 MAC算法2,指定杂凑算法为SM3 算法,SM3杂凑算法的运算方法和步骤应符合GB/T 32905。 该算法的输出结果为消息鉴别算法的HMAC值,输出长度为256比特。 9 JWS生成和验证 9.1 概述 本章节描述了JWS数字签名和消息鉴别码的生成和验证流程。 9.2 生成流程 设消息数据 M为有效载荷。 计算步骤如下: a) 计算有效载荷编码为base64url(M); b) 根据应用设置的保护头部参数,生成保护头部的JSON结构; c) 如果是JWSJSON序列化,根据应用设置的无保护头部参数,生成无保护头部的JSON结构; d) 根据使用的数字签名算法或消息鉴别算法,遵循GM/T 0125.1,在JOSE头部设置“alg”头部 参数值; e) 如果需要设置用户密钥信息,在JOSE头部设置相关数据; f) 保护头部JSON结构的字符串使用UTF-8编码,计算保护头部编码为base64url(UTF8(保护 头部)); g) 计算待签名或消息鉴别的数据 M=ASCII(保护头部编码‖’.’‖有效载荷编码); h) 根据JWS数字签名或JWS消息鉴别算法要求,根据数据 M 计算出JWS签名,生成签名编码 为base64url(JWS签名); i) 如果使用JWSJSON序列化,对每个数字签名或消息鉴别码操作重复此过程[步骤c)~h)]; j) 输出序列化数据: 1) 如果是紧凑序列化输出为(保护头部编码‖’.’‖ 有效载荷编码‖’.’‖签名编码); 2) 如果是JSON序列化,输出结果见12.3。 消息签名和消息鉴别码计算的示例见附录A。 9.3 验证流程 验证JWS是否有效的流程如下。 a) 根据12.3解析JWS序列化数据。 b) 如果是紧凑序列化,通过’.’分割符解析得到保护头部编码、有效载荷编码和签名编码,如果解 析失败,验证不通过。 c) 如果是JSON序列化,通过解析JSON结构得到一个有效载荷编码、一个或多个保护头部编 码、签名编码和无保护头部。 d) 检验有效载荷编码是否base64url解码成功,如果检验失败,则验证不通过。 e) 检验保护头部编码是否base64url解码成功以及解码后的数据是否符合UTF-8编码规则,如 果检验失败,则验证不通过。 f) 检验签名编码是否base64url解码成功,如果检验失败,则验证不通过。 g) 如果是紧凑序列化,设置JOSE头部为保护头部。 h) 如果是JSON序列化,设置每个签名者的JOSE头部为保护头部和无保护头部的并集。 i) 检验JOSE头部是否存在重复头部参数,如果存在重复,验证不通过。 j) 检查JOSE头部参数,如果存在“crit”(关键)头部参数值,则应根据参数值定义做相应的处理。 k) 匹配数字签名或消息鉴别码的用户密钥或者标识信息。 l) 检查JOSE头部的“alg”头部参数,如果不存在或者标识的算法不支持,则验证不通过。 m)设置签名原文数据 M=ASCII(保护头部编码‖’.’‖有效载荷编码),JWS签名为签名编码 base64url解码后的值。根据JOSE头部的“alg”头部参数标识出对应的算法,根据算法验证数 字签名或消息鉴别码,如果签名或消息鉴别码验证失败,则验证不通过。 n) 如果需要验证多个签名者,重复步骤e)~m)。 o) 输出验证成功。 10 字符串比较规则 处理JWS时,应将已知字符串与JSON对象中的头部参数名称和头部参数值进行比较。应严格区 分大小写,该比较规则适用于一般情况下对所有JSON字符串的比较。当头部参数的定义明确指出要 为该头部参数值使用不同的比较规则时,应遵循头部参数的具体定义。 11 密钥身份识别 JWS的接收者应确定用于数字签名或消息鉴别计算的密钥身份标识。密钥应使用6.2.2中描述的 头部参数方法标识。 密钥信息可通过头部参数的“jku”“jwk”“kid”“x5u”“x5c”和“x5t#sm3”来识别,如果该标识需要完 整性保护,那么这些头部参数应放到保护头部。 如果应用程序没有使用其他方法或约定来确定所使用的密钥,消息创建则应在头部参数中包含足 够的信息来标识所使用的密钥。如果无法识别所使用的密钥,则验证签名或消息鉴别计算失败。 12 序列化 12.1 概述 JWS有两种序列化表示形式,分别是紧凑序列化和JSON序列化。紧凑序列化只支持一个签名对 象,头部只包含保护头部;JSON序列化可支持一个或多个签名对象,头部可包含保护头部和无保护 头部。 12.2 紧凑序列化 JWS紧凑序列化将数字签名或消息鉴别计算结果表示为紧凑的URL安全字符串。该字符串表示 如下: base64url(UTF8(JWS保护头部))‖’.’‖base64url(JWS有效载荷)‖’.’‖base64url(JWS签名) JWS紧凑格式仅支持一个签名或消息鉴别码。 12.3 JSON序列化 JSON序列化将JWS签名结果表示为JSON对象。 JSON序列化有两种表现形式。分别是通用JSON序列化和扁平化JSON序列化。 a) 通用JSON序列化: 通用JSON序列化是一个JSON对象,由payload和signatures参数组成,见表2。 signatures是一个签名对象数组,由protected,header和signature组成,见表3。 表2 通用JSON序列化组成参数 参数 类型 内容说明 要求 payload 字符串 JWS有效载荷使用base64url编码后的字符串 必选 signatures 数组 签名对象的数组,数组每个元素代表一个签名 对象 必选 表3 signatures数组每个元素组成 参数 类型 内容说明 要求 protected 字符串 签名对象的保护头部,JSON结构的字符串,它 是先使用UTF-8编码,再进行base64url编码 后生成的字符串 可选 header JSON对象 签名对象的无保护头部,是一个JSON对象 可选 signature 字符串 JWS签名base64url编码后的字符串 必选 在序列化结构中“header”“protected”应至少存在一个参数,以确保设置了“alg”头部参数值。 “protected”“header”头部参数的并集构成了JOSE头部,且并集中的元素名称应不重复。 通用的JSON序列化语法如下: "payload":"< payloadcontents >", "signatures":[ "signature":"< signature1contents >" }, .. "signature":"< signatureNcontents >" }] b) 扁平化JSON序列化: 扁平化JSON序列化语法基于通用语法,只能表示一个JWS签名对象。 语法如下: "payload":"< payloadcontents >", "signature":"< signaturecontents >" 附 录 A (资料性) JWS示例 A.1 综述 本附录中,所有涉及的整数都使用大端格式。 本附录中,明文采用UTF-8编码。 本附录中,随机密钥使用16进制值表示。 本附录中,签名者的SM2私钥不展示出来,在实际使用运用中,SM2的密钥应由密码模块生成并 存放在该密码模块中。 A.2 SM2算法对有效载荷进行签名示例 A.2.1 概述 该示例展示使用SM2数字签名算法签名,使用"x5t#sm3"来标识证书生成JWS的过程和输出 结果。 A.2.2 输入参数 输入参数包括以下内容。 a) 有效载荷:messagedigest b) 签名算法:“SGD_SM3_SM2” c) 签名者的SM2密钥: 使用如下JWK格式来表示: "kty":"EC", "crv":"sm2p256v1", "use":"sig", “x”和“y”值是对椭圆曲线点坐标分量的字节串进行base64url编码后获得的结果。 d) SM2证书: SM2签名密钥的证书base64编码如下: w= A.2.3 计算过程 计算过程包括以下内容。 a) 计算base64url(有效载荷),有效载荷编码结果为:bWVzc2FnZSBkaWdlc3Q "alg":"SGD_SM3_SM2", JSON结构的字符串使用UTF-8编码,进行base64url编码,生成保护头部编码= 生成签名的输入参数 M=ASCII(保护头部编码‖’.’‖有效载荷编码),对应结果为:eyJhbG d) 把 M作为待签名对象,按照SM2数字签名算法要求,使用SM2签名密钥计算签名值,对签名 A.2.4 输出结果 根据上面计算的保护头部编码,有效载荷编码,签名结果编码,输出紧凑序列化和JSON序列化结 果如下。 a) 紧凑序列化: 1xd85hAAnFg b) JSON序列化: "payload":"bWVzc2FnZSBkaWdlc3Q", A.3 SM2算法对有效载荷生成消息鉴别码示例 A.3.1 概述 该示例展示使用基于SM3的消息鉴别算法来生成JWS的过程和输出结果。 A.3.2 输入参数 输入参数包括以下内容。 a) 有效载荷:messagehmac b) 算法:“SGD_SM3_HMAC” c) 密钥Key:16进制表示为 A.3.3 计算过程 计算过程包括以下内容。 a) 计算base64url(有效载荷),有效载荷编码结果为:bWVzc2FnZSBobWFj b) 根据算法“SGD_SM3_HMAC”生成保护头部的JSON结构 {"alg":"SGD_SM3_HMAC"} JSON结构的字符串使用UTF-8编码,对其进行base64url编码,生成的保护头部编码为: c) 生成HMAC的输入参数 M=ASCII(保护头部编码‖’.’‖有效载荷编码),对应结果为: d) 把 M和密钥 Key作为 HMAC算法参数,按照基于SM3算法的消息鉴别算法要求计算出 HMAC值,对值进行base64url编码,最终结果编码为: A.3.4 输出结果 根据上面计算的保护头部编码、有效载荷编码、HMAC结果编码,输出紧凑序列化和JSON序列化 结果如下。 a) 紧凑序列化: b)JSON序列化: "payload":"bWVzc2FnZSBobWFj", A.4 SM2算法对有效载荷进行多人签名示例 A.4.1 概述 该示例展示两个签名者各自独立使用SM2数字签名算法对同一个消息签名,一个签名者使用“x5t# sm3”头部参数来标识证书,另外一个签名者使用“x5c”头部参数来标识证书,在一项JWS输出中同时包 含了这两项签名,两个签名者不分先后顺序,属于并行关系,输入参数、计算过程、输出结果如下。 A.4.2 输入参数 输入参数包括以下内容。 a) 有效载荷:messagedigest b) 签名算法:“SGD_SM3_SM2” c) 第一个签名者的SM2密钥: 使用如下JWK格式来表示: "kty":"EC", "crv":"sm2p256v1", "use":"sig", “x”和“y”值是对椭圆曲线点坐标分量的字节串进行base64url编码后获得的结果。 d) 第一个签名者的SM2证书......