两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

具有多個(gè)分區(qū)的安全RAM塊的制作方法

文檔序號(hào):11807794閱讀:362來(lái)源:國(guó)知局
具有多個(gè)分區(qū)的安全RAM塊的制作方法與工藝

本申請(qǐng)是于2010年6月6日提交的美國(guó)專利申請(qǐng)第12/830,447號(hào)的部分繼續(xù)申請(qǐng),美國(guó)專利申請(qǐng)第12/830,447號(hào)是于2006年9月7日提交的題為“SECURITY RAM BLOCK”的美國(guó)專利申請(qǐng)第11/517,689號(hào)(現(xiàn)在是美國(guó)專利第7,752,407號(hào))的分案申請(qǐng),所有這些申請(qǐng)的全部?jī)?nèi)容以引用的方式引入本申請(qǐng)。



背景技術(shù):

本發(fā)明總體上涉及在集成電路上存儲(chǔ)數(shù)據(jù),并且更具體地涉及保護(hù)存儲(chǔ)在現(xiàn)場(chǎng)可編程門陣列(FPGA)上的電池供電的存儲(chǔ)器中的數(shù)據(jù)。

諸如現(xiàn)場(chǎng)可編程門陣列等集成電路的電路復(fù)雜性和所執(zhí)行的任務(wù)在過(guò)去的幾年中極大地增加。被配置成執(zhí)行復(fù)雜的用戶定義的功能的高度復(fù)雜的軟件或應(yīng)用在可編程邏輯元件上運(yùn)行。

通常,這些應(yīng)用需要在存儲(chǔ)器中存儲(chǔ)數(shù)據(jù),例如,應(yīng)用可以在不同時(shí)間存儲(chǔ)數(shù)據(jù)用于稍后使用。可能需要存儲(chǔ)其他重要的數(shù)據(jù),諸如芯片身份、許可信息和加密密鑰。不幸的是,如果電力從存儲(chǔ)器上被去除,則該數(shù)據(jù)將丟失,除非存儲(chǔ)器是非易失性的。

但是非易失性存儲(chǔ)器通常需要或者不與用于制造FPGA的處理技術(shù)兼容或者使用極大地增加設(shè)備成本的額外的處理步驟的處理。另外,在很多情況下,存儲(chǔ)器中存儲(chǔ)的數(shù)據(jù)的安全性很重要,因此,理想的是,如果檢測(cè)到篡改,則快速地擦除數(shù)據(jù)。不幸的是,很難快速地擦除非易失性存儲(chǔ)器。另外,非易失性存儲(chǔ)器中存儲(chǔ)的數(shù)據(jù)能夠通過(guò)逆向工程來(lái)被發(fā)現(xiàn)。

為了保護(hù)該數(shù)據(jù),限制對(duì)其的訪問(wèn)也很重要,使得數(shù)據(jù)不會(huì)被違法用戶或應(yīng)用偷盜或拷貝。例如,可以通過(guò)使用密鑰對(duì)其加密來(lái)保護(hù)配置設(shè)計(jì)。如果該密鑰存儲(chǔ)在存儲(chǔ)器中用于在解密期間使用,則理想的是,保護(hù)并且限制對(duì)該密鑰的訪問(wèn)。

因此,需要一種能夠提供用于FPGA的存儲(chǔ)器的電路、方法和裝置,其在給FPGA的電力被去除時(shí)保持?jǐn)?shù)據(jù),但是兼容傳統(tǒng)的PFGA制造過(guò)程并且可以在篡改或其他未授權(quán)事件的情況下被快速擦除。另外,理想的是,通過(guò)限制對(duì)存儲(chǔ)器中存儲(chǔ)的數(shù)據(jù)的訪問(wèn)來(lái)提供進(jìn)一步保護(hù)。



技術(shù)實(shí)現(xiàn)要素:

因此,本發(fā)明的實(shí)施例提供一種用于在FPGA上的存儲(chǔ)器中存儲(chǔ)應(yīng)用數(shù)據(jù)、密鑰、認(rèn)證代碼或其他信息的電路、方法和裝置。本發(fā)明的示例性實(shí)施例提供在片上易失性存儲(chǔ)器中存儲(chǔ)該數(shù)據(jù)的FPGA。電池對(duì)存儲(chǔ)器供電以防止在給FPGA的電力被去除時(shí)所存儲(chǔ)的信息的擦除。在各種實(shí)施例中,電池通常是存儲(chǔ)器的電力的源,在其他實(shí)施例中,可以接通一個(gè)或多個(gè)其他電源以取代電池作為給存儲(chǔ)器的電力的源,例如用于延長(zhǎng)電池壽命。

在本發(fā)明的各種實(shí)施例中,給存儲(chǔ)器的電力可以被中斷以便擦除存儲(chǔ)器的內(nèi)容。例如,如果試圖篡改或未授權(quán)配置,則切斷給存儲(chǔ)器的電力,從而擦除存儲(chǔ)器。在一個(gè)示例性實(shí)施例中,使用消息認(rèn)證代碼(MAC)來(lái)驗(yàn)證配置比特流。MAC在所接收的比特流沒(méi)有被驗(yàn)證通過(guò)的情況下從存儲(chǔ)器去除電力。

本發(fā)明的各種實(shí)施例還限制對(duì)存儲(chǔ)器中存儲(chǔ)的數(shù)據(jù)的訪問(wèn)。通常,讀取訪問(wèn)受到限制,寫(xiě)入訪問(wèn)也可以受到限制,特別是在數(shù)據(jù)被改寫(xiě)的情況下。在本發(fā)明的具體實(shí)施例中,通過(guò)使用認(rèn)證代碼來(lái)限制訪問(wèn)。僅在應(yīng)用提供正確的認(rèn)證代碼或者存儲(chǔ)器中存儲(chǔ)的訪問(wèn)代碼和認(rèn)證代碼具有預(yù)定義的函數(shù)關(guān)系的情況下,應(yīng)用被授權(quán)訪問(wèn)。本發(fā)明的另一實(shí)施例在存儲(chǔ)數(shù)據(jù)之前使用密鑰對(duì)數(shù)據(jù)加密。僅具有正確密鑰的應(yīng)用可以使用數(shù)據(jù)。本發(fā)明的實(shí)施例可以合并本文中描述的這些或其他特征中的一個(gè)或多個(gè)特征。

在一個(gè)實(shí)施例中,本發(fā)明提供了一種用于安全地存儲(chǔ)數(shù)據(jù)的裝置。裝置包括包含被分配以保護(hù)數(shù)據(jù)存儲(chǔ)的安全部分的存儲(chǔ)器核、以及被配置成控制到存儲(chǔ)器核的安全部分的數(shù)據(jù)寫(xiě)入和來(lái)自存儲(chǔ)器核的安全部分的數(shù)據(jù)讀取的控制電路。裝置被適配成在存儲(chǔ)器的重新配置操作期間(諸如在軟件應(yīng)用安裝過(guò)程期間配置應(yīng)用時(shí),其涉及來(lái)自存儲(chǔ)器核的數(shù)據(jù)讀取和向存儲(chǔ)器核存儲(chǔ)數(shù)據(jù))防止對(duì)安全部分中存儲(chǔ)的數(shù)據(jù)的改變。

本發(fā)明的實(shí)施例還提供用于在可編程電路裝置(例如FPGA)的多個(gè)獨(dú)立可重新配置區(qū)域之間共享一個(gè)或多個(gè)存儲(chǔ)器塊的電路、方法和裝置。在本發(fā)明的各種實(shí)施例中,配置控制器被配置成對(duì)一個(gè)或多個(gè)存儲(chǔ)器塊進(jìn)行分區(qū)以向多個(gè)獨(dú)立可重新配置區(qū)域分配不同的存儲(chǔ)器分區(qū)。配置控制器還可以被配置成控制對(duì)存儲(chǔ)器塊的訪問(wèn)。比如,配置控制器可以被配置成防止獨(dú)立可重新配置區(qū)域中的全部或某些獨(dú)立可重新配置區(qū)域訪問(wèn)已經(jīng)向另一獨(dú)立可重新配置區(qū)域分配的存儲(chǔ)器分區(qū)。該訪問(wèn)限制可以應(yīng)用于讀取訪問(wèn)、寫(xiě)入訪問(wèn)或者這二者,并且可以取決于獨(dú)立可重新配置區(qū)域請(qǐng)求訪問(wèn)而改變。

在一個(gè)說(shuō)明性實(shí)施例中,裝置包括n個(gè)存儲(chǔ)器塊和m個(gè)獨(dú)立可重新配置區(qū)域,其中m>n,并且配置控制器被配置成在m個(gè)獨(dú)立可重新配置區(qū)域上分區(qū)為n個(gè)存儲(chǔ)器塊。配置控制器還可以被配置成控制對(duì)n個(gè)存儲(chǔ)器塊中的每個(gè)的訪問(wèn)以防止m個(gè)獨(dú)立可重新配置區(qū)域中的任何給定的獨(dú)立可重新配置區(qū)域訪問(wèn)向m個(gè)獨(dú)立可重新配置區(qū)域中的另一獨(dú)立可重新配置區(qū)域分配的存儲(chǔ)器分區(qū)。

在一些實(shí)施例中,每個(gè)存儲(chǔ)器分區(qū)存儲(chǔ)例如使用消息認(rèn)證代碼(MAC)生成器生成的多個(gè)消息認(rèn)證代碼。當(dāng)配置控制器接收到配置流時(shí),MAC可以被生成并且與所存儲(chǔ)的MAC相比較以確定所生成的MAC是否匹配所存儲(chǔ)的MAC中的任何MAC。如果配置控制器確定匹配,則其可以授權(quán)對(duì)存儲(chǔ)匹配MAC的存儲(chǔ)器分區(qū)的訪問(wèn)。否則,配置控制器可以拒絕訪問(wèn)。

在一些實(shí)施例中,配置控制器被配置成響應(yīng)于確定未授權(quán)的獨(dú)立可重新配置區(qū)域試圖訪問(wèn)存儲(chǔ)器分區(qū)來(lái)使用零值改寫(xiě)該存儲(chǔ)器分區(qū)中存儲(chǔ)的所有數(shù)據(jù)。在其他實(shí)施例中,通過(guò)切斷給包含目標(biāo)存儲(chǔ)器分區(qū)的存儲(chǔ)器塊的電力來(lái)擦除數(shù)據(jù)。

配置控制器可以使用一個(gè)或多個(gè)訪問(wèn)控制技術(shù)來(lái)控制對(duì)存儲(chǔ)器塊及其分區(qū)的訪問(wèn)。在一個(gè)方法中,F(xiàn)GPA被設(shè)計(jì)成使得所有存儲(chǔ)器訪問(wèn)必須經(jīng)過(guò)配置控制器,即訪問(wèn)存儲(chǔ)器的請(qǐng)求必須被提供給配置控制器,并且配置控制器代表請(qǐng)求者(例如獨(dú)立可重新配置區(qū)域)與存儲(chǔ)器通信。這例如可以通過(guò)確保(通過(guò)固定設(shè)計(jì)或者通過(guò)對(duì)可配置互連編程)獨(dú)立可重新配置區(qū)域沒(méi)有被提供到存儲(chǔ)器塊的任何直接連接來(lái)完成。配置控制器在這樣的場(chǎng)景中可以僅完成其確定被認(rèn)證的請(qǐng)求(例如通過(guò)向存儲(chǔ)器或特定的存儲(chǔ)器分區(qū)轉(zhuǎn)發(fā)請(qǐng)求)。

在另一方法中,獨(dú)立可重新配置區(qū)域可以提供有到存儲(chǔ)器塊的直接連接,但是存儲(chǔ)器分區(qū)中存儲(chǔ)的數(shù)據(jù)被加密。在這樣的場(chǎng)景中,配置控制器可以僅在確定存儲(chǔ)器請(qǐng)求被認(rèn)證的情況下通過(guò)解密數(shù)據(jù)來(lái)限制對(duì)存儲(chǔ)器分區(qū)的訪問(wèn)。

可以使用任何其他合適的方法來(lái)控制對(duì)存儲(chǔ)器塊及其分區(qū)的訪問(wèn),并且在一些實(shí)施例中,可以實(shí)現(xiàn)這些方法的組合。另外,可以實(shí)現(xiàn)這些訪問(wèn)控制特征以僅控制讀取訪問(wèn)請(qǐng)求、寫(xiě)入訪問(wèn)請(qǐng)求、或者這二者。在又一其他實(shí)施例中,可以實(shí)現(xiàn)訪問(wèn)控制而沒(méi)有使用配置控制器,例如通過(guò)對(duì)數(shù)據(jù)加密和/或使用數(shù)據(jù)來(lái)存儲(chǔ)MAC,如以上和下面進(jìn)一步描述的。

通過(guò)參考以下詳細(xì)描述和附圖可以獲得對(duì)本發(fā)明的屬性和優(yōu)點(diǎn)的更好的理解。

附圖說(shuō)明

圖1是通過(guò)結(jié)合本發(fā)明的實(shí)施例而被改進(jìn)的可編程邏輯器件的簡(jiǎn)化框圖;

圖2是通過(guò)結(jié)合本發(fā)明的實(shí)施例而被改進(jìn)的電子系統(tǒng)的框圖;

圖3A是圖示根據(jù)本發(fā)明的實(shí)施例的已加密配置比特流和解密密鑰的存儲(chǔ)的框圖,而圖3B圖示根據(jù)本發(fā)明的實(shí)施例的已加密比特流的解密和FPGA的配置;

圖4A是圖示根據(jù)本發(fā)明的實(shí)施例的對(duì)配置比特流加密以及在安全RAM中存儲(chǔ)密鑰和其他參數(shù)的方法的流程圖,而圖4B是圖示根據(jù)本發(fā)明的實(shí)施例的對(duì)已加密配置比特流解密并且配置FPGA的方法的流程圖;

圖5圖示根據(jù)本發(fā)明的實(shí)施例的對(duì)安全RAM供電的方法;

圖6圖示根據(jù)本發(fā)明的實(shí)施例的對(duì)安全RAM供電的另一方法;

圖7圖示根據(jù)本發(fā)明的實(shí)施例的在使用關(guān)閉開(kāi)關(guān)的同時(shí)對(duì)安全RAM供電的方法;

圖8圖示根據(jù)本發(fā)明的實(shí)施例的在使用由消息認(rèn)證代碼控制的關(guān)閉開(kāi)關(guān)的同時(shí)對(duì)安全RAM供電的方法;

圖9圖示根據(jù)本發(fā)明的實(shí)施例的生成配置比特流驗(yàn)證信號(hào)以控制安全RAM關(guān)閉開(kāi)關(guān)的方法;

圖10是圖示根據(jù)本發(fā)明的實(shí)施例的生成配置比特流驗(yàn)證信號(hào)以控制安全RAM關(guān)閉開(kāi)關(guān)的方法的流程圖;

圖11圖示可以用作圖9中的功能框的電路;

圖12圖示在FPGA的配置期間在配置控制器、接入控制電路和安全SRAM之間的示例性數(shù)據(jù)傳遞;

圖13A和圖13B是圖示FPGA的操作的流程圖,其中配置控制器被授權(quán)對(duì)安全SRAM中存儲(chǔ)的解密密鑰的自動(dòng)訪問(wèn);

圖14圖示FPGA中的數(shù)據(jù)的示例性傳遞,其中通過(guò)要求認(rèn)證代碼來(lái)限制對(duì)存儲(chǔ)器中的數(shù)據(jù)的訪問(wèn);

圖15是圖示通過(guò)要求認(rèn)證代碼來(lái)限制對(duì)安全SRAM中的數(shù)據(jù)的讀取訪問(wèn)的方法的流程圖;

圖16A和16B是圖示配置設(shè)備的方法的流程圖,其中使用第二密鑰來(lái)對(duì)解密密鑰加密并且兩個(gè)密鑰都存儲(chǔ)在安全SRAM中;

圖17圖示設(shè)備中的示例性數(shù)據(jù)流,其中應(yīng)用通過(guò)加密在安全SRAM中具有受保護(hù)的數(shù)據(jù);

圖18A和圖18B是圖示接收和解密安全SRAM中存儲(chǔ)的已加密數(shù)據(jù)的方法的流程圖;

圖19是包括配置控制器、訪問(wèn)控制電路和多個(gè)安全SRAM的示例性FPGA的框圖,其中每個(gè)安全SRAM具有多個(gè)分區(qū);以及

圖20是圖示控制具有多個(gè)存儲(chǔ)器塊和獨(dú)立可重新配置區(qū)域的FPGA中的存儲(chǔ)器訪問(wèn)的方法的流程圖。

具體實(shí)施方式

圖1是示例性高密度可編程邏輯器件100的簡(jiǎn)化的部分框圖,其中可以使用根據(jù)本發(fā)明的技術(shù)。PLD 100包括通過(guò)可變長(zhǎng)度和速度的行列互連的網(wǎng)絡(luò)互連的可編程邏輯陣列塊(LAB)102的二維陣列。LAB 102包括多個(gè)(例如10個(gè))邏輯元件(LE),LE是提供用戶定義的邏輯功能的高效實(shí)現(xiàn)的小邏輯單元。

PLD 100還包括分布式存儲(chǔ)器結(jié)構(gòu),其包括遍及陣列提供的可變大小的RAM塊。RAM塊包括例如512個(gè)比特塊104、4K個(gè)塊106和提供512K比特的RAM的M塊108。這些存儲(chǔ)器塊還可以包括移位寄存器和FIFO緩沖器。PLD 100還包括例如可以實(shí)現(xiàn)具有加法和減法特征的乘法器的數(shù)字信號(hào)處理(DPS)塊110。

應(yīng)當(dāng)理解,PLD 100在本文中僅出于說(shuō)明目的而描述并且本發(fā)明可以用很多不同類型的PLD、FPGA和其他類型的數(shù)字集成電路來(lái)實(shí)現(xiàn)。

雖然圖1所示的類型的PLD提供實(shí)現(xiàn)系統(tǒng)級(jí)解決方案所需要的資源中的很多資源,然而本發(fā)明也可以有益于其中PLD是若干部件之一的系統(tǒng)。圖2示出了其中可以實(shí)施本發(fā)明的示例性數(shù)字系統(tǒng)200的框圖。系統(tǒng)200可以是編程數(shù)字計(jì)算機(jī)系統(tǒng)、數(shù)字信號(hào)處理系統(tǒng)、專用數(shù)字開(kāi)關(guān)網(wǎng)絡(luò)或者其他處理系統(tǒng)。另外,這樣的系統(tǒng)可以被設(shè)計(jì)用于各種應(yīng)用,諸如電信系統(tǒng)、汽車系統(tǒng)、控制系統(tǒng)、消費(fèi)電子、個(gè)人計(jì)算機(jī)、因特網(wǎng)通信和連網(wǎng)等。另外,系統(tǒng)200可以設(shè)置在單個(gè)板上、多個(gè)板上或者多個(gè)外殼中。

系統(tǒng)200包括通過(guò)一個(gè)或多個(gè)總線互連在一起的處理單元202、存儲(chǔ)器單元204和I/O單元206。根據(jù)本示例性實(shí)施例,可編程邏輯器件(PLD)208嵌入在處理單元202中。PLD 208可以服務(wù)圖2中的系統(tǒng)內(nèi)的很多不同目的。PLD 208例如可以是處理單元202的邏輯構(gòu)建塊,以支持其內(nèi)部和外部操作。PLD 208被編程為實(shí)現(xiàn)執(zhí)行其在系統(tǒng)操作中的特定角色所需要的邏輯功能。PLD 208可以具體地通過(guò)連接210耦合至存儲(chǔ)器204并且通過(guò)連接212耦合至I/O單元206。

處理單元202可以將數(shù)據(jù)指向適當(dāng)?shù)南到y(tǒng)部件用于處理和存儲(chǔ),執(zhí)行存儲(chǔ)器204中存儲(chǔ)的程序或者經(jīng)由I/O單元206接收和傳輸數(shù)據(jù)、或者其他類似功能。處理單元202可以是中央處理單元(CPU)、微處理器、浮點(diǎn)協(xié)處理器、圖形協(xié)處理器、硬件控制器、微控制器、被編程用于用作控制器的可編程邏輯器件、網(wǎng)絡(luò)控制器等。另外,在很多實(shí)施例中,通常不需要CPU。

例如,取代CPU,一個(gè)或多個(gè)PLD 208可以控制系統(tǒng)的邏輯操作。在實(shí)施例中,PLD 208用作可配置處理器,其可以根據(jù)需要被重新編程以處理特定的計(jì)算任務(wù)。可選地,可編程邏輯器件208本身可以包括嵌入式微處理器。存儲(chǔ)器單元204可以是隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、固定或軟盤媒體、PC卡閃盤存儲(chǔ)器、磁帶或者任何其他存儲(chǔ)裝置、或者這些存儲(chǔ)裝置的任意組合。

圖3A是圖示根據(jù)本發(fā)明的實(shí)施例的存儲(chǔ)已加密配置比特流和解密密鑰的方法的框圖。該附圖包括軟件模塊和硬件接口32、配置設(shè)備330、FPGA 340和電池350。在本發(fā)明的各種實(shí)施例中,配置設(shè)備330可以被包括作為FPGA 340的部分。例如,配置設(shè)備330可以是FPGA 340上的存儲(chǔ)器。該附圖與其他包括的附圖一樣出于說(shuō)明目的而被示出,而不限制本發(fā)明或者權(quán)利要求的可能實(shí)施例。

軟件模塊和硬件接口320包括加密軟件模塊322、密鑰軟件模塊324和解密電路數(shù)據(jù)模塊326。這些軟件模塊使用一個(gè)或多個(gè)硬件接口用于向FPGA 340和可選的配置設(shè)備330傳遞數(shù)據(jù)。FGPA 340包括安全SRAM 342、解密電路裝置344和其他可編程電路裝置346。

密鑰312被接收或者由密鑰軟件模塊324生成,將其作為密鑰322提供給FPGA 340上的安全SRAM 342并且提供給加密軟件模塊322。配置比特流310由加密軟件模塊322來(lái)接收,加密軟件模塊322使用密鑰324生成已加密配置比特流或已加密程序?qū)ο笪募POF320,其被提供給配置設(shè)備330。解密電路配置數(shù)據(jù)314可以可選地由解密電路數(shù)據(jù)軟件模塊326來(lái)接收,解密電路數(shù)據(jù)軟件模塊326提供數(shù)據(jù)用于在安全SRAM 342中存儲(chǔ)。該解密電路配置數(shù)據(jù)可以包括解密電路配置比特流、解密電路參數(shù)(諸如舍入的位數(shù)、置換框條目)和其他參數(shù)、或者這二者。

解密電路裝置344可以是固定解密電路,也就是硬邏輯或硬連線電路。解密電路裝置344可選地可以根據(jù)可編程邏輯或其他可配置電路來(lái)配置,或者其可以包括這些技術(shù)的組合。這些邏輯元件可以通過(guò)作為解密電路配置數(shù)據(jù)326的部分的解密電路配置比特流來(lái)配置。在要配置解密電路344時(shí),提供解密電路配置數(shù)據(jù)326并且將其存儲(chǔ)在安全SRAM 342中。

在各種實(shí)施例中,可以使用標(biāo)準(zhǔn)的或者傳統(tǒng)的加密方法和電路,諸如三元DES(3-DES)或AES??蛇x地,可以使用專用加密電路。傳統(tǒng)算法和專用算法都可以用各種加密算法參數(shù)來(lái)定義,其也可以是FGPA 340上存儲(chǔ)的解密電路配置數(shù)據(jù)324的部分。例如,在使用標(biāo)準(zhǔn)加密方法時(shí),諸如舍入的位數(shù)等變量可以用加密算法參數(shù)來(lái)定義。在本發(fā)明的其中解密電路固定或硬連線的各種實(shí)施例中,這些加密參數(shù)也可以固定,使得不需要加密算法參數(shù)。

在本發(fā)明的典型實(shí)施例中,安全SRAM 342是易失性存儲(chǔ)器。在本發(fā)明的各種實(shí)施例中,密鑰322以及可選地解密電路配置數(shù)據(jù)326保持在易失性存儲(chǔ)器342中。

在一個(gè)實(shí)施例中,安全SRAM 342可以包括下面參考圖12進(jìn)一步描述的其他電路,諸如訪問(wèn)控制電路,其可以用于防止對(duì)安全SRAM 342的未授權(quán)訪問(wèn),并且可以使用密鑰或其他安全措施(諸如密碼)來(lái)提供安全的通信接口。這樣的訪問(wèn)控制電路使得能夠向布置在PLD 208外部或者駐留在PLD 208中的電路和應(yīng)用中加載數(shù)據(jù)或者從其中獲取數(shù)據(jù)或者不向其中加載數(shù)據(jù)或從其中獲取數(shù)據(jù)。例如,這樣的訪問(wèn)控制電路可以控制(i)從PLD 208外部向安全SRAM342中直接加載數(shù)據(jù),(ii)從在PLD 208中運(yùn)行的應(yīng)用加載數(shù)據(jù),以生成數(shù)據(jù)并且將其加載到安全SRAM 342上,或者(iii)采用外部處理以與PLD 208中的應(yīng)用一起工作從而向安全SRAM 342上加載數(shù)據(jù)(即公共密鑰交換)。這樣的控制電路可以在功率損耗情況下或者在應(yīng)用加載和/或配置期間操作。在其他實(shí)施例中,這樣的控制電路可以使用(i)硬開(kāi)關(guān)、諸如保險(xiǎn)絲,(ii)軟開(kāi)關(guān)、諸如PLD208上的RAM比特,和/或(iii)如本文中所描述的在安全SRAM 342內(nèi)部的存儲(chǔ)器位置來(lái)控制數(shù)據(jù)保持。

為了確保該數(shù)據(jù)在設(shè)備電力被去除時(shí)不丟失,可以使用備用電池350。在本具體示例中,電池350通過(guò)關(guān)于線路354上的接地供應(yīng)線路352上的電壓VSRB來(lái)對(duì)存儲(chǔ)器或安全SRAM 342供電。電池350可以與FPGA 340分離,或者其可以用FPGA 340來(lái)包括作為其封裝的部分。例如,F(xiàn)PGA 340可以封裝在也包括電池350的球形陣列封裝件中??蛇x地,F(xiàn)PGA 340和電池可以放置在因此被封裝的公共襯底上。

在前活動(dòng)通常在制造工廠進(jìn)行,諸如集成電路或原始設(shè)備制造商的工廠。隨后的活動(dòng)通常在FPGA 340在現(xiàn)場(chǎng)使用或者在應(yīng)用中使用時(shí)發(fā)生。這些活動(dòng)通常依照上電或電力回收來(lái)進(jìn)行。

圖3B圖示根據(jù)本發(fā)明的實(shí)施例的已加密比特流的解密和FPGA的配置。該框圖包括配置設(shè)備330、FPGA 340和電池350。配置設(shè)備330仍可以是FPGA 340的部分。電池350對(duì)安全SRAM 342供電,使得其內(nèi)容在連接至FPGA 340的其他電源電壓被去除時(shí)不丟失。

解密電路裝置344通常也是固定的或者硬邏輯。可選地,解密電路344可以在某種程度上可配置。例如,解密電路裝置344可以包括具有附加可編程邏輯元件的硬邏輯,或者其可以完全可編程。如果需要在某種程度上配置解密電路裝置344,則從安全SRAM 342接收解密電路配置比特流作為配置數(shù)據(jù)和參數(shù)348的部分。如果要對(duì)解密電路裝置344的各種參數(shù)編程,則由解密電路裝置344通過(guò)安全SRAM 342接收這些參數(shù)。該信息可以包括要使用的解密的舍入位數(shù)、S框條目、置換設(shè)置和其他信息。注意,需要在設(shè)備的其余部分的已加密配置比特流能夠解密之前來(lái)配置解密電路裝置344。

一旦配置解密電路裝置344并且接收到任何所需要的參數(shù),則從安全SRAM 342接收密鑰347。電路裝置的其余部分、具體地是EPOF 344的配置數(shù)據(jù)由解密電路裝置344接收。解密電路裝置344對(duì)已加密程序?qū)ο笪募?34解密并且生成已解密程序?qū)ο笪募?49,其然后用于配置FPGA 340上的其他可編程電路裝置346。

圖4A是圖示根據(jù)本發(fā)明的實(shí)施例的對(duì)配置比特流加密并且在安全ARM中存儲(chǔ)密鑰和其他參數(shù)的方法的流程圖。在步驟400,例如通過(guò)使用硬件設(shè)計(jì)程序生成配置比特流。在步驟405,接收密鑰??蛇x地,在步驟410接收解密電路裝置的參數(shù)和配置信息(到它們使用的程度)。在步驟415,使用密鑰對(duì)配置比特流加密。在步驟420,可以將該已加密配置比特流存儲(chǔ)在配置設(shè)備或者FPGA上。

在步驟425,用電池對(duì)安全RAM供電以保護(hù)要加載的安全RAM的內(nèi)容。在步驟430,將密鑰和可選的解密電路參數(shù)存儲(chǔ)在安全SRAM中。在這點(diǎn)上,可以在步驟435運(yùn)送FPGA和配置設(shè)備(如果使用)以將其投入使用。

圖4A中所示的步驟通常在集成電路或原始設(shè)備制造商的位置進(jìn)行。圖4B中的步驟通常稍后執(zhí)行,比如在測(cè)試期間執(zhí)行,或者當(dāng)設(shè)備在用戶的應(yīng)用中被使用時(shí)進(jìn)行。

圖4B是圖示根據(jù)本發(fā)明的實(shí)施例的對(duì)已加密配置比特流解密并且配置FPGA的方法的流程圖。在上電或其他適當(dāng)?shù)氖录螅诓襟E450從安全RAM接收(如果使用)解密電路裝置參數(shù)和配置數(shù)據(jù)。在步驟455使用從安全RAM接收的配置比特流和參數(shù)對(duì)解密電路進(jìn)行配置。在步驟460,由解密電路從安全RAM接收密鑰。

在步驟465,從FPGA上的配置設(shè)備或存儲(chǔ)器位置接收先前加密的配置比特流。在步驟470,使用密鑰對(duì)配置比特流解密。在步驟475,使用新解密的配置比特流配置FPGA。

圖5圖示根據(jù)本發(fā)明的實(shí)施例的對(duì)安全RAM供電的方法。在本特定示例中,F(xiàn)PGA 510被分為形成環(huán)520的輸入/輸出電路裝置以及核530,核530包括安全SRAM 532、解密電路裝置534和其他可編程電路裝置536。

在本特定示例中,輸入/輸出電路裝置520、核530和安全SRAM532單獨(dú)供電。具體地,VCCio 540和GNDio 542對(duì)I/O環(huán)520供電,F(xiàn)PGA核530由VCCint 550和GNDint 552來(lái)供電,而安全SRAM 530由VCCsrb 560和GNDsrb 562來(lái)供電。本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,可以使用連接至不同電路裝置部分的更多或更少的電源。

圖6圖示根據(jù)本發(fā)明的實(shí)施例的對(duì)安全RAM供電的另一方法。在本附圖中,與圖5相比,添加了電源開(kāi)關(guān)。具體地,本附圖包括FPGA 610和FPGA核,F(xiàn)PGA 610包括輸入/輸出環(huán)(I/O環(huán)境620),F(xiàn)PGA核包括安全SRAM 632、解密電路裝置634、其他可編程電路裝置636和電源開(kāi)關(guān)670。在本示例中,電源開(kāi)關(guān)670被包括在FPGA610上。在本發(fā)明的其他實(shí)施例中,電源開(kāi)關(guān)670可以是單獨(dú)的,而非被包括在FPGA 610上。

如之前,I/O環(huán)620、FPGA核630和安全SRAM 632接收單獨(dú)的電力供應(yīng)。具體地,VCCio 640和GNDio 642對(duì)I/O環(huán)620供電,而FPGA VCCint 650和GNDint 662對(duì)核630供電。

安全SRAM由電源開(kāi)關(guān)670的輸出來(lái)供電,該輸出提供VCCsrb670和GNDsrb 662。電源開(kāi)關(guān)670在本示例中接收VCCio 640、VCCint 650和VCCbat 670。VCCbat 660可以由電池、諸如圖3中的電池350來(lái)供電。電源開(kāi)關(guān)670在其輸入處選擇電壓中的一個(gè)并且向安全SRAM 632提供VCCsrb 672。

在本發(fā)明的各種實(shí)施例,電源開(kāi)關(guān)670可以接收這些或其他電力供應(yīng)。在各種實(shí)施例中,電源開(kāi)關(guān)670可以使用不同的算法用于選擇這些電源中的哪個(gè)被提供作為給安全SRAM 632的VCCsrb672。電源開(kāi)關(guān)670也可以執(zhí)行另外的功能,諸如電源調(diào)節(jié)或?yàn)V波。也就是,電源開(kāi)關(guān)670可以使用所施加的輸入電壓中的一個(gè)或多個(gè)生成VCCsrb 672,而非簡(jiǎn)單地將所選擇的施加電壓連接至安全SRAM 632。

在具體的實(shí)施例中,當(dāng)VCCbat 660是電源開(kāi)關(guān)670接收的唯一活動(dòng)(active)電力供應(yīng)時(shí),該電壓用于生成VCCsrb 672。然而,如果電源開(kāi)關(guān)670所接收的其他電力供應(yīng)之一活動(dòng),也就是在某個(gè)電壓門限以上,則不使用VCCbat 660,使得能夠延長(zhǎng)實(shí)際電池壽命。如果有多于一個(gè)其他電源活動(dòng),例如VCCio 640和VCCint 650都活動(dòng),則使用兩個(gè)電源中的消聲器、通常為VCCint 650來(lái)生成VCCsrb672,然而在其他實(shí)施例中,使用噪聲電源。在另一實(shí)施例中,如果VCCbat 660活動(dòng),則該電源由電源開(kāi)關(guān)670用于生成VCCsrb 672。

安全SRAM 632通常也是易失性存儲(chǔ)器。因此,如果其電源被去除,則存儲(chǔ)器的內(nèi)容丟失。這在其中由于篡改或其他未授權(quán)事件而需要快速擦除安全SRAM 632的內(nèi)容的應(yīng)用中很有用。當(dāng)使用易失性存儲(chǔ)器形成安全SRAM 632時(shí),這樣的擦除可以通過(guò)中斷到安全SRAM 632的電源連接來(lái)實(shí)現(xiàn)。

圖7圖示根據(jù)本發(fā)明的實(shí)施例的在使用關(guān)閉開(kāi)關(guān)的同時(shí)對(duì)安全RAM供電的方法。本附圖包括被分為輸入/輸出環(huán)720和FPGA核730的FPGA 710。FPGA核730包括安全SRAM 732、解密電路裝置734和其他可編程電路裝置736。VCCio 740和GNDio 742對(duì)I/O環(huán)720供電,而VCCint 750和GNDint 752對(duì)FPGA核730供電。

VCCsrb 760和GNDsrb 762對(duì)安全SRAM供電。VCCsrb 760電源可以通過(guò)關(guān)閉開(kāi)關(guān)770從安全SRAM 732斷開(kāi)。關(guān)閉開(kāi)關(guān)770可以形成在FPGA 710上。可選地,關(guān)閉開(kāi)關(guān)770可以在片外。關(guān)閉開(kāi)關(guān)770可以用檢測(cè)篡改或其他未授權(quán)事件的電路裝置來(lái)控制。

一個(gè)這樣的未授權(quán)事件是未授權(quán)配置比特流的加載。因此,可以驗(yàn)證所使用的配置比特流。如果配置比特流無(wú)效,則到安全SRAM72的電力供應(yīng)被中斷并且其內(nèi)容丟失。

圖6中的電源開(kāi)關(guān)670和圖7中的關(guān)閉開(kāi)關(guān)770可以合并成單個(gè)單元,如圖8所示,合并為電源開(kāi)關(guān)870。電源開(kāi)關(guān)870在不同收入電壓中選擇以提供VCCsrb 872,并且也在消息認(rèn)證代碼832的指令之下中斷電力供應(yīng)。

圖8圖示根據(jù)本發(fā)明的實(shí)施例的在使用通過(guò)方法認(rèn)證代碼控制的關(guān)閉開(kāi)關(guān)的同時(shí)對(duì)安全RAM供電的方法。本附圖包括FPGA 810,F(xiàn)PGA 810包括I/O環(huán)820和FPGA核830。FPGA核830包括安全SRAM 832、解密電路裝置834、消息認(rèn)證代碼836、其他可編程電路裝置838和電源開(kāi)關(guān)870。

在本示例中,VCCio 840和GNDio 842對(duì)I/O換820供電,F(xiàn)PGA核830由VCCint 850和GNDint 852來(lái)供電,而VCCsrb 872和GNDsrb872對(duì)安全SRAM 832供電。電源開(kāi)關(guān)870生成VCCsrb 872。電源開(kāi)關(guān)870在本示例中接收VCCio 840、VCCint 850和VCCbat 860作為輸入。在本發(fā)明的實(shí)施例中,電源開(kāi)關(guān)870可以接收這些或其他電壓。電源開(kāi)關(guān)870可以在如以上關(guān)于電源開(kāi)關(guān)670所描述的所接收的電壓中選擇。

在解密電路裝置834對(duì)配置比特流解密之后,可以通過(guò)消息認(rèn)證代碼836對(duì)配置比特流進(jìn)行處理,消息認(rèn)證代碼836驗(yàn)證配置比特流。如果配置比特流無(wú)效,則電源開(kāi)關(guān)870被指令從安全SRAM832去除電力。以該方式,在使用未認(rèn)證配置比特流時(shí),安全SRAM832的內(nèi)容丟失。片上電路裝置可以跟蹤安全SRAM的內(nèi)容的丟失并且適當(dāng)?shù)赝S肍PGA 810。

圖9圖示根據(jù)本發(fā)明的實(shí)施例的生成配置比特流驗(yàn)證信號(hào)以控制電源關(guān)閉開(kāi)關(guān)的方法。圖8中的消息認(rèn)證代碼836可以使用本方法。該配置比特流包括首部部分和配置數(shù)據(jù)。配置數(shù)據(jù)被加密,而首部部分沒(méi)有被加密。在一些情況下,首部的部分可以公知,或者不能確定。如果首部被編碼,則該信息可以產(chǎn)生加密密鑰的發(fā)現(xiàn)。因此,首部不加密。首部部分包括期望值906和其余部分904。在本示例中,首部的不是期望值906的部分沒(méi)有被使用。

已加密配置數(shù)據(jù)被函數(shù)框910接收,函數(shù)框910執(zhí)行其上的函數(shù)。輸出920被提供給比較電路930。比較電路將期望值906與線路922上的輸出相比較并且做出有效性的確定940。如果配置比特流無(wú)效,則可以從安全RAM去除電源,從而擦除其內(nèi)容。

圖10是圖示根據(jù)本發(fā)明的實(shí)施例的生成配置比特流驗(yàn)證信號(hào)以控制安全RAM關(guān)閉開(kāi)關(guān)的方法的流程圖。在步驟1010,接收包括期望值的首部。在步驟1020,接收已加密配置數(shù)據(jù)。首部和已加密配置數(shù)據(jù)形成已加密配置比特流。

在步驟1030,通過(guò)函數(shù)框?qū)σ鸭用芘渲脭?shù)據(jù)執(zhí)行函數(shù)以便生成輸出。在步驟1040,將該輸出與期望值相比較。在步驟1050,確定被接收作為首部的部分的期望值是否匹配由函數(shù)框提供的輸出。如果匹配,則比特流有效1060。如果不匹配,則比特流無(wú)效1070。

圖11圖示可以用作圖9中的函數(shù)框的電路。所接收的配置數(shù)據(jù)被分為明文部分1102、1104和1106。這些部分的連結(jié)產(chǎn)生對(duì)配置數(shù)據(jù)的重編。配置數(shù)據(jù)1102的第一部分使用密鑰1112被加密,從而在線路1114上生成輸出。線路1114上的輸出通過(guò)異或電路1122與配置數(shù)據(jù)114的第二部分求異或。線路1124上的結(jié)果通過(guò)大量類似框,直到到達(dá)最終級(jí)。在這點(diǎn)上,線路1126上的累積結(jié)果通過(guò)異或電路1122與配置數(shù)據(jù)1106求異和。輸出通過(guò)加密框1130被加密并且結(jié)果被提供給最終加密級(jí)1140。加密塊1140提供可以與被提供作為配置比特流首部的部分的期望值相比較的輸出。雖然加密函數(shù)1110、1120、1130和1140被示出為單獨(dú)的電路,然而在實(shí)際的集成電路中,這些函數(shù)可以是一個(gè)電路。

在本發(fā)明的各種實(shí)施例中,數(shù)據(jù)可以存儲(chǔ)在安全SRAM中作為已加密或未加密數(shù)據(jù),或者作為其組合。數(shù)據(jù)可以使用AES、DES或3-DES來(lái)加密??蛇x地,可以使用其他標(biāo)準(zhǔn)或?qū)S眉用芩惴ā?/p>

該安全SRAM中存儲(chǔ)的數(shù)據(jù)也可以包括用于已加密配置比特流或其他數(shù)據(jù)已加密數(shù)據(jù)的解密的密鑰??梢源鎯?chǔ)其他信息,諸如芯片身份數(shù)據(jù)和其他加密數(shù)據(jù)。

在FPGA上運(yùn)行的應(yīng)用也可以使用安全SRAM來(lái)存儲(chǔ)數(shù)據(jù)以便保護(hù)其在電力被去除時(shí)或者在應(yīng)用配置/重新配置過(guò)程期間不被丟失。例如,應(yīng)用可以將數(shù)據(jù)存儲(chǔ)在安全SRAM中,并且使用認(rèn)證代碼來(lái)保護(hù)之,認(rèn)證代碼也存儲(chǔ)在安全SRAM中并且在電力被去除時(shí)被保護(hù)以免被擦除。稍后,當(dāng)該應(yīng)用需要恢復(fù)其數(shù)據(jù)時(shí),例如,在電力恢復(fù)之后(也就是電力被去除并且然后恢復(fù),或者更具體地,在電力下降至門限以下之后又上升至其上),應(yīng)用可以使用認(rèn)證代碼訪問(wèn)數(shù)據(jù)。以該方式存儲(chǔ)的數(shù)據(jù)通常被存儲(chǔ)為未加密數(shù)據(jù),因?yàn)槠鋬H由知道認(rèn)證代碼的應(yīng)用可訪問(wèn),然而該數(shù)據(jù)也可以被存儲(chǔ)為已加密數(shù)據(jù)。

代替依賴于認(rèn)證代碼,應(yīng)用可以在將數(shù)據(jù)存儲(chǔ)在安全SRAM中之前對(duì)數(shù)據(jù)進(jìn)行加密。這保護(hù)數(shù)據(jù),因?yàn)樵跊](méi)有正確的解密密鑰的情況下訪問(wèn)該已加密數(shù)據(jù)的應(yīng)用不能正確地解密數(shù)據(jù)。

在本發(fā)明的以上和其他實(shí)施例中,對(duì)安全SRAM的讀取和寫(xiě)入訪問(wèn)可以由訪問(wèn)控制單元來(lái)控制。訪問(wèn)控制單元通常是硬邏輯電路,也就是,其是預(yù)布線的,然而在各種實(shí)施例中,其可以由大量可編程邏輯元件形成。可選地,某些訪問(wèn)控制電路可以是硬邏輯,而部分可以使用可編程邏輯元件來(lái)形成。例如,在一些實(shí)施例中,簡(jiǎn)單版本的訪問(wèn)控制電路可以是硬邏輯,而可選的附加電路裝置、諸如編碼器/解碼器電路可以使用可編程邏輯元件來(lái)形成。

通常,讀取訪問(wèn)受限,而寫(xiě)入訪問(wèn)不受限,然而寫(xiě)入訪問(wèn)在本發(fā)明的各種實(shí)施例中也可以是受限的。讀取訪問(wèn)通常限于更小等級(jí),因?yàn)榭梢匀コo安全SRAM的電力,從而擦除其內(nèi)容。

訪問(wèn)控制電路可以通過(guò)在可編程邏輯元件中運(yùn)行的應(yīng)用或者通過(guò)外部用戶或應(yīng)用用于限制對(duì)安全SRAM中的數(shù)據(jù)的訪問(wèn)。然而,通常,訪問(wèn)控制電路被旁路或者自動(dòng)允許片上配置控制器的訪問(wèn),然而也可以限制該電路的訪問(wèn)。下面的三個(gè)附圖中示出了訪問(wèn)安全SRAM中的數(shù)據(jù)(具體地,用于對(duì)已加密比特流進(jìn)行解密的解密密鑰)的配置控制器的示例。

圖12圖示在PFGA的配置期間在配置控制器、訪問(wèn)控制電路和安全SRAM之間的示例性數(shù)據(jù)傳遞。在本示例中,要用于對(duì)已加密比特流解密的密鑰(密鑰1242)被存儲(chǔ)為未加密數(shù)據(jù)。該附圖包括FPGA 1210,F(xiàn)PGA 1210還包括I/O環(huán)1220和FPGA核1230。FPGA核1230包括安全SRAM 1240、可編程邏輯元件1250、配置控制器1260和訪問(wèn)控制電路1270。

在本示例中,配置控制器1260從訪問(wèn)控制電路請(qǐng)求密鑰1242。由于配置控制器1260是已知的硬邏輯電路,所以訪問(wèn)控制電路1270不需要來(lái)自配置控制器1260的具體的認(rèn)證,然而在本發(fā)明的其他實(shí)施例中,可能需要這樣的認(rèn)證。因此,訪問(wèn)控制電路1270從安全SRAM 1240讀取密鑰1242。訪問(wèn)控制電路1270然后向配置控制器1260提供密鑰。配置控制器1260接收已加密配置比特流并且對(duì)已加密配置比特流解密。然后使用已解密配置比特流對(duì)PFGA進(jìn)行配置。

在本發(fā)明的各種實(shí)施例中,訪問(wèn)控制電路1270也可以限制配置控制器1260對(duì)安全SRAM 1240的訪問(wèn)。通常,不進(jìn)行該操作,因?yàn)榕渲每刂破?260是預(yù)先布線在FPGA上的硬邏輯電路并且不進(jìn)行秘密的重新配置。因此,配置控制器1260可以被訪問(wèn)控制電路1270授權(quán)自動(dòng)訪問(wèn),或者其可以直接連接至安全SRAM 1240。下面的兩個(gè)附圖中示出了圖示這至少兩個(gè)方法的流程圖。

圖13A是圖示FPGA的操作的流程圖,其中配置控制器被訪問(wèn)控制電路授權(quán)對(duì)安全SRAM中存儲(chǔ)的解密密鑰的自動(dòng)訪問(wèn)。

具體地,在步驟1310,配置控制器從訪問(wèn)控制電路請(qǐng)求密鑰。在步驟1320,訪問(wèn)控制電路從安全SRAM讀取密鑰。在步驟1330,訪問(wèn)控制電路向配置控制器提供密鑰。在步驟1340,配置控制器接收已加密比特流。配置控制器然后使用密鑰對(duì)已加密比特流解密并且配置FPGA。

圖13B是圖示FPGA的操作的流程圖,其中配置控制器直接連接或者可以旁路訪問(wèn)控制電路。在步驟1360,配置控制器從安全SRAM接收密鑰。在步驟1370,配置控制器接收已加密比特流,并且在步驟1380,配置控制器對(duì)比特流解密并且配置FPGA。

可編程邏輯電路裝置中運(yùn)行的應(yīng)用和/或配置/重新配置或安裝可以通過(guò)在電池備份安全SRAM中存儲(chǔ)數(shù)據(jù)來(lái)保護(hù)數(shù)據(jù)以免其被擦除。所存儲(chǔ)的數(shù)據(jù)被保護(hù)并且與外部條件隔離以免影響可編程邏輯電路裝置。例如,如果從FPGA上去除電力,則應(yīng)用可以在電力恢復(fù)時(shí)恢復(fù)數(shù)據(jù)。應(yīng)用可以通過(guò)在將數(shù)據(jù)存儲(chǔ)在安全SRAM中之前對(duì)該數(shù)據(jù)加密來(lái)保護(hù)數(shù)據(jù)。可選地,其可以將認(rèn)證代碼連同數(shù)據(jù)一起存儲(chǔ)在存儲(chǔ)器中。當(dāng)應(yīng)用嘗試恢復(fù)數(shù)據(jù)時(shí),其向訪問(wèn)控制電路提供數(shù)據(jù)的位置和認(rèn)證代碼。如果當(dāng)前認(rèn)證代碼給定,則訪問(wèn)控制電路向應(yīng)用提供數(shù)據(jù)。下面的兩個(gè)附圖中示出了如何實(shí)現(xiàn)該操作的示例。

圖14圖示FPGA中的示例性數(shù)據(jù)傳遞,其中通過(guò)要求認(rèn)證代碼來(lái)限制對(duì)存儲(chǔ)器中的數(shù)據(jù)的訪問(wèn)。該附圖包括FPGA 1410,F(xiàn)PGA1410包括I/O環(huán)1420和FPGA核1430。FPGA核1430包括安全SRAM1440、可編程邏輯元件1450、配置控制器1460和訪問(wèn)控制電路1470。

在本示例中,在可編程邏輯1450中運(yùn)行的FPGA在安全SRAM1440中具有先前存儲(chǔ)的數(shù)據(jù)以及對(duì)應(yīng)的認(rèn)證代碼1442。為了恢復(fù)該數(shù)據(jù),可以采用任何數(shù)量的方法來(lái)驗(yàn)證訪問(wèn),例如密碼等。在一個(gè)實(shí)施例中,應(yīng)用向訪問(wèn)控制電路提供數(shù)據(jù)和認(rèn)證代碼的地址。訪問(wèn)控制電路驗(yàn)證由應(yīng)用提供的認(rèn)證代碼。例如,訪問(wèn)控制電路可以逐比特匹配,或者以安全SRAM 1440中存儲(chǔ)的認(rèn)證代碼1442使用與由應(yīng)用提供的認(rèn)證代碼相關(guān)聯(lián)的函數(shù)。如果代碼匹配或者函數(shù)關(guān)系建立,則訪問(wèn)控制電路許可應(yīng)用對(duì)數(shù)據(jù)的訪問(wèn)。如果失配,則拒絕訪問(wèn),這可以使用各種技術(shù)來(lái)指示而不必返回錯(cuò)誤數(shù)據(jù)。

圖15是圖示通過(guò)要求認(rèn)證代碼來(lái)限制對(duì)安全SRAM中的數(shù)據(jù)的讀取訪問(wèn)的方法的流程圖。在本示例中,應(yīng)用之前已經(jīng)將數(shù)據(jù)和認(rèn)證代碼存儲(chǔ)在安全SRAM中。該寫(xiě)入訪問(wèn)通常也不受限,然而在本發(fā)明的各種實(shí)施例中,該訪問(wèn)也可以受限。例如,訪問(wèn)控制電路可以要求認(rèn)證代碼以改寫(xiě)先前使用代碼保護(hù)的數(shù)據(jù)。

具體地,在步驟1510,應(yīng)用向訪問(wèn)電路提供數(shù)據(jù)和認(rèn)證代碼的地址。在步驟1520,訪問(wèn)電路將認(rèn)證代碼與安全SRAM中存儲(chǔ)的認(rèn)證代碼相比較。通常,安全SRAM中存儲(chǔ)的認(rèn)證代碼由應(yīng)用存儲(chǔ),然而其他電路、諸如訪問(wèn)控制電路可以生成認(rèn)證代碼,其然后存儲(chǔ)在安全SRAM中并且給出至應(yīng)用以備后續(xù)使用。在步驟1530,如果代碼匹配,則訪問(wèn)控制電路授權(quán)對(duì)數(shù)據(jù)的訪問(wèn),否則,拒絕訪問(wèn)。

在以上示例中,數(shù)據(jù)通常被存儲(chǔ)作為未加密數(shù)據(jù)。然而,如以上討論的,數(shù)據(jù)也可以被存儲(chǔ)作為已加密數(shù)據(jù)。例如,用于解密已加密比特流的解密密鑰本身可以使用第二密鑰被加密。該第二密鑰可以存儲(chǔ)為未加密數(shù)據(jù),或者其可以使用又一密鑰來(lái)被加密。在以下示例中,使用第二密鑰來(lái)對(duì)解密密鑰進(jìn)行加密,第二密鑰存儲(chǔ)作為未加密數(shù)據(jù)。

圖16A是圖示存儲(chǔ)解密密鑰的方法的流程圖,其中使用第二密鑰對(duì)解密密鑰加密并且兩個(gè)密鑰都存儲(chǔ)在安全SRAM中。在本示例中,訪問(wèn)控制電路負(fù)責(zé)對(duì)解密密鑰解密。這具有以下優(yōu)點(diǎn):配置控制器不需要知道解密密鑰如何存儲(chǔ)在存儲(chǔ)器中,也就是,配置控制器不需要知道解密密鑰是已加密數(shù)據(jù)還是未加密數(shù)據(jù)。

具體地,在步驟1610,配置控制器請(qǐng)求安全SRAM中存儲(chǔ)的解密密鑰。在步驟1615,訪問(wèn)控制電路從安全SRAM讀取已加密解密密鑰和第二未加密密鑰。在步驟1620,訪問(wèn)控制電路使用第二密鑰對(duì)已加密解密密鑰進(jìn)行解密并且向配置控制器提供解密密鑰。在步驟1625,配置控制器接收已加密比特流,在步驟1630,配置控制器對(duì)已加密配置比特流解密并且使用已解密配置比特流來(lái)配置FPGA。

圖16B是圖示存儲(chǔ)解密密鑰的方法的另一流程圖,其中使用第二密鑰來(lái)加密解密密鑰,并且兩個(gè)密鑰都存儲(chǔ)在安全SRAM中。在本示例中,配置控制器負(fù)責(zé)對(duì)解密密鑰解密。

具體地,在步驟1650,配置控制器請(qǐng)求解密密鑰。在步驟1655,訪問(wèn)控制電路從存儲(chǔ)器讀取已加密解密密鑰和未加密第二密鑰并且將它們提供給配置控制器。在步驟1660,配置控制器使用第二密鑰對(duì)已加密解密密鑰進(jìn)行解密。在步驟1665,配置控制器接收已加密配置比特流。使用解密密鑰對(duì)已加密配置比特流解密,并且在步驟1670,配置FPGA。

另外,應(yīng)用還可以在安全SRAM中存儲(chǔ)已加密數(shù)據(jù)。雖然可能需要認(rèn)證代碼以訪問(wèn)該已加密數(shù)據(jù),然而這樣的認(rèn)證通常不需要,因?yàn)閮H具有正確的解密密鑰的應(yīng)用可以使用數(shù)據(jù)。(然而,本發(fā)明的各種實(shí)施例也可以要求某種認(rèn)證以改寫(xiě)先前寫(xiě)入的數(shù)據(jù)。)下面的三個(gè)附圖中示出了圖示在安全SRAM中存儲(chǔ)已加密數(shù)據(jù)的應(yīng)用的示例。

圖17圖示設(shè)備中的示例性數(shù)據(jù)流,其中應(yīng)用通過(guò)加密在安全SRAM中具有受保護(hù)數(shù)據(jù)。本附圖包括FPGA 1710,F(xiàn)PGA 1710還包括I/O環(huán)1720和FPGA核1730。FPGA核1730包括安全SRAM1740、可編程邏輯元件1750、配置控制器1760和訪問(wèn)控制電路1770。在本示例中,在可編程邏輯1750中運(yùn)行的應(yīng)用在安全SRAM 1740中具有先前存儲(chǔ)的已加密數(shù)據(jù)1742,例如在電力恢復(fù)之前,并且現(xiàn)在應(yīng)用需要恢復(fù)所存儲(chǔ)的數(shù)據(jù)。數(shù)據(jù)可以由應(yīng)用本身或者通過(guò)訪問(wèn)控制電路1770來(lái)加密。

應(yīng)用向訪問(wèn)控制電路1770提供已加密數(shù)據(jù)1742的地址。訪問(wèn)控制電路讀取已加密數(shù)據(jù)1742并且將其提供給應(yīng)用。應(yīng)用然后使用其密鑰對(duì)數(shù)據(jù)解密。僅具有正確密鑰的應(yīng)用可以使用已加密數(shù)據(jù),否則數(shù)據(jù)無(wú)用。

雖然在本實(shí)施例中,解密由應(yīng)用本身來(lái)進(jìn)行,然而在其他實(shí)施例中,解密可以由訪問(wèn)控制電路來(lái)進(jìn)行。例如,這在訪問(wèn)控制電路使用密鑰對(duì)數(shù)據(jù)加密然后將密鑰提供給應(yīng)用用于進(jìn)一步使用的情況下很有用。下面的流程圖中示出了示例。

圖18A是圖示接收安全SRAM中存儲(chǔ)的已加密數(shù)據(jù)的方法的流程圖。在本示例中,訪問(wèn)控制單元針對(duì)應(yīng)用解密數(shù)據(jù)。已加密數(shù)據(jù)原始可以由應(yīng)用或者由訪問(wèn)控制電路來(lái)加密,這取決于確切的實(shí)現(xiàn)方式。

具體地,在步驟1810,應(yīng)用向訪問(wèn)控制電路提供已加密數(shù)據(jù)和密鑰的地址。在步驟1820,訪問(wèn)控制電路從安全SRAM讀取已加密數(shù)據(jù)。在步驟1830,訪問(wèn)控制電路對(duì)已加密數(shù)據(jù)解密并且將已解密數(shù)據(jù)提供給應(yīng)用。該數(shù)據(jù)也僅在應(yīng)用向訪問(wèn)控制電路給出正確密鑰的情況下有用。

圖18B是圖示接收安全SRAM中存儲(chǔ)的已加密數(shù)據(jù)的方法的另一流程圖。在本示例中,應(yīng)用本身負(fù)責(zé)解密數(shù)據(jù)。

具體地,在步驟1850,應(yīng)用向訪問(wèn)控制電路給出已加密數(shù)據(jù)的地址。在步驟1860,訪問(wèn)控制電路從安全SRAM讀取已加密數(shù)據(jù)。在步驟1870,訪問(wèn)控制電路向應(yīng)用提供已加密數(shù)據(jù)。在步驟1880,應(yīng)用使用其密鑰對(duì)數(shù)據(jù)解密。該數(shù)據(jù)也僅在應(yīng)用使用正確的解密密鑰的情況下有用。

在一個(gè)實(shí)施例中,為了靈活使用,可以對(duì)安全SRAM進(jìn)行分區(qū)而沒(méi)有訪問(wèn)控制,被分區(qū)成包括訪問(wèn)控制區(qū)域加上數(shù)據(jù)存儲(chǔ)區(qū)域,其中數(shù)據(jù)存儲(chǔ)區(qū)域可以被進(jìn)一步分區(qū)成受保護(hù)區(qū)域。為了進(jìn)一步保護(hù)安全SRAM中存儲(chǔ)的數(shù)據(jù),對(duì)訪問(wèn)控制部分進(jìn)行寫(xiě)入保護(hù)。存在多個(gè)可以采用的寫(xiě)入保護(hù)方案,諸如一次性寫(xiě)入,其中一旦存儲(chǔ)器位置被寫(xiě)入,則其不會(huì)被改寫(xiě)。

圖19是根據(jù)一些實(shí)施例的示例性FPGA 1910的框圖。FPGA1910包括I/O環(huán)1920和FPGA核1930。FPGA核1930包括具有多個(gè)獨(dú)立可重新配置區(qū)域1952和1954的可編程電路裝置1950、配置控制器1960、訪問(wèn)控制電路1970和多個(gè)安全SRAM 1940、1944和1946。下面的描述描述配置控制器1960的某些功能,但是應(yīng)當(dāng)理解,這些功能中的一些或全部可以在訪問(wèn)控制1970中實(shí)現(xiàn)。實(shí)際上,在一些實(shí)施例中,配置控制器1960和訪問(wèn)控制1970可以是同一模塊。在其他實(shí)施例中,SRAM 1940、1944和1946中的每個(gè)具有其自己的專用訪問(wèn)控制器。

在各種實(shí)施例中,配置控制器1960被配置成將一個(gè)或多個(gè)存儲(chǔ)器塊1940、1944、1946進(jìn)行分區(qū)以向多個(gè)獨(dú)立可重配置區(qū)域(例如區(qū)域1952、和1954)分配不同的存儲(chǔ)器分區(qū)。圖19示出了分區(qū)1941和1942作為示例。然而,應(yīng)當(dāng)理解,可以分配任何數(shù)目的分區(qū),并且向每個(gè)分區(qū)分配的存儲(chǔ)器位置在存儲(chǔ)器中的物理位置方面可以變化。在一些實(shí)施例中,配置控制器還被配置成例如通過(guò)訪問(wèn)控制器1970來(lái)控制對(duì)存儲(chǔ)器塊的訪問(wèn)。比如,配置控制器可以被配置成防止獨(dú)立可重配置區(qū)域中的全部或某些獨(dú)立可重配置區(qū)域訪問(wèn)向另一獨(dú)立可重配置區(qū)域分配的存儲(chǔ)器分區(qū)。該訪問(wèn)限制可以應(yīng)用于讀取訪問(wèn)、寫(xiě)入訪問(wèn)或者這二者,并且可以取決于獨(dú)立可重配置區(qū)域請(qǐng)求訪問(wèn)來(lái)變化。

在一個(gè)說(shuō)明性實(shí)施例中,F(xiàn)PGA 1910包括n個(gè)存儲(chǔ)器塊(例如存儲(chǔ)器1940、1944和1946)和m個(gè)獨(dú)立可重配置區(qū)域(例如包括區(qū)域1952和1954),其中m>n。配置控制器1960可以被配置成在m個(gè)獨(dú)立可重配置區(qū)域上對(duì)n個(gè)存儲(chǔ)器塊進(jìn)行分區(qū),例如使得m個(gè)獨(dú)立可重配置區(qū)域中的每個(gè)被分配n個(gè)存儲(chǔ)器塊中的一個(gè)或多個(gè)上的存儲(chǔ)器分區(qū)。分區(qū)可以具有任意合適的大小。配置控制器1960還可以被配置成控制對(duì)n個(gè)存儲(chǔ)器塊中的每個(gè)的訪問(wèn)(例如單獨(dú)地或者與訪問(wèn)控制器1970組合)以防止m個(gè)獨(dú)立可重配置區(qū)域中的任何給定的獨(dú)立可重配置區(qū)域訪問(wèn)向m個(gè)獨(dú)立可重配置區(qū)域中的另一獨(dú)立可重配置區(qū)域分配的存儲(chǔ)器分區(qū)。

在一些實(shí)施例中,分區(qū)是固定的;在其他實(shí)施例中,分區(qū)可以在FPGA的第一配置上設(shè)置。也可以有默認(rèn)分區(qū),其可以可選地被第一配置改寫(xiě)??梢源鎯?chǔ)每個(gè)可配置區(qū)域的分區(qū)信息,包括開(kāi)始和結(jié)束地址和/或存儲(chǔ)器大小,例如作為開(kāi)始數(shù)據(jù)、第一配置數(shù)據(jù)或默認(rèn)數(shù)據(jù)的部分。在一個(gè)方法中,每個(gè)可配置區(qū)域可以被分配依次跟隨在前的可配置區(qū)域分配的存儲(chǔ)空間的連續(xù)的存儲(chǔ)空間,從而消除對(duì)于存儲(chǔ)開(kāi)始和結(jié)束地址的需要(存儲(chǔ)器大小可以是固定或默認(rèn)值和/或存儲(chǔ)器大小可以在分配之后存儲(chǔ))。

在各種實(shí)施例中,配置控制器1960被配置成確定是否應(yīng)當(dāng)授權(quán)獨(dú)立可重配置區(qū)域?qū)ο虿煌瑓^(qū)域分配的存儲(chǔ)器分區(qū)的訪問(wèn)。該確定例如可以基于第一配置上設(shè)置的比特來(lái)做出。響應(yīng)于確定,配置控制器1960之后可以控制對(duì)存儲(chǔ)器塊的訪問(wèn)以使得第一獨(dú)立可重配置區(qū)域能夠訪問(wèn)存儲(chǔ)器分區(qū),或者拒絕請(qǐng)求。配置控制器1960也可以基于所存儲(chǔ)的比特確定是否應(yīng)當(dāng)授權(quán)獨(dú)立可重配置區(qū)域?qū)Υ鎯?chǔ)器分區(qū)的讀取訪問(wèn)和寫(xiě)入訪問(wèn)。響應(yīng)于只讀確定,配置控制器1960可以控制對(duì)存儲(chǔ)器塊的訪問(wèn)以使得獨(dú)立可重配置區(qū)域能夠讀取存儲(chǔ)器分區(qū)中存儲(chǔ)的數(shù)據(jù)并且防止區(qū)域向存儲(chǔ)器分區(qū)寫(xiě)入數(shù)據(jù)。響應(yīng)于只寫(xiě)確定,配置控制器1960可以控制對(duì)存儲(chǔ)器塊的訪問(wèn)以使得獨(dú)立可重配置區(qū)域能夠向存儲(chǔ)器分區(qū)寫(xiě)入數(shù)據(jù)并且防止區(qū)域從存儲(chǔ)器分區(qū)讀取數(shù)據(jù)。最后,響應(yīng)于讀寫(xiě)確定,配置控制器1960可以控制對(duì)存儲(chǔ)器塊的訪問(wèn)以使得獨(dú)立可重配置區(qū)域能夠?qū)Υ鎯?chǔ)器分區(qū)數(shù)據(jù)讀取和數(shù)據(jù)寫(xiě)入兩種操作。當(dāng)然,應(yīng)當(dāng)理解,不同的可配置區(qū)域可以具有不同的訪問(wèn)存儲(chǔ)器分區(qū)的特權(quán),并且這些特權(quán)可以從該分區(qū)到另一分區(qū)發(fā)生變化。

配置控制器1960可以使用一個(gè)或多個(gè)訪問(wèn)控制技術(shù)來(lái)控制對(duì)存儲(chǔ)器塊及其分區(qū)的訪問(wèn)。在一個(gè)方法中,F(xiàn)PGA 1910被設(shè)計(jì)成使得所有存儲(chǔ)器訪問(wèn)必須通過(guò)配置控制器1960。也就是,F(xiàn)PGA 1910可以用如下方式來(lái)設(shè)計(jì):該方式需要向配置控制器提供對(duì)存儲(chǔ)器的訪問(wèn)請(qǐng)求,并且配置控制器代表請(qǐng)求者(例如獨(dú)立可重配置區(qū)域)與存儲(chǔ)器通信。這例如可以通過(guò)確保(通過(guò)固定設(shè)計(jì)或者通過(guò)編程可配置互連)獨(dú)立可重配置區(qū)域沒(méi)有被提供有到存儲(chǔ)器塊的任何直接連接來(lái)實(shí)現(xiàn)。配置控制器在這樣的場(chǎng)景中僅完成確定為被授權(quán)的請(qǐng)求(例如通過(guò)向存儲(chǔ)器或特定存儲(chǔ)器分區(qū)轉(zhuǎn)發(fā)請(qǐng)求)。配置控制器可以被自動(dòng)授權(quán)以對(duì)存儲(chǔ)器塊的任何分區(qū)的數(shù)據(jù)讀取和/或數(shù)據(jù)寫(xiě)入。

在另一方法中,獨(dú)立可重配置區(qū)域可以被提供有到存儲(chǔ)器塊的直接連接(例如通過(guò)通信路徑1972并且可選地通過(guò)訪問(wèn)控制1970),但是存儲(chǔ)器分區(qū)中存儲(chǔ)的數(shù)據(jù)被加密。在這樣的場(chǎng)景中,配置控制器可以在確定存儲(chǔ)器請(qǐng)求被授權(quán)的情況下通過(guò)加密數(shù)據(jù)來(lái)限制對(duì)存儲(chǔ)器分區(qū)的訪問(wèn)。

可以使用任何其他合適的方法來(lái)控制對(duì)存儲(chǔ)器塊及其分區(qū)的訪問(wèn),并且在一些實(shí)施例中,可以實(shí)現(xiàn)這些方法的組合。另外,可以實(shí)現(xiàn)這些訪問(wèn)控制特征以僅控制讀取訪問(wèn)請(qǐng)求、寫(xiě)入訪問(wèn)請(qǐng)求或者這二者。在又一實(shí)施例中,可以實(shí)現(xiàn)訪問(wèn)控制而沒(méi)有使用配置控制器,例如對(duì)數(shù)據(jù)加密和/或使用數(shù)據(jù)存儲(chǔ)MAC,如以上和以下進(jìn)一步描述的。

在一些實(shí)施例中,每個(gè)存儲(chǔ)器分區(qū)存儲(chǔ)例如使用消息認(rèn)證代碼(MAC)生成器(例如圖11中所示的)生成的多個(gè)消息認(rèn)證代碼。當(dāng)配置控制器1960接收到配置流時(shí),MAC可以被生成并且與所存儲(chǔ)的MAC相比較以確定所生成的MAC是否匹配所存儲(chǔ)的MAC中的任何MAC。如果配置控制器1960確定匹配,則其可以授權(quán)對(duì)存儲(chǔ)匹配MAC的存儲(chǔ)器分區(qū)的訪問(wèn)。否則,配置控制器1960可以拒絕訪問(wèn)。

在一些實(shí)施例中,配置控制器1960被配置成響應(yīng)于確定未授權(quán)的獨(dú)立可重新配置區(qū)域試圖訪問(wèn)存儲(chǔ)器分區(qū)來(lái)使用零值改寫(xiě)該存儲(chǔ)器分區(qū)中存儲(chǔ)的所有數(shù)據(jù)。在其他實(shí)施例中,通過(guò)切斷給包含目標(biāo)存儲(chǔ)器分區(qū)的存儲(chǔ)器塊的電力來(lái)擦除數(shù)據(jù),如以上所描述的。

在一些實(shí)施例中,一旦第一配置分配存儲(chǔ)器分區(qū)和MAC代碼,則它們不能通過(guò)任何授權(quán)功能來(lái)被改變。如果控制器檢測(cè)到存儲(chǔ)器分區(qū)或MAC代碼發(fā)生變化,則其將擦除設(shè)備上的所有數(shù)據(jù)。這將防止攻擊者嘗試使用配置框來(lái)獲取對(duì)設(shè)備的控制。可選地,第一配置可以包括可以定義分區(qū)訪問(wèn)或MAC代碼的一些融合比特或其他非易失性存儲(chǔ)器的設(shè)置。

在各種實(shí)施例中,消息認(rèn)證代碼(MAC)生成器被配置成輸入所接收的配置流并且輸出所生成的消息認(rèn)證代碼。MAC生成器可以實(shí)現(xiàn)為硬邏輯、軟邏輯或者硬邏輯和軟邏輯的組合。在一個(gè)方法中,MAC生成器可以包括用軟邏輯實(shí)現(xiàn)的伽羅瓦域(GF)乘法器(例如FPGA構(gòu)造)。例如,可以使用修改后的軟邏輯DSP塊來(lái)實(shí)現(xiàn)這些GF乘法器。DSP塊可以支持比如GF擴(kuò)展的有限場(chǎng)減小,如2014年10月27日提交的美國(guó)專利申請(qǐng)第14/524,526中討論的,其全部?jī)?nèi)容通過(guò)引用合并于此。

MAC生成器可以從存儲(chǔ)器塊中的一個(gè)或多個(gè)中獲取多個(gè)密鑰之一用于生成消息認(rèn)證代碼。可選地,密鑰在可編程電路裝置的第一配置期間可以嵌入在MAC生成器的軟邏輯部分中。

在一些實(shí)施例中,可以向單個(gè)可重配置區(qū)域分配多個(gè)存儲(chǔ)器塊上的分區(qū)。例如,一個(gè)分區(qū)可以存儲(chǔ)加密密鑰和MAC,另一分區(qū)可以存儲(chǔ)備用數(shù)據(jù)。多個(gè)存儲(chǔ)器塊可以用于安全地備份數(shù)據(jù)。作為另一示例,存儲(chǔ)器塊可以不足以存儲(chǔ)可重配置區(qū)域所需要的所有數(shù)據(jù),并且因此可以向其分配一個(gè)或多個(gè)其他存儲(chǔ)器塊上的一個(gè)或多個(gè)分區(qū)。

圖20是圖示根據(jù)一些實(shí)施例的在具有多個(gè)存儲(chǔ)器塊和獨(dú)立可重配置區(qū)域的FPGA中控制存儲(chǔ)器訪問(wèn)的方法的流程圖。在步驟2002,在m個(gè)獨(dú)立可重配置區(qū)域上、例如在第一配置下對(duì)n個(gè)存儲(chǔ)器塊進(jìn)行分區(qū)。在步驟2004,可以在存儲(chǔ)器分區(qū)中的一個(gè)或多個(gè)上存儲(chǔ)多個(gè)MAC,例如在第一配置下或者在數(shù)據(jù)稍后被已認(rèn)證區(qū)域存儲(chǔ)在存儲(chǔ)器塊中時(shí)。在步驟2006,例如通過(guò)另一區(qū)域針對(duì)所接收的配置流生成MAC。在步驟2008,將所生成的MAC與所存儲(chǔ)的MAC中的每個(gè)相比較,并且在步驟2010,處理確定所生成的MAC是否匹配所存儲(chǔ)的MAC中的任何一個(gè)。如果是,則在步驟2012授權(quán)存儲(chǔ)器訪問(wèn)。如果沒(méi)有匹配,則在步驟2014拒絕存儲(chǔ)器訪問(wèn)。

根據(jù)一方面,一種用于存儲(chǔ)數(shù)據(jù)的裝置包括:可編程電路裝置,包括第一和第二獨(dú)立可重新配置區(qū)域;存儲(chǔ)器塊,被配置成存儲(chǔ)數(shù)據(jù);以及配置控制器。配置控制器被配置成:對(duì)存儲(chǔ)器塊進(jìn)行分區(qū)以向第一獨(dú)立可重新配置區(qū)域分配第一存儲(chǔ)器分區(qū)并且向第二獨(dú)立可重新配置區(qū)域分配第二存儲(chǔ)器分區(qū)。另外,配置控制器被配置成:從第一和第二獨(dú)立可重新配置區(qū)域接收訪問(wèn)存儲(chǔ)器塊的請(qǐng)求;以及控制對(duì)存儲(chǔ)器塊的訪問(wèn)以防止第一獨(dú)立可重新配置區(qū)域訪問(wèn)第二存儲(chǔ)器分區(qū)并且防止第二獨(dú)立可重新配置區(qū)域訪問(wèn)第一存儲(chǔ)器分區(qū)。

在一些實(shí)施例中,配置控制器還被配置成:基于存儲(chǔ)比特確定是否應(yīng)當(dāng)授權(quán)第一獨(dú)立可重新配置區(qū)域訪問(wèn)第二存儲(chǔ)器分區(qū);以及控制對(duì)存儲(chǔ)器塊的訪問(wèn)以響應(yīng)于確定應(yīng)當(dāng)授權(quán)第一獨(dú)立可重新配置區(qū)域訪問(wèn)第二存儲(chǔ)器分區(qū)來(lái)使得第一獨(dú)立可重新配置區(qū)域能夠訪問(wèn)第二存儲(chǔ)器分區(qū),從而配置控制器被配置成控制對(duì)存儲(chǔ)器塊的訪問(wèn)以響應(yīng)于確定不應(yīng)當(dāng)授權(quán)第一獨(dú)立可重新配置區(qū)域訪問(wèn)第二存儲(chǔ)器分區(qū)來(lái)防止第一獨(dú)立可重新配置區(qū)域訪問(wèn)第二存儲(chǔ)器分區(qū)。

在一些實(shí)施例中,配置控制器還被配置成:基于存儲(chǔ)比特確定是否應(yīng)當(dāng)授權(quán)第一獨(dú)立可重新配置區(qū)域?qū)Φ诙鎯?chǔ)器分區(qū)進(jìn)行讀取訪問(wèn)和寫(xiě)入訪問(wèn)。首先,響應(yīng)于只讀確定,控制對(duì)存儲(chǔ)器塊的訪問(wèn)以使得第一獨(dú)立可重新配置區(qū)域能夠讀取第二存儲(chǔ)器分區(qū)中存儲(chǔ)的數(shù)據(jù)并且防止第一獨(dú)立可重新配置區(qū)域向第二存儲(chǔ)器分區(qū)中寫(xiě)入數(shù)據(jù)。其次,響應(yīng)于只寫(xiě)確定,控制對(duì)存儲(chǔ)器塊的訪問(wèn)以使得第一獨(dú)立可重新配置區(qū)域能夠向第二存儲(chǔ)器分區(qū)中寫(xiě)入數(shù)據(jù)并且防止第一獨(dú)立可重新配置區(qū)域從第二存儲(chǔ)器分區(qū)讀取數(shù)據(jù)。第三,響應(yīng)于讀取和寫(xiě)入確定,控制對(duì)存儲(chǔ)器塊的訪問(wèn)以使得第一獨(dú)立可重新配置區(qū)域既能夠從第二存儲(chǔ)器分區(qū)讀取數(shù)據(jù)也能夠向第二存儲(chǔ)器分區(qū)寫(xiě)入數(shù)據(jù)。

在一些實(shí)施例中,裝置還包括n個(gè)附加存儲(chǔ)器塊和m個(gè)獨(dú)立可重新配置區(qū)域,其中m>n,其中配置控制器還被配置成在m個(gè)獨(dú)立可重新配置區(qū)域上對(duì)n個(gè)附加存儲(chǔ)器塊進(jìn)行分區(qū)。另外,配置控制器被配置成:控制對(duì)n個(gè)附加存儲(chǔ)器塊的訪問(wèn)以防止m個(gè)獨(dú)立可重新配置區(qū)域中的任何給定的獨(dú)立可重新配置區(qū)域訪問(wèn)向m個(gè)獨(dú)立可重新配置區(qū)域中的另一獨(dú)立可重新配置區(qū)域分配的存儲(chǔ)器分區(qū)。

在一些實(shí)施例中,裝置內(nèi)的存儲(chǔ)器塊在第一配置下被分區(qū)。

在一些實(shí)施例中,每個(gè)存儲(chǔ)器分區(qū)存儲(chǔ)多個(gè)消息認(rèn)證代碼。

在一些實(shí)施例中,配置控制器還被配置成:針對(duì)所接收的配置流生成消息認(rèn)證代碼;并且將所生成的消息認(rèn)證代碼與所存儲(chǔ)的消息認(rèn)證代碼中的每個(gè)相比較。另外,配置控制器被配置成:當(dāng)所存儲(chǔ)的消息認(rèn)證代碼中的任何代碼匹配所生成的消息認(rèn)證代碼時(shí),確定所接收的配置流是認(rèn)證配置流。

在一些實(shí)施例中,裝置還包括:消息認(rèn)證代碼(MAC)生成器,其被配置成輸入所接收的配置流并且輸出所生成的消息認(rèn)證代碼,并且MAC生成器被實(shí)現(xiàn)為硬邏輯和軟邏輯的組合。

在一些實(shí)施例中,MAC生成器從存儲(chǔ)器塊中獲取多個(gè)密鑰之一用于生成消息認(rèn)證代碼。

在一些實(shí)施例中,密鑰在可編程電路裝置的第一配置期間嵌入在MAC生成器的軟邏輯部分中,并且密鑰用于生成消息認(rèn)證代碼。

在一些實(shí)施例中,配置控制器還被配置成響應(yīng)于確定第一獨(dú)立可重新配置區(qū)域嘗試訪問(wèn)第二存儲(chǔ)器分區(qū)來(lái)使用零值改寫(xiě)第二存儲(chǔ)器分區(qū)中存儲(chǔ)的所有數(shù)據(jù)。

在一些實(shí)施例中,裝置包括加密電路,加密電路被配置成響應(yīng)于配置控制器確定認(rèn)證訪問(wèn)請(qǐng)求來(lái)對(duì)給定存儲(chǔ)器分區(qū)中存儲(chǔ)的數(shù)據(jù)進(jìn)行解密。

在一些實(shí)施例中,裝置的配置控制器被自動(dòng)授權(quán)從存儲(chǔ)器塊的任何分區(qū)讀取數(shù)據(jù)。

根據(jù)一方面,一種用于存儲(chǔ)數(shù)據(jù)的裝置包括:可編程電路裝置,包括m個(gè)獨(dú)立可重新配置區(qū)域;n個(gè)存儲(chǔ)器塊,用于存儲(chǔ)數(shù)據(jù),其中m>n;以及被配置成針對(duì)所接收的配置流生成消息認(rèn)證代碼的消息認(rèn)證代碼(MAC)生成器。另外,可編程電路裝置還包括配置控制器,其被配置成:在m個(gè)獨(dú)立可重新配置區(qū)域上對(duì)n個(gè)存儲(chǔ)器塊進(jìn)行分區(qū);在存儲(chǔ)器分區(qū)中的至少一個(gè)中存儲(chǔ)多個(gè)消息認(rèn)證代碼;將所生成的消息認(rèn)證代碼與所存儲(chǔ)的多個(gè)消息認(rèn)證代碼中的每個(gè)相比較;以及當(dāng)所存儲(chǔ)的多個(gè)消息認(rèn)證代碼中的任何一個(gè)匹配所生成的消息認(rèn)證代碼時(shí),確定所接收的配置流是認(rèn)證配置流。

在一些實(shí)施例中,MAC生成器還被配置成從n個(gè)存儲(chǔ)器塊中獲取多個(gè)密鑰中的至少一個(gè)密鑰用于生成消息認(rèn)證代碼。

在一些實(shí)施例中,配置控制器還被配置成:控制對(duì)n個(gè)存儲(chǔ)器塊的訪問(wèn)以防止m個(gè)獨(dú)立可重新配置區(qū)域中的至少一個(gè)獨(dú)立可重新配置區(qū)域訪問(wèn)向m個(gè)獨(dú)立可重新配置區(qū)域中的另一獨(dú)立可重新配置區(qū)域分配的存儲(chǔ)器分區(qū)。

根據(jù)一方面,一種控制具有n個(gè)存儲(chǔ)器塊和m個(gè)獨(dú)立可重新配置區(qū)域的現(xiàn)場(chǎng)可編程門陣列(FPGA)中的存儲(chǔ)器訪問(wèn)的方法,包括:在m個(gè)獨(dú)立可重新配置區(qū)域上對(duì)n個(gè)存儲(chǔ)器塊進(jìn)行分區(qū);在存儲(chǔ)器分區(qū)中的至少一個(gè)中存儲(chǔ)多個(gè)消息認(rèn)證代碼;針對(duì)所接收的配置流生成消息認(rèn)證代碼;將所生成的消息認(rèn)證代碼與所存儲(chǔ)的多個(gè)消息認(rèn)證代碼中的每個(gè)相比較;以及當(dāng)所存儲(chǔ)的多個(gè)消息認(rèn)證代碼中的任何消息認(rèn)證代碼匹配所生成的消息認(rèn)證代碼時(shí),確定所接收的配置流是認(rèn)證配置流。

在一些實(shí)施例中,方法還包括:從n個(gè)存儲(chǔ)器塊中獲取(檢索)多個(gè)密鑰中的至少一個(gè)密鑰用于生成消息認(rèn)證代碼。

在一些實(shí)施例中,方法還包括:控制對(duì)n個(gè)存儲(chǔ)器塊的訪問(wèn)以防止m個(gè)獨(dú)立可重新配置區(qū)域中的至少一個(gè)獨(dú)立可重新配置區(qū)域訪問(wèn)向m個(gè)獨(dú)立可重新配置區(qū)域中的另一獨(dú)立可重新配置區(qū)域分配的存儲(chǔ)器分區(qū)。

在一些實(shí)施例中,方法還包括:控制對(duì)n個(gè)存儲(chǔ)器塊的訪問(wèn)以防止m個(gè)獨(dú)立可重新配置區(qū)域中的任何獨(dú)立可重新配置區(qū)域訪問(wèn)向m個(gè)獨(dú)立可重新配置區(qū)域中的另一獨(dú)立可重新配置區(qū)域分配的存儲(chǔ)器分區(qū)。

已經(jīng)出于說(shuō)明和描述的目的呈現(xiàn)了本發(fā)明的示例性實(shí)施例的以上描述。其并非意圖排他或者將本發(fā)明限于所公開(kāi)的精確形式,很多修改和變型鑒于以上教導(dǎo)都是可能的。實(shí)施例被選擇和描述以便最佳地解釋本發(fā)明及其實(shí)際應(yīng)用的原理,從而使得本領(lǐng)域其他技術(shù)人員能夠在各種實(shí)施例中并且在適合所預(yù)期的特定用途的各種修改的情況下最佳地使用本發(fā)明。

當(dāng)前第1頁(yè)1 2 3 
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
大理市| 临泽县| 彭州市| 封开县| 台中市| 禄劝| 洛扎县| 瓦房店市| 门源| 搜索| 津市市| 津南区| 钟山县| 布拖县| 奈曼旗| 长葛市| 陆良县| 东平县| 丹东市| 抚顺县| 岗巴县| 昌邑市| 德阳市| 平利县| 如东县| 溧水县| 玛曲县| 通城县| 武穴市| 平武县| 乐都县| 房山区| 略阳县| 黔江区| 理塘县| 咸阳市| 建平县| 福建省| 新泰市| 清水河县| 白山市|