熱度 10
本篇文章是介紹國密算法在嵌入式設備中應用方法系列文章的第三篇,介紹移植openssl庫到嵌入式設備中的具體方法,當然最終的目的還是使我們的設備能支持國密算法。同上一篇文章中介紹的miracl密碼庫相比,openssl庫的應用更加廣泛,資料支持度更好,但是代碼體量要大于miracl庫。需要再次說明的是,同miracl庫一樣,openssl的庫也并不能直接提供國密算法的接口,我們是利用庫中相應的API接口(如橢圓曲線等)來構建自己的國密算法,下面我們具體介紹移植的步驟。
第一步 獲取庫
作為應用廣泛的開源密碼庫,可以輕松獲取源碼,https://www.openssl.org/source/ ,若是對openssl庫的使用不太熟悉,可以借助使用手冊來了解用法:
第二步 利用openssl構建SM算法庫
我們構建一個新的工程用以實現(xiàn)國密算法,由于linux下通過makefile編譯項目的方式不太直觀,我們使用windoes環(huán)境下VSstudio編譯環(huán)境來演示。
首先將openssl庫的源碼添加到工程文件夾的路徑下,其次要在代碼中增加文件包含,如下圖:
編譯正確之后,開始著手構建SM算法的源碼了,這一部分的代碼是基于國密算法的原理,利用openssl庫的接口構建的,這需要開發(fā)者了解國密算法原理。限于篇幅,本例中僅截取了作者實現(xiàn)的API,如下圖:
整體代碼完成之后,我們可以選擇生動態(tài)庫或靜態(tài)庫供調(diào)用。此外,若是開發(fā)者準備在linux環(huán)境下使用gcc或某一嵌入式設備指定的編譯工具來完成上述操作,則需要完成更多的工作,比較重要的是,開發(fā)者需要手動完成整個編譯過程,這需要清楚openssl代碼庫本身的文件依賴關系,這部分內(nèi)容作者不做更多介紹。
第三步 將生成的庫添加到個人的設備代碼中
在上一步中,作者成功完成了國密SM2(對稱算法)的動態(tài)庫制作,如下圖:
為了便于介紹,作者整體的庫制作過程和測試過程都是在windows環(huán)境下完成的,此處生成的.dll動態(tài)庫也僅能在windows pc下運行。若是開發(fā)者在linux環(huán)境下完成上述操作,則應該生成.so為后綴的動態(tài)庫文件,才能成功的添加到嵌入式設備中運行。
這一步代碼的實現(xiàn)要根據(jù)各自嵌入式硬件設備的特點來實現(xiàn),在這里不做過多介紹!
Mr.Wang: 國密算法的優(yōu)勢是什么?是不是說安全等級高?