GB/T 32918.3-2016 信息安全技术 SM2椭圆曲线公钥密码算法 第3部分:密钥交换协议

GB/T 32918.3-2016 Information security technology—Public key cryptographic algorithm SM2 based on elliptic curves—Part 3:Key exchange protocol

国家标准 中文简体 现行 页数:17页 | 格式:PDF

基本信息

标准号
GB/T 32918.3-2016
标准类型
国家标准
标准状态
现行
中国标准分类号(CCS)
国际标准分类号(ICS)
发布日期
2016-08-29
实施日期
2017-03-01
发布单位/组织
中华人民共和国国家质量监督检验检疫总局、中国国家标准化管理委员会
归口单位
全国信息安全标准化技术委员会(SAC/TC 260)
适用范围
GB/T 32918的本部分规定了SM2椭圆曲线公钥密码算法的密钥交换协议,并给出了密钥交换与验证示例及其相应的流程。
本部分适用于商用密码应用中的密钥交换,可满足通信双方经过两次或可选三次信息传递过程,计算获取一个由双方共同决定的共享秘密密钥(会话密钥)。

研制信息

起草单位:
北京华大信安科技有限公司、中国人民解放军信息工程大学、中国科学院数据与通信保护研究教育中心
起草人:
陈建华、祝跃飞、叶顶峰、胡磊、裴定一、彭国华、张亚娟、张振峰
出版信息:
页数:17页 | 字数:30 千字 | 开本: 大16开

内容描述

ICS35.040

L80GB

中华人民共和国国彖标准

GB/T32918.3—2016

信息安全技术SM2椭圆曲线公钥

密码算法第3部分:密钥交换协议

Informationsecuritytechnology—Publickeycryptographicalgorithm

SM2basedonellipticcurves—Part3:Keyexchangeprotocol

2016-08-29发布2017-03-01实施

GB/T32918.3—2016

目次

前言m

引言N

1范围1

2规范性引用文件1

3术语和定义1

4符号和缩略语1

5算法参数与辅助函数2

5.1综述2

5.2椭圆曲线系统参数2

5.3用户密钥对3

5.4辅助函数3

5.5用户其他信息3

6密钥交换协议及流程4

6.1密钥交换协议4

6.2密钥交换协议流程5

附录A(资料性附录)密钥交换及验证示例6

A.1综述6

A.2F”上椭圆曲线密钥交换协议6

A.3心,“上椭圆曲线密钥交换协议9

参考文献13

T

GB/T32918.3—2016

■ir■■i

刖吕

GB/T32918《信息安全技术SM2椭圆曲线公钥密码算法》分为5个部分:

——第1部分:总则;

——第2部分:数字签名算法;

——第3部分:密钥交换协议;

——第4部分:公钥加密算法;

——第5部分:参数定义。

本部分为GB/T32918的第3部分.

本部分按照GB/T1.1—2009给出的规则起草。

本部分由国家密码管理局提出。

本部分由全国信息安全标准化技术委员会(SAC/TC260)归口。

本部分起草单位:北京华大信安科技有限公司、中国人民解放军信息工程大学、中国科学院数据与

通信保护研究教育中心。

本部分主要起草人:陈建华、祝跃飞、叶顶峰、胡磊、裴定一、彭国华、张亚娟、张振峰。

m

GB/T32918.3—2016

引言

N.Koblitz和V.Miller在1985年各自独立地提出将椭圆曲线应用于公钥密码系统。椭圆曲线公

钥密码所基于的曲线性质如下:

——有限域上椭圆曲线在点加运算下构成有限交换群,且其阶与基域规模相近;

—类似于有限域乘法群中的乘幕运算,椭圆曲线多倍点运算构成一个单向函数。

在多倍点运算中,已知多倍点与基点,求解倍数的问题称为椭圆曲线离散对数问题。对于一般椭圆

曲线的离散对数问题,目前只存在指数级计算复杂度的求解方法。与大数分解问题及有限域上离散对

数问题相比,椭圆曲线离散对数问题的求解难度要大得多"因此,在相同安全程度要求下,椭圆曲线密

码较其他公钥密码所需的密钥规模要小得多。

SM2是国家密码管理局组织制定并提出的椭圆曲线密码算法标准。GB/T32918的主要目标

如下:

—GB/T32918.1定义和描述了SM2椭圆曲线密码算法的相关概念及数学基础知识,并概述了

该部分同其他部分的关系。

——GB/T32918.2描述了一种基于椭圆曲线的签名算法,即SM2签名算法。

——GB/T32918.3描述了一种基于椭圆曲线的密钥交换协议,即SM2密钥交换协议。

一GB/T32918.4描述了一种基于椭圆曲线的公钥加密算法,即SM2加密算法,该算法需使用

GB/T32905—2016定义的SM3密码杂凑算法。

-GB/T32918.5给出了SM2算法使用的椭圆曲线参数,以及使用椭圆曲线参数进行SM2运算

的示例结果。

本部分为GB/T32918的第3部分,规定了SM2椭圆曲线密码系统的密钥交换过程。

IV

GB/T32918.3—2016

信息安全技术SM2椭圆曲线公钥

密码算法第3部分:密钥交换协议

1范围

GB/T32918的本部分规定了SM2椭圆曲线公钥密码算法的密钥交换协议,并给出了密钥交换与

验证示例及其相应的流程。

本部分适用于商用密码应用中的密钥交换,可满足通信双方经过两次或可选三次信息传递过程,计

算获取一个由双方共同决定的共享秘密密钥(会话密钥)。

2规范性引用文件

下列文件对于本文件的应用是必不可少的。凡是注日期的引用文件,仅注日期的版本适用于本文

件。凡是不注日期的引用文件,其最新版本(包括所有的修改单)适用于本文件。

GB/T32918.1—2016信息安全技术SM2椭圆曲线公钥密码算法第1部分:总则

GB/T32905—2016信息安全技术SM3密码杂凑算法

3术语和定义

下列术语和定义适用于本文件。

3.1

从A到B的密钥确认keyconfirmationfromAtoB

使用户B确信用户A拥有特定秘密密钥的保证。

3.2

密钥派生函数keyderivationfunction

通过作用于共享秘密和双方都知道的其他参数,产生一个或多个共享秘密密钥的函数。

3.3

发起方initiator

在一个协议的操作过程中发送首轮交换信息的用户。

3.4

响应方responder

在一个协议的操作过程中不是发送首轮交换信息的用户。

3.5

可辨别标识distinguishingidentifier

可以无歧义辨别某一实体身份的信息。

4符号和缩略语

下列符号适用于本文件

A,B使用公钥密码系统的两个用户。

1

GB/T32918.3—2016

〃a用户A的私钥。

用户B的私钥。

E(F„)F„上椭圆曲线E的所有有理点(包括无穷远点O)组成的集合。

F,,包含g个元素的有限域。

G椭圆曲线的一个基点,其阶为素数。

Hash()密码杂凑算法。

H.()消息摘要长度为©比特的密码杂凑算法。

h余因子,力=#E(Fg)/",其中"是基点G的阶。

JDaJDb用户A和用户B的可辨别标识。

K,Ka,Kb密钥交换协议商定的共享秘密密钥。

KDF()密钥派生函数。

mod”模”运算”例如,23mod7-2o

«基点&的阶(”是#E(F(/)的素因子)。

O椭圆曲线上的一个特殊点,称为无穷远点或零点,是椭圆曲线加法群的单位元。

Pa用户A的公钥。

Pb用户B的公钥。

q有限域F“中元素的数目。

“,bF„中的元素,它们定义F“上的一条椭圆曲线E。

rA密钥交换中用户A产生的临时密钥值。

rB密钥交换中用户B产生的临时密钥值。

JC||jJ■与,的拼接,其中x、y可以是比特串或字节串。

Za关于用户A的可辨别标识、部分椭圆曲线系统参数和用户A公钥的杂凑值。

Zb关于用户B的可辨別标识、部分椭圆曲线系统参数和用户B公钥的杂凑值。

#E(F“)E(F„)±点的数目,称为椭圆曲线E(F“)的阶。

[门卩椭圆曲线上点P的人倍点,即,|>]P=P+P——P,,k是正整数。

SY"

沧个

[才,}订大于或等于才且小于或等于)的整数的集合。

|顶函数,大于或等于工的最小整数。例如,|7|=7』&3|=9。

/」底函数,小于或等于広的最大整数。例如,L7」=7,L8.3」=8。

&两个整数的按比特与运算。

5算法参数与辅助函数

5.1综述

密钥交换协议是两个用户A和B通过交互的信息传递,用各自的私钥和对方的公钥来商定一个只

有他们知道的秘密密钥。这个共享的秘密密钥通常用在某个对称密码算法中。该密钥交换协议能够用

于密钥管理和协商。

5.2椭圆曲线系统参数

懈圆曲线系统参数包括有限域F“的规模q(当q=2“时,还包括元素表示法的标识和约化多项

式);定义椭圆曲线E(F“)的方程的两个元素a、bGF“;E(FQ上的基点(;=(—;,y;)其中

和w是F“中的两个元素;(;的阶"及其他可选项(如71的余因子等)。

椭圆曲线系统参数及其验证应符合GB/T32918.1—2016第5章的规定。

2

GB/T32918.3—2016

5.3用户密钥对

用户A的密钥对包括其私钥“A和公钥PA=[dA]G=QA,”A),用户B的密钥对包括其私钥厶

和公钥Pb=[〃b]G=Gtb,,b)。

用户密钥对的生成算法与公钥验证算法应符合GB/T32918.1—2016第6章的规定。

5.4辅助函数

5.4.1概述

在本部分规定的椭圆曲线密钥交换协议中,涉及三类辅助函数:密码杂凑算法,密钥派生函数与随

机数发生器。这三类辅助函数的强弱直接影响密钥交换协议的安全性。

5.4.2密码杂凑算法

本部分规定使用国家密码管理局批准的密码杂凑算法,如SM3密码杂凑算法。

5.4.3密钥派生函数

密钥派生函数的作用是从一个共享的秘密比特串中派生出密钥数据。在密钥协商过程中,密钥派

生函数作用在密钥交换所获共享的秘密比特串上,从中产生所需的会话密钥或进一步加密所需的密钥

数据。

密钥派生函数需要调用密码杂凑算法。

设密码杂凑算法为H「(),其输出是长度恰为p比特的杂凑值。

密钥派生函数KDF(Z,klen):

输入:比特串Z,整数衣纽[表示要获得的密钥数据的比特长度,要求该值小于⑵—1)门。

输出:长度为klen的密钥数据比特串Ko

a)初始化一个32比特构成的计数器d-0x00000001;

b)对,从1到|klen/|执行:

1)计算TIa=H,(Z||c/);

2)cz11;

c)若klen/是整数,令Ha!|klenlx]=Ha[klen/|,

否则令Ha!|UenK|为Hu|Uenll|最左边的(.klen—(-UX\_klen/」))比特;

d)令K=Hai||Ha2II…II“””人|iIIHa!|加,”十

5.4.4随机数发生器

本部分规定使用国家密码管理局批准的随机数发生器。

5.5用户其他信息

用户A具有长度为enllen^比特的可辨别标识Ea,记ENT—是由整数enllenA转换而成的两个

字节;用户B具有长度为entler^比特的可辨别标识JDr,记ENTL^是由整数entlen^转换而成的两个

字节。在本部分规定的椭圆曲线密钥交换协议中,参与密钥协商的A、B双方都需要用密码杂凑算法求

得用户A的杂凑值Za和用户B的杂凑值Zx按GB/T32918.1—2016中4.2.5和4.2.6给出的方法,

将椭圆曲线方程参数U、b、G的坐标二;、屮;和Pa的坐标「A、)A的数据类型转换为比特串,Za=H256

(ENTLaIIIDaIIa||b||口||y;||工aII*);按GB/T32918.1—2016中4.2.5和4.2.6给出的方法,

将椭圆曲线方程参数u、b、G的坐标和Pb的坐标心5的数据类型转换为比特串,Zb=H256

(ENTLbII7DbIIaIIbIIXc,IIIIXbIIJ-b)o

3

GB/T32918.3—2016

6密钥交换协议及流程

6.1密钥交换协议

设用户A和B协商获得密钥数据的长度为翹e”比特,用户A为发起方,用户B为响应方。

用户A和B双方为了获得相同的密钥,应实现如下运算步骤:

记⑷=|qlog2(«)|/2)|-10

用户A:

A|:用随机数发生器产生随机数厂aG口,"一1];

A2:计算椭圆曲线点R,\=[厂a=Cr1,小);

As:将RA发送给用户B;

用户B:

B]:用随机数发生器产生随机数rBG[1,22—1];

B2:计算椭圆曲线点RB=[厂b]G=(工2,$2);

B:<:从心中取出域元素才2,按GB/T32918.1—2016中4.2.8给出的方法将心的数据类型转换为

整数,计算72=2田+(心&(2“一1));

B』:计算/b=(〃b+心•rB)mod";

Bs:验证Ra是否满足椭圆曲线方程,若不满足则协商失败;否则从Ra中取出域元素厂,按

GB/T32918.1—2016中4.2.8给出的方法将,的数据类型转换为整数,计算「=2^+(小&

(2“'一1));

计算椭圆曲线点•心](几+[「:]心)=(1,0),若V是无穷远点,则B协商失败;否

则按GB/T32918.1—2016中4.2.6和4.2.5给出的方法将_^、卄的数据类型转换为比特串;

B?:计算KB=KDFCr||IIZAIIZb,如J;

B*:(选项)按GB/T32918.1—2016中4.2.6和4.2.5给出的方法将Ra的坐标心、小和Rb的坐标

厂、刃的数据类型转换为比特串,计算SB=Hash(0x02"vIIHash||ZA||ZB||「||小||

■T2II$2));

Bs):将Rb(选项Sb)发送给用户A;

用户A:

A』:从Ra中取出域元素,,按GB/T32918.1—2016中4.2.8给出的方法将,的数据类型转换为

整数,计算乳=23+(厂&(23—1));

A5:计算/a=(〃a+zi・ra)mod";

每:验证Rr是否满足椭圆曲线方程,若不满足则协商失败;否则从Rb中取出域元素几,按

GB/T32918.1—2016中4.2.8给出的方法将工2的数据类型转换为整数,计算乳=2中+(仁&

A?:计算椭圆曲线点U=M・/a](Pb+[:2:]心)=(心,九),若U是无穷远点,则A协商失败;否

则按GB/T32918.1—2016中4.2.6和4.2.5给出的方法将“、*的数据类型转换为比特串;

£:计算Ka=KDFCtu||恥||ZaIIZb,触”);

A°:(选项)按GB/T32918.1—2016中4.2.6和4.2.5给出的方法将心的坐标厂、〃和Rr的坐标

几、)2的数据类型转换为比特串,计算S】=H3(0x02IIwIIHash(j-cIIZAIIZbIU'iIIII

几II刃)),并检验Si=Sb是否成立,若等式不成立则从B到A的密钥确认失败;

A1():(选项)计算Sa=Hash(0x03IIyu\HashCryIIZaIIZbII-riII3!iII工2II$2)),并将Sa发送

给用户Bo

4

GB/T32918.3—2016

用户B;

B1():(选项)计算S2—Hash(0x03||y||Hash(:r||ZA||ZBIIIIyiII:r2II兀)),并检验S2=

Sa是否成立,若等式不成立则从A到B的密钥确认失败。

注:如果Za、Zb不是用户A和B所对应的杂凑值,则自然不能达成一致的共享秘密值。密钥交换协议过程的示例

参见附录A。

6.2密钥交换协议流程

密钥交换协议流程见图lo

图1密钥交换协议流程

5

GB/T32918.3—2016

附录A

(资料性附录)

密钥交换及验证示例

A.1综述

本附录选用GB/T32905—2016给出的密码杂凑算法,其输入是长度小于2恥的消息比特串,输出

是长度为256比特的杂凑值,记为H25S()。

本附录中,所有用16进制表示的数,左边为高位,右边为低位。

设用户A的身份是:ALICE123®YAH()O.COMo用GB/T1988编码记/DA:414C49434531

3233405941484F4F2E434F4D。ENTL,、=0090。

设用户B的身份是:BILL456@YAHOO.C()MO用GB/T1988编码记IDB:42494C4C34

3536405941484F4F2E434F4D。ENTLn=0088o

A.2上椭圆曲线密钥交换协议

椭圆曲线方程为:y23+仪、疋+”

示例1;Fp-256

索数p:8542D69E4C044F18E8B92435BF6FF7DE457283915C45517D722EDB8B08F1DFC3

系数a:787968B4FA32C3FD2417842E73BBFEFF2F3C848B6831D7E0EC65228B3937E498

系数H63E4C6D3B23B0C849CF84241484BFE48F61D59A5B16BA06E6E12D1DA27C5249A

余因子“:1

基点G=(口,加),其阶记为"。

坐标.r<;:421DEBD61B62EAB6746434EBC3CC315E32220B3BADD50BDC4C4E6C147FEDD43D

坐标v(;:0680512BCBB42C07D47349D2153B70C4E5D7FDFC