SM2椭圆曲线公钥密码算法第5部分参数定义
- 格式:pdf
- 大小:379.55 KB
- 文档页数:11
课外实践五SM2、SM3及SM4加密标准一、概述1.SM2椭圆曲线公钥密码算法加密标准SM2算法就是ECC椭圆曲线密码机制,但在签名、密钥交换方面不同于ECDSA、ECDH等国际标准,而是采取了更为安全的机制。
SM2-1椭圆曲线数字签名算法,SM2-2椭圆曲线密钥交换协议,SM2-3椭圆曲线公钥加密算法,分别用于实现数字签名密钥协商和数据加密等功能。
SM2算法与RSA算法不同的是,SM2算法是基于椭圆曲线上点群离散对数难题,相对于RSA算法,256位的SM2密码强度已经比2048位的RSA密码强度要高。
椭圆曲线算法公钥密码所基于的曲线性质:椭圆曲线多倍点运算构成一个单向函数。
在多倍点运算中,已知多倍点与基点,求解倍数的问题称为椭圆曲线离散对数问题。
对于一般椭圆曲线的离散对数问题,目前只存在指数级计算复杂度的求解方法。
与大数分解问题及有限域上离散对数问题相比,椭圆曲线离散对数问题的求解难度要大得多。
因此,在相同安全程度要求下,椭圆曲线密码较其他公钥密码所需的秘钥规模要小得多。
2.SM3哈希算法加密标准SM3是一种密码散列函数标准。
密码散列函数是散列函数的一种。
它被认为是一种单向函数,也就是说极其难以由散列函数输出的结果,回推输入的数据是什么。
这种散列函数的输入数据,通常被称为消息,而它的输出结果,经常被称为消息摘要。
SM3适用于商用密码应用中的数字签名和验证消息认证码的生成与验证以及随机数的生成,可满足多种密码应用的安全需求。
为了保证杂凑算法的安全性,其产生的杂凑值的长度不应太短,例如MD5输出128比特杂凑值,输出长度太短,影响其安全性SHA-1算法的输出长度为160比特,SM3算法的输出长度为256比特,因此SM3算法的安全性要高于MD5算法和SHA-1算法。
一个理想的密码散列函数应该有这些特性:对于任何一个给定的消息,它都很容易就能运算出散列数值;难以由一个已知的散列数值,去推算出原始的消息;在不更动散列数值的前提下,修改消息内容是不可行的;对于两个不同的消息,它不能给与相同的散列数值。
标准咨询国产商用密码算法及其相关标准介绍谢宗晓(中国金融认证中心)董坤祥(山东财经大学管理科学与工程学院)甄杰(重庆工商大学管理科学与工程学院)1 概述《中华人民共和国密码法》第六条中规定:密码分为核心密码、普通密码和商用密码。
同时,在第七条和第八条中规定:核心密码、普通密码属于国家秘密,商用密码用于保护不属于国家秘密的信息。
因此,在常见应用中,商用密码得到了大面积的推广,以至于,在实践中,提到“国密”,经常就被默认为国产商用密码算法。
在现代密码系统中,密码算法、密码协议和密钥管理是三个不可或缺的部分,而在这三者之中,最为核心的毫无疑问就是密码算法。
虽然实践证明,绝大部分的安全漏洞都产生于实现和部署过程中,但是,算法的安全与否,直接决定了一个密码系统的基础是否安全。
例如,选用SHA-1、MD4、MD5、RC4和密钥长度小于2048位的RSA 等不安全的算法,不可能实现安全的密码系统。
已经发布的国产商用密码算法,按照类别可以分为:1)对称密码算法,主要包括ZUC 和SM4;2)非对称密码算法,主要包括SM2和SM9;3)密码杂凑算法,主要包括SM3。
2 对称密码算法对称密码(symmetric cryptography)是用相同的密钥(或方法)进行加密解密,这在逻辑上非常清晰,也最直观,有时候也被称之为共享密钥密码,对称密码算法的基本过程如图1所示。
1) 注意,RC4算法已经证明不安全。
图1 对称密码的工作过程已经发布国产商用密码算法中属于对称密码算法的有ZUC 和SM4。
ZUC(祖冲之密码算法)属于序列密码,也称为“流密码”,与之类似的国外密码算法如RC41)。
ZUC 对应的国家标准、行业标准,如表1所示。
SM4属于分组密码,也称为“块密码”,与之类似的国外密码算法如DES(数据加密标准),TDEA/3DES(三重数据加密标准)以及AES(高级加密标准)等。
SM4对应的国家标准、行业标准,如表2所示。
课外实践五SM2、SM3及SM4加密标准一、概述1.SM2椭圆曲线公钥密码算法加密标准SM2算法就是ECC椭圆曲线密码机制,但在签名、密钥交换方面不同于ECDSA、ECDH 等国际标准,而是采取了更为安全的机制.SM2-1椭圆曲线数字签名算法,SM2-2椭圆曲线密钥交换协议,SM2-3椭圆曲线公钥加密算法,分别用于实现数字签名密钥协商和数据加密等功能。
SM2算法与RSA算法不同的是,SM2算法是基于椭圆曲线上点群离散对数难题,相对于RSA算法,256位的SM2密码强度已经比2048位的RSA密码强度要高。
椭圆曲线算法公钥密码所基于的曲线性质:椭圆曲线多倍点运算构成一个单向函数.在多倍点运算中,已知多倍点与基点,求解倍数的问题称为椭圆曲线离散对数问题。
对于一般椭圆曲线的离散对数问题,目前只存在指数级计算复杂度的求解方法。
与大数分解问题及有限域上离散对数问题相比,椭圆曲线离散对数问题的求解难度要大得多。
因此,在相同安全程度要求下,椭圆曲线密码较其他公钥密码所需的秘钥规模要小得多。
2.SM3哈希算法加密标准SM3是一种密码散列函数标准.密码散列函数是散列函数的一种。
它被认为是一种单向函数,也就是说极其难以由散列函数输出的结果,回推输入的数据是什么。
这种散列函数的输入数据,通常被称为消息,而它的输出结果,经常被称为消息摘要。
SM3适用于商用密码应用中的数字签名和验证消息认证码的生成与验证以及随机数的生成,可满足多种密码应用的安全需求。
为了保证杂凑算法的安全性,其产生的杂凑值的长度不应太短,例如MD5输出128比特杂凑值,输出长度太短,影响其安全性SHA-1算法的输出长度为160比特,SM3算法的输出长度为256比特,因此SM3算法的安全性要高于MD5算法和SHA—1算法。
一个理想的密码散列函数应该有这些特性:对于任何一个给定的消息,它都很容易就能运算出散列数值;难以由一个已知的散列数值,去推算出原始的消息;在不更动散列数值的前提下,修改消息内容是不可行的;对于两个不同的消息,它不能给与相同的散列数值。
信息安全技术SM2椭圆曲线公钥密码算法1 范围GB/T XXXXX 的本部分规定了SM2椭圆曲线公钥密码算法涉及的必要数学基础知识与相关密码技术,以帮助实现其它各部分所规定的密码机制。
本部分适用于基域为素域和二元扩域的椭圆曲线公钥密码算法的设计、开发、使用。
2 符号和缩略语B MOV 阈。
正数B ,使得求取B q F 上的离散对数至少与求取q F 上的椭圆曲线离散对数一样困难。
deg ( f ) 多项式f (x )的次数。
E 有限域上由a 和b 定义的一条椭圆曲线。
E (F q ) q F 上椭圆曲线E 的所有有理点(包括无穷远点O )组成的集合。
ECDLP 椭圆曲线离散对数问题。
F p 包含p 个元素的素域。
F q 包含q 个元素的有限域。
F q * 由F q 中所有非零元构成的乘法群。
m 2F 包含m 2个元素的二元扩域。
G 椭圆曲线的一个基点,其阶为素数。
gcd(x , y ) x 和y 的最大公因子。
h 余因子,h=#E (F q )/n ,其中n 是基点G 的阶。
LeftRotate ( ) 循环左移运算。
l max 余因子h 的最大素因子的上界。
m 二元扩域F 2m 关于F 2的扩张次数。
mod f (x ) 模多项式f (x )的运算。
若f (x )是二元域上的多项式,则所有系数执行模2运算。
mod n 模n 运算。
例如,23 mod 7=2。
n 基点G 的阶(n 是#E (F q )的素因子)。
O 椭圆曲线上的一个特殊点,称为无穷远点或零点,是椭圆曲线加法群的单位元。
P P = (x P , y P ) 是椭圆曲线上除O 之外的一个点,其坐标x P ,y P 满足椭圆曲线方程。
P 1+P 2 椭圆曲线E 上两个点P 1与P 2的和。
p 大于3的素数。
q 有限域F q 中元素的数目。
a, b q F 中的元素,它们定义q F 上的一条椭圆曲线E 。
r min 基点G 的阶n 的下界。
关于SM2椭圆曲线参数选取的资料一.安全的椭圆曲线的选取1.椭圆曲线上的公钥密码体制的安全性是建立在椭圆曲线离散对数的基础上, 但并不是所有椭圆曲线都可以应用到公钥密码体制中, 为了保证其安全性, 必须选取安全椭圆曲线,即只有选到合适的有限域GF(p)和椭圆曲线(ECC),能够抵抗攻击ECDLP算法的攻击,才能保证所选ECC的安全性。
若某椭圆曲线存在优于n1/2级(n是基点阶次)计算复杂度的攻击方法,则称此曲线为弱椭圆曲线。
Fp上的超奇异椭圆曲线(有限域Fp的特征整除q+1-#E(Fp))和Fp上的异常曲线(#E(Fp)=p)都是弱椭圆曲线。
(国密局文档p4,p25A.4抗攻击椭圆曲线满足的条件)。
下面是选取曲线时应遵循的原则:(一种椭圆曲线参数生成的快速算法)(1)为了抗击Pollard-ρ攻击,所选取椭圆曲线的阶#E(GF(p))的分解式中应该包含一个大的素数因子,目前应不小于160bit;(2)为了抗击Weil对和Tate对的攻击,对于1≤k≤30,n不能除p k-1(不宜选取超奇异椭圆曲线);(3)为了抗击Semaev-Smart-Satoh-Araki的攻击所选曲线的阶不能等于该曲线所定义的有限域的阶,即#E(F P)≠p(不宜选取异常椭圆曲线);(4)对于二进制域GF(2m)的度m不宜为合数。
Gaudry,Hess和Smart提出,若m有小约数l(l=4),存在比Pollard's rho算法更快求解ECDLP的方法。
(5)选择GF(p)的子域H,满足它的阶|H| 是#E 的最大素因子n,并在H 上实现ECC。
2.一般来说有4 种寻找安全椭圆曲线的方法:(椭圆曲线密码体制及其参数生成的研究.2006.DR)(1) 有限域GF( p) 上随机生成一椭圆曲线, 直接计算其阶, 判断阶是否为大素数或含大素数因子, 若是即确定,否则继续选取曲线, 直至符合条件。
(2) 取具有一定特殊性椭圆曲线的系数, 计算该椭圆曲线的阶, 对该阶进行判断, 直至找到所需要的安全曲线。
SM2椭圆曲线公钥密码算法第5部分参数定义SM2椭圆曲线公钥密码算法第5部分:参数定义Public key cryptographic algorithm SM2 based on elliptic curves--Part 5: Parameter definitions目次1 符号缩略语 (1)2 参数定义 (1)附录 A 数字签名与验证示例 (2)A.1 综述 (2)A.2SM2椭圆曲线数字签名 (2)附录 B 密钥交换及验证示例 (4)B.1 一般要求 (4)B.2SM2椭圆曲线密钥交换协议 (4)附录 C 消息加解密示例 (8)C.1 一般要求 (8)C.2SM2椭圆曲线消息加解密 (8)SM2椭圆曲线公钥密码算法第5部分:参数定义1 符号缩略语p大于3的素数。
a, b F q中的元素,它们定义F q上的一条椭圆曲线E。
n基点G的阶(n是#E(F q)的素因子)。
x G 生成元的x坐标y G 生成元的y坐标2 参数定义SM2使用素数域256位椭圆曲线。
椭圆曲线方程:y2 = x3 + ax + b曲线参数:p = FFFFFFFE FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF 00000000 FFFFFFFF FFFFFFFFa = FFFFFFFE FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF 00000000 FFFFFFFF FFFFFFFCb = 28E9FA9E 9D9F5E34 4D5A9E4B CF6509A7 F39789F5 15AB8F92 DDBCBD41 4D940E93n = FFFFFFFE FFFFFFFF FFFFFFFF FFFFFFFF 7203DF6B 21C6052B 53BBF409 39D54123 x G= 32C4AE2C 1F198119 5F990446 6A39C994 8FE30BBF F2660BE1 715A4589 334C74C7 y G= BC3736A2 F4F6779C 59BDCEE3 6B692153 D0A9877C C62A4740 02DF32E5 2139F0A0附录 A数字签名与验证示例A.1 综述本附录选用《SM3密码杂凑算法》给出的密码杂凑算法,其输入是长度小于264的消息比特串,输出是长度为256比特的杂凑值,记为H256( )。
SM2算法1、公钥密码算法介绍消息鉴别:是一个证实收到的消息来自可信的源点并且未被篡改的过程。
它的目的是信源识别,保证信息完整性。
数字签名:是一种确保数据完整性和非否认的手段,通过给消息附加一段数据来实现。
公钥密码学与其他密码学完全不同, 使用这种方法的加密系统,不仅公开加密算法本身,也公开了加密用的密钥。
公钥密码系统与只使用一个密钥的对称传统密码不同,算法是基于数学函数而不是基于替换和置换。
公钥密码学是非对称的,它使用两个独立的密钥,即密钥分为公钥和私钥,因此称双密钥体制。
双钥体制的公钥可以公开,因此称为公钥算法。
公钥算法的出现,给密码的发展开辟了新的方向。
公钥算法虽然已经历了20多年的发展,但仍具有强劲的发展势头,在鉴别系统和密钥交换等安全技术领域起着关键的作用公钥算法的加密与解密由不同的密钥完成,并且从加密密钥得到解密密钥在计算上是不可行的。
通常,公钥算法的两个密钥中任何一个都可以作为加密而另一个用作解密,但不是所有的公钥算法都是如此。
2. SM2椭圆曲线公钥密码算法SM2算法就是ECC椭圆曲线密码机制,但在签名、密钥交换方面不同于ECDSA、ECDH等国际标准,而是采取了更为安全的机制。
另外,SM2推荐了一条256位的曲线作为标准曲线。
SM2标准包括总则,数字签名算法,密钥交换协议,公钥加密算法四个部分,并在每个部分的附录详细说明了实现的相关细节及示例。
SM2算法主要考虑素域Fp和F2m上的椭圆曲线,分别介绍了这两类域的表示,运算,以及域上的椭圆曲线的点的表示,运算和多倍点计算算法。
然后介绍了编程语言中的数据转换,包括整数和字节串,字节串和比特串,域元素和比特串,域元素和整数,点和字节串之间的数据转换规则。
详细说明了有限域上椭圆曲线的参数生成以及验证,椭圆曲线的参数包括有限域的选取,椭圆曲线方程参数,椭圆曲线群基点的选取等,并给出了选取的标准以便于验证。
最后给椭圆曲线上密钥对的生成以及公钥的验证,用户的密钥对为(s,sP),其中s为用户的私钥,sP为用户的公钥,由于离散对数问题从sP难以得到s,并针对素域和二元扩域给出了密钥对生成细节和验证方式。
国产商用密码算法SM2及其相关标准介绍谢宗晓 李达 马春旺(中国金融认证中心)1 概述公钥密码算法的产生主要是为了解决密钥分发困难的问题1)。
1976年,Whitfield Diffie 和Martin Hellman 提出了公开密钥加密的设计思想,但当时并未能给出实现的算法。
之后,有多种算法被提出,但经得住考验得到大面积应用的主要是Ron Rivest、Adi Shamir 和Leonard Adleman 在1978年提出的RSA 算法。
直到现在,RSA 几乎成了公钥密码领域事实上的标准。
关于公钥密码算法的更多基础知识,请参考文献[1]。
RSA 算法的安全性,主要是基于大整数质因数分解的困难性,这意味着如果这个整数太小,就很容易受到暴力攻击。
所以,RSA 算法的密钥,越来越长。
NIST 2)建议在2010年12月31日前停止使用RSA1024,升级至RSA2048。
当然,到目前,也没有明确的证据表明RSA1024已经被破解了,但是从当前计算能力的升级速度推测,RSA1024确实已经不安全了。
密钥长度的不断增加意味着效率在不停地降低,与一味地增加密钥长度相比,寻求更合适的陷门单向函数是解决这个问题更佳途径。
Neal Koblitz 3)和Victor Miller 4)分别独立地在1985年将椭圆曲线引入密码学领域。
2 椭圆曲线密码学椭圆曲线密码学(Elliptic curve cryptography,ECC)的数学基础远没有RSA 算法那么易于理解。
首先,椭圆曲线和椭圆是两码事,两者之间联系不大。
最常见的椭圆曲线方程,如公式(1)典型的二元三次方程。
但是这个方程的几何表现形式并不是椭圆,或者说,跟椭圆基本没什么关系。
其图形如图1中的示例。
1)在Diffie& Hellman [4]发表于1976年论文中指出,在对称密码中,不仅存在“密钥分发困难”的问题,还存在一个问题是“密文中集成了密钥”。
SM2椭圆曲线公钥密码算法第5部分:参数定义Public key cryptographic algorithm SM2 based on elliptic curves--Part 5: Parameter definitions目次1 符号缩略语 (1)2 参数定义 (1)附 录 A 数字签名与验证示例 (2)A.1 综述 (2)A.2SM2椭圆曲线数字签名 (2)附 录 B 密钥交换及验证示例 (4)B.1 一般要求 (4)B.2SM2椭圆曲线密钥交换协议 (4)附 录 C 消息加解密示例 (8)C.1 一般要求 (8)C.2SM2椭圆曲线消息加解密 (8)SM2椭圆曲线公钥密码算法第5部分:参数定义1 符号缩略语p大于3的素数。
a, b F q中的元素,它们定义F q上的一条椭圆曲线E。
n基点G的阶(n是#E(F q)的素因子)。
x G 生成元的x坐标y G 生成元的y坐标2 参数定义SM2使用素数域256位椭圆曲线。
椭圆曲线方程:y2 = x3 + ax + b曲线参数:p = FFFFFFFE FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF 00000000 FFFFFFFF FFFFFFFFa = FFFFFFFE FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF 00000000 FFFFFFFF FFFFFFFCb = 28E9FA9E 9D9F5E34 4D5A9E4B CF6509A7 F39789F5 15AB8F92 DDBCBD41 4D940E93n = FFFFFFFE FFFFFFFF FFFFFFFF FFFFFFFF 7203DF6B 21C6052B 53BBF409 39D54123 x G= 32C4AE2C 1F198119 5F990446 6A39C994 8FE30BBF F2660BE1 715A4589 334C74C7 y G= BC3736A2 F4F6779C 59BDCEE3 6B692153 D0A9877C C62A4740 02DF32E5 2139F0A0附 录 A数字签名与验证示例A.1 综述本附录选用《SM3密码杂凑算法》给出的密码杂凑算法,其输入是长度小于264的消息比特串,输出是长度为256比特的杂凑值,记为H256( )。
本附录使用SM2椭圆曲线公钥密码算法第2部分规定的数字签名算法计算得到各步骤中的相应数值。
本附录中,所有用16进制表示的数,左边为高位,右边为低位。
本附录中,消息采用GB/T1988编码。
设ID A的GB/T1988为: 31323334 35363738 31323334 35363738。
ENTL A=0080。
A.2 SM2椭圆曲线数字签名椭圆曲线方程为:y2 = x3 + ax + b示例1:F p-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 =(x G , y G),其阶记为n。
坐标x G:32C4AE2C 1F198119 5F990446 6A39C994 8FE30BBF F2660BE1 715A4589 334C74C7坐标y G:BC3736A2 F4F6779C 59BDCEE3 6B692153 D0A9877C C62A4740 02DF32E5 2139F0A0阶n:FFFFFFFE FFFFFFFF FFFFFFFF FFFFFFFF 7203DF6B 21C6052B 53BBF409 39D54123待签名的消息M:message digestM的GB/T1988编码的16进制表示:6D65737361676520646967657374私钥d A:3945208F 7B2144B1 3F36E38A C6D39F95 88939369 2860B51A 42FB81EF 4DF7C5B8公钥P A=(x A ,y A):坐标x A:09F9DF31 1E5421A1 50DD7D16 1E4BC5C6 72179FAD 1833FC07 6BB08FF3 56F35020坐标y A:CCEA490C E26775A5 2DC6EA71 8CC1AA60 0AED05FB F35E084A 6632F607 2DA9AD13杂凑值Z A= H256(ENTL A||ID A||a||b||x G||y G||x A||y A)。
Z A:B2E14C5C 79C6DF5B 85F4FE7E D8DB7A26 2B9DA7E0 7CCB0EA9 F4747B8C CDA8A4F3签名各步骤中的有关值:M=Z A||M:B2E14C5C 79C6DF5B 85F4FE7E D8DB7A26 2B9DA7E0 7CCB0EA9 F4747B8C CDA8A4F36D657373 61676520 64696765 7374密码杂凑算法值e=H256(M):F0B43E94 BA45ACCA ACE692ED 534382EB 17E6AB5A 19CE7B31F4486FDF C0D28640产生随机数k:59276E27 D506861A 16680F3A D9C02DCC EF3CC1FA 3CDBE4CE 6D54B80D EAC1BC21计算椭圆曲线点(x1, y1)=[k]G:坐标x1:04EBFC71 8E8D1798 62043226 8E77FEB6 415E2EDE 0E073C0F 4F640ECD 2E149A73坐标y 1:E858F9D8 1E5430A5 7B36DAAB 8F950A3C 64E6EE6A 63094D99 283AFF76 7E124DF0计算r = (e +x 1) mod n :F5A03B06 48D2C463 0EEAC513 E1BB81A1 5944DA38 27D5B741 43AC7EAC EEE720B3 (1+d A )-1:4DFE9D9C 1F5901D4 E6F58E4E C3D04567 822D2550 F9B88E82 6D1B5B3A B9CD0FE0计算s = ((1+d A )-1⋅ (k - r ⋅d A )) mod n :B1B6AA29 DF212FD8 763182BC 0D421CA1 BB9038FD 1F7F42D4840B69C4 85BBC1AA消息M 的签名为 (r , s ):值r :F5A03B06 48D2C463 0EEAC513 E1BB81A1 5944DA38 27D5B741 43AC7EAC EEE720B3值s :B1B6AA29 DF212FD8 763182BC 0D421CA1 BB9038FD 1F7F42D4 840B69C4 85BBC1AA 验证各步骤中的有关值:密码杂凑算法值e ’=H 256(M ’): F0B43E94 BA45ACCA ACE692ED 534382EB 17E6AB5A 19CE7B31 F4486FDFC0D28640计算t = (r ’+ s ’) mod n :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 0’0 , y 0’0 ) = [t ]P A :坐标x 0’0:FDAC1EFA A770E463 5885CA1B BFB360A5 84B238FB 2902ECF0 9DDC935F 60BF4F9B坐标y 0’0 :B89AA926 3D5632F6 EE82222E 4D63198E 78E095C2 4042CBE7 15C23F71 1422D74C计算椭圆曲线点(x 1’, y 1’) = [s ’]G +[t ]P A :坐标x 1’: 04EBFC71 8E8D1798 62043226 8E77FEB6 415E2EDE 0E073C0F 4F640ECD 2E149A73坐标y 1’: E858F9D8 1E5430A5 7B36DAAB 8F950A3C 64E6EE6A 63094D99 283AFF76 7E124DF0计算R = (e ’+ x 1’ ) mod n :F5A03B06 48D2C463 0EEAC513 E1BB81A1 5944DA38 27D5B741 43AC7EAC EEE720B3附 录 B密钥交换及验证示例B.1 一般要求本附录选用《SM3密码杂凑算法》给出的密码杂凑算法,其输入是长度小于264的消息比特串,输出是长度为256比特的杂凑值,记为H256( )。
本附录使用SM2椭圆曲线公钥密码算法第3部分规定的密钥交换协议计算得到各步骤中的相应数值。
本附录中,所有用16进制表示的数,左边为高位,右边为低位。
设ID A的GB/T1988编码为: 31323334 35363738 31323334 35363738。
ENTL A=0080。
设ID B的GB/T1988编码为: 31323334 35363738 31323334 35363738。
ENTL B=0080。
B.2 SM2椭圆曲线密钥交换协议椭圆曲线方程为:y2 = x3 + ax + b示例1:F p-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 =(x G , y G),其阶记为n。