标准搜索结果: 'GB/T 32918.5-2017'
标准编号 | GB/T 32918.5-2017 (GB/T32918.5-2017) | 中文名称 | 信息安全技术 SM2椭圆曲线公钥密码算法 第5部分:参数定义 | 英文名称 | Information security technology -- Public key cryptographic algorithm SM2 based on elliptic curves -- Part 5: Parameter definition | 行业 | 国家标准 (推荐) | 中标分类 | L80 | 国际标准分类 | 35.040 | 字数估计 | 15,133 | 发布日期 | 2017-05-12 | 实施日期 | 2017-12-01 | 引用标准 | GB/T 32905-2016; GB/T 32918.1-2016; GB/T 32918.2-2016; GB/T 32918.3-2016; GB/T 32918.4-2016 | 提出机构 | 国家密码管理局 | 发布机构 | 中华人民共和国国家质量监督检验检疫总局、中国国家标准化管理委员会 | 范围 | GB/T 32918的本部分规定了SM2椭圆曲线公钥密码算法的曲线参数。本部分适用于数字签名与验证(参见附录A)、密钥交换与验证(参见附录B)、消息加解密示例(参见附录C)。 |
GB/T 32918.5-2017
Information security technology-Public key cryptographic algorithmSM2 based on elliptic curves--Part 5: Parameter definition
ICS 35.040
L80
中华人民共和国国家标准
信息安全技术
SM2椭圆曲线公钥密码算法
第5部分:参数定义
2017-05-12发布
2017-12-01实施
中华人民共和国国家质量监督检验检疫总局
中国国家标准化管理委员会发布
目次
前言 Ⅰ
引言 Ⅱ
1 范围 1
2 规范性引用文件 1
3 符号 1
4 参数定义 1
附录A(资料性附录) 数字签名与验证示例 3
附录B(资料性附录) 密钥交换及验证示例 5
附录C(资料性附录) 消息加解密示例 9
参考文献 11
前言
GB/T 32918《信息安全技术 SM2椭圆曲线公钥密码算法》分为5个部分:
---第1部分:总则;
---第2部分:数字签名算法;
---第3部分:密钥交换协议;
---第4部分:公钥加密算法;
---第5部分:参数定义。
本部分为GB/T 32918的第5部分。
本部分按照GB/T 1.1-2009给出的规则起草。
请注意本文件的某些内容可能涉及专利。本文件的发布机构不承担识别这些专利的责任。
本部分由国家密码管理局提出。
本部分由全国信息安全标准化技术委员会(SAC/TC260)归口。
本部分起草单位:北京华大信安科技有限公司、中国人民解放军信息工程大学、中国科学院数据与
通信保护研究教育中心。
本部分主要起草人:陈建华、祝跃飞、叶顶峰、胡磊、裴定一、彭国华、张亚娟、张振峰。
引 言
N.Koblitz和V.Miler在1985年各自独立地提出将椭圆曲线应用于公钥密码系统。椭圆曲线公
钥密码所基于的曲线性质如下:
---有限域上椭圆曲线在点加运算下构成有限交换群,且其阶与基域规模相近;
---类似于有限域乘法群中的乘幂运算,椭圆曲线多倍点运算构成一个单向函数。
在多倍点运算中,已知多倍点与基点,求解倍数的问题称为椭圆曲线离散对数问题。对于一般椭圆
曲线的离散对数问题,目前只存在指数级计算复杂度的求解方法。与大数分解问题及有限域上离散对
数问题相比,椭圆曲线离散对数问题的求解难度要大得多。因此,在相同安全程度要求下,椭圆曲线密
码较其他公钥密码所需的密钥规模要小得多。
SM2是国家密码管理局组织制定并提出的椭圆曲线密码算法标准。GB/T 32918的主要目标
如下:
---GB/T 32918.1-2016定义和描述了SM2椭圆曲线密码算法的相关概念及数学基础知识,并
概述了该部分同其他部分的关系。
---GB/T 32918.2-2016描述了一种基于椭圆曲线的签名算法,即SM2签名算法。
---GB/T 32918.3-2016描述了一种基于椭圆曲线的密钥交换协议,即SM2密钥交换协议。
---GB/T 32918.4-2016描述了一种基于椭圆曲线的公钥加密算法,即SM2加密算法,该算法需
使用GB/T 32905-2016定义的SM3密码杂凑算法。
SM2运算的示例结果。
信息安全技术
SM2椭圆曲线公钥密码算法
第5部分:参数定义
1 范围
GB/T 32918的本部分规定了SM2椭圆曲线公钥密码算法的曲线参数。
本部分适用于数字签名与验证(参见附录A)、密钥交换与验证(参见附录B)、消息加解密示例(参
见附录C)。
2 规范性引用文件
下列文件对于本文件的应用是必不可少的。凡是注日期的引用文件,仅注日期的版本适用于本文
件。凡是不注日期的引用文件,其最新版本(包括所有的修改单)适用于本文件。
GB/T 32905-2016 信息安全技术 SM3密码杂凑算法
GB/T 32918.1-2016 信息安全技术 SM2椭圆曲线公钥密码算法 第1部分:总则
GB/T 32918.2-2016 信息安全技术 SM2椭圆曲线公钥密码算法 第2部分:数字签名算法
GB/T 32918.3-2016 信息安全技术 SM2椭圆曲线公钥密码算法 第3部分:密钥交换协议
GB/T 32918.4-2016 信息安全技术 SM2椭圆曲线公钥密码算法 第4部分:公钥加密算法
3 符号
下列符号适用于本文件。
p 大于3的素数。
a,b Fq 中的元素,它们定义Fq 上的一条椭圆曲线E。
n 基点G 的阶[n是#E(Fq)的素因子]。
xG 生成元的x坐标
yG 生成元的y坐标
4 参数定义
SM2使用素数域256位椭圆曲线。
椭圆曲线方程:y2=x3+ax+b
曲线参数:
p=FFFFFFFE FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF 00000000 FFFFFFFF FFFFFFFF
a=FFFFFFFE FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF 00000000 FFFFFFFF FFFFFFFC
b=28E9FA9E 9D9F5E34 4D5A9E4B CF6509A7 F39789F5 15AB8F92 DDBCBD41 4D940E93
n=FFFFFFFE FFFFFFFF FFFFFFFF FFFFFFFF 7203DF6B 21C6052B 53BBF409 39D54123
xG=32C4AE2C 1F198119 5F990446 6A39C994 8FE30BBF F2660BE1 715A4589 334C74C7
yG=BC3736A2 F4F6779C 59BDCEE3 6B692153 D0A9877C C62A4740 02DF32E5 2139F0A0
附 录 A
(资料性附录)
数字签名与验证示例
A.1 综述
本附录选用GB/T 32905-2016给出的密码杂凑算法,其输入是长度小于264的消息比特串,输出
是长度为256比特的杂凑值,记为H256()。
本附录使用GB/T 32918.2-2016规定的数字签名算法计算得到各步骤中的相应数值。
本附录中,所有用16进制表示的数,左边为高位,右边为低位。
本附录中,消息采用GB/T 1988编码。
设IDA 的GB/T 1988为:31323334 35363738 31323334 35363738。ENTLA=0080。
A.2 SM2椭圆曲线数字签名
椭圆曲线方程为:y2=x3+ax+b
示例1:Fp-256
素数p:FFFFFFFE FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF 00000000 FFFFFFFF FFFFFFFF
系数a:FFFFFFFE FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF 00000000 FFFFFFFF FFFFFFFC
系数b:28E9FA9E 9D9F5E34 4D5A9E4B CF6509A7 F39789F5 15AB8F92 DDBCBD41 4D940E93
基点G=(xG,yG),其阶记为n。
坐标xG:32C4AE2C 1F198119 5F990446 6A39C994 8FE30BBF F2660BE1 715A4589 334C74C7
坐标yG:BC3736A2 F4F6779C 59BDCEE3 6B692153 D0A9877C C62A4740 02DF32E5 2139F0A0
阶n:FFFFFFFE FFFFFFFF FFFFFFFF FFFFFFFF 7203DF6B 21C6052B 53BBF409 39D54123
待签名的消息M:message digest
私钥dA:3945208F 7B2144B1 3F36E38A C6D39F95 88939369 2860B51A 42FB81EF 4DF7C5B8
公钥PA=(xA,yA):
坐标xA:09F9DF31 1E5421A1 50DD7D16 1E4BC5C6 72179FAD 1833FC07 6BB08FF3 56F35020
坐标yA:CCEA490C E26775A5 2DC6EA71 8CC1AA60 0AED05FB F35E084A 6632F607 2DA9AD13
杂凑值ZA=H256(ENTLA‖IDA‖a‖b‖xG‖yG‖xA‖yA)。
ZA:B2E14C5C 79C6DF5B 85F4FE7E D8DB7A26 2B9DA7E0 7CCB0EA9 F4747B8C CDA8A4F3
签名各步骤中的有关值:
M=ZA‖M:
B2E14C5C 79C6DF5B 85F4FE7E D8DB7A26 2B9DA7E0 7CCB0EA9 F4747B8C CDA8A4F3
6D657373 61676520 64696765 7374
密码杂凑算法值e=H256(M):F0B43E94 BA45ACCA ACE692ED 534382EB 17E6AB5A 19CE7B31
F4486FDF C0D28640
产生随机数k:59276E27 D506861A 16680F3A D9C02DCC EF3CC1FA 3CDBE4CE 6D54B80D
EAC1BC21
计算椭圆曲线点(x1,y1)=[k]G:
坐标x1:04EBFC71 8E8D1798 62043226 8E77FEB6 415E2EDE 0E073C0F 4F640ECD 2E149A73
坐标y1:E858F9D8 1E5430A5 7B36DAAB 8F950A3C 64E6EE6A 63094D99 283AFF76 7E124DF0
计算r=(e+x1)modn:F5A03B06 48D2C463 0EEAC513 E1BB81A1 5944DA38 27D5B741 43AC7EAC
EEE720B3
(1+dA)-1:4DFE9D9C 1F5901D4 E6F58E4E C3D04567 822D2550 F9B88E82 6D1B5B3A B9CD0FE0
计算s=((1+dA)-1·(k-r·dA))modn:B1B6AA29 DF212FD8 763182BC 0D421CA1 BB9038FD
1F7F42D4 840B69C4 85BBC1AA
消息M 的签名为 (r,s):
值r:F5A03B06 48D2C463 0EEAC513 E1BB81A1 5944DA38 27D5B741 43AC7EAC EEE720B3
值s:B1B6AA29 DF212FD8 763182BC 0D421CA1 BB9038FD 1F7F42D4 840B69C4 85BBC1AA
验证各步骤中的有关值:
密码杂凑算法值e'=H256(M'):F0B43E94 BA45ACCA ACE692ED 534382EB 17E6AB5A 19CE7B31
F4486FDF C0D28640
计算t=(r'+s')modn:A756E531 27F3F43B 851C47CF EEFD9E43 A2D133CA 258EF4EA 73FBF468
3ACDA13A
计算椭圆曲线点(x'0,y'0)=[s']G:
坐标x'0:2B9CE14E 3C8D1FFC 46D693FA 0B54F2BD C4825A50 6607655D E22894B5 C99D3746
坐标y'0:277BFE04 D1E526B4 E1C32726 435761FB CE0997C2 6390919C 4417B3A0 A8639A59
计算椭圆曲线点(x'00,y'00)=[t]PA:
坐标x'00:FDAC1EFA A770E463 5885CA1B BFB360A5 84B238FB 2902ECF0 9DDC935F 60BF4F9B
坐标y'00:B89AA926 3D5632F6 EE82222E 4D63198E 78E095C2 4042CBE7 15C23F71 1422D74C
计算椭圆曲线点(x'1,y'1)=[s']G+[t]PA:
坐标x'1:04EBFC71 8E8D1798 62043226 8E77FEB6 415E2EDE 0E073C0F 4F640ECD 2E149A73
坐标y'1:E858F9D8 1E5430A5 7B36DAAB 8F950A3C 64E6EE6A 63094D99 283AFF76 7E124DF0
计算R=(e'+x'1)modn:F5A03B06 48D2C463 0EEAC513 E1BB81A1 5944DA38 27D5B741 43AC7EAC
EEE720B3
附 录 B
(资料性附录)
密钥交换及验证示例
B.1 一般要求
本附录选用GB/T 32905-2016给出的密码杂凑算法,其输入是长度小于264的消息比特串,输出
是长度为256比特的杂凑值,记为H256()。
本附录使用GB/T 32918.3-2016规定的密钥交换协议计算得到各步骤中的相应数值。
本附录中,所有用16进制表示的数,左边为高位,右边为低位。
设IDA 的GB/T 1988编码为:31323334 35363738 31323334 35363738。ENTLA=0080。
设IDB 的GB/T 1988编码为:31323334 35363738 31323334 35363738。ENTLB=0080。
B.2 SM2椭圆曲线密钥交换协议
椭圆曲线方程为:y2=x3+ax+b
示例1:Fp-256
素数p:FFFFFFFE FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF 00000000 FFFFFFFF FFFFFFFF
系数a:FFFFFFFE FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF 00000000 FFFFFFFF FFFFFFFC
系数b:28E9FA9E 9D9F5E34 4D5A9E4B CF6509A7 F39789F5 15AB8F92 DDBCBD41 4D940E93
余因子h:1
基点G=(xG,yG),其阶记为n。
坐标xG:32C4AE2C 1F198119 5F990446 6A39C994 8FE30BBF F2660BE1 715A4589 334C74C7
坐标yG:BC3736A2 F4F6779C 59BDCEE3 6B692153 D0A9877C C62A4740 02DF32E5 2139F0A0
阶n:FFFFFFFE FFFFFFFF FFFFFFFF FFFFFFFF 7203DF6B 21C6052B 53BBF409 39D54123
用户A的私钥dA:81EB26E9 41BB5AF1 6DF11649 5F906952 72AE2CD6 3D6C4AE1 678418BE
48230029
用户A的公钥PA=(xA,yA):
坐标xA:160E1289 7DF4EDB6 1DD812FE B96748FB D3CCF4FF E26AA6F6 DB9540AF 49C94232
坐标yA:4A7DAD08 BB9A4595 31694BEB 20AA489D 6649975E 1BFCF8C4 741B78B4 B223007F
用户B的私钥dB:78512991 7D45A9EA 5437A593 56B82338 EAADDA6C EB199088 F14AE10D
EFA229B5
用户B的公钥PB=(xB,yB):
坐标xB:6AE848C5 7C53C7B1 B5FA99EB 2286AF07 8BA64C64 591B8B56 6F7357D5 76F16DFB
坐标yB:EE489D77 1621A27B 36C5C799 2062E9CD 09A92643 86F3FBEA 54DFF693 05621C4D
杂凑值ZA=H256(ENTLA‖IDA‖a‖b‖xG‖yG‖xA‖yA)。
ZA:3B85A571 79E11E7E 513AA622 991F2CA7 4D1807A0 BD4D4B38 F90987A1 7AC245B1
杂凑值ZB=H256(ENTLB‖IDB‖a‖b‖xG‖yG‖xB‖yB)。
ZB:79C988D6 3229D97E F19FE02C A1056E01 E6A7411E D24694AA 8F834F4A 4AB022F7
密钥交换A1~A3步骤中的有关值:
产生随机数rA:D4DE1547 4DB74D06 491C440D 305E0124 00990F3E 390C7E87 153C12DB 2EA60BB3
计算椭圆曲线点RA=[rA]G=(x1,y1):
坐标x1:64CED1BD BC99D590 049B434D 0FD73428 CF608A5D B8FE5CE0 7F150269 40BAE40E
坐标y1:376629C7 AB21E7DB 26092249 9DDB118F 07CE8EAA E3E7720A FEF6A5CC 062070C0
密钥交换B1~B9步骤中的有关值:
产生随机数rB:7E071248 14B30948 9125EAED 10111316 4EBF0F34 58C5BD88 335C1F9D 596243D6
计算椭圆曲线点RB=[rB]G=(x2,y2):
坐标x2:ACC27688 A6F7B706 098BC91F F3AD1BFF 7DC2802C DB14CCCC DB0A9047 1F9BD707
坐标y2:2FEDAC04 94B2FFC4 D6853876 C79B8F30 1C6573AD 0AA50F39 FC87181E 1A1B46FE
取x2=2127+(x2&(2127-1)):FDC2802C DB14CCCC DB0A9047 1F9BD707
计算tB=(dB+x2·rB)modn:
D0429637 F5A6D5D1 E6C54523 5169DF85 23116306 0A654ECB A0F657FD 629E8DD9
取x1=2127+(x1&(2127-1)):CF608A5D B8FE5CE0 7F150269 40BAE40E
计算椭圆曲线点[x1]RA=(xA0,yA0):
坐标xA0:8D62DAF7 DC084E4A 85D32214 68605854 5837BDC2 2D6E9AFE 015828A8 E1094EC2
坐标yA0:564DC0FA 639B2967 E65F3448 CA06627E F3FE67C2 1561C5BE BB399552 29A84760
计算椭圆曲线点PA+[x1]RA=(xA1,yA1):
坐标xA1:85C40F88 CECA80E3 8172093F C4BA4581 88E7C58A F81CF2AF 454EC431 43E55615
坐标yA1:8C152CB0 A131C958 C279DEBE CC6AB739 6A7BC875 FC801BB2 94C284F4 7F65F6ED
计算V=[h·tB](PA+[x1]RA)=(xV,yV):
坐标xV:C558B44B EE5301D9 F52B44D9 39BB5958 4D75B903 4DD6A9FC 82687210 9A65739F
坐标yV:3252B35B 191D8AE0 1CD122C0 25204334 C5EACF68 A0CB4854 C6A7D367 ECAD4DE7
计算KB=KDF(xV‖yV‖ZA‖ZB,klen):
xV‖yV‖ZA‖ZB:
C558B44B EE5301D9 F52B44D9 39BB5958 4D75B903 4DD6A9FC 82687210 9A65739F 3252B35B
191D8AE0 1CD122C0 25204334 C5EACF68 A0CB4854 C6A7D367 ECAD4DE7 3B85A571 79E11E7E
513AA622 991F2CA7 4D1807A0 BD4D4B38 F90987A1 7AC245B1 79C988D6 3229D97E F19FE02C
A1056E01 E6A7411E D24694AA 8F834F4A 4AB022F7
klen=128
共享密钥KB:6C893473 54DE2484 C60B4AB1 FDE4C6E5
计算选项SB=Hash(0x02‖yV‖Hash(xV‖ZA‖ZB‖x1‖y1‖x2‖y2)):
xV‖ZA‖ZB‖x1‖y1‖x2‖y2:
C558B44B EE5301D9 F52B44D9 39BB5958 4D75B903 4DD6A9FC 82687210 9A65739F 3B85A571
79E11E7E 513AA622 991F2CA7 4D1807A0 BD4D4B38 F90987A1 7AC245B1 79C988D6 3229D97E
F19FE02C A1056E01 E6A7411E D24694AA 8F834F4A 4AB022F7 64CED1BD BC99D590 049B434D
0FD73428 CF608A5D B8FE5CE0 7F150269 40BAE40E 376629C7 AB21E7DB 26092249 9DDB118F
07CE8EAA E3E7720A FEF6A5CC 062070C0 ACC27688 A6F7B706 098BC91F F3AD1BFF 7DC2802C
DB14CCCC DB0A9047 1F9BD707 2FEDAC04 94B2FFC4 D6853876 C79B8F30 1C6573AD 0AA50F39
FC87181E 1A1B46FE
Hash(xV‖ZA‖ZB‖x1‖y1‖x2‖y2):
90E2A628 E4F57ABD 78339EA3 3F967D11 A154117B EA442F7B 627D4F4D D047B7F6
0x02‖yV‖Hash(xV‖ZA‖ZB‖x1‖y1‖x2‖y2):
02 3252B35B 191D8AE0 1CD122C0 25204334 C5EACF68 A0CB4854 C6A7D367 ECAD4DE7
90E2A628 E4F57ABD 78339EA3 3F967D11 A154117B EA442F7B 627D4F4D D047B7F6
选项SB:D3A0FE15 DEE185CE AE907A6B 595CC32A 266ED7B3 367E9983 A896DC32 FA20F8EB
密钥交换A4~A10步骤中的有关值:
取x1=2127+(x1&(2127-1)):CF608A5D B8FE5CE0 7F150269 40BAE40E
计算tA=(dA+x1·rA)modn:3D68C0C0 6DC40F17 B9DDFE00 93D3C0E4 969ED112 4A187FA8
AD02F81E 3C11CCE6
取x2=2127+(x2&(2127-1)):FDC2802C DB14CCCC DB0A9047 1F9BD707
计算椭圆曲线点[x2]RB=(xB0,yB0):
坐标xB0:DA68EF84 FE616D92 438BBE69 BCC52DB9 CE5CBEA9 93944CBC 331BA26D 6082E912
坐标yB0:4831E862 898B4356 32D8FFA0 1869CD65 645822BD D3B4E9E0 46BCAB85 6F02F110
计算椭圆曲线点PB+[x2]RB=(xB1,yB1):
坐标xB1:FE7C111C C3E628E3 FE709DF2 E6E331CD C2A3A30E EA0CDC3C D10C0759 EAB15199
坐标yB1:12D6F496 361948C9 EC67E603 DF93C008 86EFAEEA C591C2D5 D16B67F2 FE1AD77E
计算U=[h·tA](PB+[x2]RB)=(xU,yU):
坐标xU:C558B44B EE5301D9 F52B44D9 39BB5958 4D75B903 4DD6A9FC 82687210 9A65739F
坐标yU:3252B35B 191D8AE0 1CD122C0 25204334 C5EACF68 A0CB4854 C6A7D367 ECAD4DE7
计算KA=KDF(xU‖yU‖ZA‖ZB,klen):
xU‖yU‖ZA‖ZB:
C558B44B EE5301D9 F52B44D9 39BB5958 4D75B903 4DD6A9FC 82687210 9A65739F 3252B35B
191D8AE0 1CD122C0 25204334 C5EACF68 A0CB4854 C6A7D367 ECAD4DE7 3B85A571 79E11E7E
513AA622 991F2CA7 4D1807A0 BD4D4B38 F90987A1 7AC245B1 79C988D6 3229D97E F19FE02C
A1056E01 E6A7411E D24694AA 8F834F4A 4AB022F7
klen=128
共享密钥KA:6C893473 54DE2484 C60B4AB1 FDE4C6E5
计算选项S1=Hash(0x02‖yU‖Hash(xU‖ZA‖ZB‖x1‖y1‖x2‖y2)):
xU‖ZA‖ZB‖x1‖y1‖x2‖y2:
C558B44B EE5301D9 F52B44D9 39BB5958 4D75B903 4DD6A9FC 82687210 9A65739F 3B85A571
79E11E7E 513AA622 991F2CA7 4D1807A0 BD4D4B38 F90987A1 7AC245B1 79C988D6 3229D97E
F19FE02C A1056E01 E6A7411E D24694AA 8F834F4A 4AB022F7 64CED1BD BC99D590 049B434D
0FD73428 CF608A5D B8FE5CE0 7F150269 40BAE40E 376629C7 AB21E7DB 26092249 9DDB118F
07CE8EAA E3E7720A FEF6A5CC 062070C0 ACC27688 A6F7B706 098BC91F F3AD1BFF 7DC2802C
DB14CCCC DB0A9047 1F9BD707 2FEDAC04 94B2FFC4 D6853876 C79B8F30 1C6573AD 0AA50F39
FC87181E 1A1B46FE
Hash(xU‖ZA‖ZB‖x1‖y1‖x2‖y2):
90E2A628 E4F57ABD 78339EA3 3F967D11 A154117B EA442F7B 627D4F4D D047B7F6
0x02‖yU‖Hash(xU‖ZA‖ZB‖x1‖y1‖x2‖y2):
02 3252B35B 191D8AE0 1CD122C0 25204334 C5EACF68 A0CB4854 C6A7D367 ECAD4DE7
90E2A628 E4F57ABD 78339EA3 3F967D11 A154117B EA442F7B 627D4F4D D047B7F6
选项S1:D3A0FE15 DEE185CE AE907A6B 595CC32A 266ED7B3 367E9983 A896DC32 FA20F8EB
计算选项SA=Hash(0x03‖yU‖Hash(xU‖ZA‖ZB‖x1‖y1‖x2‖y2)):
xU‖ZA‖ZB‖x1‖y1‖x2‖y2:
C558B44B EE5301D9 F52B44D9 39BB5958 4D75B903 4DD6A9FC 82687210 9A65739F 3B85A571
79E11E7E 513AA622 991F2CA7 4D1807A0 BD4D4B38 F90987A1 7AC245B1 79C988D6 3229D97E
F19FE02C A1056E01 E6A7411E D24694AA 8F834F4A 4AB022F7 64CED1BD BC99D590 049B434D
0FD73428 CF608A5D B8FE5CE0 7F150269 40BAE40E 376629C7 AB21E7DB 26092249 9DDB118F
07CE8EAA E3E7720A FEF6A5CC 062070C0 ACC27688 A6F7B706 098BC91F F3AD1BFF 7DC2802C
DB14CCCC DB0A9047 1F9BD707 2FEDAC04 94B2FFC4 D6853876 C79B8F30 1C6573AD 0AA50F39
FC87181E 1A1B46FE
Hash(xU‖ZA‖ZB‖x1‖y1‖x2‖y2):90E2A628 E4F57ABD 78339EA3 3F967D11 A154117B EA442F7B
627D4F4D D047B7F6
0x03‖yU‖Hash(xU‖ZA‖ZB‖x1‖y1‖x2‖y2):
03 3252B35B 191D8AE0 1CD122C0 25204334 C5EACF68 A0CB4854 C6A7D367 ECAD4DE7
90E2A628 E4F57ABD 78339EA3 3F967D11 A154117B EA442F7B 627D4F4D D047B7F6
选项SA:18C7894B 3816DF16 CF07B05C 5EC0BEF5 D655D58F 779CC1B4 00A4F388 4644DB88
密钥交换B10步骤中的有关值:
计算选项S2=Hash(0x03‖yV‖Hash(xV‖ZA‖ZB‖x1‖y1‖x2‖y2)):
xV‖ZA‖ZB‖x1‖y1‖x2‖y2:
C558B44B EE5301D9 F52B44D9 39BB5958 4D75B903 4DD6A9FC 82687210 9A65739F 3B85A571
79E11E7E 513AA622 991F2CA7 4D1807A0 BD4D4B38 F90987A1 7AC245B1 79C988D6 3229D97E
F19FE02C A1056E01 E6A7411E D24694AA 8F834F4A 4AB022F7 64CED1BD BC99D590 049B434D
0FD73428 CF608A5D B8FE5CE0 7F150269 40BAE40E 376629C7 AB21E7DB 26092249 9DDB118F
07CE8EAA E3E7720A FEF6A5CC 062070C0 ACC27688 A6F7B706 098BC91F F3AD1BFF 7DC2802C
DB14CCCC DB0A9047 1F9BD707 2FEDAC04 94B2FFC4 D6853876 C79B8F30 1C6573AD 0AA50F39
FC87181E 1A1B46FE
Hash(xV‖ZA‖ZB‖x1‖y1‖x2‖y2):90E2A628 E4F57ABD 78339EA3 3F967D11 A154117B EA442F7B
627D4F4D D047B7F6
0x03‖yV‖Hash(xV‖ZA‖ZB‖x1‖y1‖x2‖y2):
03 3252B35B 191D8AE0 1CD122C0 25204334 C5EACF68 A0CB4854 C6A7D367 ECAD4DE7
90E2A628 E4F57ABD 78339EA3 3F967D11 A154117B EA442F7B 627D4F4D D047B7F6
选项S2:18C7894B 3816DF16 CF07B05C 5EC0BEF5 D655D58F 779CC1B4 00A4F388 4644DB88
附 录 C
(资料性附录)
消息加解密示例
C.1 一般要求
本附录选用GB/T 32905-2016给出的密码杂凑算法,其输入是长度小于264的消息比特串,输出
是长度为256比特的杂凑值,记为H256()。
本附录使用GB/T 32918.4-2016规定的公钥加密算法计算得到各步骤中的相应数值。
本附录中,所有用16进制表示的数,左边为高位,右边为低位。
本附录中,明文采用GB/T 1988编码。
C.2 SM2椭圆曲线消息加解密
椭圆曲线方程为:y2=x3+ax+b
示例:Fp-256
素数p:FFFFFFFE FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF 00000000 FFFFFFFF FFFFFFFF
系数a:FFFFFFFE FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF 00000000 FFFFFFFF FFFFFFFC
系数b:28E9FA9E 9D9F5E34 4D5A9E4B CF6509A7 F39789F5 15AB8F92 DDBCBD41 4D940E93
基点G=(xG,yG),其阶记为n。
坐标xG:32C4AE2C 1F198119 5F990446 6A39C994 8FE30BBF F2660BE1 715A4589 334C74C7
坐标yG:BC3736A2 F4F6779C 59BDCEE3 6B692153 D0A9877C C62A4740 02DF32E5 2139F0A0
阶n:FFFFFFFE FFFFFFFF FFFFFFFF FFFFFFFF 7203DF6B 21C6052B 53BBF409 39D54123
待加密的消息M:encryption standard
消息M 的16进制表示:656E63 72797074 696F6E20 7374616E 64617264
私钥dB:3945208F 7B2144B1 3F36E38A C6D39F95 88939369 2860B51A 42FB81EF 4DF7C5B8
公钥PB=(xB,yB)为:
坐标xB:09F9DF31 1E5421A1 50DD7D16 1E4BC5C6 72179FAD 1833FC07 6BB08FF3 56F35020
坐标yB:CCEA490C E26775A5 2DC6EA71 8CC1AA60 0AED05FB F35E084A 6632F607 2DA9AD13
加密各步骤中的有关值:
产生随机数k:59276E27 D506861A 16680F3A D9C02DCC EF3CC1FA 3CDBE4CE 6D54B80D EAC1BC21
计算椭圆曲线点C1=[k]G=(x1,y1):
坐标x1:04EBFC71 8E8D1798 62043226 8E77FEB6 415E2EDE 0E073C0F 4F640ECD 2E149A73
坐标y1:E858F9D8 1E5430A5 7B36DAAB 8F950A3C 64E6EE6A 63094D99 283AFF76 7E124DF0
在此C1 选用未压缩的表示形式,点转换成字节串的形式为PC‖x1‖y1,其中PC 为单一字节且PC=04,仍记
为C1。
计算椭圆曲线点[k]PB=(x2,y2):
坐标x2:335E18D7 51E51F04 0E27D468 138B7AB1 DC86AD7F 981D7D41 6222FD6A B3ED230D
坐标y2:AB743EBC FB22D64F 7B6AB791 F70658F2 5B48FA93 E54064FD BFBED3F0 BD847AC9
消息M 的比特长度klen=152
计算t=KDF(x2‖y2,klen):44E60F DBF0BAE8 14376653 74BEF267 49046C9E
计算C2=M ⊕t:21886C A989CA9C 7D580873 07CA9309 2D651EFA
计算C3=Hash(x2‖M‖y2):
x2‖M‖y2:
335E18D7 51E51F04 0E27D468 138B7AB1 DC86AD7F 981D7D41 6222FD6A B3ED230D
656E6372......
|