如今國(guó)密系列算法的應(yīng)用已不僅僅局限于金融和電信等領(lǐng)域,諸如車(chē)載設(shè)備,消費(fèi)類(lèi)電子設(shè)備等越來(lái)越多的產(chǎn)品開(kāi)始要求有國(guó)密算法的支持。但是國(guó)密算法的開(kāi)源資料和應(yīng)用案例少之又少,如何快速高效的在自己的設(shè)備中加入國(guó)密算法已經(jīng)成為眾多開(kāi)發(fā)者必須要面對(duì)的難題。現(xiàn)在為大家準(zhǔn)備了一個(gè)系列文章,介紹嵌入式設(shè)備中移植國(guó)密算法的方法。
簡(jiǎn)單來(lái)說(shuō),分為三種方法:
1、移植Miracl庫(kù)
2、移植Openssl庫(kù)
3、使用加密芯片
下面進(jìn)行簡(jiǎn)介:
1、移植Miracl庫(kù)
MIRACL(Multiprecision Integer and Rational Arithmetic C/c++ Library)是一套大數(shù)運(yùn)算函數(shù)庫(kù),用來(lái)設(shè)計(jì)與大數(shù)運(yùn)算相關(guān)的密碼學(xué)之應(yīng)用,包含了RSA公開(kāi)密碼學(xué)、AES、DSA,ECC,同時(shí)支持Diffie-Hellman密鑰交換和數(shù)字簽名功能。我們可以將這個(gè)庫(kù)移植到我們的工程中,并在此基礎(chǔ)上實(shí)現(xiàn)SM2,SM3,SM4的功能。
2、移植Openssl庫(kù)
Openssl同樣是支持加密算法的庫(kù),相比于Miracl,Openssl應(yīng)用更加廣泛,同時(shí)還支持常用的密鑰和證書(shū)封裝管理功能,支持SSL協(xié)議。
使用Openssl庫(kù)來(lái)使我們的嵌入式設(shè)備支持國(guó)密算法的功能,其開(kāi)發(fā)步驟和使用Miracl庫(kù)的步驟類(lèi)似,我們只需要將Openssl庫(kù)中密碼算法庫(kù)的部分移植到我們的程序中,利用其函數(shù)接口,開(kāi)發(fā)出國(guó)密算法的功能即可。
3、算法支持芯片
我們都知道國(guó)密算法是國(guó)家密碼局制定標(biāo)準(zhǔn)的一系列算法,即SM1,SM2,SM3,SM4等。其中SM1是對(duì)稱(chēng)加密算法是采用硬件實(shí)現(xiàn)的,假如我們的應(yīng)用需求中必須使用SM1,那么通過(guò)上面兩種移植支持庫(kù)的形式就實(shí)現(xiàn)不了了,這種情況下我們就要使用專(zhuān)門(mén)進(jìn)行加密運(yùn)算的加密芯片了。使用加密芯片的開(kāi)發(fā)流程要比上述兩種方式容易很多,我們只需要在硬件設(shè)計(jì)上添加加密芯片,即完成了開(kāi)發(fā),使用時(shí)也只需要發(fā)送固定格式的指令來(lái)調(diào)用加密芯片的功能即可。
以上三種方法各有優(yōu)缺點(diǎn),下一期詳細(xì)介紹三種實(shí)現(xiàn)方法。