• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于RISC-V 指令擴(kuò)展的低開銷SM4 算法設(shè)計(jì)與實(shí)現(xiàn)*

      2021-03-23 09:23:14劉向東
      電子器件 2021年1期
      關(guān)鍵詞:加解密寄存器密鑰

      陳 銳,李 冰,劉向東

      (1.南京工業(yè)職業(yè)技術(shù)大學(xué)計(jì)算機(jī)與軟件學(xué)院,江蘇 南京210012;2.東南大學(xué)微電子學(xué)院,江蘇 南京210035)

      近年來(lái),物聯(lián)網(wǎng)(Internet of Things,IoT)已被廣泛應(yīng)用于各個(gè)領(lǐng)域,特別是在工業(yè)領(lǐng)域[1]。 越來(lái)越多的物聯(lián)網(wǎng)設(shè)備被安裝在車間、廠房、機(jī)械裝置和工業(yè)裝備上[2]。 工業(yè)物聯(lián)網(wǎng)不僅提高了生產(chǎn)效率,而且降低了生產(chǎn)成本[3]。 隨著聯(lián)網(wǎng)設(shè)備的增多,物聯(lián)網(wǎng)面臨的安全問題也越來(lái)越嚴(yán)峻[4]。 造成這一問題的主要原因是三個(gè)。 首先,出于成本方面的考慮,物聯(lián)網(wǎng)設(shè)備資源受限,無(wú)法提供先進(jìn)的安全技術(shù)保障[5]。 其次,物聯(lián)網(wǎng)設(shè)備數(shù)量的增多,導(dǎo)致探索潛在安全漏洞的機(jī)會(huì)增多。 最后,物聯(lián)網(wǎng)設(shè)備產(chǎn)生、處理和交換大量對(duì)公共安全至關(guān)重要的數(shù)據(jù)以及對(duì)隱私敏感的信息[6],這些數(shù)據(jù)和信息對(duì)攻擊者具有一定的吸引性。 一般而言,物聯(lián)網(wǎng)設(shè)備采集的數(shù)據(jù)會(huì)通過網(wǎng)絡(luò)傳遞到云端服務(wù)器進(jìn)行分析和處理[7]。這些數(shù)據(jù)在傳輸過程中,可能被中間人篡改、刪除,從而破壞了數(shù)據(jù)的完整性、可靠性和機(jī)密性。 考慮到這些數(shù)據(jù)可能對(duì)公共安全至關(guān)重要或者對(duì)隱私敏感,應(yīng)該在傳輸數(shù)據(jù)之前,對(duì)這些數(shù)據(jù)進(jìn)行加密處理。

      對(duì)稱密碼算法可用于數(shù)據(jù)加密。 常見的對(duì)稱密碼算法有美國(guó)的AES 標(biāo)準(zhǔn)、中國(guó)的SM4 標(biāo)準(zhǔn)等。SM4(也稱為SMS4)已成為中國(guó)國(guó)家標(biāo)準(zhǔn),與AES相比,SM4 具有以下特點(diǎn),使其更適合于資源受限的環(huán)境:(1)SM4 的安全特性等效于AES-128[8];(2)加密和解密的結(jié)構(gòu)相同;(2)用于加密和解密的Sbox 相同;(4)輪函數(shù)僅需要4 個(gè)Sbox(每個(gè)具有256×8 位),而在AES 中則需要16 個(gè)。 SM4 算法的實(shí)現(xiàn)可以通過軟件、硬件或者軟硬協(xié)同的方式。 軟件實(shí)現(xiàn)的性能較低,特別是對(duì)于性能和延時(shí)比較敏感的工業(yè)場(chǎng)景,軟件執(zhí)行引入的延時(shí)是難以滿足工業(yè)場(chǎng)景對(duì)于性能和延時(shí)的需求。 因此,相關(guān)研究工作主要關(guān)注于硬件電路實(shí)現(xiàn)。 雖然SM4 算法本身已具備適合于資源受限環(huán)境的眾多優(yōu)勢(shì),但是考慮到物聯(lián)網(wǎng)設(shè)備成本方面的因素,需要盡可能地降低SM4 算法硬件實(shí)現(xiàn)時(shí)帶來(lái)的資源開銷。 目前已經(jīng)有不少參考文獻(xiàn)致力于降低SM4 算法的硬件電路資源開銷,比如基于復(fù)合域算術(shù)實(shí)現(xiàn)Sbox[8-9],降低了Sbox 導(dǎo)致的資源開銷;基于異步多米諾邏輯實(shí)現(xiàn)SM4[10],降低功耗的同時(shí)也降低了面積開銷。 然而,從物聯(lián)網(wǎng)設(shè)備成本方面考慮,SM4 算法硬件電路資源開銷還需進(jìn)一步地降低。

      為了降低SM4 硬件資源開銷,本文提出以軟硬件協(xié)同設(shè)計(jì)的方式實(shí)現(xiàn)SM4 算法。 首先,分析了SM4 軟件實(shí)現(xiàn)的性能瓶頸。 其次,基于軟件分析結(jié)果,在開源指令集RISC-V[11]的基礎(chǔ)上,提出了兩條自定義指令,分別用于實(shí)現(xiàn)SM4 算法的加解密算法和密鑰擴(kuò)展算法的輪函數(shù)。 最后,提出一種復(fù)用RISC-V 處理器寄存器資源的方法,以減少SM4 存儲(chǔ)資源開銷,并設(shè)計(jì)了一款低開銷的SM4 指令功能單元電路結(jié)構(gòu)。 實(shí)驗(yàn)結(jié)果顯示,相對(duì)于軟件實(shí)現(xiàn)的性能,本文方法能夠?qū)⑼掏侣侍嵘?.47 倍,延時(shí)縮短81.72%。 在SMIC 180nm 工藝下的綜合結(jié)果顯示,與參考文獻(xiàn)相比,本文方法的硬件資源開銷至少降低38.9%。

      1 SM4 算法簡(jiǎn)介

      該算法由加解密算法(如圖1(a)所示算法1)和密鑰擴(kuò)展算法(如圖1(b)所示算法2)兩部分組成,分組長(zhǎng)度和密鑰長(zhǎng)度均為128 bit。 加解密算法與密鑰擴(kuò)展算法均采用32 輪非線性迭代結(jié)構(gòu)。 從算法1 可以看出,加密算法和密鑰擴(kuò)展算法都需要32 輪的計(jì)算才能得到最終結(jié)果,因而每輪計(jì)算所消耗的時(shí)間決定了整個(gè)算法所消耗的時(shí)間。 為了評(píng)估SM4 軟件實(shí)現(xiàn)的性能,本文以Linux 內(nèi)核中的SM4算法源代碼為基礎(chǔ),在一款商業(yè)級(jí)的開源RISC-V處理器SCR1[12]上運(yùn)行,以獲取時(shí)鐘周期精確的仿真結(jié)果,然后對(duì)其進(jìn)行了性能剖析。

      圖1 SM4 加密算法和密鑰擴(kuò)展算法

      圖2 SM4 算法子函數(shù)性能分析

      分析結(jié)果如圖2 所示,僅通過Sbox 完成一個(gè)字節(jié)的非線性變換就消耗了6 個(gè)時(shí)鐘周期,而密鑰擴(kuò)展和加密算法輪函數(shù)的單次迭代分別需要41 和49個(gè)時(shí)鐘周期。 值得注意的是,完成32 次輪函數(shù)迭代,密鑰擴(kuò)展和加解密分別需要1 802 和2 178 個(gè)時(shí)鐘周期,而這兩個(gè)值并不等于41×32 和49×32。 造成這一現(xiàn)象的主要原因是,每次輪函數(shù)的迭代都需要通過多個(gè)訪存指令從存儲(chǔ)器中將數(shù)據(jù)載入到寄存器中。 基于上述的分析,得出的結(jié)論是,為了消除SM4 軟件性能瓶頸,提升SM4 性能,降低時(shí)延,必須做到:(1)降低Sbox 非線性變換消耗時(shí)間;(2)降低輪函數(shù)單次迭代消耗時(shí)間;(3)減少輪函數(shù)中的訪存指令以減少訪問存儲(chǔ)器消耗時(shí)間。

      從算法1 中的4~7 行和算法2 的3 ~7 行可以發(fā)現(xiàn),輪函數(shù)中包含的運(yùn)算較多,如果能將這些運(yùn)算通過一條指令完成,則可以達(dá)到降低輪函數(shù)單次迭代消耗時(shí)間的目的,而Sbox 非線性變換已然包含在輪函數(shù)中了,因此上述結(jié)論(1)也可以通過擴(kuò)展指令來(lái)消除或掩蓋。 考慮到開源指令RISC-V 指令集定義了32 個(gè)通用寄存器,如果能夠借用部分通用寄存器用于存放加解密或者密鑰擴(kuò)展算法運(yùn)算過程中產(chǎn)生的中間數(shù)據(jù),則可以減少不必要的存儲(chǔ)器訪問從而消除存儲(chǔ)器訪問消耗時(shí)間。

      2 RISC-V 指令擴(kuò)展

      基于上述的分析,依據(jù)開源RISC-V 指令規(guī)范,本文定義了兩條自定義指令,SM4.KEY.RF 和SM4.ENC.RF。 擴(kuò)展指令SM4.KEY.RF 用于實(shí)現(xiàn)密鑰擴(kuò)展算法輪函數(shù)單次迭代中所有運(yùn)算,包括異或、Sbox 非線性變換、線性變換,如算法2 中4 ~7 行所示。 擴(kuò)展指令SM4.ENC.RF 用于實(shí)現(xiàn)加解密算法輪函數(shù)單次迭代中的所有運(yùn)算,如算法1 中4 ~7 行所示。 二者指令編碼格式如圖3 所示。 依據(jù)RISC-V指令規(guī)范,選取7 位二進(jìn)制數(shù)0001011 作為SM4 擴(kuò)展指令的操作碼,以便于與其他類型指令進(jìn)行區(qū)分。在擴(kuò)展指令SM4.KEY.RF 中,目標(biāo)寄存器由編譯器決定,可以為任意寄存器,源寄存器只需要1 個(gè),用于載入CK 參數(shù)。 在擴(kuò)展指令SM4.ENC.RF 中,將指定目標(biāo)寄存器為x28,以減少不必要的存儲(chǔ)器訪問,而源寄存器用于載入密鑰擴(kuò)展算法生成的輪密鑰。

      圖3 本文提出的兩條RISC-V 擴(kuò)展指令

      3 低開銷SM4 指令功能單元結(jié)構(gòu)設(shè)計(jì)

      依據(jù)兩條擴(kuò)展指令的功能,本文設(shè)計(jì)了一款低開銷的SM4 指令功能單元,并對(duì)RISC-V 處理器的寄存器堆的電路結(jié)構(gòu)進(jìn)行了修改,具體結(jié)構(gòu)如圖4所示。 從圖4 可以看出,SM4 指令功能單元有6 個(gè)輸入和1 個(gè)輸出端口,其中5 個(gè)輸入用于傳遞輪函數(shù)單次迭代所需的數(shù)據(jù),而這5 個(gè)輸入直接從寄存器堆引入。 需要注意的是,這5 個(gè)從寄存器堆直接引入的輸入,有4 個(gè)是固定連接到某一個(gè)寄存器,剩余1 個(gè)由指令傳遞的rs1 選取。 之所以這樣設(shè)計(jì),主要原因有3 個(gè):(1)由于輪函數(shù)單次迭代需要5個(gè)32 位的數(shù)據(jù),固定連接寄存器后,數(shù)據(jù)直接從寄存器中讀取,無(wú)需等待,提升指令執(zhí)行效率;(2)借用處理器的4 個(gè)通用寄存器存放輪函數(shù)每次迭代產(chǎn)生的臨時(shí)數(shù)據(jù),無(wú)需再通過存儲(chǔ)器訪問指令從存儲(chǔ)器中載入數(shù)據(jù),減少訪問存儲(chǔ)器次數(shù),縮短算法延時(shí);(3)輪函數(shù)計(jì)算結(jié)果直接寫入固定寄存器,無(wú)需編譯器指定存放位置,省去讀取寄存器時(shí)間,提升指令執(zhí)行效率。

      圖4 本文提出的SM4 指令功能單元

      如圖4 所示,當(dāng)處理器執(zhí)行到SM4.ENC.RF 或者SM4.KEY.RF 指令時(shí),寄存器堆中的寄存器t0-t3構(gòu)成移位寄存器,數(shù)據(jù)可以從t3移入,然后通過移位從t0移出。 之所以這樣設(shè)計(jì),是為了在輪函數(shù)單次迭代結(jié)束之后,能夠自動(dòng)進(jìn)行為移位,為下一次的迭代準(zhǔn)備數(shù)據(jù),從而不需要再通過指令從其他位置加載數(shù)據(jù),因而可以提升效率。

      3.1 軟硬件協(xié)同工作

      SM4 指令功能單元僅完成輪函數(shù)單次迭代計(jì)算,完成整個(gè)加密算法或者密鑰擴(kuò)展算法,還需要軟件的配合,軟件主要負(fù)責(zé)算法流程的控制。 為了節(jié)省擴(kuò)展密鑰所占用的資源開銷,本文不采用在線密鑰擴(kuò)展,而是在加解密之前預(yù)先執(zhí)行密鑰擴(kuò)展算法,并將生成的32 個(gè)32 位的擴(kuò)展密鑰存放到數(shù)據(jù)存儲(chǔ)器中。 如圖5(a)所示,在調(diào)用SM4.KEY.RF 指令進(jìn)行密鑰擴(kuò)展之前,需要先將128 位的用戶密鑰存放到指定的4 個(gè)寄存器中,然后才能開始循環(huán)迭代。每次迭代都會(huì)生成一個(gè)32 位的輪密鑰,這些密鑰交由編譯器指定存放位置。 在32 個(gè)輪密鑰生成完畢之后,可以開始數(shù)據(jù)加解密。

      如圖5(b)所示,在調(diào)用SM4.ENC.RF 指令進(jìn)行加解密之前,需要先將128 位的明文或者密文存放到指定的4 個(gè)寄存器中,然后才能開始循環(huán)迭代計(jì)算。 每次迭代均會(huì)先載入一個(gè)輪密鑰,然后執(zhí)行SM4.ENC.RF,每次迭代計(jì)算的結(jié)果直接寫入到寄存器t3(x28),32 次迭代結(jié)束之后,直接從寄存器t0-t3讀取數(shù)據(jù)即可。

      圖5 SM4 算法軟硬件協(xié)同工作流程

      圖6 SM4 指令功能單元嵌入到開源RISC-V 處理器SCR1 中

      4 實(shí)驗(yàn)與結(jié)果分析

      為了驗(yàn)證擴(kuò)展指令的功能,評(píng)估指令功能單元的資源開銷,本文采用Verilog HDL 對(duì)其進(jìn)行了描述,然后將其集成到商業(yè)級(jí)開源RISC-V 處理器SCR1 中。 如圖6 所示,SCR1 配置成了二級(jí)流水線結(jié)構(gòu),而SM4 指令功能單元嵌入到流水線的第二級(jí),與算術(shù)運(yùn)算單元ALU 處于同一個(gè)流水級(jí)。

      4.1 面積開銷

      為了評(píng)估資源開銷,本文將未修改的SCR1 以及修改之后的SCR1 分別以100 MHz 的時(shí)鐘頻率在SMIC 180 nm 工藝下,通過Synopsys Design Compiler進(jìn)行綜合,綜合結(jié)果如表1 所示。 從表1 可以看出,SM4 引入的硬件資源開銷只有1684 等效門。

      表1 SMIC 180nm 工藝下的100MHz 綜合結(jié)果

      4.2 性能表現(xiàn)

      為了評(píng)估性能,本文將SM4 算法分別采用有指令集擴(kuò)展和沒有指令集擴(kuò)展的方式進(jìn)行軟件實(shí)現(xiàn),并通過RISC-V 處理器提供的CYCLE 計(jì)數(shù)器對(duì)算法消耗的時(shí)鐘周期數(shù)進(jìn)行計(jì)數(shù)。 軟件實(shí)現(xiàn)通過修改之后的RISC-V GCC 交叉編譯器進(jìn)行編譯,然后將編譯輸出的Hex 文件以測(cè)試激勵(lì)的方式載入到Synopsys VCS 仿真平臺(tái),以獲得時(shí)鐘周期精確的仿真結(jié)果。 如表2 所示,添加指令集擴(kuò)展之后,密鑰擴(kuò)展、加密和解密所需的時(shí)鐘周期分別縮減了81.72%、87.69%、82.40%,而吞吐率分別提升了4.47 倍、7.12倍和4.68 倍。

      表2 有/無(wú)擴(kuò)展指令延時(shí)(時(shí)鐘周期)對(duì)比

      表3 有/無(wú)擴(kuò)展指令100 MHz 時(shí)鐘頻率下的吞吐率對(duì)比

      4.3 與參考文獻(xiàn)的對(duì)比

      表4 羅列了本文與參考文獻(xiàn)的比較結(jié)果。 雖然本文在延時(shí)和吞吐率方面的優(yōu)勢(shì)都不明顯,但是面積和等效門數(shù)優(yōu)勢(shì)突出,造成這一現(xiàn)象的主要是原因各個(gè)設(shè)計(jì)的設(shè)計(jì)目標(biāo)可能不一致,比如文獻(xiàn)[13]瞄準(zhǔn)的是高吞吐率,而本文的設(shè)計(jì)目標(biāo)是低開銷。從表4 中數(shù)據(jù)可以看出,與參考文獻(xiàn)相比,面積開銷(等效門數(shù))至少降低38.9%。

      表4 與參考文獻(xiàn)資源開銷的比較結(jié)果

      5 總結(jié)

      面向低成本物聯(lián)網(wǎng)終端領(lǐng)域數(shù)據(jù)加密需求,針對(duì)SM4 算法,本文基于開源RISC-V 指令集,提出了兩條SM4 擴(kuò)展指令,設(shè)計(jì)了一款低開銷的SM4 指令功能單元硬件電路結(jié)構(gòu),以軟硬件協(xié)同工作的方式實(shí)現(xiàn)SM4 密鑰擴(kuò)展算法和加解密算法,并在性能和硬件資源開銷之間取得平衡。 本文提出2 條擴(kuò)展指令分別用于實(shí)現(xiàn)SM4 密鑰擴(kuò)展算法和加密算法輪函數(shù)中的所有運(yùn)算。 從時(shí)鐘周期精確的仿真結(jié)果來(lái)看,與無(wú)擴(kuò)展指令的實(shí)現(xiàn)方式相比,延時(shí)至少降低81.72%,吞吐率至少提升4.47 倍。 從SMIC 180 nm工藝下的綜合結(jié)果來(lái)看,與參考文獻(xiàn)相比,硬件資源開銷至少降低38.9%。 本文提出的方法能夠兼顧性能和資源開銷,因而較為適合于資源受限成本低廉的物聯(lián)網(wǎng)場(chǎng)景。

      猜你喜歡
      加解密寄存器密鑰
      探索企業(yè)創(chuàng)新密鑰
      密碼系統(tǒng)中密鑰的狀態(tài)與保護(hù)*
      Lite寄存器模型的設(shè)計(jì)與實(shí)現(xiàn)
      一種對(duì)稱密鑰的密鑰管理方法及系統(tǒng)
      分簇結(jié)構(gòu)向量寄存器分配策略研究*
      基于ECC的智能家居密鑰管理機(jī)制的實(shí)現(xiàn)
      PDF中隱私數(shù)據(jù)的保護(hù)方法
      電子取證中常見數(shù)據(jù)加解密理論與方法研究
      基于FPGA的LFSR異步加解密系統(tǒng)
      網(wǎng)絡(luò)數(shù)據(jù)傳輸?shù)募咏饷芟到y(tǒng)研究
      軟件工程(2014年11期)2014-11-15 20:02:46
      威远县| 孟连| 弋阳县| 咸阳市| 万安县| 临汾市| 施甸县| 梨树县| 镇沅| 台中市| 光山县| 民丰县| 奉化市| 福泉市| 焉耆| 乐至县| 滦南县| 连平县| 板桥市| 大安市| 米易县| 雷山县| 镇坪县| 专栏| 兴宁市| 孝义市| 新干县| 湾仔区| 桑日县| 会泽县| 施秉县| 富民县| 新邵县| 綦江县| 枝江市| 福泉市| 自贡市| 乐亭县| 都昌县| 棋牌| 满城县|