<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          關(guān) 閉

          新聞中心

          EEPW首頁 > 安全與國防 > 設(shè)計應(yīng)用 > 基于國密算法的設(shè)備安全認證系統(tǒng)設(shè)計

          基于國密算法的設(shè)備安全認證系統(tǒng)設(shè)計

          作者:許小波 (上海交通大學(xué)電子系,上海 200240) 時間:2021-04-15 來源:電子產(chǎn)品世界 收藏
          編者按:本文針對電子產(chǎn)品主機與設(shè)備之間的安全認證,提出國密算法用于安全認證,設(shè)計出通過兩次簽名驗證完成主機對設(shè)備和設(shè)備對主機的認證方法,并以手機主機對電池的認證進行示例演示。


          本文引用地址:http://www.ex-cimer.com/article/202104/424485.htm

          0   引言

          我們?nèi)粘I钪惺褂玫碾娮赢a(chǎn)品常常是主機帶有設(shè)備,如打印機與墨盒,蘋果手機與數(shù)據(jù)線。這些主機與設(shè)備之間一般都有一個過程,即認證該設(shè)備是否合法,只有合法的設(shè)備接入主機才允許使用,以此保證產(chǎn)品安全可靠地運行。在方法上,文獻[1]中討論了使用國際安全算法SHA-256 和ECDSA 的實現(xiàn)方式,并且只包含了主機對設(shè)備的,并沒有設(shè)備對主機的安全認證,屬于單向認證。本文首先討論了基于算法的設(shè)備安全認證方式,然后設(shè)計出基于算法的設(shè)備單、雙向安全認證系統(tǒng)。

          作者簡介:許小波(1982—),男,碩士生,主要研究方向為嵌入式系統(tǒng)安全,Email: xuxiaobo1997@163.com。

          1   算法安全認證方式

          國密算法中包含對稱密鑰算法SM1、SM4 等和非對稱密鑰算法[2],對稱算法即消息發(fā)送和接收雙方使用相同的密鑰進行運算,其好處是運算速度快,缺點是需要嚴(yán)格保管好該密鑰。非對稱密鑰算法即消息發(fā)送和接收雙方使用不同的密鑰進行運算,消息發(fā)送方使用私鑰簽名,消息接收方使用公鑰驗證簽名,其特點與對稱密鑰算法正好相反,運算速度稍慢,但只需要保管好私鑰就行了,公鑰是可以公開的?;谏鲜鎏攸c,在我們的討論的主機與設(shè)備的安全認證中,若是采用對稱算法,即主機與設(shè)備都使用相同的的密鑰,這就要求設(shè)備端的密鑰不能被竊取,大大增加設(shè)備端的安全保護難度。

          因此,我們采用國密非對稱算法

          2   國密算法安全認證系統(tǒng)設(shè)計

          首先,預(yù)置認證公鑰。我們產(chǎn)生一對認證的密鑰對Authentication_Private_Key 和Authentication_Public_Key。在設(shè)備生產(chǎn)工廠的安全環(huán)境下,將認證公鑰Authentication_Public_Key 預(yù)置到設(shè)備里,其次,用認證私鑰對設(shè)備唯一性數(shù)據(jù)進行簽名。設(shè)備里產(chǎn)生一對設(shè)備的SM2 密鑰對Device_Private_Key 和Device_Public_Key。導(dǎo)出設(shè)備的Device_Public_Key 和設(shè)備序列號等設(shè)備唯一性數(shù)據(jù),由認證私鑰Authentication_Private_Key 對其簽名,將簽名信息再置入到設(shè)備里,預(yù)置后的設(shè)備所含數(shù)據(jù)如圖1 所示。以上兩步都是設(shè)備生產(chǎn)工廠的安全環(huán)境下進行,同時要求設(shè)備出廠后對置入的認證公鑰和簽名信息、設(shè)備的SM2 密鑰對、設(shè)備序列號等唯一性數(shù)據(jù)不可更改。最后,設(shè)備出廠后認證方法如下。

          主機端預(yù)置認證公鑰證書Authentication_Public_Key,讀取設(shè)備里的認證公鑰信息進行比較,不一致則認證失??;若一致則繼續(xù)讀取設(shè)備里的設(shè)備公鑰Device_Public_Key、序列號等唯一性數(shù)據(jù)和簽名信息,進行SM2 簽名驗證。若簽名驗證失敗則設(shè)備認證失?。蝗艉灻炞C通過,則進一步地向設(shè)備發(fā)送一個設(shè)備認證隨機數(shù),設(shè)備端用設(shè)備私鑰Device_Private_Key 對該隨機數(shù)進行SM2 簽名,返回該隨機數(shù)的簽名信息給主機,主機端用前面讀取的設(shè)備公鑰Device_Public_Key 對其進行SM2 簽名驗證。若簽名驗證失敗則設(shè)備認證失?。蝗艉灻炞C通過,則主機對設(shè)備認證成功。整個處理流程如圖2 所示。

          image.png

          對于更高安全級別的系統(tǒng),設(shè)備端也可以對主機進行認證,即雙向認證系統(tǒng),其方法為:主機端除了預(yù)置認證公鑰證書Authentication_Public_Key,還預(yù)置有一對主機端的SM2 密鑰對Host_Private_Key 和Host_Public_Key,并且預(yù)置認證私鑰Authentication_Private_Key 對Host_Public_Key 的簽名信息。然后,主機將Host_Public_Key 和該簽名信息發(fā)送給設(shè)備進行SM2簽名驗證。若驗證通過,主機再向設(shè)備請求一個主機認證隨機數(shù),然后主機端用主機端的SM2 私Host_Private_Key 對該隨機數(shù)進行SM2 簽名,再將其發(fā)送給設(shè)備進行SM2 簽名驗證。若驗證通過,則完成了設(shè)備對主機認證。整個處理流程如圖3 所示。

          image.png

          3   國密算法認證系統(tǒng)示例

          我們以手機主機對電池認證為例,在手機開機或充電時手機主機對電池設(shè)備進行安全認證,只有認證成功之后手機才能開機運行或?qū)ζ涑潆?。為此,我們需要在電池設(shè)備里增加一顆國密安全芯片,用于和手機主機進行數(shù)據(jù)交互,預(yù)置公鑰的安全存儲和國密算法的簽名驗簽等操作。這里我們選用上海愛信諾航芯電子科技有限公司的國密安全芯片ACL16,它采用32 位ARM Cortex-M0 內(nèi)核,最高主頻48 MHz,集成國密、國際算法等多種安全算法模塊,電壓、頻率、溫度等安全檢測功能和主動金屬屏蔽層保護、總線加密串?dāng)_等多種保護功能,擁有USB、SPI、UART、I2C 等豐富的外設(shè)接口,內(nèi)置RC振蕩器,專門面向低成本、低功耗的應(yīng)用領(lǐng)域[3]

          硬件方面,我們采用兩線的I2C 做為手機主機與ACL16 的通訊接口,手機主機做為I2C 主設(shè)備,ACL16做為I2C 從設(shè)備,再加上電源和地線接口,ACL16 這邊就完成了。由于兩邊I/O 口電壓不同,還需要在手機主機端增加一顆電壓轉(zhuǎn)換芯片,以實現(xiàn)1.8~3.3 V 的電壓轉(zhuǎn)換。整個硬件框圖如圖4 所示。

          image.png

          軟件方面包括ACL16的安全固件和手機主機軟件,我們先來看ACL16 這邊的安全固件。ACL16 在上電后,首先進行系統(tǒng)初始化,開啟各安全檢測模塊,初始化I2C 接口,然后等待接收手機主機發(fā)送的命令。待接收完一包命令數(shù)據(jù)后,對命令數(shù)據(jù)進行完整性校驗,只有校驗通過后才對命令進行處理。最后,待命令處理完成,將命令響應(yīng)數(shù)據(jù)發(fā)送給手機主機。

          手機主機方面的軟件分包括,處理與ACL16 通訊的Linux 驅(qū)動和Android Java 應(yīng)用層代碼。在Linux 驅(qū)動里,主要完成向I2C 總線驅(qū)動上注冊驅(qū)動,注冊字符設(shè)備和在/dev 目錄創(chuàng)建設(shè)備文件authenticator,以使應(yīng)用層對設(shè)備文件authenticator 的讀寫操作時進而對ACL16 進行發(fā)送命令和接收命令響應(yīng)。Android 應(yīng)用層代碼包括JNI 的so 庫和Java 應(yīng)用,其中so 庫主要完成對authenticator 設(shè)備的打開、讀寫操作,為Java 層提供操作接口。Android Java 應(yīng)用則主要通過調(diào)用so 庫的接口,實現(xiàn)手機主機對電池的認證操作流程和電池對主機的認證操作流程。對于JAVA 上的SM2 簽名、驗簽操作,其相關(guān)接口采用的是Bouncy Castle 加密庫bcprovjdk15to18-168.jar 中的SM2 接口。Bouncy Castle 加

          密庫是澳大利亞非營利組織Bouncy Castle 編寫的輕量級加密API[4],非常適合在手機上使用,最新版本為Version 1.68,包含了對最新CVE 漏洞的修復(fù),以及對TLS 1.3 版本的支持。我們在手機演示界面上添加三個按鈕,分別執(zhí)行主機認證設(shè)備、設(shè)備認證主機和清除顯示日志操作。其中點擊完“主機認證設(shè)備”按鈕后的界面如圖5 所示,點擊完“設(shè)備認證主機”按鈕后的界面如圖6 所示。

          image.png

          圖5 點擊主機認證設(shè)備按鈕后的界面

          image.png

          圖6 點擊設(shè)備認證主機按鈕后的界面

          4   結(jié)語

          具有國內(nèi)自主知識產(chǎn)權(quán)的國密算法已經(jīng)在金融領(lǐng)域開展使用,并逐步替代國際安全算法。本文提出了基于國密算法用于設(shè)備的安全認證系統(tǒng),可取代現(xiàn)有的國際算法安全認證,并可在更廣泛的物聯(lián)網(wǎng)領(lǐng)域進行實際推廣應(yīng)用。

          參考文獻:

          [1] D’ONOFRI M.通過設(shè)備認證杜絕造假[J].電子技術(shù)及信息科學(xué),2015(01):32-34.

          [2] 國家密碼管理局.SM2橢圓曲線公鑰密碼算法[R/OL].[ 2010-12-17].https://www.oscca.gov.cn/sca/xxgk/2010-12/17/content_1002386.shtml.

          [3] ACL16_Datasheet_V2.0.pdf[Z].

          [4] Bouncy Castle Cryptography Library[R/OL].https://www.bouncycastle.org/java.html.

          (本文來源于《電子產(chǎn)品世界》雜志2021年3月期)



          關(guān)鍵詞: 202103 國密 SM2 安全認證 202103

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();