3. SM2算法
SM2是我们国家密码管理局于2010年12月17日发布(第21号)的国家密码标准,是基于ECC(椭圆曲线密码算法)的公钥密码算法。随着密码技术和计算技术的发展,目前常用的1024位RSA算法面临严重的安全威胁,我们国家密码管理部门经过研究,决定采用SM2椭圆曲线算法替换RSA算法。SM2算法在安全性、性能上都具有优势。
SM2算法是国家发明,其计算上比国际上公布的ECC算法复杂。SM2算法采用的椭圆嗑线方程为:y2=x3+ax+b。在SM2算法标准中,通过指定a、1)系数,确定了唯一的标准曲线。同时,为了将曲线映射为加密算法,SM2标准中还确定了其它参数,供算法程序使用。
这里不深人探讨椭圆曲线的数学理论,仅通过图示展示算法原理。选a=-l,b=0,则椭圆曲线方程为:。曲线参见下图:
(I)P点为基点;
(2)通过P点做切线,交与点2P点,在2P’点做垂线,交与2P点,2P点即为P点的2倍点;
(3)进一步,P点和2P点之间做直线,交与3P’点,在3P’点做竖线,交与3P点,3P 点即为P点的3倍点;
(4)同理,可以计算出P点的4、5、6、…倍点;
(5)如果给定图上Q点是P的一个倍点,请问Q是P的几倍点呢?
(6)直观上理解,正向计算一个倍点是容易的,反向计算一个点是P的几倍点则困难的多。
在椭圆曲线算法中,将倍数d做为私钥,将Q做为公钥。当然,椭圆曲线算法还有更严格的计算过程,相对图示要复杂的多。