用SM2算法芯片實(shí)現(xiàn)嵌入式系統(tǒng)的安全設(shè)計(jì)
HS32U2-U芯片支持主模式和從模式,支持4種通信模式,數(shù)據(jù)通行速率可達(dá)16 Mbps@80 MHz,支持低功耗模式。
主要的SPI接口介紹如下:
◆SS:SPI從模式選擇;
◆SCLK:SPI串行時(shí)鐘;
◆MOSI:SPI主模式輸出,從模式輸入;
◆MISO:SPI主模式輸出,從模式輸入。
三星CPU提供串行時(shí)鐘頻率,按照規(guī)定的格式進(jìn)行數(shù)據(jù)交互,根據(jù)傳入的不同格式所代表的不同的命令碼,獲取不同的數(shù)據(jù)。
3 系統(tǒng)軟件設(shè)計(jì)
軟件系統(tǒng)設(shè)汁的結(jié)構(gòu)框圖如圖3所示。系統(tǒng)軟件設(shè)計(jì)主要包括SM2算法的應(yīng)用層API和SM2內(nèi)核層的驅(qū)動(dòng)。應(yīng)用層API實(shí)現(xiàn)系統(tǒng)應(yīng)用調(diào)用SM2算法,例如SM2公私密鑰對(duì)的產(chǎn)生、SM2簽名功能、SM2驗(yàn)證功能、SM2加密功能、SM2解密功能、SM2密鑰交換功能以及SM2雜湊功能等。SM2內(nèi)核層的驅(qū)動(dòng)是SM2驅(qū)動(dòng)通過SPI總線實(shí)現(xiàn)三星CPU與HS32U2-U芯片低層數(shù)據(jù)交互。
3.1 Bootloader設(shè)計(jì)
嵌入式系統(tǒng)中,Bootloader是必需的。它是在操作系統(tǒng)內(nèi)核運(yùn)行之前的一小段程序,就像BIOS一樣。這段程序可以初始化硬件設(shè)備,建立內(nèi)存空間映射圖,從而將軟件的軟硬件環(huán)境設(shè)置到一個(gè)合適的狀態(tài),為最終調(diào)用操作系統(tǒng)內(nèi)核準(zhǔn)備好環(huán)境。
3.2 內(nèi)核編譯選項(xiàng)
根據(jù)需要配置內(nèi)核選項(xiàng),主要包含:
◆啟動(dòng)傳遞參數(shù)
◆dcvfs文件系統(tǒng)支持
◆芯片及系統(tǒng)類型配置
◆芯片及系統(tǒng)類型配置
◆(DMA Engine support)DMA傳輸引擎支持
除此之外,在編譯內(nèi)核時(shí)還要將SPI總線和模塊加載的功能選項(xiàng)選中。因?yàn)橄到y(tǒng)最終通過加載模塊方式調(diào)用SM2算法芯片,同時(shí)通過SPI總線來交互數(shù)據(jù)。
3.3 SM2設(shè)備系統(tǒng)驅(qū)動(dòng)設(shè)計(jì)
Linux的內(nèi)核由設(shè)備管理、進(jìn)程管理、內(nèi)存管理和文件系統(tǒng)組成。Linux設(shè)備驅(qū)動(dòng)可以分為字符類設(shè)備、塊類沒備、網(wǎng)絡(luò)接口類設(shè)備和其他非標(biāo)準(zhǔn)驅(qū)動(dòng)。SPI設(shè)備被看做是字符型沒備。
每個(gè)SPI外設(shè)都由1個(gè)總線號(hào)、1個(gè)設(shè)備號(hào)和1個(gè)功能號(hào)來標(biāo)識(shí),共有3個(gè)訪問空間,即內(nèi)存空間、I/O端口和配置奇存器。每個(gè)設(shè)備功能郜有一個(gè)配置空間,用于決定SPI的工作方式和映射到系統(tǒng)中的地址。設(shè)備驅(qū)動(dòng)通過模塊方式加載到內(nèi)核中。相關(guān)函數(shù)代碼如下:
評(píng)論