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
基本信息
本部分适用于商用密码应用中的密钥交换,可满足通信双方经过两次或可选三次信息传递过程,计算获取一个由双方共同决定的共享秘密密钥(会话密钥)。
发布历史
-
2016年08月
研制信息
- 起草单位:
- 北京华大信安科技有限公司、中国人民解放军信息工程大学、中国科学院数据与通信保护研究教育中心
- 起草人:
- 陈建华、祝跃飞、叶顶峰、胡磊、裴定一、彭国华、张亚娟、张振峰
- 出版信息:
- 页数: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
推荐标准
- DB31/T 884-2015 展览经营与服务规范 第1部分:展览主(承)办机构 2015-03-10
- DB34/T 2222-2014 高速公路施工标准化指南 路基工程 2014-12-17
- DB31/ 890-2015 公共游泳场所卫生管理规范 2015-03-19
- DB31/T 883-2015 老年友好城市建设导则 2015-03-09
- DB41/T 1064-2015 砂姜黑土强筋小麦生产技术规程 2015-05-15
- DB31/T 882-2015 超市诚信经营规范 2015-03-09
- DB31/T 875-2015 人身损害受伤人员休息期、营养期、护理期评定准则 2015-01-30
- DB41/T 1059-2015 麦红吸浆虫综合防治技术规范 2015-05-15
- DB31/ 874-2015 重点行业反恐怖防范系统管理规范 第4部分 2015-01-30
- DB31/ 873-2015 重点行业反恐怖防范系统管理规范 2015-01-30