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

GB/T 38635.2-2020 相关标准英文版PDF

搜索结果: GB/T 38635.2-2020, GB/T38635.2-2020, GBT 38635.2-2020, GBT38635.2-2020
标准号码内文价格美元第2步(购买)交付天数标准名称详情状态
GB/T 38635.2-2020 英文版 779 GB/T 38635.2-2020 [PDF]天数 <=6 信息安全技术 SM9标识密码算法 第2部分:算法 GB/T 38635.2-2020 有效
基本信息
标准编号 GB/T 38635.2-2020 (GB/T38635.2-2020)
中文名称 信息安全技术 SM9标识密码算法 第2部分:算法
英文名称 Information security technology - Identity-based cryptographic algorithms SM9 - Part 2: Algorithms
行业 国家标准 (推荐)
中标分类 L80
国际标准分类 35.040
字数估计 42,414
发布日期 2020-04-28
实施日期 2020-11-01
引用标准 GB/T 17964; GB/T 32905; GB/T 32907; GB/T 32915; GB/T 38635.1-2020
发布机构 国家市场监督管理总局、中国国家标准化管理委员会
范围 GB/T 38635的本部分规定了SM9标识密码算法中数字签名算法、密钥交换协议、密钥封装机制和加密算法。本部分适用于SM9标识密码算法工程化的实现,指导SM9标识密码算法相关产品的研制和检测。

GB/T 38635.2-2020 Information security technology--Identity-based cryptographic algorithms SM9--Part 2: Algorithms ICS 35.040 L80 中华人民共和国国家标准 信息安全技术 SM9标识密码算法 第2部分:算法 Part2:Algorithms 2020-04-28发布 2020-11-01实施 国 家 市 场 监 督 管 理 总 局 国 家 标 准 化 管 理 委 员 会 发 布 目次 前言 Ⅲ 引言 Ⅳ 1 范围 1 2 规范性引用文件 1 3 术语和定义 1 4 符号 2 5 算法参数与辅助函数 3 5.1 概述 3 5.2 系统参数组 4 5.3 辅助函数 4 6 数字签名生成和验证算法及流程 6 6.1 系统签名主密钥和用户签名密钥的产生 6 6.2 数字签名生成算法 6 6.3 数字签名生成算法流程 7 6.4 数字签名验证算法 7 6.5 数字签名验证算法流程 8 7 密钥交换协议及流程 9 7.1 系统加密主密钥和用户加密密钥的产生 9 7.2 密钥交换协议 9 7.3 密钥交换协议流程 10 8 密钥封装机制及流程 11 8.1 系统加密主密钥和用户加密密钥的产生 11 8.2 密钥封装算法 11 8.3 密钥封装算法流程 11 8.4 解封装算法 12 8.5 解封装算法流程 12 9 加密算法及流程 13 9.1 系统加密主密钥和用户加密密钥的产生 13 9.2 加密算法 13 9.3 加密算法流程 14 9.4 解密算法 15 9.5 解密算法流程 16 附录A(资料性附录) 算法示例 17 前言 GB/T 38635《信息安全技术 SM9标识密码算法》分为两个部分: ---第1部分:总则; ---第2部分:算法。 本部分为GB/T 38635的第2部分。 本部分按照GB/T 1.1-2009给出的规则起草。 请注意本文件的某些内容可能涉及专利。本文件的发布机构不承担识别这些专利的责任。 本部分由全国信息安全标准化技术委员会(SAC/TC260)提出并归口。 本部分起草单位:国家信息安全工程技术研究中心、北京国脉信安科技有限公司、深圳奥联信息安 全技术有限公司、中国科学院软件研究所、武汉大学、中科院信息工程研究所。 本部分主要起草人:陈晓、程朝辉、张振峰、叶顶峰、胡磊、陈建华、季庆光、袁文恭、刘平、马宁、袁峰、 李增欣、王学进、杨恒亮、张青坡、马艳丽、浦雨三、唐英、孙移盛、安萱、封维端、张立圆。 引 言 A.Shamir在1984年提出了标识密码(Identity-basedcryptography)的概念,在标识密码系统中,用 户的私钥由密钥生成中心(KGC)根据主密钥和用户标识计算得出,用户的公钥由用户标识唯一确定, 由标识管理者保证标识的真实性。与基于证书的公钥密码系统相比,标识密码系统中的密钥管理环节 可以得到适当简化。 1999年,K.Ohgishi、R.Sakai和 M.Kasahara在日本提出了用椭圆曲线对(pairing)构造基于标识的 密钥共享方案;2001年,D.Boneh和 M.Franklin,以及R.Sakai、K.Ohgishi和 M.Kasahara等人独立提 出了用椭圆曲线对构造标识公钥加密算法。这些工作引发了标识密码的新发展,出现了一批用椭圆曲 线对实现的标识密码算法,其中包括数字签名算法、密钥交换协议、密钥封装机制和公钥加密算法等。 椭圆曲线对具有双线性的性质,它在椭圆曲线的循环子群与扩域的乘法循环子群之间建立联系,构 成了双线性DH、双线性逆DH、判定性双线性逆DH、τ-双线性逆DH和τ-Gap-双线性逆DH等难题, 当椭圆曲线离散对数问题和扩域离散对数问题的求解难度相当时,可用椭圆曲线对构造出安全性和实 现效率兼顾的标识密码。 信息安全技术 SM9标识密码算法 第2部分:算法 1 范围 GB/T 38635的本部分规定了SM9标识密码算法中数字签名算法、密钥交换协议、密钥封装机制 和加密算法。 本部分适用于SM9标识密码算法工程化的实现,指导SM9标识密码算法相关产品的研制和检测。 2 规范性引用文件 下列文件对于本文件的应用是必不可少的。凡是注日期的引用文件,仅注日期的版本适用于本文 件。凡是不注日期的引用文件,其最新版本(包括所有的修改单)适用于本文件。 GB/T 17964 信息安全技术 分组密码算法的工作模式 GB/T 32905 信息安全技术 SM3密码杂凑算法 GB/T 32907 信息安全技术 SM4分组密码算法 GB/T 32915 信息安全技术 二元序列随机性检测规范 GB/T 38635.1-2020 信息安全技术 SM9标识密码算法 第1部分:总则 3 术语和定义 GB/T 38635.1-2020界定的以及下列术语和定义适用于本文件。为了便于使用,以下重复列出了 GB/T 38635.1-2020中的一些术语和定义。 3.1 加密主密钥 encryptionmasterkey 处于标识密码密钥分层结构最顶层的密钥,内容为加密主私钥和加密主公钥,其中加密主公钥公 开,加密主私钥由密钥生成中心(KGC)秘密保存。KGC用加密主私钥和用户的标识生成用户的加密 私钥。在标识密码中,加密主私钥一般由KGC通过随机数发生器产生,加密主公钥由加密主私钥结合 系统参数产生。 3.2 标识 identity 由实体无法否认的信息组成,如实体的可识别名称、电子邮箱、身份证号、电话号码、街道地址等,可 唯一确定一个实体的身份。 [GB/T 38635.1-2020,定义3.1] 3.3 发起方 initiator 在一个协议的操作过程中发送首轮交换信息的用户。 3.4 在密码变换中,为增加安全性或使密码设备同步而引入的用于数据变换的起始数据。 3.5 使用户B确信用户A拥有特定秘密密钥的保证。 3.6 签名消息 signedmessage 由消息以及该消息的数字签名部分所组成的一组数据元素。 3.7 签名密钥 signaturekey 在数字签名生成过程中由签名者专用的秘密数据元素,即签名者的私钥。 3.8 签名主密钥 signaturemasterkey 系统的签名根密钥,内容为签名主私钥和签名主公钥,其中签名主公钥公开,签名主私钥由 KGC 秘密保存。KGC用签名主私钥和用户的标识生成用户的签名私钥。在标识密码中,签名主私钥一般由 KGC通过随机数发生器产生,签名主公钥由签名主私钥结合系统参数产生。 3.9 密钥交换 keyexchange 在通信实体之间安全地交换密钥的方案,可以使通信双方在非安全通信线路上为信息传送安全地 交换密钥。 3.10 密钥协商 keyagreement 多个用户之间建立一个共享秘密密钥的过程,其中的任何一个用户都不能预先确定该密钥的值。 3.11 通过作用于共享秘密和双方都知道的其他参数,产生一个或多个共享秘密密钥的函数。 3.12 响应方 responder 在一个协议的操作过程中不是发送首轮交换信息的用户。 3.13 秘密密钥 secretkey 在密码体制中收发双方共同拥有的而第三方不知道的一种密钥。 3.14 一种认证算法作用于特定的密钥和消息比特串所得出的一段码字,以用来鉴别数据的来源和检验 数据的完整性。用于求取消息认证码的函数称作消息认证码函数。 4 符号 下列符号适用于本文件。 A,B:使用标识密码系统的两个用户。 cf:椭圆曲线阶相对于N 的余因子。 cid:用一个字节表示的曲线的识别符,其中0x10表示Fp(素数p >2191)上常曲线(即非超奇异曲 线),0x11表示Fp 上超奇异曲线,0x12表示Fp 上常曲线及其扭曲线。 dsA:用户A的签名私钥。 e:从G1×G2 到GT 的双线性对。 eid:用一个字节表示的双线性对e的识别符,其中0x01表示Tate对,0x02表示 Weil对,0x03表 示Ate对,0x04表示R-Ate对。 GT:阶为素数N 的乘法循环群。 G1:阶为素数N 的加法循环群。 G2:阶为素数N 的加法循环群。 gu:乘法群GT 中元素g的u次幂,即gu=g·g··g􀮩 􀮫􀮪􀪁􀪁􀪁 􀪁􀪁􀪁 u个 ,u是正整数。 Hv():密码杂凑函数。 H1(),H2():由密码杂凑函数派生的密码函数。 hid:用一个字节表示的签名私钥生成函数识别符,由KGC选择并公开。 (h,S):发送的签名。 (h',S'):收到的签名。 IDA:用户A的标识,可以唯一确定用户A的公钥。 ks:签名主私钥。 M:待签名消息。 M':待验证消息。 modn:模n运算。 示例1:23mod7=2。 N:循环群G1、G2和GT的阶,为大于2191的素数。 Ppub-s:签名主公钥。 P1:群G1的生成元。 P2:群G2的生成元。 < P >:由元素P 生成的循环群。 [u]P:加法群G1、G2中元素P 的u倍。 x:顶函数,不小于x的最小整数。 示例2:7 =7,8.3 =9。 x:底函数,不大于x的最大整数。 示例3:7 =7,8.3 =8。 x ‖y:x与y的拼接,x和y是比特串或字节串。 [x,y]:不小于x 且不大于y的整数的集合。 β:扭曲线参数。 5 算法参数与辅助函数 5.1 概述 第6章规定了一个用椭圆曲线对实现的基于标识的数字签名算法。该算法的签名者持有一个标识 和一个相应的签名私钥,该签名私钥由密钥生成中心通过签名主私钥和签名者的标识结合产生。签名 者用自身签名私钥对数据产生数字签名,验证者用签名者的标识验证签名的可靠性。 在签名的生成和验证过程之前,应用密码杂凑函数对待签消息M 和待验证消息M'进行杂凑计算。 第7章规定了一个用椭圆曲线对实现的基于标识的密钥交换协议。参与密钥交换的发起方用户A 和响应方用户B各自持有一个标识和一个相应的加密私钥,加密私钥均由密钥生成中心通过加密主私 钥和用户的标识结合产生。用户A和B通过交互的信息传递,用标识和各自的加密私钥来商定一个只 有他们知道的秘密密钥,用户双方可以通过可选项实现密钥确认。这个共享的秘密密钥通常用在某个 对称密码算法中。该密钥交换协议能够用于密钥管理和协商。 在现代密码系统中,密钥是控制密码变换的重要参数,而且密码的安全性极大地依赖于对密钥的安 全保护。密钥封装机制使得封装者可以产生和加密一个秘密密钥给目标用户,而唯有目标用户可以解 封装该秘密密钥,并把它作为进一步的会话密钥。 第8章规定了一个用椭圆曲线对实现的基于标识的密钥封装机制。解封装用户持有一个标识和一 个相应的加密私钥,该加密私钥由密钥生成中心通过加密主私钥和解封装用户的标识结合产生。封装 者利用解封装用户的标识产生并加密一个秘密密钥给对方,解封装用户则用相应的加密私钥解封装该 秘密密钥。 第9章规定了一个用椭圆曲线对实现的基于标识的公钥加密算法。该公钥加密算法是上述密钥封 装机制和消息封装机制的结合,消息封装机制包括基于密钥派生函数的序列密码以及结合密钥派生函 数的分组密码算法两种类型,该算法可提供消息的机密性。在基于标识的加密算法中,解密用户持有一 个标识和一个相应的加密私钥,该加密私钥由密钥生成中心通过加密主私钥和解密用户的标识结合产 生。加密用户用解密用户的标识加密数据,解密用户用自身加密私钥解密数据。 附录A给出了数字签名算法、密钥交换协议、密钥封装机制和公钥加密算法示例。 5.2 系统参数组 系统参数组包括曲线识别符cid;N 椭圆曲线基域Fq的参数;椭圆曲线方程参数a和b;扭曲线参 数β(若cid的低4位为2);曲线阶的素因子N 和相对于N 的余因子cf;曲线E(Fq)相对于N 的嵌入 次数k;E(Fqd1)(d1整除k)的N 阶循环子群G1的生成元P1;E(Fqd2)(d2整除k)的N 阶循环子群G2 的生成元P2;双线性对e的识别符eid;(选项)G2到G1的同态映射y。 双线性对e的值域为N 阶乘法循环群GT。 系统参数的详细描述见GB/T 38635.1-2020中的附录A。 5.3 辅助函数 5.3.1 概述 本部分规定基于标识的密码算法计算中涉及辅助函数。 5.3.2 密码杂凑函数 5.3.2.1 密码杂凑函数Hv() 密码杂凑函数Hv()的输出是长度恰为v比特的杂凑值。本部分规定使用国家密码管理部门批准 的密码杂凑函数,见GB/T 32905。 5.3.2.2 密码函数H1() 密码函数H1(Z,n)的输入为比特串Z 和整数n,输出为一个整数h1∈[1,n-1]。H1(Z,n)需要 调用密码杂凑函数Hv()。关于密码杂凑函数Hv(),应符合5.3.2.1的规定。 密码函数H1(Z,n): 输入:比特串Z,整数n。 输出:整数h1∈[1,n-1]。 计算步骤为: a) 初始化一个32比特构成的计数器ct=0x00000001。 b) 计算hlen=8× (5×(log2n))/32 。 c) 对i从1~ hlen/v 执行: 1) 计算Hai=Hv(0x01‖Z‖ct); 2) ct++。 d) 若hlen/v是整数,令Ha hlen/v =Hahlen/v, 否则令Hahlen/v 为Hahlen/v 最左边的(hlen-(v× hlen/v))比特。 7.2.3给出的细节将Ha的数据类型转换为整数。 f) 计算h1=(Hamod(n-1))+1。 5.3.2.3 密码函数H2() 密码函数H2(Z,n)的输入为比特串Z 和整数n,输出为一个整数h2∈[1,n-1]。H2(Z,n)需 要调用密码杂凑函数Hv()。关于密码杂凑函数Hv(),应符合5.3.2.1的规定。 密码函数H2(Z,n): 输入:比特串Z,整数n。 输出:整数h2∈[1,n-1]。 计算步骤为: a) 初始化一个32比特构成的计数器ct=0x00000001。 b) 计算hlen=8× (5×(log2n))/32 。 c) 对i从1~ hlen/v 执行: 1) 计算Hai=Hv(0x02‖Z‖ct); 2) ct++。 d) 若hlen/v是整数,令Hahlen/v =Hahlen/v, 否则令Hahlen/v 为Hahlen/v 最左边的(hlen-(v× hlen/v))比特。 7.2.3给出的细节将Ha的数据类型转换为整数。 f) 计算h2=(Hamod(n-1))+1。 5.3.3 随机数发生器 应使用符合GB/T 32915的随机数发生器。 5.3.4 分组密码算法 分组密码算法包括加密算法Enc(K1,m)和解密算法Dec(K1,c)。Enc(K1,m)表示用密钥K1 对明文m 进行加密,其输出为密文比特串c;Dec(K1,c)表示用密钥K1对密文c进行解密,其输出为 明文比特串m 或“错误”。密钥K1的比特长度记为K1_len。 应使用符合国家密码管理部门批准的分组密码算法。 5.3.5 消息认证码函数 消息认证码函数MAC(K2,Z)的作用是防止消息数据Z 被非法篡改,它在密钥K2的控制下,产 生消息数据比特串Z 的认证码,密钥K2的比特长度记为K2_len。在本部分的基于标识的加密算法 中,消息认证码函数使用密钥派生函数生成的密钥对密文比特串求取消息认证码,从而使解密者可以鉴 别消息的来源和检验数据的完整性。 消息认证码函数需要调用密码杂凑函数。 设密码杂凑函数为Hv(),其输出是长度恰为v比特的杂凑值。 消息认证码函数MAC(K2,Z),其中: 输入:比特串K2(比特长度为K2_len的密钥),比特串Z(待求取消息认证码的消息)。 输出:长度为v的消息认证码数据比特串K。K=Hv(Z‖K2)。 5.3.6 密钥派生函数 密钥派生函数的作用是从一个共享的秘密比特串中派生出密钥数据。在密钥协商过程中,密钥派 生函数作用在密钥交换所获共享的秘密比特串上,从中产生所需的会话密钥或进一步加密所需的密钥 数据。 密钥派生函数需要调用密码杂凑函数。 设密码杂凑函数为Hv(),其输出是长度恰为v比特的杂凑值。 密钥派生函数KDF(Z,klen),其中: 输入:比特串Z(双方共享的数据),整数klen[表示要获得的密钥数据的比特长度,要求该值小于 (232-1)v]。 输出:长度为klen的密钥数据比特串K。 计算步骤为: a) 初始化一个32比特构成的计数器ct=0x00000001。 b) 对i从1~klen/v 执行: 1) 计算Hai=Hv(Z‖ct); 2) ct++。 c) 若klen/v是整数,令Haklen/v =Haklen/v, 否则令Haklen/v 为Haklen/v 最左边的(klen-(v×klen/v))比特。 6 数字签名生成和验证算法及流程 6.1 系统签名主密钥和用户签名密钥的产生 KGC产生随机数ks∈[1,N-1]作为签名主私钥,计算G2中的元素Ppub-s=[ks]P2作为签名主公 钥,则签名主密钥对为(ks,Ppub-s)。KGC秘密保存ks,公开Ppub-s。 KGC选择并公开用一个字节表示的签名私钥生成函数识别符hid。 用户A的标识为IDA,为产生用户A的签名私钥dsA,KGC首先在有限域FN上计算t1=H1(IDA ‖hid,N)+ks,若t1=0则需重新产生签名主私钥,计算和公开签名主公钥,并更新已有用户的签名私 钥;否则计算t2=k ·t1-1,然后计算dsA=[t2]P1。 6.2 数字签名生成算法 设待签名的消息为比特串M,为了获取消息M 的数字签名(h,S),作为签名者的用户A应实现以 下运算步骤: A1:计算群GT中的元素g =e(P1,Ppub-s); A2:产生随机数r∈[1,N-1]; A3:计算群GT中的元素w =gr,按照GB/T 38635.1-2020中7.2.6和7.2.5给出的细节将w 的 数据类型转换为比特串; A4:计算整数h = H2(M‖w,N); A5:计算整数l= (r-h)modN,若l=0则返回A2; A6:计算群G1中的元素S = [l]dsA; A7:按照 GB/T 38635.1-2020 中7.2.2给出的细节,将h 的数据类型转换为字节串,按照 GB/T 38635.1-2020中7.2.8给出的细节将S 的数据类型转换为字节串,消息M 的签名为 (h,S)。 6.3 数字签名生成算法流程 数字签名生成算法流程如图1所示。 图1 数字签名生成算法流程 6.4 数字签名验证算法 为了检验收到的消息M'及其数字签名(h',S'),作为验证者的用户B应实现以下运算步骤: B1:按照GB/T 38635.1-2020中7.2.3给出的细节将h'的数据类型转换为整数,检验h'∈[1,N-1] 是否成立,若不成立则验证不通过; B2:按照GB/T 38635.1-2020中7.2.9给出的细节将S'的数据类型转换为椭圆曲线上的点,按 GB/T 38635.1-2020中5.5给出的细节检验S'∈G1是否成立,若不成立则验证不通过; B3:计算群GT中的元素g =e(P1,Ppub-s); B4:计算群GT中的......

英文网页English: GB/T 38635.2-2020

相关标准: GB/T 38626 | GB/T 38625 | GB/T 38635.1 | GB/T 38626 |