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

上传人:Ma****4 文档编号:14660686 上传时间:2023-06-25 格式:PDF 页数:17 大小:510.78KB
下载 相关 举报
GB-T 32918.3-2016 信息安全技术 SM2椭圆曲线公钥密码算法 第3部分:密钥交换协议.pdf_第1页
第1页 / 共17页
GB-T 32918.3-2016 信息安全技术 SM2椭圆曲线公钥密码算法 第3部分:密钥交换协议.pdf_第2页
第2页 / 共17页
GB-T 32918.3-2016 信息安全技术 SM2椭圆曲线公钥密码算法 第3部分:密钥交换协议.pdf_第3页
第3页 / 共17页
GB-T 32918.3-2016 信息安全技术 SM2椭圆曲线公钥密码算法 第3部分:密钥交换协议.pdf_第4页
第4页 / 共17页
GB-T 32918.3-2016 信息安全技术 SM2椭圆曲线公钥密码算法 第3部分:密钥交换协议.pdf_第5页
第5页 / 共17页
GB-T 32918.3-2016 信息安全技术 SM2椭圆曲线公钥密码算法 第3部分:密钥交换协议.pdf_第6页
第6页 / 共17页
GB-T 32918.3-2016 信息安全技术 SM2椭圆曲线公钥密码算法 第3部分:密钥交换协议.pdf_第7页
第7页 / 共17页
GB-T 32918.3-2016 信息安全技术 SM2椭圆曲线公钥密码算法 第3部分:密钥交换协议.pdf_第8页
第8页 / 共17页
GB-T 32918.3-2016 信息安全技术 SM2椭圆曲线公钥密码算法 第3部分:密钥交换协议.pdf_第9页
第9页 / 共17页
GB-T 32918.3-2016 信息安全技术 SM2椭圆曲线公钥密码算法 第3部分:密钥交换协议.pdf_第10页
第10页 / 共17页
GB-T 32918.3-2016 信息安全技术 SM2椭圆曲线公钥密码算法 第3部分:密钥交换协议.pdf_第11页
第11页 / 共17页
GB-T 32918.3-2016 信息安全技术 SM2椭圆曲线公钥密码算法 第3部分:密钥交换协议.pdf_第12页
第12页 / 共17页
GB-T 32918.3-2016 信息安全技术 SM2椭圆曲线公钥密码算法 第3部分:密钥交换协议.pdf_第13页
第13页 / 共17页
GB-T 32918.3-2016 信息安全技术 SM2椭圆曲线公钥密码算法 第3部分:密钥交换协议.pdf_第14页
第14页 / 共17页
GB-T 32918.3-2016 信息安全技术 SM2椭圆曲线公钥密码算法 第3部分:密钥交换协议.pdf_第15页
第15页 / 共17页
GB-T 32918.3-2016 信息安全技术 SM2椭圆曲线公钥密码算法 第3部分:密钥交换协议.pdf_第16页
第16页 / 共17页
GB-T 32918.3-2016 信息安全技术 SM2椭圆曲线公钥密码算法 第3部分:密钥交换协议.pdf_第17页
第17页 / 共17页
亲,该文档总共17页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

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

《GB-T 32918.3-2016 信息安全技术 SM2椭圆曲线公钥密码算法 第3部分:密钥交换协议.pdf》由会员分享,可在线阅读,更多相关《GB-T 32918.3-2016 信息安全技术 SM2椭圆曲线公钥密码算法 第3部分:密钥交换协议.pdf(17页珍藏版)》请在冰点文库上搜索。

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

ICS35.040L80中华人民共和国国家标准GB/T32918.32016信息安全技术SM2椭圆曲线公钥密码算法第3部分:

密钥交换协议InformationsecuritytechnologyPublickeycryptographicalgorithmSM2basedonellipticcurvesPart3:

Keyexchangeprotocol2016-08-29发布2017-03-01实施中华人民共和国国家质量监督检验检疫总局中国国家标准化管理委员会发布目次前言引言1范围12规范性引用文件13术语和定义14符号和缩略语15算法参数与辅助函数25.1综述25.2椭圆曲线系统参数25.3用户密钥对35.4辅助函数35.5用户其他信息36密钥交换协议及流程46.1密钥交换协议46.2密钥交换协议流程5附录A(资料性附录)密钥交换及验证示例6A.1综述6A.2Fp上椭圆曲线密钥交换协议6A.3F2m上椭圆曲线密钥交换协议9参考文献13GB/T32918.32016前言GB/T32918信息安全技术SM2椭圆曲线公钥密码算法分为5个部分:

第1部分:

总则;第2部分:

数字签名算法;第3部分:

密钥交换协议;第4部分:

公钥加密算法;第5部分:

参数定义。

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

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

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

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

本部分起草单位:

北京华大信安科技有限公司、中国人民解放军信息工程大学、中国科学院数据与通信保护研究教育中心。

本部分主要起草人:

陈建华、祝跃飞、叶顶峰、胡磊、裴定一、彭国华、张亚娟、张振峰。

GB/T32918.32016引言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/T329052016定义的SM3密码杂凑算法。

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

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

GB/T32918.32016信息安全技术SM2椭圆曲线公钥密码算法第3部分:

密钥交换协议1范围GB/T32918的本部分规定了SM2椭圆曲线公钥密码算法的密钥交换协议,并给出了密钥交换与验证示例及其相应的流程。

本部分适用于商用密码应用中的密钥交换,可满足通信双方经过两次或可选三次信息传递过程,计算获取一个由双方共同决定的共享秘密密钥(会话密钥)。

2规范性引用文件下列文件对于本文件的应用是必不可少的。

凡是注日期的引用文件,仅注日期的版本适用于本文件。

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

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

总则GB/T329052016信息安全技术SM3密码杂凑算法3术语和定义下列术语和定义适用于本文件。

3.1从A到B的密钥确认keyconfirmationfromAtoB使用户B确信用户A拥有特定秘密密钥的保证。

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

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

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

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

4符号和缩略语下列符号适用于本文件A,B使用公钥密码系统的两个用户。

1GB/T32918.32016dA用户A的私钥。

dB用户B的私钥。

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

Fq包含q个元素的有限域。

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

Hash()密码杂凑算法。

Hv()消息摘要长度为v比特的密码杂凑算法。

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

IDA,IDB用户A和用户B的可辨别标识。

K,KA,KB密钥交换协议商定的共享秘密密钥。

KDF()密钥派生函数。

modn模n运算。

例如,23mod7=2。

n基点G的阶(n是#E(Fq)的素因子)。

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

PA用户A的公钥。

PB用户B的公钥。

q有限域Fq中元素的数目。

a,bFq中的元素,它们定义Fq上的一条椭圆曲线E。

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

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

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

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

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

#E(Fq)E(Fq)上点的数目,称为椭圆曲线E(Fq)的阶。

kP椭圆曲线上点P的k倍点,即,kP=P+P+Pk个,k是正整数。

x,y大于或等于x且小于或等于y的整数的集合。

x顶函数,大于或等于x的最小整数。

例如,7=7,8.3=9。

x底函数,小于或等于x的最大整数。

例如,7=7,8.3=8。

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

5算法参数与辅助函数5.1综述密钥交换协议是两个用户A和B通过交互的信息传递,用各自的私钥和对方的公钥来商定一个只有他们知道的秘密密钥。

这个共享的秘密密钥通常用在某个对称密码算法中。

该密钥交换协议能够用于密钥管理和协商。

5.2椭圆曲线系统参数椭圆曲线系统参数包括有限域Fq的规模q(当q=2m时,还包括元素表示法的标识和约化多项式);定义椭圆曲线E(Fq)的方程的两个元素a、bFq;E(Fq)上的基点G=(xG,yG)(GO),其中xG和yG是Fq中的两个元素;G的阶n及其他可选项(如n的余因子h等)。

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

2GB/T32918.320165.3用户密钥对用户A的密钥对包括其私钥dA和公钥PA=dAG=(xA,yA),用户B的密钥对包括其私钥dB和公钥PB=dBG=(xB,yB)。

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

5.4辅助函数5.4.1概述在本部分规定的椭圆曲线密钥交换协议中,涉及三类辅助函数:

密码杂凑算法,密钥派生函数与随机数发生器。

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

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

5.4.3密钥派生函数密钥派生函数的作用是从一个共享的秘密比特串中派生出密钥数据。

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

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

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

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

输入:

比特串Z,整数klen表示要获得的密钥数据的比特长度,要求该值小于(232-1)v。

输出:

长度为klen的密钥数据比特串K。

a)初始化一个32比特构成的计数器ct=0x00000001;b)对i从1到klen/v执行:

1)计算Hai=Hv(Zct);2)ct+;c)若klen/v是整数,令Ha!

klen/v=Haklen/v,否则令Ha!

klen/v为Haklen/v最左边的(klen-(vklen/v)比特;d)令K=Ha1Ha2Haklen/v-1Ha!

klen/v。

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

5.5用户其他信息用户A具有长度为entlenA比特的可辨别标识IDA,记ENTLA是由整数entlenA转换而成的两个字节;用户B具有长度为entlenB比特的可辨别标识IDB,记ENTLB是由整数entlenB转换而成的两个字节。

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

按GB/T32918.12016中4.2.5和4.2.6给出的方法,将椭圆曲线方程参数a、b、G的坐标xG、yG和PA的坐标xA、yA的数据类型转换为比特串,ZA=H256(ENTLAIDAabxGyGxAyA);按GB/T32918.12016中4.2.5和4.2.6给出的方法,将椭圆曲线方程参数a、b、G的坐标xG、yG和PB的坐标xB、yB的数据类型转换为比特串,ZB=H256(ENTLBIDBabxGyGxByB)。

3GB/T32918.320166密钥交换协议及流程6.1密钥交换协议设用户A和B协商获得密钥数据的长度为klen比特,用户A为发起方,用户B为响应方。

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

记w=(log2(n)/2)-1。

用户A:

A1:

用随机数发生器产生随机数rA1,n-1;A2:

计算椭圆曲线点RA=rAG=(x1,y1);A3:

将RA发送给用户B;用户B:

B1:

用随机数发生器产生随机数rB1,n-1;B2:

计算椭圆曲线点RB=rBG=(x2,y2);B3:

从RB中取出域元素x2,按GB/T32918.12016中4.2.8给出的方法将x2的数据类型转换为整数,计算x2=2w+(x2&(2w-1);B4:

计算tB=(dB+x2rB)modn;B5:

验证RA是否满足椭圆曲线方程,若不满足则协商失败;否则从RA中取出域元素x1,按GB/T32918.12016中4.2.8给出的方法将x1的数据类型转换为整数,计算x1=2w+(x1&(2w-1);B6:

计算椭圆曲线点V=htB(PA+x1RA)=(xV,yV),若V是无穷远点,则B协商失败;否则按GB/T32918.12016中4.2.6和4.2.5给出的方法将xV、yV的数据类型转换为比特串;B7:

计算KB=KDF(xVyVZAZB,klen);B8:

(选项)按GB/T32918.12016中4.2.6和4.2.5给出的方法将RA的坐标x1、y1和RB的坐标x2、y2的数据类型转换为比特串,计算SB=Hash(0x02yVHash(xVZAZBx1y1x2y2);B9:

将RB、(选项SB)发送给用户A;用户A:

A4:

从RA中取出域元素x1,按GB/T32918.12016中4.2.8给出的方法将x1的数据类型转换为整数,计算x1=2w+(x1&(2w-1);A5:

计算tA=(dA+x1rA)modn;A6:

验证RB是否满足椭圆曲线方程,若不满足则协商失败;否则从RB中取出域元素x2,按GB/T32918.12016中4.2.8给出的方法将x2的数据类型转换为整数,计算x2=2w+(x2&(2w-1);A7:

计算椭圆曲线点U=htA(PB+x2RB)=(xU,yU),若U是无穷远点,则A协商失败;否则按GB/T32918.12016中4.2.6和4.2.5给出的方法将xU、yU的数据类型转换为比特串;A8:

计算KA=KDF(xUyUZAZB,klen);A9:

(选项)按GB/T32918.12016中4.2.6和4.2.5给出的方法将RA的坐标x1、y1和RB的坐标x2、y2的数据类型转换为比特串,计算S1=Hash(0x02yUHash(xUZAZBx1y1x2y2),并检验S1=SB是否成立,若等式不成立则从B到A的密钥确认失败;A10:

(选项)计算SA=Hash(0x03yUHash(xUZAZBx1y1x2y2),并将SA发送给用户B。

4GB/T32918.32016用户B:

B10:

(选项)计算S2=Hash(0x03yVHash(xVZAZBx1y1x2y2),并检验S2=SA是否成立,若等式不成立则从A到B的密钥确认失败。

注:

如果ZA、ZB不是用户A和B所对应的杂凑值,则自然不能达成一致的共享秘密值。

密钥交换协议过程的示例参见附录A。

6.2密钥交换协议流程密钥交换协议流程见图1。

图1密钥交换协议流程5GB/T32918.32016附录A(资料性附录)密钥交换及验证示例A.1综述本附录选用GB/T329052016给出的密码杂凑算法,其输入是长度小于264的消息比特串,输出是长度为256比特的杂凑值,记为H256()。

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

设用户A的身份是:

ALICE123YAHOO.COM。

用GB/T1988编码记IDA:

414C494345313233405941484F4F2E434F4D。

ENTLA=0090。

设用户B的身份是:

BILL456YAHOO.COM。

用GB/T1988编码记IDB:

42494C4C343536405941484F4F2E434F4D。

ENTLB=0088。

A.2Fp上椭圆曲线密钥交换协议椭圆曲线方程为:

y2=x3+ax+b示例1:

Fp-256素数p:

8542D69E4C044F18E8B92435BF6FF7DE457283915C45517D722EDB8B08F1DFC3系数a:

787968B4FA32C3FD2417842E73BBFEFF2F3C848B6831D7E0EC65228B3937E498系数b:

63E4C6D3B23B0C849CF84241484BFE48F61D59A5B16BA06E6E12D1DA27C5249A余因子h:

1基点G=(xG,yG),其阶记为n。

坐标xG:

421DEBD61B62EAB6746434EBC3CC315E32220B3BADD50BDC4C4E6C147FEDD43D坐标yG:

0680512BCBB42C07D47349D2153B70C4E5D7FDFCBFA36EA1A85841B9E46E09A2阶n:

8542D69E4C044F18E8B92435BF6FF7DD297720630485628D5AE74EE7C32E79B7用户A的私钥dA:

6FCBA2EF9AE0AB902BC3BDE3FF915D44BA4CC78F88E2F8E7F8996D3B8CCEEDEE用户A的公钥PA=(xA,yA):

坐标xA:

3099093BF3C137D8FCBBCDF4A2AE50F3B0F216C3122D79425FE03A45DBFE1655坐标yA:

3DF79E8DAC1CF0ECBAA2F2B49D51A4B387F2EFAF482339086A27A8E05BAED98B用户B的私钥dB:

5E35D7D3F3C54DBAC72E61819E730B019A84208CA3A35E4C2E353DFCCB2A3B53用户B的公钥PB=(xB,yB):

坐标xB:

245493D446C38D8CC0F118374690E7DF633A8A4BFB3329B5ECE604B2B4F37F43坐标yB:

53C0869F4B9E17773DE68FEC45E14904E0DEA45BF6CECF9918C85EA047C60A4C杂凑值ZA=H256(ENTLAIDAabxGyGxAyA)。

ZA:

E4D1D0C3CA4C7F11BC8FF8CB3F4C02A78F108FA098E51A668487240F75E20F31杂凑值ZB=H256(ENTLBIDBabxGyGxByB)。

ZB:

6B4B6D0E276691BD4A11BF72F4FB501AE309FDACB72FA6CC336E6656119ABD67密钥交换A1A3步骤中的有关值:

产生随机数rA:

83A2C9C8B96E5AF70BD480B472409A9A327257F1EBB73F5B073354B2486685636GB/T32918.32016计算椭圆曲线点RA=rAG=(x1,y1):

坐标x1:

6CB5633816F4DD560B1DEC458310CBCC6856C09505324A6D23150C408F162BF0坐标y1:

0D6FCF62F1036C0A1B6DACCF57399223A65F7D7BF2D9637E5BBBEB857961BF1A密钥交换B1B9步骤中的有关值:

产生随机数rB:

33FE21940342161C55619C4A0C060293D543C80AF19748CE176D83477DE71C80计算椭圆曲线点RB=rBG=(x2,y2):

坐标x2:

1799B2A2C778295300D9A2325C686129B8F2B5337B3DCF4514E8BBC19D900EE5坐标y2:

54C9288C82733EFDF7808AE7F27D0E732F7C73A7D9AC98B7D8740A91D0DB3CF4取x2=2127+(x2&(2127-1):

B8F2B5337B3DCF4514E8BBC19D900EE5计算tB=(dB+x2rB)modn:

2B2E11CBF03641FC3D939262FC0B652A70ACAA25B5369AD38B375C0265490C9F取x1=2127+(x1&(2127-1):

E856C09505324A6D23150C408F162BF0计算椭圆曲线点x1RA=(xA0,yA0):

坐标xA0:

2079015F1A2A3C132B67CA9075BB28031D6F22398DD8

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 考试认证 > 从业资格考试

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2