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