嵌入式設備中支持國密算法的方法(三)

本篇文章是介紹國密算法在嵌入式設備中應用方法系列文章的第三篇,介紹移植openssl庫到嵌入式設備中的具體方法,當然最終的目的還是使我們的設備能支持國密算法。同上一篇文章中介紹的miracl密碼庫相比,openssl庫的應用更加廣泛,資料支持度更好,但是代碼體量要大於miracl庫。需要再次說明的是,同miracl庫一樣,openssl的庫也並不能直接提供國密算法的接口,我們是利用庫中相應的API接口(如橢圓曲線等)來構建自己的國密算法,下面我們具體介紹移植的步驟。
第一步 獲取庫
作爲應用廣泛的開源密碼庫,可以輕鬆獲取源碼,https://www.openssl.org/source/ ,若是對openssl庫的使用不太熟悉,可以藉助使用手冊來了解用法:
嵌入式設備中支持國密算法的方法(三)
第二步 利用openssl構建SM算法庫
我們構建一個新的工程用以實現國密算法,由於linux下通過makefile編譯項目的方式不太直觀,我們使用windoes環境下VSstudio編譯環境來演示。
首先將openssl庫的源碼添加到工程文件夾的路徑下,其次要在代碼中增加文件包含,如下圖:
嵌入式設備中支持國密算法的方法(三)
嵌入式設備中支持國密算法的方法(三)
編譯正確之後,開始着手構建SM算法的源碼了,這一部分的代碼是基於國密算法的原理,利用openssl庫的接口構建的,這需要開發者瞭解國密算法原理。限於篇幅,本例中僅截取了作者實現的API,如下圖:
嵌入式設備中支持國密算法的方法(三)
整體代碼完成之後,我們可以選擇生動態庫或靜態庫供調用。此外,若是開發者準備在linux環境下使用gcc或某一嵌入式設備指定的編譯工具來完成上述操作,則需要完成更多的工作,比較重要的是,開發者需要手動完成整個編譯過程,這需要清楚openssl代碼庫本身的文件依賴關係,這部分內容作者不做更多介紹。
第三步 將生成的庫添加到個人的設備代碼中
在上一步中,作者成功完成了國密SM2(對稱算法)的動態庫製作,如下圖:
嵌入式設備中支持國密算法的方法(三)
爲了便於介紹,作者整體的庫製作過程和測試過程都是在windows環境下完成的,此處生成的.dll動態庫也僅能在windows pc下運行。若是開發者在linux環境下完成上述操作,則應該生成.so爲後綴的動態庫文件,才能成功的添加到嵌入式設備中運行。
這一步代碼的實現要根據各自嵌入式硬件設備的特點來實現,在這裏不做過多介紹!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章