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

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

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

GM/T 0125.3-2022: JSON Web 密码应用语法规范 第3部分:数据加密 ICS 35.030 CCSL80 中华人民共和国密码行业标准 JSONWeb密码应用语法规范 第3部分:数据加密 specification-Part3:Dataencryption 2022-11-20发布 2023-06-01实施 国家密码管理局 发 布 目次 前言 Ⅰ 引言 Ⅱ 1 范围 1 2 规范性引用文件 1 3 术语和定义 1 4 缩略语 3 5 符号 3 6 JSONWeb数据加密(JWE) 3 6.1 概述 3 6.2 JOSE头部 3 7 JWE密钥加密密钥算法 6 7.1 概述 6 7.2 SM2公钥加密算法 6 7.3 SM9加密算法 6 8 JWE内容加密算法 6 8.1 概述 6 8.2 可鉴别的加密机制算法 6 8.3 参数要求 7 9 JWE加密和解密 7 9.1 概述 7 9.2 消息加密过程 7 9.3 消息解密过程 8 10 字符串比较规则 9 11 密钥身份标识 9 12 序列化 9 12.1 概述 9 12.2 紧凑型序列化 9 12.3 JSON序列化 9 附录A(资料性) JWE示例 12 A.1 综述 12 A.2 基于“SGD_SM2_3”和“SGD_SM4_CCM”的JWE序列化示例 12 A.3 基于“SGD_SM2_3”和“SGD_SM4_GCM”的JWE序列化示例 14 A.4 基于“SGD_SM2_3”和“SGD_SM4_CCM”的JWE多个接收者示例 16 A.5 基于“SGD_SM2_3”和“SGD_SM4_GCM”的JWE多个接收者示例 19 前言 本文件按照GB/T 1.1-2020《标准化工作导则 第1部分:标准化文件的结构和起草规则》的规定 起草。 本文件是GM/T 0125《JSONWeb密码应用语法规范》的第3部分。GM/T 0125已经发布了以下 部分: ---第1部分:算法标识; ---第2部分:数字签名; ---第3部分:数据加密; ---第4部分:密钥。 请注意本文件的某些内容可能涉及专利。本文件的发布机构不承担识别专利的责任。 本文件由密码行业标准化技术委员会提出并归口。 本文件起草单位:广东省电子商务认证有限公司、智巡密码(上海)检测技术有限公司、格尔软件股 份有限公司、北京信安世纪科技股份有限公司、北京数字认证股份有限公司、北京国脉信安科技有限公 司、中国科学院信息工程研究所、广东南方通信建设有限公司、郑州迪维勒普科技有限公司、河南省鼎信 信息安全等级测评有限公司、上海市数字证书认证中心有限公司。 本文件主要起草人:陈树乐、韩玮、郑强、张永强、袁峰、高能、张庆勇、赵敏、刘义、黄志伟、林少柳、 梁宁宁、梁家声、傅大鹏、傅鹏、岳志军、陈宇、王维初。 引 言 《JSONWeb密码应用语法规范》旨在以国产商用密码算法为核心,来保证数据机密性和完整性,适 用于JSONWeb密码应用产品的研发与检测,其他使用JSON数据交换格式的安全产品,可参考使用。 《JSONWeb密码应用语法规范》由四个部分构成。 ---第1部分:算法标识。定义了JSONWeb密码应用的算法标识。 ---第2部分:数字签名。描述了基于JSON数据结构来保护消息内容的数字签名或消息鉴别码 的语法规范,并给出了相应的生成和验证流程。 ---第3部分:数据加密。描述了使用身份鉴别和加密来确保数据的机密性和完整性的技术要求。 ---第4部分:密钥。定义了密钥的JSON数据结构表示方法。 本文件为《JSONWeb密码应用语法规范》的第3部分,描述了使用身份鉴别和加密来确保数据的 机密性和完整性的技术要求。 JSONWeb密码应用语法规范 第3部分:数据加密 1 范围 本文件描述了使用身份鉴别和加密来确保数据的机密性和完整性的技术要求。 本文件适用于JSONWeb密码应用产品的研发与检测,其他使用JSON数据交换格式的安全产 品,可参考使用。 2 规范性引用文件 下列文件中的内容通过文中的规范性引用而构成本文件必不可少的条款。其中,注日期的引用文 件,仅该日期对应的版本适用于本文件;不注日期的引用文件,其最新版本(包括所有的修改单)适用于 本文件。 GB/T 16263.1 信息技术 ASN.1编码规则 第1部分:基本编码规则(BER)、正则编码规则 (CER)和非典型编码规则(DER)规范 GB/T 32905 信息安全技术 SM3密码杂凑算法 GB/T 32907 信息安全技术 SM4分组密码算法 GB/T 32915 信息安全技术 二元序列随机性检测方法 GB/T 32918(所有部分) 信息安全技术 SM2椭圆曲线公钥密码算法 GB/T 35276 信息安全技术 SM2密码算法使用规范 GB/T 36624 信息技术 安全技术 可鉴别的加密机制 GB/T 38635(所有部分) 信息安全技术 SM9标识密码算法 GM/T 0080 SM9密码算法使用规范 GM/T 0125.1 JSONWeb密码应用语法规范 第1部分:算法标识 GM/T 0125.4 JSONWeb密码应用语法规范 第4部分:密钥 3 术语和定义 下列术语和定义适用于本文件。 3.1 加密明文,可指定额外的可鉴别数据,并对密文和额外可鉴别数据提供完整性校验的加密。 注:使用该机制的算法也称AEAD算法,AEAD算法接受两个输入,明文和额外可鉴别数据,并产生两个输出,分别 是密文和鉴别标志。 3.2 AEAD算法的输入,受完整性保护但未加密的数据。 3.3 鉴别标志 authenticationtag 3.4 3.5 JWE密钥密文 JWEencryptedkey 使用密钥加密密钥算法加密CEK后获得的密文值。 3.6 加密算法使用的初始化向量值。 3.7 JWE额外可鉴别数据 JWEAAD JWE数据结构的额外可鉴别数据,只有在JSON序列化存在。 3.8 JWE密文 JWEciphertext 内容加密算法输出结果的密文部分。 3.9 JWE标志 JWEauthenticationtag 内容加密算法输出结果的标志部分,用于确保JWE密文和JWE额外可鉴别数据的完整性。 3.10 JWE保护头部 JWEprotectedheader 注:这些参数适用于JWE的所有接收者。对于JWE紧凑序列化,它包含整个JOSE头部。对于JWEJSON序列 化,其是JOSE头部的一部分。 3.11 JSON对象,包含不受完整性保护的头部参数。 注:这些参数适用于JWE的所有接收者并且不受完整性保护,使用JWEJSON序列化时存在。 3.12 JSON对象,包含不受完整性保护的头部参数,是JWE的每个接收者特有的参数。 注:这些头部参数值不受完整性保护,使用JWEJSON序列化时存在。 3.13 JWE使用紧凑的URL安全字符串形式表示的序列化。 3.14 JWEJSON序列化 JWEJSONserialization 注:与JWE紧凑序列化不同,JSON序列化可支持多个接收者。 3.15 密钥加密 keyencryption 对密钥进行加密的过程。 注:这里的密钥一般指内容加密密钥CEK。 4 缩略语 下列缩略语适用于本文件。 AuthenticationCode) JWE:JSONWeb数据加密(JSONWebEncryption) 5 符号 下列符号适用于本文件。 ASCII(X):数据X对应的ASCII编码 base64url(X):对数据X进行base64url编码 IV:初始化向量 T:鉴别标志 UTF8(X):数据X对应的UTF-8编码 ‖:字符串连接符号 6 JSONWeb数据加密(JWE) 6.1 概述 JWE是使用JSON方式来表示数据加密的数据结构。 JWE由JOSE头部、JWE密钥密文、JWE初始化向量、JWE额外可鉴别数据、JWE密文和JWE鉴 别标志组成。 JWE加密分为两种序列化格式:紧凑序列化和JSON序列化。紧凑序列化只支持一个加密接收 者,JSON序列化可支持一个或多个加密接收者。 JWE使用AEAD算法来确保明文消息的机密性、完整性以及JWE保护头部和JWE额外可鉴别 数据的完整性。首先指定或生成CEK,使用完整性校验的加密算法加密明文数据和额外可鉴别的数 据,再通过密钥加密密钥算法加密CEK完成整体加密。 6.2 JOSE头部 6.2.1 通则 JOSE头部是一个JSON对象,JSON对象的每个参数描述了JWE的头部参数,JOSE头部中的头 部参数名称应唯一。JWE的JOSE头部由JWE保护头部、JWE共享无保护头部和JWE单一接收者无 保护头部组成。 JWE共享无保护头部和JWE单一接收者无保护头部只有在JSON序列化情况下才存在。本文件 使用的DER编码规则,应符合GB/T 16263.1。 JWE头部参数名称有三类:已定义参数名称、扩展头部参数名称和自定义头部参数名称。 应用解析和处理已定义的头部参数时应符合6.2.2要求。 6.2.2 已定义头部参数 6.2.2.1 概述 已定义的头部参数名称见表1。 表1 JWE头部参数 参数值 类型 说明 要求 alg 字符串 算法 必选 enc 字符串 加密算法 必选 jku 字符串 密钥资源的URI 可选 jwk JSON对象 JSONWeb密钥 可选 kid 字符串 密钥ID 可选 x5u 字符串 证书URL 可选 x5c 数组 证书链 可选 x5t#sm3 字符串 证书SM3杂凑值 可选 zip 字符串 明文压缩算法 可选 typ 字符串 整个JWE的媒体类型 可选 cty 字符串 JWE有效载荷媒体类型 可选 crit 数组 应被处理的关键头部参数列表 可选 6.2.2.2 “alg”(算法)头部参数 “alg”头部参数是一个字符串,用于标识密钥加密密钥算法。该头部参数必选,取值应符合 GM/T 0125.1,如果“alg”值是不支持的算法,或者接收者没有可与该算法一起使用的密钥,则加密的内 容不可用。 “alg”值是ASCII字符串,区分大小写。如果使用密钥加密密钥算法,该头部参数必选。 6.2.2.3 “enc”(加密算法)头部参数 “enc”头部参数用于标识使用的内容加密算法。该头部参数取值应符合GM/T 0125.1。如果“enc” 的值是不支持的算法,则加密的内容不可用。 “enc”值是ASCII字符串,区分大小写,该头部参数必选。 6.2.2.4 “jku”(JWKSetURL)头部参数 “jku”头部参数是一个URI的字符串,它引用一组JSON结构的公钥,其中每个公钥应编码为JWK 集合,可用于确定解密JWE所需的私钥。该头部参数可选,应设置为保护头部参数。 6.2.2.5 “jwk”(JSONWeb密钥)头部参数 “jwk”头部参数是一个JSON对象,用于标识JWE加密的公钥或确定解密的私钥。该头部参数可 选,取值应符合GM/T 0125.4。 6.2.2.6 “kid”(密钥ID)头部参数 “kid”头部参数用于标识JWE加密的公钥或标识解密的私钥。此头部参数可选,其值以字符串形 式表示,区分大小写。当与JWK一起使用时,“kid”值用于匹配JWK的“kid”参数值。 6.2.2.7 “x5u”(证书URL)头部参数 “x5u”头部参数用于标识与密钥加密密钥相关的加密证书 URL,其值是一个 URI形式的字符串, 该资源应提供符合PEM编码形式的证书或证书链,每个证书使用以下分隔符隔开: -----BEGINCERTIFICATE----- -----ENDCERTIFICATE----- 第一个证书应为JWE密钥加密密钥相关的加密证书。该头部参数可选,应设置为保护头部参数。 6.2.2.8 “x5c”(证书链)头部参数 “x5c”头部参数用于标识密钥加密密钥相关的加密证书或证书链,其值是一个JSON字符串数组, 数组中的元素是数字证书DER编码的base64编码字符串。数组第一个元素应是JWE密钥加密密钥 相关的加密证书,后面的元素依次是前一个元素颁发证书的CA所持有的证书。该头部参数可选。 6.2.2.9 “x5t#sm3”(证书SM3杂凑值)头部参数 “x5t#sm3”头部参数是一个字符串,用于标识对内容加密密钥加密的证书SM3指纹,可用来匹配 密钥。该值生成过程:使用数字证书的DER编码进行SM3杂凑后再进行base64url编码。SM3算法 的计算方法和步骤应符合GB/T 32905,该头部参数可选。 6.2.2.10 “zip”(压缩)头部参数 “zip”头部参数是一个字符串,用于标识明文压缩算法。当该参数存在时,表示明文在加密前经过 压缩编码处理,此头部参数可选,应放在保护头部。参数值见表2。 表2 “zip”参数值 “zip”参数值 说明 DEF DEFLATE压缩算法 6.2.2.11 “typ”(类型)头部参数 “typ”头部参数是一个字符串,用于标识整个JWE的媒体类型,该头部参数可选。 6.2.2.12 “cty”(内容类型)头部参数 “cty”头部参数是一个字符串,用于标识JWE明文的媒体类型,该头部参数可选。 6.2.2.13 “crit”(关键)头部参数 “crit”头部参数用于标识应解析和处理的头部参数。它是一个JSON数组,列出了JOSE头部中应 处理的头部参数名称,该头部参数可选。 6.2.3 扩展的头部参数 本文件可扩展定义新的头部参数。为了防止冲突,禁止新定义的头部参数名称与已定义的头部名 称重复。应谨慎引入新的头部参数,避免导致JWE之间无法互操作。 6.2.4 自定义头部参数 JWE的应用双方可约定互操作的头部参数名称。与已定义参数名称不同,不同应用的自定义头部 参数名称可能会发生冲突,应谨慎使用。 7 JWE密钥加密密钥算法 7.1 概述 JWE密钥加密密钥算法是用于对CEK进行加密或解密的算法。该算法通过JOSE头部的“alg”头 部参数来标识,标识取值应符合GM/T 0125.1。 本文件规定了SM2公钥加密和SM9加密两种密钥加密密钥算法的实现要求。 7.2 SM2公钥加密算法 本节描述了SM2公钥加密算法的相关要求。 SM2公钥加密算法的加解密计算方法应符合GB/T 32918,指定杂凑算法为SM3算法,SM3杂凑 算法的运算方法和步骤应符合GB/T 32905。 该算法加密结果的输出数据格式应符合GB/T 35276。JWE密钥密文的值为加密结果的输出。 7.3 SM9加密算法 本节描述了SM9加密算法的相关要求。 SM9加密算法的加密和解密过程应符合GB/T 38635。指定杂凑算法为SM3算法,SM3杂凑算法 的运算方法和步骤应符合GB/T 32905。指定消息认证码函数的密钥长度为256位。 该算法加密结果的输出数据格式应符合GM/T 0080。JWE密钥密文的值为加密结果的输出。 8 JWE内容加密算法 8.1 概述 内容加密算法使用AEAD算法来加密,是提供给JWE使用的完整性校验加密算法,可用来加密或 解密JWE的消息数据和保证密文和额外指定可鉴别数据的完整性。该算法通过JOSE头部的“enc”头 部参数来标识。 内容加密算法的密钥使用密钥加密密钥算法加密。内容加密算法加密时会输出两个参数,一个是 密文,一个是标志,分别对应JWE密文和JWE标志。 本文件定义了内容加密算法使用指定可鉴别的加密机制算法的实现要求。 8.2 可鉴别的加密机制算法 内容加密算法使用可鉴别的加密机制算法时加解密运算方法和步骤应符合GB/T 36624。SM4分 组密码运算方法和步骤应符合GB/T 32907。 a) 如果是可鉴别加密机制CCM算法,JWE密文的值为CCM 算法加密数据输出的C1‖C2‖ ‖Cm 部分。JWE标志的值为加密数据输出的U部分。 b) 如果是可鉴别加密机制GCM算法,JWE密文的值为GCM 算法加密数据输出的C1‖C2‖ ‖Cm 部分。JWE标志的值为加密数据输出的T部分。 8.3 参数要求 本文件定义了内容加密算法的参数要求,这里输入参数K对应内容加密算法的CEK,输入参数IV 对应算法的开始变量,输入参数 A对应额外可鉴别数据,输出参数 T对应JWE标志。参数要求见 表3。 表3 内容加密算法的参数要求 算法标识 输入参数的长度要求 输出参数的长度要求 M K IV A T SGD_SM4_CCM 小于259比特 128比特 64比特 小于267比特 128比特 SGD_SM4_GCM 小于或等于239-256比特 128比特 96比特 小于或等于264-1比特 128比特 9 JWE加密和解密 9.1 概述 本章节描述了JWE的加密和解密过程。该部分使用国家密码管理局批准的随机数发生器,生成的 随机序列应符合GB/T 32915。 9.2 消息加密过程 设待加密的明文数据为 M,消息加密过程如下。 a) 根据应用设置的保护头部参数,生成JWE保护头部的JSON结构。 b) 根据应用设置的共享无保护头部参数,生成JWE共享无保护头部的JSON结构。 c) 如果是JSON序列化,根据应用设置每个接收者特有的无保护头部参数,对每个接收者生成单 一接收者无保护头部的JSON结构。 d) 根据内容加密密钥的算法,在JOSE头部设置“enc”头部参数值。 e) 根据密钥加密密钥的算法,在JOSE头部设置“alg”头部参数值。 f) 根据需要在JOSE头部设置用户密钥或相关标识信息。 g) 根据内容加密算法要求的密钥长度,使用随机数发生器生成随机数,将随机数设置为内容加密 密钥CEK。使用密钥加密密钥算法加密CEK,并将加密输出结果作为JWE密钥密文。 h) 如果使用JSON序列化,对每个接收者重复此过程[步骤e)~g)]。 i) 根据内容加密算法要求的初始化向量长度,使用随机数发生器生成随机数,将随机数设置为 JWE初始化向量IV。 j) 设置JWE保护头部编码为base64url(UTF8(JWE保护头部)),如果保护头部不存在,JWE保 护头部编码设置为空字符串。 k) 如果使用JSON序列化并且应用设置了额外可鉴别数据值A1,将内容加密算法可鉴别数据A 设置为:ASCII(JWE保护头部编码)‖’.’‖base64url(应用设置的额外可鉴别数据A1),否则 将内容加密算法的额外可鉴别数据A设置为:ASCII(JWE保护头部编码)。 l) 如果设置“zip”头部参数,根据压缩算法压缩明文消息 M 生成压缩后的数据 MZ。设置明文消 息 M为 MZ。 m)根据内容加密算法使用CEK,JWE初始化向量IV和额外可鉴别数据A对明文消息 M 进行 加密,输出JWE密文和JWE标志。 n) 输出序列化结果: 1) 紧凑序列化结果是以下级联的字符串base64url(UTF8(JWE保护头部))‖’.’‖ base64url(JWE密钥密文)‖’.’‖base64url(JWE初始化向量)‖’.’‖base64url(JWE 密文)‖’.’‖base64url(JWE标志); 2) JSON序列化结果见12.3。 消息加密的示例见附录A。 9.3 消息解密过程 消息解密过程与加密过程相反。如果其中任何步骤失败,则解密失败。 当有多个接收者时,由应用程序决定哪些接收者的加密内容在成功解密后接受JWE。在某些情况 下,只有当所有接收者的加密内容都能被成功解密和验证时,JWE才是有效的,否则被视为无效。在其 他情况下,只要成功解密和验证单个接收者的加密内容即可接受JWE。 为了得到解密明文 M,解密过程如下。 a) 如果是JWE紧凑序列化,通过’.’分割符解析顺序得到JWE保护头部、JWE密钥密文、JWE 初始化向量、JWE密文和JWE标志,如果解析失败,则解密失败。 b) 如果是JWEJSON序列化,按照12.3的描述解析。 c) 检验使用base64url解码JWE保护头部、JWE密钥密文、JWE初始化向量、JWE密文、JWE 标志和JWE额外可鉴别数据是否成功,如果解码失败,则解密失败。 d) 检验JWE保护头部是否符合UTF-8编码,如果检验失败,则解密失败。 e) 如果使用紧凑序列化,将JWE保护头部作为JOSE头部。如果使用JWEJSON序列化,将 JWE保护头部、JWE共享无保护头部和对应的JWE单一接收者无保护头部参数的并集作为 每一个接收者的JOSE头部,所有这些头部应为完全有效的JSON对象。JOSE头部参数名称 不能重复,如果存在重复头部参数,则解密失败。 f) 若JOSE头部使用“crit”头部参数值,根据参数值定义做相应处理。 g) 从JOSE头部获取“enc”头部参数,确定内容加密算法。 h) 从JOSE头部获取“alg”头部参数,确定密钥加密密钥算法。 i) 从JOSE头部获取用户相关密钥和标识信息。 j) 根据密钥加密密钥算法解密JWE密钥密文得到C......