密碼學(xué)中SM2算法
3. SM2算法
SM2是我們國家密碼管理局于2010年12月17日發(fā)布(第21號(hào))的國家密碼標(biāo)準(zhǔn),是基于ECC(橢圓曲線密碼算法)的公鑰密碼算法。隨著密碼技術(shù)和計(jì)算技術(shù)的發(fā)展,目前常用的1024位RSA算法面臨嚴(yán)重的安全威脅,我們國家密碼管理部門經(jīng)過研究,決定采用SM2橢圓曲線算法替換RSA算法。SM2算法在安全性、性能上都具有優(yōu)勢(shì)。
SM2算法是國家發(fā)明,其計(jì)算上比國際上公布的ECC算法復(fù)雜。SM2算法采用的橢圓嗑線方程為:y2=x3+ax+b。在SM2算法標(biāo)準(zhǔn)中,通過指定a、1)系數(shù),確定了唯一的標(biāo)準(zhǔn)曲線。同時(shí),為了將曲線映射為加密算法,SM2標(biāo)準(zhǔn)中還確定了其它參數(shù),供算法程序使用。
這里不深人探討橢圓曲線的數(shù)學(xué)理論,僅通過圖示展示算法原理。選a=-l,b=0,則橢圓曲線方程為:。曲線參見下圖:
(I)P點(diǎn)為基點(diǎn);
(2)通過P點(diǎn)做切線,交與點(diǎn)2P點(diǎn),在2P’點(diǎn)做垂線,交與2P點(diǎn),2P點(diǎn)即為P點(diǎn)的2倍點(diǎn);
(3)進(jìn)一步,P點(diǎn)和2P點(diǎn)之間做直線,交與3P’點(diǎn),在3P’點(diǎn)做豎線,交與3P點(diǎn),3P 點(diǎn)即為P點(diǎn)的3倍點(diǎn);
(4)同理,可以計(jì)算出P點(diǎn)的4、5、6、…倍點(diǎn);
(5)如果給定圖上Q點(diǎn)是P的一個(gè)倍點(diǎn),請(qǐng)問Q是P的幾倍點(diǎn)呢?
(6)直觀上理解,正向計(jì)算一個(gè)倍點(diǎn)是容易的,反向計(jì)算一個(gè)點(diǎn)是P的幾倍點(diǎn)則困難的多。
在橢圓曲線算法中,將倍數(shù)d做為私鑰,將Q做為公鑰。當(dāng)然,橢圓曲線算法還有更嚴(yán)格的計(jì)算過程,相對(duì)圖示要復(fù)雜的多。