0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

簡(jiǎn)述System Generator的ECC加解密系統(tǒng)的設(shè)計(jì)

電子工程師 ? 來(lái)源:電子技術(shù)應(yīng)用 ? 作者:肖雪芳;蘇航;雷 ? 2021-06-12 10:17 ? 次閱讀

橢圓曲線密碼系統(tǒng)(ECC)與其他公鑰加密系統(tǒng)相比,因其密鑰長(zhǎng)度短、安全強(qiáng)度高等諸多優(yōu)點(diǎn),被公認(rèn)為最有前途的公鑰密碼體系,受到人們的普遍關(guān)注和研究[1-4]。

在國(guó)內(nèi)外有關(guān)ECC的研究方面,主要集中在 ECC的時(shí)間復(fù)雜度和空間復(fù)雜度上[2-4]。參考文獻(xiàn)[2]研究模逆和標(biāo)乘的快速算法,參考文獻(xiàn)[3]針對(duì)KP算法將改進(jìn)的Booth算法嵌入傳統(tǒng)算法,極大地降低了迭代次數(shù)和有限域運(yùn)算量。參考文獻(xiàn)[4]將所有的模運(yùn)算全轉(zhuǎn)化為模乘運(yùn)算和模加運(yùn)算,并改進(jìn)了LSD乘法器,利用該單元進(jìn)行模運(yùn)算,從而其硬件實(shí)現(xiàn)了具有面積小、速度快等優(yōu)點(diǎn)。

目前國(guó)內(nèi)的密碼技術(shù)還是落后于國(guó)外,特別是在生活應(yīng)用中,國(guó)內(nèi)的企業(yè)基本上是引用國(guó)外的密碼技術(shù)進(jìn)行二次開(kāi)發(fā)。如果要將實(shí)現(xiàn)的橢圓曲線密碼系統(tǒng)應(yīng)用到實(shí)際中,則需要通過(guò)系統(tǒng)集成芯片設(shè)計(jì)(SOC),將FPGA上實(shí)現(xiàn)的橢圓曲線密碼系統(tǒng)集成實(shí)用性的加密芯片。一旦設(shè)計(jì)過(guò)程中所需的資源和條件不夠完善,將導(dǎo)致加密芯片的制作難以實(shí)現(xiàn)。為此,本文借助Xilinx公司提供的強(qiáng)大的系統(tǒng)級(jí)硬件仿真工具System Generator[5],研究并設(shè)計(jì)ECC加解密系統(tǒng)。

1 橢圓曲線密碼體制

由于最終是要在硬件上實(shí)現(xiàn)橢圓曲線密碼體制[6],所以本文選擇的有限域是特征為2的GF(2n),選擇的橢圓曲線方程如式(1)所示。

4453026235871.gif

4453290345272.gif

可見(jiàn)橢圓曲線密碼體制涉及到GF(2n)上的模加運(yùn)算、模乘運(yùn)算、求逆運(yùn)算,還有橢圓曲線的KP點(diǎn)乘運(yùn)算,下面對(duì)幾個(gè)主要算法進(jìn)行分析。

1.1 GF(2n)域上的模乘運(yùn)算

模乘模塊是整個(gè)設(shè)計(jì)中最關(guān)鍵的模塊,模乘的過(guò)程包括多項(xiàng)式相乘和取模兩個(gè)過(guò)程。傳統(tǒng)的乘法器是將兩個(gè)m位操作數(shù)相乘,然后對(duì)其進(jìn)行f(x)求模。這樣的缺點(diǎn)就是需要一個(gè)2m位的寄存器來(lái)存儲(chǔ)中間結(jié)果,勢(shì)必會(huì)浪費(fèi)資源。本文采用全串行移位相加法來(lái)實(shí)現(xiàn)模乘運(yùn)算[6]。該算法只有簡(jiǎn)單的移位和“異或”運(yùn)算,但是需要大量的移位運(yùn)算,如果A、B具有m位,則需要進(jìn)行m-1次移位運(yùn)算,這是比較耗時(shí)的。

但是本文使用的FPGA工作在61.44 MHz時(shí)鐘下,m一般取值在200左右,因此全串行移位相加法大概需要的是ns級(jí)的時(shí)間,而且全串行移位算法也是最節(jié)省資源的算法。通過(guò)Modelsim仿真該模塊,得到圖1所示結(jié)果。其中, clk是系統(tǒng)時(shí)鐘61.44 MHz;reset是系統(tǒng)復(fù)位信號(hào);en是使能端口;din是乘數(shù)輸入端口,低位在前;dout是輸出結(jié)果;rdy是輸出結(jié)果有效指示。

4453767083520.gif

1.2 GF(2n)域上的模逆運(yùn)算

對(duì)于GF(2n)域上的模逆運(yùn)算,當(dāng)今最有效的算法就是擴(kuò)展歐幾里德算法和基于費(fèi)馬定理的模逆算法。擴(kuò)展歐幾里德算法用時(shí)會(huì)比基于費(fèi)馬定理的模逆算法用時(shí)短很多,但是相應(yīng)地是以犧牲硬件資源為代價(jià),在后面的點(diǎn)乘算法和最后的橢圓曲線密碼體制的實(shí)現(xiàn)耗用資源很大。

擴(kuò)展歐幾里德算法還要去另外設(shè)計(jì)一個(gè)多項(xiàng)式模塊,而基于費(fèi)馬定理的模逆算法只需要反復(fù)調(diào)用先前做好的模乘模塊就行,再加上本文用的FPGA時(shí)鐘頻率本身就高,因此本文選擇費(fèi)馬定理來(lái)做模逆算法。通過(guò)Modelsim仿真該模塊,得到圖2所示結(jié)果。其中,clk是系統(tǒng)時(shí)鐘61.44 MHz;reset是系統(tǒng)復(fù)位信號(hào);en是模逆使能;din是輸入數(shù)據(jù);a_inv是輸出結(jié)果;rdy是輸出結(jié)果有效指示。

4454046329789.gif

選取參數(shù)

K=157E51751D89C66CBDF44596BF7F653876A18C4B12

40B85A;

x=36B3DAF8A23206F9C4F299D7B21A9C369137F2C84

AE1AA0D;

y=7658E73433B3F95E332932E70EA245CA2418EA0EF9

8018FB;

b=2E45EF571F00786F67B0081B9495A3D95462F5DE0A

A185EC;

f=800000000000000000000000000000000000000000000

201。

仿真結(jié)果:

Cx=34EEC5768673E71B8CDC139FB8EB4ACD9989FAA

E1EC9EF1D;

Cy=779097F490A2DA7A6B09A9518733B4817D5C21947

547D2A1。

2 System Generator搭建ECC加密系統(tǒng)

System Generator是業(yè)內(nèi)領(lǐng)先的高級(jí)系統(tǒng)級(jí)FPGA開(kāi)發(fā)工具。其作用是借助FPGA設(shè)計(jì)高性能DSP系統(tǒng)并和Simulink實(shí)現(xiàn)無(wú)縫鏈接,快速建模并自動(dòng)生成代碼[5]。System Generator最大的特點(diǎn)就是可利用Simulink建模和仿真環(huán)境來(lái)實(shí)現(xiàn)FPGA設(shè)計(jì),無(wú)需了解和使用RTL級(jí)硬件語(yǔ)言,讓DSP設(shè)計(jì)者能夠發(fā)揮基于FPGA的DSP的最大性能和靈活性,并縮短整個(gè)設(shè)計(jì)周期。

前文用FPGA實(shí)現(xiàn)了ECC的各個(gè)關(guān)鍵模塊,下面用先前生成的各個(gè)模塊代碼通過(guò)System Generator的黑盒子生成各自相應(yīng)的模塊。再將這些模塊搭建成完整的ECC模塊,以便在Matlab工作空間中輸入相應(yīng)的參數(shù)、明文和相應(yīng)的使能端口就可以實(shí)現(xiàn)加密;輸入相應(yīng)的參數(shù)、密文和相應(yīng)的使能端口就可以實(shí)現(xiàn)解密。但是本文所涉及的參數(shù)較大,輸入的過(guò)程很耗費(fèi)時(shí)間,因此本文將參數(shù)都固定在一個(gè)ROM中間,只要控制相應(yīng)的使能信號(hào),就可以達(dá)到一個(gè)加解密的模擬過(guò)程。

2.1數(shù)據(jù)輸入模塊的搭建

本文中的端口有使能端口和參數(shù)端口,其中,使能端口是1 bit的,就可以用計(jì)數(shù)器來(lái)實(shí)現(xiàn)。對(duì)于191個(gè)bit位的參數(shù),可先將其分解成6組的32 bit系數(shù), 存在如圖4所示的ROM中,只要改變ROM中的值就可以控制輸入?yún)?shù)的值,改變3個(gè)常數(shù)模塊就可以控制參數(shù)輸入的時(shí)刻。

4454854719988.gif

2.2 ECC系統(tǒng)的搭建與仿真結(jié)果

利用代碼生成的KP模塊、求逆模塊和乘法模塊搭建成ECC加解密系統(tǒng)。由于ECC加解密系統(tǒng)的各個(gè)子模塊有很多的反饋端口,搭建起來(lái)的圖顯得比較亂,因此可以在ECC系統(tǒng)中的m文件添加 this block.addFile()。把各個(gè)子模塊添加到ECC頂層模塊中,這樣就相當(dāng)于把各個(gè)子模塊集成在統(tǒng)一的黑盒子中。

設(shè)置運(yùn)行時(shí)間為4 000 000個(gè)時(shí)鐘周期,將加解密指示信號(hào)設(shè)置為加密,點(diǎn)擊運(yùn)行,進(jìn)行加密仿真,在工作區(qū)間可以看到,明文輸入和對(duì)應(yīng)的密文輸出。例如,當(dāng)輸入的明文為“4129534493046158328227537522838960054530294419451055575666”時(shí),輸出的密文為“3625519732263338515328819742424233936313311718087”。

設(shè)置運(yùn)行時(shí)間為4 000 000個(gè)時(shí)鐘周期,將加解密指示信號(hào)設(shè)置為解密,點(diǎn)擊運(yùn)行,進(jìn)行解密仿真,在工作區(qū)間可以看到密文輸入和對(duì)應(yīng)的的明文輸出。例如,當(dāng)輸入的密文為“362551973226333851532881974242423393631

3311718087”, 則輸出的明文為“4129534493046158328227537522838960054530294419451055575666”。

ECC模塊加解密運(yùn)算輸出有效數(shù)據(jù)的時(shí)鐘周期是第3274550,使能信號(hào)則是在第11個(gè)時(shí)鐘周期輸入,因此整個(gè)運(yùn)算過(guò)程中數(shù)據(jù)的輸入輸出所耗費(fèi)的時(shí)間是3274550-11=3 274 539個(gè)時(shí)鐘周期,所以對(duì)于采用時(shí)鐘頻率為61.44 MHz的FPGA來(lái)說(shuō),只要用3 274 539/61.44 ?滋s就可以完成一次加密算法,或者一次解密算法??偣灿玫臅r(shí)間為3274539/61.44 ns=53.3 ms,而若單單只用Matlab仿真運(yùn)行,大概需要時(shí)間為20 min。因此采用硬件實(shí)現(xiàn)橢圓曲線密碼系統(tǒng)的優(yōu)越性不言而喻。

參考文獻(xiàn)

[1] HANKERSON D,MENEZES A, VANSTONE S. Guide to elliptic curve cryptography[M]. Springer Verlag New York Inc,2004:25-147.

[2] MA S W, HAO Y L, PAN Z Q. Fast implementation for modular inversion an d scalar multiplication in the elliptic curve cryptography[C].IITA ’08,Beijing,China,2008:488-492.

[3] 龔書(shū),劉文江,戎蒙恬。一種橢圓曲線密碼加密算法及實(shí)現(xiàn)[J]。高技術(shù)通訊,2004(3):25-28.

[4] 唐薛峰,沈海斌,嚴(yán)曉浪.GF(2^m)上橢圓密碼體制的硬件實(shí)現(xiàn)[J]。計(jì)算機(jī)工程與應(yīng)用,2004,40(11):96-98.

[5] 田耕,徐文波,胡彬.Xilinx ISE Design Suite 10.x FPGA開(kāi)發(fā)指南[M]。北京:人民郵電出版社,2008.

[6] 祝躍飛,張亞娟。橢圓曲線公鑰密碼導(dǎo)引[M]。 北京:科學(xué)出版社,2006.

編輯:jq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • dsp
    dsp
    +關(guān)注

    關(guān)注

    551

    文章

    7824

    瀏覽量

    346831
  • FPGA
    +關(guān)注

    關(guān)注

    1620

    文章

    21510

    瀏覽量

    598916
  • soc
    soc
    +關(guān)注

    關(guān)注

    38

    文章

    4021

    瀏覽量

    217026
  • LSD-
    +關(guān)注

    關(guān)注

    0

    文章

    2

    瀏覽量

    9000
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    PSoC5LP:ECC總是返回失敗的原因?

    ECC 后,使用 AN78175 項(xiàng)目提供的示例和 SelfTest_FlashECC() 函數(shù)應(yīng)該很容易: uint8_t SelfTest_FlashECC(void) { uint8_t
    發(fā)表于 05-30 08:15

    CYT4BF的監(jiān)管區(qū) (SFlash) 是否支持 ECC

    CYT4BF 的監(jiān)管區(qū) (SFlash) 是否支持 ECC? 如果支持 ECC, 控制 ECC 的寄存器是否與 FLASHC/FLASHC1_FLASH_CTL.MAIN_ECC_EN
    發(fā)表于 05-23 07:26

    鴻蒙OS開(kāi)發(fā)問(wèn)題:(ArkTS)【 RSA加解密,解決中文亂碼等現(xiàn)象】

    RSA加解密開(kāi)始構(gòu)建工具類就是舉步維艱,官方文檔雖然很全,但是還是有很多小瑕疵,在自己經(jīng)過(guò)幾天的時(shí)間,徹底解決了中文亂碼的問(wèn)題、分段加密的問(wèn)題。
    的頭像 發(fā)表于 03-27 21:23 ?1430次閱讀
    鴻蒙OS開(kāi)發(fā)問(wèn)題:(ArkTS)【 RSA<b class='flag-5'>加解密</b>,解決中文亂碼等現(xiàn)象】

    芯來(lái)科技正式發(fā)布基于RISC-V處理器的HSM子系統(tǒng)解決方案

    本土RISC-V CPU IP領(lǐng)軍企業(yè)——芯來(lái)科技正式發(fā)布基于RISC-V處理器的HSM子系統(tǒng)解決方案,提供專業(yè)有效的信息安全保護(hù)以及加解密功能。
    的頭像 發(fā)表于 03-11 11:01 ?1021次閱讀
    芯來(lái)科技正式發(fā)布基于RISC-V處理器的HSM子<b class='flag-5'>系統(tǒng)</b>解決方案

    Pflash和Dflash都有閃存ECC保護(hù),ECC內(nèi)存在哪里?

    在用戶手冊(cè)中,Pflash 和 Dflash 都有閃存 ECC 保護(hù),我想知道 ECC 內(nèi)存在哪里? 它會(huì)占用 pflash 空間還是存儲(chǔ)在用戶無(wú)法訪問(wèn)的地方? 在此先謝謝!
    發(fā)表于 01-26 08:12

    基于FPGA的可編程AES加解密IP

    可編程AES加解密IP內(nèi)建密鑰擴(kuò)展功能,使用初始密鑰產(chǎn)生擴(kuò)展密鑰,用于加解密過(guò)程。可編程AES加解密IP處理128-bit分組數(shù)據(jù),并且支持可編程的密鑰長(zhǎng)度:128-bit,192-bit和256-bit。
    發(fā)表于 01-09 10:49 ?361次閱讀
    基于FPGA的可編程AES<b class='flag-5'>加解密</b>IP

    eCryptfs整體架構(gòu)和核心加解密機(jī)制介紹

    的注冊(cè)函數(shù)。之后eCryptfs根據(jù)mountsession中保存的key signature參數(shù)從keyring中找到對(duì)應(yīng)密鑰(FEKEK),再調(diào)用crypto模塊API完成文件加解密。 eCryptfs核心加解密
    的頭像 發(fā)表于 11-29 11:43 ?622次閱讀
    eCryptfs整體架構(gòu)和核心<b class='flag-5'>加解密</b>機(jī)制介紹

    單片機(jī)解密是否損壞母片?

    單片機(jī)解密是否損壞母片? 單片機(jī)解密是一項(xiàng)非常關(guān)鍵的技術(shù),它可以幫助企業(yè)破解其他廠商的芯片,并在其基礎(chǔ)上進(jìn)行改進(jìn)與創(chuàng)新。然而,這一技術(shù)的使用也引發(fā)了一些爭(zhēng)議。其中一個(gè)爭(zhēng)議的焦點(diǎn)就是單片機(jī)解密是否會(huì)
    的頭像 發(fā)表于 11-07 10:18 ?561次閱讀

    通過(guò)構(gòu)架來(lái)處理加解密需求

    SPE主要是提供需要安全保護(hù)的服務(wù),例如固件更新、加解密;而NSPE則是一般使用者執(zhí)行應(yīng)用程序的環(huán)境。 如果在NSPE中執(zhí)行的應(yīng)用程序使用到secure層級(jí)的服務(wù),則需要透過(guò)特定API來(lái)呼叫(這個(gè)
    的頭像 發(fā)表于 11-02 16:15 ?252次閱讀
    通過(guò)構(gòu)架來(lái)處理<b class='flag-5'>加解密</b>需求

    探秘STM32U5安全特性|硬件加解密引擎與軟件算法對(duì)比

    探秘STM32U5安全特性|硬件加解密引擎與軟件算法對(duì)比
    的頭像 發(fā)表于 10-27 10:23 ?1499次閱讀
    探秘STM32U5安全特性|硬件<b class='flag-5'>加解密</b>引擎與軟件算法對(duì)比

    基于智能電網(wǎng)的綜合通信系統(tǒng)簡(jiǎn)述

    電子發(fā)燒友網(wǎng)站提供《基于智能電網(wǎng)的綜合通信系統(tǒng)簡(jiǎn)述.pdf》資料免費(fèi)下載
    發(fā)表于 10-26 11:43 ?0次下載
    基于智能電網(wǎng)的綜合通信<b class='flag-5'>系統(tǒng)</b><b class='flag-5'>簡(jiǎn)述</b>

    單片機(jī)解密失敗的原因

    單片機(jī)解密存在失敗的概率,從我們解密的經(jīng)驗(yàn)來(lái)看,按概率來(lái)講,大概存在1%單片機(jī)解密的失敗概率,存在0.3%的損壞母片的概率。所以我們不保證100%解密成功,也不保證100%不破壞母片,
    發(fā)表于 10-25 09:49 ?445次閱讀

    基于FPGA的PCI硬件加解密卡的設(shè)計(jì)方案

    電子發(fā)燒友網(wǎng)站提供《基于FPGA的PCI硬件加解密卡的設(shè)計(jì)方案.pdf》資料免費(fèi)下載
    發(fā)表于 10-18 11:18 ?1次下載
    基于FPGA的PCI硬件<b class='flag-5'>加解密</b>卡的設(shè)計(jì)方案

    安裝System Generator時(shí)System Generator for DSP這個(gè)選項(xiàng)沒(méi)有出現(xiàn)怎么辦?

    各位大佬,我在安裝System Generator時(shí),跟著教程走,發(fā)現(xiàn)在vivado中沒(méi)有出現(xiàn)System Generator for DSP這個(gè)選項(xiàng),請(qǐng)問(wèn)是我哪里安裝得不對(duì)嗎?
    發(fā)表于 09-26 21:54

    RK358支持全鏈路ECC的DDR和普通內(nèi)存有何區(qū)別?

    ECC內(nèi)存(ErrorCorrection Code Memory)和普通內(nèi)存是計(jì)算機(jī)存儲(chǔ)技術(shù)中常見(jiàn)的兩種類型的內(nèi)存。它們?cè)谠O(shè)計(jì)和功能上有一些重要區(qū)別。接下來(lái)我們將詳細(xì)解釋ECC內(nèi)存和普通內(nèi)存,并列舉它們之間的區(qū)別以及ECC內(nèi)存
    的頭像 發(fā)表于 09-22 16:57 ?1591次閱讀
    RK358支持全鏈路<b class='flag-5'>ECC</b>的DDR和普通內(nèi)存有何區(qū)別?