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页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、I C S3 5.0 4 0L8 0中 华 人 民 共 和 国 国 家 标 准G B/T3 2 9 1 8.32 0 1 6信息安全技术 S M 2椭圆曲线公钥密码算法 第3部分:密钥交换协议I n f o r m a t i o ns e c u r i t y t e c h n o l o g yP u b l i ck e yc r y p t o g r a p h i ca l g o r i t h mS M 2b a s e do ne l l i p t i cc u r v e sP a r t 3:K e ye x c h a n g ep r o t o c o l2
2、0 1 6-0 8-2 9发布2 0 1 7-0 3-0 1实施中华人民共和国国家质量监督检验检疫总局中 国 国 家 标 准 化 管 理 委 员 会发 布目 次前言引言1 范围12 规范性引用文件13 术语和定义14 符号和缩略语15 算法参数与辅助函数2 5.1 综述2 5.2 椭圆曲线系统参数2 5.3 用户密钥对3 5.4 辅助函数3 5.5 用户其他信息36 密钥交换协议及流程4 6.1 密钥交换协议4 6.2 密钥交换协议流程5附录A(资料性附录)密钥交换及验证示例6 A.1 综述6 A.2 Fp上椭圆曲线密钥交换协议6 A.3 F2m上椭圆曲线密钥交换协议9参考文献1 3G B/T
3、3 2 9 1 8.32 0 1 6前 言 G B/T3 2 9 1 8 信息安全技术 S M 2椭圆曲线公钥密码算法 分为5个部分:第1部分:总则;第2部分:数字签名算法;第3部分:密钥交换协议;第4部分:公钥加密算法;第5部分:参数定义。本部分为G B/T3 2 9 1 8的第3部分。本部分按照G B/T1.12 0 0 9给出的规则起草。本部分由国家密码管理局提出。本部分由全国信息安全标准化技术委员会(S A C/T C2 6 0)归口。本部分起草单位:北京华大信安科技有限公司、中国人民解放军信息工程大学、中国科学院数据与通信保护研究教育中心。本部分主要起草人:陈建华、祝跃飞、叶顶峰、胡
4、磊、裴定一、彭国华、张亚娟、张振峰。G B/T3 2 9 1 8.32 0 1 6引 言 N.K o b l i t z和V.M i l l e r在1 9 8 5年各自独立地提出将椭圆曲线应用于公钥密码系统。椭圆曲线公钥密码所基于的曲线性质如下:有限域上椭圆曲线在点加运算下构成有限交换群,且其阶与基域规模相近;类似于有限域乘法群中的乘幂运算,椭圆曲线多倍点运算构成一个单向函数。在多倍点运算中,已知多倍点与基点,求解倍数的问题称为椭圆曲线离散对数问题。对于一般椭圆曲线的离散对数问题,目前只存在指数级计算复杂度的求解方法。与大数分解问题及有限域上离散对数问题相比,椭圆曲线离散对数问题的求解难度要
5、大得多。因此,在相同安全程度要求下,椭圆曲线密码较其他公钥密码所需的密钥规模要小得多。S M 2是国家密码管理局组织制定并提出的椭圆曲线密码算法标准。G B/T3 2 9 1 8的主要目标如下:G B/T3 2 9 1 8.1定义和描述了S M 2椭圆曲线密码算法的相关概念及数学基础知识,并概述了该部分同其他部分的关系。G B/T3 2 9 1 8.2描述了一种基于椭圆曲线的签名算法,即S M 2签名算法。G B/T3 2 9 1 8.3描述了一种基于椭圆曲线的密钥交换协议,即S M 2密钥交换协议。G B/T3 2 9 1 8.4描述了一种基于椭圆曲线的公钥加密算法,即S M 2加密算法,该
6、算法需使用G B/T3 2 9 0 52 0 1 6定义的S M 3密码杂凑算法。G B/T3 2 9 1 8.5给出了S M 2算法使用的椭圆曲线参数,以及使用椭圆曲线参数进行S M 2运算的示例结果。本部分为G B/T3 2 9 1 8的第3部分,规定了S M 2椭圆曲线密码系统的密钥交换过程。G B/T3 2 9 1 8.32 0 1 6信息安全技术 S M 2椭圆曲线公钥密码算法 第3部分:密钥交换协议1 范围G B/T3 2 9 1 8的本部分规定了S M 2椭圆曲线公钥密码算法的密钥交换协议,并给出了密钥交换与验证示例及其相应的流程。本部分适用于商用密码应用中的密钥交换,可满足通信
7、双方经过两次或可选三次信息传递过程,计算获取一个由双方共同决定的共享秘密密钥(会话密钥)。2 规范性引用文件下列文件对于本文件的应用是必不可少的。凡是注日期的引用文件,仅注日期的版本适用于本文件。凡是不注日期的引用文件,其最新版本(包括所有的修改单)适用于本文件。G B/T3 2 9 1 8.12 0 1 6 信息安全技术 S M 2椭圆曲线公钥密码算法 第1部分:总则G B/T3 2 9 0 52 0 1 6 信息安全技术 S M 3密码杂凑算法3 术语和定义下列术语和定义适用于本文件。3.1从A到B的密钥确认 k e yc o n f i r m a t i o nf r o mAt oB
8、使用户B确信用户A拥有特定秘密密钥的保证。3.2密钥派生函数 k e yd e r i v a t i o nf u n c t i o n通过作用于共享秘密和双方都知道的其他参数,产生一个或多个共享秘密密钥的函数。3.3发起方 i n i t i a t o r在一个协议的操作过程中发送首轮交换信息的用户。3.4响应方 r e s p o n d e r在一个协议的操作过程中不是发送首轮交换信息的用户。3.5可辨别标识 d i s t i n g u i s h i n g i d e n t i f i e r可以无歧义辨别某一实体身份的信息。4 符号和缩略语下列符号适用于本文件A,B 使
9、用公钥密码系统的两个用户。1G B/T3 2 9 1 8.32 0 1 6dA 用户A的私钥。dB 用户B的私钥。E(Fq)Fq上椭圆曲线E的所有有理点(包括无穷远点O)组成的集合。Fq 包含q个元素的有限域。G 椭圆曲线的一个基点,其阶为素数。H a s h()密码杂凑算法。Hv()消息摘要长度为v比特的密码杂凑算法。h 余因子,h=#E(Fq)/n,其中n是基点G的阶。I DA,I DB 用户A和用户B的可辨别标识。K,KA,KB 密钥交换协议商定的共享秘密密钥。KD F()密钥派生函数。m o dn 模n运算。例如,2 3m o d7=2。n 基点G的阶(n是#E(Fq)的素因子)。O
10、椭圆曲线上的一个特殊点,称为无穷远点或零点,是椭圆曲线加法群的单位元。PA 用户A的公钥。PB 用户B的公钥。q 有限域Fq中元素的数目。a,b Fq中的元素,它们定义Fq上的一条椭圆曲线E。rA 密钥交换中用户A产生的临时密钥值。rB 密钥交换中用户B产生的临时密钥值。xy x与y的拼接,其中x、y可以是比特串或字节串。ZA 关于用户A的可辨别标识、部分椭圆曲线系统参数和用户A公钥的杂凑值。ZB 关于用户B的可辨别标识、部分椭圆曲线系统参数和用户B公钥的杂凑值。#E(Fq)E(Fq)上点的数目,称为椭圆曲线E(Fq)的阶。kP 椭圆曲线上点P的k倍点,即,kP=P+P+P k个,k是正整数。
11、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)上
12、的基点G=(xG,yG)(GO),其中xG和yG是Fq中的两个元素;G的阶n及其他可选项(如n的余因子h等)。椭圆曲线系统参数及其验证应符合G B/T3 2 9 1 8.12 0 1 6第5章的规定。2G B/T3 2 9 1 8.32 0 1 65.3 用户密钥对用户A的密钥对包括其私钥dA和公钥PA=dAG=(xA,yA),用户B的密钥对包括其私钥dB和公钥PB=dBG=(xB,yB)。用户密钥对的生成算法与公钥验证算法应符合G B/T3 2 9 1 8.12 0 1 6第6章的规定。5.4 辅助函数5.4.1 概述在本部分规定的椭圆曲线密钥交换协议中,涉及三类辅助函数:密码杂凑算法,密钥
13、派生函数与随机数发生器。这三类辅助函数的强弱直接影响密钥交换协议的安全性。5.4.2 密码杂凑算法本部分规定使用国家密码管理局批准的密码杂凑算法,如S M 3密码杂凑算法。5.4.3 密钥派生函数密钥派生函数的作用是从一个共享的秘密比特串中派生出密钥数据。在密钥协商过程中,密钥派生函数作用在密钥交换所获共享的秘密比特串上,从中产生所需的会话密钥或进一步加密所需的密钥数据。密钥派生函数需要调用密码杂凑算法。设密码杂凑算法为Hv(),其输出是长度恰为v比特的杂凑值。密钥派生函数KD F(Z,k l e n):输入:比特串Z,整数k l e n 表示要获得的密钥数据的比特长度,要求该值小于(23 2
14、-1)v。输出:长度为k l e n的密钥数据比特串K。a)初始化一个3 2比特构成的计数器c t=0 x 0 0 0 0 0 0 0 1;b)对i从1到k l e n/v执行:1)计算H ai=Hv(Zc t);2)c t+;c)若k l e n/v是整数,令H a!k l e n/v=H ak l e n/v,否则令H a!k l e n/v为H ak l e n/v最左边的(k l e n-(vk l e n/v)比特;d)令K=H a1H a2H ak l e n/v-1H a!k l e n/v。5.4.4 随机数发生器本部分规定使用国家密码管理局批准的随机数发生器。5.5 用户其他
15、信息用户A具有长度为e n t l e nA比特的可辨别标识I DA,记ENT LA是由整数e n t l e nA转换而成的两个字节;用户B具有长度为e n t l e nB比特的可辨别标识I DB,记ENT LB是由整数e n t l e nB转换而成的两个字节。在本部分规定的椭圆曲线密钥交换协议中,参与密钥协商的A、B双方都需要用密码杂凑算法求得用户A的杂凑值ZA和用户B的杂凑值ZB。按G B/T3 2 9 1 8.12 0 1 6中4.2.5和4.2.6给出的方法,将椭圆曲线方程参数a、b、G的坐标xG、yG和PA的坐标xA、yA的数据类型转换为比特串,ZA=H2 5 6(ENT LA
16、I DAabxGyGxAyA);按G B/T3 2 9 1 8.12 0 1 6中4.2.5和4.2.6给出的方法,将椭圆曲线方程参数a、b、G的坐标xG、yG和PB的坐标xB、yB的数据类型转换为比特串,ZB=H2 5 6(ENT LBI DBabxGyGxByB)。3G B/T3 2 9 1 8.32 0 1 66 密钥交换协议及流程6.1 密钥交换协议设用户A和B协商获得密钥数据的长度为k l e n比特,用户A为发起方,用户B为响应方。用户A和B双方为了获得相同的密钥,应实现如下运算步骤:记w=(l o g2(n)/2)-1。用户A:A1:用随机数发生器产生随机数rA1,n-1;A2:
17、计算椭圆曲线点RA=rAG=(x1,y1);A3:将RA发送给用户B;用户B:B1:用随机数发生器产生随机数rB1,n-1;B2:计算椭圆曲线点RB=rBG=(x2,y2);B3:从RB中取出域元素x2,按G B/T3 2 9 1 8.12 0 1 6中4.2.8给出的方法将x2的数据类型转换为整数,计算x2=2w+(x2&(2w-1);B4:计算tB=(dB+x2rB)m o dn;B5:验证RA是否满足椭圆曲线方程,若不满足则协商失败;否则从RA中取出域元素x1,按G B/T3 2 9 1 8.12 0 1 6中4.2.8给出的方法将x1的数据类型转换为整数,计算x1=2w+(x1&(2w
18、-1);B6:计算椭圆曲线点V=htB(PA+x1RA)=(xV,yV),若V是无穷远点,则B协商失败;否则按G B/T3 2 9 1 8.12 0 1 6中4.2.6和4.2.5给出的方法将xV、yV的数据类型转换为比特串;B7:计算KB=KD F(xVyVZAZB,k l e n);B8:(选项)按G B/T3 2 9 1 8.12 0 1 6中4.2.6和4.2.5给出的方法将RA的坐标x1、y1和RB的坐标x2、y2的数据类型转换为比特串,计算SB=H a s h(0 x 0 2yVH a s h(xVZAZBx1y1x2y2);B9:将RB、(选项SB)发送给用户A;用户A:A4:从
19、RA中取出域元素x1,按G B/T3 2 9 1 8.12 0 1 6中4.2.8给出的方法将x1的数据类型转换为整数,计算x1=2w+(x1&(2w-1);A5:计算tA=(dA+x1rA)m o dn;A6:验证RB是否满足 椭圆曲线方 程,若不满足 则协商失败;否则从RB中取出域元 素x2,按G B/T3 2 9 1 8.12 0 1 6中4.2.8给出的方法将x2的数据类型转换为整数,计算x2=2w+(x2&(2w-1);A7:计算椭圆曲线点U=htA(PB+x2RB)=(xU,yU),若U是无穷远点,则A协商失败;否则按G B/T3 2 9 1 8.12 0 1 6中4.2.6和4.
20、2.5给出的方法将xU、yU的数据类型转换为比特串;A8:计算KA=KD F(xUyUZAZB,k l e n);A9:(选项)按G B/T3 2 9 1 8.12 0 1 6中4.2.6和4.2.5给出的方法将RA的坐标x1、y1和RB的坐标x2、y2的数据类型转换为比特串,计算S1=H a s h(0 x 0 2yUH a s h(xUZAZBx1y1x2y2),并检验S1=SB是否成立,若等式不成立则从B到A的密钥确认失败;A1 0:(选项)计算SA=H a s h(0 x 0 3yUH a s h(xUZAZBx1y1x2y2),并将SA发送给用户B。4G B/T3 2 9 1 8.3
21、2 0 1 6用户B:B1 0:(选项)计算S2=H a s h(0 x 0 3yVH a s h(xVZAZBx1y1x2y2),并检验S2=SA是否成立,若等式不成立则从A到B的密钥确认失败。注:如果ZA、ZB不是用户A和B所对应的杂凑值,则自然不能达成一致的共享秘密值。密钥交换协议过程的示例参见附录A。6.2 密钥交换协议流程密钥交换协议流程见图1。图1 密钥交换协议流程5G B/T3 2 9 1 8.32 0 1 6附 录 A(资料性附录)密钥交换及验证示例A.1 综述本附录选用G B/T3 2 9 0 52 0 1 6给出的密码杂凑算法,其输入是长度小于26 4的消息比特串,输出是长
22、度为2 5 6比特的杂凑值,记为H2 5 6()。本附录中,所有用1 6进制表示的数,左边为高位,右边为低位。设用户A的身份是:A L I C E 1 2 3YAHOO.C OM。用G B/T 1 9 8 8编码记I DA:4 1 4 C 4 9 4 3 4 5 3 1 3 2 3 3 4 0 5 9 4 1 4 8 4 F 4 F 2 E 4 3 4 F 4 D。ENT LA=0 0 9 0。设用户B的身份是:B I L L 4 5 6YAHOO.C OM。用G B/T 1 9 8 8编码记I DB:4 2 4 9 4 C 4 C 3 4 3 5 3 6 4 0 5 9 4 1 4 8 4
23、F 4 F 2 E 4 3 4 F 4 D。ENT LB=0 0 8 8。A.2 Fp上椭圆曲线密钥交换协议椭圆曲线方程为:y2=x3+a x+b示例1:Fp-2 5 6素数p:8 5 4 2 D 6 9 E 4 C 0 4 4 F 1 8 E 8 B 9 2 4 3 5 B F 6 F F 7 D E 4 5 7 2 8 3 9 1 5 C 4 5 5 1 7 D 7 2 2 E D B 8 B 0 8 F 1 D F C 3系数a:7 8 7 9 6 8 B 4 F A 3 2 C 3 F D 2 4 1 7 8 4 2 E 7 3 B B F E F F 2 F 3 C 8 4 8 B
24、6 8 3 1 D 7 E 0 E C 6 5 2 2 8 B 3 9 3 7 E 4 9 8系数b:6 3 E 4 C 6 D 3 B 2 3 B 0 C 8 4 9 C F 8 4 2 4 1 4 8 4 B F E 4 8 F 6 1 D 5 9 A 5 B 1 6 B A 0 6 E 6 E 1 2 D 1 D A 2 7 C 5 2 4 9 A余因子h:1基点G=(xG,yG),其阶记为n。坐标xG:4 2 1 D E B D 6 1 B 6 2 E A B 6 7 4 6 4 3 4 E B C 3 C C 3 1 5 E 3 2 2 2 0 B 3 B A D D 5 0 B D
25、 C 4 C 4 E 6 C 1 4 7 F E D D 4 3 D坐标yG:0 6 8 0 5 1 2 B C B B 4 2 C 0 7 D 4 7 3 4 9 D 2 1 5 3 B 7 0 C 4 E 5 D 7 F D F C B F A 3 6 E A 1 A 8 5 8 4 1 B 9 E 4 6 E 0 9 A 2阶n:8 5 4 2 D 6 9 E 4 C 0 4 4 F 1 8 E 8 B 9 2 4 3 5 B F 6 F F 7 D D 2 9 7 7 2 0 6 3 0 4 8 5 6 2 8 D 5 A E 7 4 E E 7 C 3 2 E 7 9 B 7用户A的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- GB-T 32918.3-2016 信息安全技术 SM2椭圆曲线公钥密码算法 第3部分:密钥交换协议 GB 32918.3 2016 信息 安
链接地址:https://www.taowenge.com/p-92854254.html
限制150内