本申請是于2010年6月6日提交的美國專利申請第12/830,447號的部分繼續(xù)申請,美國專利申請第12/830,447號是于2006年9月7日提交的題為“SECURITY RAM BLOCK”的美國專利申請第11/517,689號(現(xiàn)在是美國專利第7,752,407號)的分案申請,所有這些申請的全部內容以引用的方式引入本申請。
背景技術:
本發(fā)明總體上涉及在集成電路上存儲數(shù)據(jù),并且更具體地涉及保護存儲在現(xiàn)場可編程門陣列(FPGA)上的電池供電的存儲器中的數(shù)據(jù)。
諸如現(xiàn)場可編程門陣列等集成電路的電路復雜性和所執(zhí)行的任務在過去的幾年中極大地增加。被配置成執(zhí)行復雜的用戶定義的功能的高度復雜的軟件或應用在可編程邏輯元件上運行。
通常,這些應用需要在存儲器中存儲數(shù)據(jù),例如,應用可以在不同時間存儲數(shù)據(jù)用于稍后使用??赡苄枰鎯ζ渌匾臄?shù)據(jù),諸如芯片身份、許可信息和加密密鑰。不幸的是,如果電力從存儲器上被去除,則該數(shù)據(jù)將丟失,除非存儲器是非易失性的。
但是非易失性存儲器通常需要或者不與用于制造FPGA的處理技術兼容或者使用極大地增加設備成本的額外的處理步驟的處理。另外,在很多情況下,存儲器中存儲的數(shù)據(jù)的安全性很重要,因此,理想的是,如果檢測到篡改,則快速地擦除數(shù)據(jù)。不幸的是,很難快速地擦除非易失性存儲器。另外,非易失性存儲器中存儲的數(shù)據(jù)能夠通過逆向工程來被發(fā)現(xiàn)。
為了保護該數(shù)據(jù),限制對其的訪問也很重要,使得數(shù)據(jù)不會被違法用戶或應用偷盜或拷貝。例如,可以通過使用密鑰對其加密來保護配置設計。如果該密鑰存儲在存儲器中用于在解密期間使用,則理想的是,保護并且限制對該密鑰的訪問。
因此,需要一種能夠提供用于FPGA的存儲器的電路、方法和裝置,其在給FPGA的電力被去除時保持數(shù)據(jù),但是兼容傳統(tǒng)的PFGA制造過程并且可以在篡改或其他未授權事件的情況下被快速擦除。另外,理想的是,通過限制對存儲器中存儲的數(shù)據(jù)的訪問來提供進一步保護。
技術實現(xiàn)要素:
因此,本發(fā)明的實施例提供一種用于在FPGA上的存儲器中存儲應用數(shù)據(jù)、密鑰、認證代碼或其他信息的電路、方法和裝置。本發(fā)明的示例性實施例提供在片上易失性存儲器中存儲該數(shù)據(jù)的FPGA。電池對存儲器供電以防止在給FPGA的電力被去除時所存儲的信息的擦除。在各種實施例中,電池通常是存儲器的電力的源,在其他實施例中,可以接通一個或多個其他電源以取代電池作為給存儲器的電力的源,例如用于延長電池壽命。
在本發(fā)明的各種實施例中,給存儲器的電力可以被中斷以便擦除存儲器的內容。例如,如果試圖篡改或未授權配置,則切斷給存儲器的電力,從而擦除存儲器。在一個示例性實施例中,使用消息認證代碼(MAC)來驗證配置比特流。MAC在所接收的比特流沒有被驗證通過的情況下從存儲器去除電力。
本發(fā)明的各種實施例還限制對存儲器中存儲的數(shù)據(jù)的訪問。通常,讀取訪問受到限制,寫入訪問也可以受到限制,特別是在數(shù)據(jù)被改寫的情況下。在本發(fā)明的具體實施例中,通過使用認證代碼來限制訪問。僅在應用提供正確的認證代碼或者存儲器中存儲的訪問代碼和認證代碼具有預定義的函數(shù)關系的情況下,應用被授權訪問。本發(fā)明的另一實施例在存儲數(shù)據(jù)之前使用密鑰對數(shù)據(jù)加密。僅具有正確密鑰的應用可以使用數(shù)據(jù)。本發(fā)明的實施例可以合并本文中描述的這些或其他特征中的一個或多個特征。
在一個實施例中,本發(fā)明提供了一種用于安全地存儲數(shù)據(jù)的裝置。裝置包括包含被分配以保護數(shù)據(jù)存儲的安全部分的存儲器核、以及被配置成控制到存儲器核的安全部分的數(shù)據(jù)寫入和來自存儲器核的安全部分的數(shù)據(jù)讀取的控制電路。裝置被適配成在存儲器的重新配置操作期間(諸如在軟件應用安裝過程期間配置應用時,其涉及來自存儲器核的數(shù)據(jù)讀取和向存儲器核存儲數(shù)據(jù))防止對安全部分中存儲的數(shù)據(jù)的改變。
本發(fā)明的實施例還提供用于在可編程電路裝置(例如FPGA)的多個獨立可重新配置區(qū)域之間共享一個或多個存儲器塊的電路、方法和裝置。在本發(fā)明的各種實施例中,配置控制器被配置成對一個或多個存儲器塊進行分區(qū)以向多個獨立可重新配置區(qū)域分配不同的存儲器分區(qū)。配置控制器還可以被配置成控制對存儲器塊的訪問。比如,配置控制器可以被配置成防止獨立可重新配置區(qū)域中的全部或某些獨立可重新配置區(qū)域訪問已經(jīng)向另一獨立可重新配置區(qū)域分配的存儲器分區(qū)。該訪問限制可以應用于讀取訪問、寫入訪問或者這二者,并且可以取決于獨立可重新配置區(qū)域請求訪問而改變。
在一個說明性實施例中,裝置包括n個存儲器塊和m個獨立可重新配置區(qū)域,其中m>n,并且配置控制器被配置成在m個獨立可重新配置區(qū)域上分區(qū)為n個存儲器塊。配置控制器還可以被配置成控制對n個存儲器塊中的每個的訪問以防止m個獨立可重新配置區(qū)域中的任何給定的獨立可重新配置區(qū)域訪問向m個獨立可重新配置區(qū)域中的另一獨立可重新配置區(qū)域分配的存儲器分區(qū)。
在一些實施例中,每個存儲器分區(qū)存儲例如使用消息認證代碼(MAC)生成器生成的多個消息認證代碼。當配置控制器接收到配置流時,MAC可以被生成并且與所存儲的MAC相比較以確定所生成的MAC是否匹配所存儲的MAC中的任何MAC。如果配置控制器確定匹配,則其可以授權對存儲匹配MAC的存儲器分區(qū)的訪問。否則,配置控制器可以拒絕訪問。
在一些實施例中,配置控制器被配置成響應于確定未授權的獨立可重新配置區(qū)域試圖訪問存儲器分區(qū)來使用零值改寫該存儲器分區(qū)中存儲的所有數(shù)據(jù)。在其他實施例中,通過切斷給包含目標存儲器分區(qū)的存儲器塊的電力來擦除數(shù)據(jù)。
配置控制器可以使用一個或多個訪問控制技術來控制對存儲器塊及其分區(qū)的訪問。在一個方法中,F(xiàn)GPA被設計成使得所有存儲器訪問必須經(jīng)過配置控制器,即訪問存儲器的請求必須被提供給配置控制器,并且配置控制器代表請求者(例如獨立可重新配置區(qū)域)與存儲器通信。這例如可以通過確保(通過固定設計或者通過對可配置互連編程)獨立可重新配置區(qū)域沒有被提供到存儲器塊的任何直接連接來完成。配置控制器在這樣的場景中可以僅完成其確定被認證的請求(例如通過向存儲器或特定的存儲器分區(qū)轉發(fā)請求)。
在另一方法中,獨立可重新配置區(qū)域可以提供有到存儲器塊的直接連接,但是存儲器分區(qū)中存儲的數(shù)據(jù)被加密。在這樣的場景中,配置控制器可以僅在確定存儲器請求被認證的情況下通過解密數(shù)據(jù)來限制對存儲器分區(qū)的訪問。
可以使用任何其他合適的方法來控制對存儲器塊及其分區(qū)的訪問,并且在一些實施例中,可以實現(xiàn)這些方法的組合。另外,可以實現(xiàn)這些訪問控制特征以僅控制讀取訪問請求、寫入訪問請求、或者這二者。在又一其他實施例中,可以實現(xiàn)訪問控制而沒有使用配置控制器,例如通過對數(shù)據(jù)加密和/或使用數(shù)據(jù)來存儲MAC,如以上和下面進一步描述的。
通過參考以下詳細描述和附圖可以獲得對本發(fā)明的屬性和優(yōu)點的更好的理解。
附圖說明
圖1是通過結合本發(fā)明的實施例而被改進的可編程邏輯器件的簡化框圖;
圖2是通過結合本發(fā)明的實施例而被改進的電子系統(tǒng)的框圖;
圖3A是圖示根據(jù)本發(fā)明的實施例的已加密配置比特流和解密密鑰的存儲的框圖,而圖3B圖示根據(jù)本發(fā)明的實施例的已加密比特流的解密和FPGA的配置;
圖4A是圖示根據(jù)本發(fā)明的實施例的對配置比特流加密以及在安全RAM中存儲密鑰和其他參數(shù)的方法的流程圖,而圖4B是圖示根據(jù)本發(fā)明的實施例的對已加密配置比特流解密并且配置FPGA的方法的流程圖;
圖5圖示根據(jù)本發(fā)明的實施例的對安全RAM供電的方法;
圖6圖示根據(jù)本發(fā)明的實施例的對安全RAM供電的另一方法;
圖7圖示根據(jù)本發(fā)明的實施例的在使用關閉開關的同時對安全RAM供電的方法;
圖8圖示根據(jù)本發(fā)明的實施例的在使用由消息認證代碼控制的關閉開關的同時對安全RAM供電的方法;
圖9圖示根據(jù)本發(fā)明的實施例的生成配置比特流驗證信號以控制安全RAM關閉開關的方法;
圖10是圖示根據(jù)本發(fā)明的實施例的生成配置比特流驗證信號以控制安全RAM關閉開關的方法的流程圖;
圖11圖示可以用作圖9中的功能框的電路;
圖12圖示在FPGA的配置期間在配置控制器、接入控制電路和安全SRAM之間的示例性數(shù)據(jù)傳遞;
圖13A和圖13B是圖示FPGA的操作的流程圖,其中配置控制器被授權對安全SRAM中存儲的解密密鑰的自動訪問;
圖14圖示FPGA中的數(shù)據(jù)的示例性傳遞,其中通過要求認證代碼來限制對存儲器中的數(shù)據(jù)的訪問;
圖15是圖示通過要求認證代碼來限制對安全SRAM中的數(shù)據(jù)的讀取訪問的方法的流程圖;
圖16A和16B是圖示配置設備的方法的流程圖,其中使用第二密鑰來對解密密鑰加密并且兩個密鑰都存儲在安全SRAM中;
圖17圖示設備中的示例性數(shù)據(jù)流,其中應用通過加密在安全SRAM中具有受保護的數(shù)據(jù);
圖18A和圖18B是圖示接收和解密安全SRAM中存儲的已加密數(shù)據(jù)的方法的流程圖;
圖19是包括配置控制器、訪問控制電路和多個安全SRAM的示例性FPGA的框圖,其中每個安全SRAM具有多個分區(qū);以及
圖20是圖示控制具有多個存儲器塊和獨立可重新配置區(qū)域的FPGA中的存儲器訪問的方法的流程圖。
具體實施方式
圖1是示例性高密度可編程邏輯器件100的簡化的部分框圖,其中可以使用根據(jù)本發(fā)明的技術。PLD 100包括通過可變長度和速度的行列互連的網(wǎng)絡互連的可編程邏輯陣列塊(LAB)102的二維陣列。LAB 102包括多個(例如10個)邏輯元件(LE),LE是提供用戶定義的邏輯功能的高效實現(xiàn)的小邏輯單元。
PLD 100還包括分布式存儲器結構,其包括遍及陣列提供的可變大小的RAM塊。RAM塊包括例如512個比特塊104、4K個塊106和提供512K比特的RAM的M塊108。這些存儲器塊還可以包括移位寄存器和FIFO緩沖器。PLD 100還包括例如可以實現(xiàn)具有加法和減法特征的乘法器的數(shù)字信號處理(DPS)塊110。
應當理解,PLD 100在本文中僅出于說明目的而描述并且本發(fā)明可以用很多不同類型的PLD、FPGA和其他類型的數(shù)字集成電路來實現(xiàn)。
雖然圖1所示的類型的PLD提供實現(xiàn)系統(tǒng)級解決方案所需要的資源中的很多資源,然而本發(fā)明也可以有益于其中PLD是若干部件之一的系統(tǒng)。圖2示出了其中可以實施本發(fā)明的示例性數(shù)字系統(tǒng)200的框圖。系統(tǒng)200可以是編程數(shù)字計算機系統(tǒng)、數(shù)字信號處理系統(tǒng)、專用數(shù)字開關網(wǎng)絡或者其他處理系統(tǒng)。另外,這樣的系統(tǒng)可以被設計用于各種應用,諸如電信系統(tǒng)、汽車系統(tǒng)、控制系統(tǒng)、消費電子、個人計算機、因特網(wǎng)通信和連網(wǎng)等。另外,系統(tǒng)200可以設置在單個板上、多個板上或者多個外殼中。
系統(tǒng)200包括通過一個或多個總線互連在一起的處理單元202、存儲器單元204和I/O單元206。根據(jù)本示例性實施例,可編程邏輯器件(PLD)208嵌入在處理單元202中。PLD 208可以服務圖2中的系統(tǒng)內的很多不同目的。PLD 208例如可以是處理單元202的邏輯構建塊,以支持其內部和外部操作。PLD 208被編程為實現(xiàn)執(zhí)行其在系統(tǒng)操作中的特定角色所需要的邏輯功能。PLD 208可以具體地通過連接210耦合至存儲器204并且通過連接212耦合至I/O單元206。
處理單元202可以將數(shù)據(jù)指向適當?shù)南到y(tǒng)部件用于處理和存儲,執(zhí)行存儲器204中存儲的程序或者經(jīng)由I/O單元206接收和傳輸數(shù)據(jù)、或者其他類似功能。處理單元202可以是中央處理單元(CPU)、微處理器、浮點協(xié)處理器、圖形協(xié)處理器、硬件控制器、微控制器、被編程用于用作控制器的可編程邏輯器件、網(wǎng)絡控制器等。另外,在很多實施例中,通常不需要CPU。
例如,取代CPU,一個或多個PLD 208可以控制系統(tǒng)的邏輯操作。在實施例中,PLD 208用作可配置處理器,其可以根據(jù)需要被重新編程以處理特定的計算任務??蛇x地,可編程邏輯器件208本身可以包括嵌入式微處理器。存儲器單元204可以是隨機存取存儲器(RAM)、只讀存儲器(ROM)、固定或軟盤媒體、PC卡閃盤存儲器、磁帶或者任何其他存儲裝置、或者這些存儲裝置的任意組合。
圖3A是圖示根據(jù)本發(fā)明的實施例的存儲已加密配置比特流和解密密鑰的方法的框圖。該附圖包括軟件模塊和硬件接口32、配置設備330、FPGA 340和電池350。在本發(fā)明的各種實施例中,配置設備330可以被包括作為FPGA 340的部分。例如,配置設備330可以是FPGA 340上的存儲器。該附圖與其他包括的附圖一樣出于說明目的而被示出,而不限制本發(fā)明或者權利要求的可能實施例。
軟件模塊和硬件接口320包括加密軟件模塊322、密鑰軟件模塊324和解密電路數(shù)據(jù)模塊326。這些軟件模塊使用一個或多個硬件接口用于向FPGA 340和可選的配置設備330傳遞數(shù)據(jù)。FGPA 340包括安全SRAM 342、解密電路裝置344和其他可編程電路裝置346。
密鑰312被接收或者由密鑰軟件模塊324生成,將其作為密鑰322提供給FPGA 340上的安全SRAM 342并且提供給加密軟件模塊322。配置比特流310由加密軟件模塊322來接收,加密軟件模塊322使用密鑰324生成已加密配置比特流或已加密程序對象文件、EPOF320,其被提供給配置設備330。解密電路配置數(shù)據(jù)314可以可選地由解密電路數(shù)據(jù)軟件模塊326來接收,解密電路數(shù)據(jù)軟件模塊326提供數(shù)據(jù)用于在安全SRAM 342中存儲。該解密電路配置數(shù)據(jù)可以包括解密電路配置比特流、解密電路參數(shù)(諸如舍入的位數(shù)、置換框條目)和其他參數(shù)、或者這二者。
解密電路裝置344可以是固定解密電路,也就是硬邏輯或硬連線電路。解密電路裝置344可選地可以根據(jù)可編程邏輯或其他可配置電路來配置,或者其可以包括這些技術的組合。這些邏輯元件可以通過作為解密電路配置數(shù)據(jù)326的部分的解密電路配置比特流來配置。在要配置解密電路344時,提供解密電路配置數(shù)據(jù)326并且將其存儲在安全SRAM 342中。
在各種實施例中,可以使用標準的或者傳統(tǒng)的加密方法和電路,諸如三元DES(3-DES)或AES??蛇x地,可以使用專用加密電路。傳統(tǒng)算法和專用算法都可以用各種加密算法參數(shù)來定義,其也可以是FGPA 340上存儲的解密電路配置數(shù)據(jù)324的部分。例如,在使用標準加密方法時,諸如舍入的位數(shù)等變量可以用加密算法參數(shù)來定義。在本發(fā)明的其中解密電路固定或硬連線的各種實施例中,這些加密參數(shù)也可以固定,使得不需要加密算法參數(shù)。
在本發(fā)明的典型實施例中,安全SRAM 342是易失性存儲器。在本發(fā)明的各種實施例中,密鑰322以及可選地解密電路配置數(shù)據(jù)326保持在易失性存儲器342中。
在一個實施例中,安全SRAM 342可以包括下面參考圖12進一步描述的其他電路,諸如訪問控制電路,其可以用于防止對安全SRAM 342的未授權訪問,并且可以使用密鑰或其他安全措施(諸如密碼)來提供安全的通信接口。這樣的訪問控制電路使得能夠向布置在PLD 208外部或者駐留在PLD 208中的電路和應用中加載數(shù)據(jù)或者從其中獲取數(shù)據(jù)或者不向其中加載數(shù)據(jù)或從其中獲取數(shù)據(jù)。例如,這樣的訪問控制電路可以控制(i)從PLD 208外部向安全SRAM342中直接加載數(shù)據(jù),(ii)從在PLD 208中運行的應用加載數(shù)據(jù),以生成數(shù)據(jù)并且將其加載到安全SRAM 342上,或者(iii)采用外部處理以與PLD 208中的應用一起工作從而向安全SRAM 342上加載數(shù)據(jù)(即公共密鑰交換)。這樣的控制電路可以在功率損耗情況下或者在應用加載和/或配置期間操作。在其他實施例中,這樣的控制電路可以使用(i)硬開關、諸如保險絲,(ii)軟開關、諸如PLD208上的RAM比特,和/或(iii)如本文中所描述的在安全SRAM 342內部的存儲器位置來控制數(shù)據(jù)保持。
為了確保該數(shù)據(jù)在設備電力被去除時不丟失,可以使用備用電池350。在本具體示例中,電池350通過關于線路354上的接地供應線路352上的電壓VSRB來對存儲器或安全SRAM 342供電。電池350可以與FPGA 340分離,或者其可以用FPGA 340來包括作為其封裝的部分。例如,F(xiàn)PGA 340可以封裝在也包括電池350的球形陣列封裝件中??蛇x地,F(xiàn)PGA 340和電池可以放置在因此被封裝的公共襯底上。
在前活動通常在制造工廠進行,諸如集成電路或原始設備制造商的工廠。隨后的活動通常在FPGA 340在現(xiàn)場使用或者在應用中使用時發(fā)生。這些活動通常依照上電或電力回收來進行。
圖3B圖示根據(jù)本發(fā)明的實施例的已加密比特流的解密和FPGA的配置。該框圖包括配置設備330、FPGA 340和電池350。配置設備330仍可以是FPGA 340的部分。電池350對安全SRAM 342供電,使得其內容在連接至FPGA 340的其他電源電壓被去除時不丟失。
解密電路裝置344通常也是固定的或者硬邏輯??蛇x地,解密電路344可以在某種程度上可配置。例如,解密電路裝置344可以包括具有附加可編程邏輯元件的硬邏輯,或者其可以完全可編程。如果需要在某種程度上配置解密電路裝置344,則從安全SRAM 342接收解密電路配置比特流作為配置數(shù)據(jù)和參數(shù)348的部分。如果要對解密電路裝置344的各種參數(shù)編程,則由解密電路裝置344通過安全SRAM 342接收這些參數(shù)。該信息可以包括要使用的解密的舍入位數(shù)、S框條目、置換設置和其他信息。注意,需要在設備的其余部分的已加密配置比特流能夠解密之前來配置解密電路裝置344。
一旦配置解密電路裝置344并且接收到任何所需要的參數(shù),則從安全SRAM 342接收密鑰347。電路裝置的其余部分、具體地是EPOF 344的配置數(shù)據(jù)由解密電路裝置344接收。解密電路裝置344對已加密程序對象文件334解密并且生成已解密程序對象文件349,其然后用于配置FPGA 340上的其他可編程電路裝置346。
圖4A是圖示根據(jù)本發(fā)明的實施例的對配置比特流加密并且在安全ARM中存儲密鑰和其他參數(shù)的方法的流程圖。在步驟400,例如通過使用硬件設計程序生成配置比特流。在步驟405,接收密鑰??蛇x地,在步驟410接收解密電路裝置的參數(shù)和配置信息(到它們使用的程度)。在步驟415,使用密鑰對配置比特流加密。在步驟420,可以將該已加密配置比特流存儲在配置設備或者FPGA上。
在步驟425,用電池對安全RAM供電以保護要加載的安全RAM的內容。在步驟430,將密鑰和可選的解密電路參數(shù)存儲在安全SRAM中。在這點上,可以在步驟435運送FPGA和配置設備(如果使用)以將其投入使用。
圖4A中所示的步驟通常在集成電路或原始設備制造商的位置進行。圖4B中的步驟通常稍后執(zhí)行,比如在測試期間執(zhí)行,或者當設備在用戶的應用中被使用時進行。
圖4B是圖示根據(jù)本發(fā)明的實施例的對已加密配置比特流解密并且配置FPGA的方法的流程圖。在上電或其他適當?shù)氖录?,在步驟450從安全RAM接收(如果使用)解密電路裝置參數(shù)和配置數(shù)據(jù)。在步驟455使用從安全RAM接收的配置比特流和參數(shù)對解密電路進行配置。在步驟460,由解密電路從安全RAM接收密鑰。
在步驟465,從FPGA上的配置設備或存儲器位置接收先前加密的配置比特流。在步驟470,使用密鑰對配置比特流解密。在步驟475,使用新解密的配置比特流配置FPGA。
圖5圖示根據(jù)本發(fā)明的實施例的對安全RAM供電的方法。在本特定示例中,F(xiàn)PGA 510被分為形成環(huán)520的輸入/輸出電路裝置以及核530,核530包括安全SRAM 532、解密電路裝置534和其他可編程電路裝置536。
在本特定示例中,輸入/輸出電路裝置520、核530和安全SRAM532單獨供電。具體地,VCCio 540和GNDio 542對I/O環(huán)520供電,F(xiàn)PGA核530由VCCint 550和GNDint 552來供電,而安全SRAM 530由VCCsrb 560和GNDsrb 562來供電。本領域技術人員應當理解,可以使用連接至不同電路裝置部分的更多或更少的電源。
圖6圖示根據(jù)本發(fā)明的實施例的對安全RAM供電的另一方法。在本附圖中,與圖5相比,添加了電源開關。具體地,本附圖包括FPGA 610和FPGA核,F(xiàn)PGA 610包括輸入/輸出環(huán)(I/O環(huán)境620),F(xiàn)PGA核包括安全SRAM 632、解密電路裝置634、其他可編程電路裝置636和電源開關670。在本示例中,電源開關670被包括在FPGA610上。在本發(fā)明的其他實施例中,電源開關670可以是單獨的,而非被包括在FPGA 610上。
如之前,I/O環(huán)620、FPGA核630和安全SRAM 632接收單獨的電力供應。具體地,VCCio 640和GNDio 642對I/O環(huán)620供電,而FPGA VCCint 650和GNDint 662對核630供電。
安全SRAM由電源開關670的輸出來供電,該輸出提供VCCsrb670和GNDsrb 662。電源開關670在本示例中接收VCCio 640、VCCint 650和VCCbat 670。VCCbat 660可以由電池、諸如圖3中的電池350來供電。電源開關670在其輸入處選擇電壓中的一個并且向安全SRAM 632提供VCCsrb 672。
在本發(fā)明的各種實施例,電源開關670可以接收這些或其他電力供應。在各種實施例中,電源開關670可以使用不同的算法用于選擇這些電源中的哪個被提供作為給安全SRAM 632的VCCsrb672。電源開關670也可以執(zhí)行另外的功能,諸如電源調節(jié)或濾波。也就是,電源開關670可以使用所施加的輸入電壓中的一個或多個生成VCCsrb 672,而非簡單地將所選擇的施加電壓連接至安全SRAM 632。
在具體的實施例中,當VCCbat 660是電源開關670接收的唯一活動(active)電力供應時,該電壓用于生成VCCsrb 672。然而,如果電源開關670所接收的其他電力供應之一活動,也就是在某個電壓門限以上,則不使用VCCbat 660,使得能夠延長實際電池壽命。如果有多于一個其他電源活動,例如VCCio 640和VCCint 650都活動,則使用兩個電源中的消聲器、通常為VCCint 650來生成VCCsrb672,然而在其他實施例中,使用噪聲電源。在另一實施例中,如果VCCbat 660活動,則該電源由電源開關670用于生成VCCsrb 672。
安全SRAM 632通常也是易失性存儲器。因此,如果其電源被去除,則存儲器的內容丟失。這在其中由于篡改或其他未授權事件而需要快速擦除安全SRAM 632的內容的應用中很有用。當使用易失性存儲器形成安全SRAM 632時,這樣的擦除可以通過中斷到安全SRAM 632的電源連接來實現(xiàn)。
圖7圖示根據(jù)本發(fā)明的實施例的在使用關閉開關的同時對安全RAM供電的方法。本附圖包括被分為輸入/輸出環(huán)720和FPGA核730的FPGA 710。FPGA核730包括安全SRAM 732、解密電路裝置734和其他可編程電路裝置736。VCCio 740和GNDio 742對I/O環(huán)720供電,而VCCint 750和GNDint 752對FPGA核730供電。
VCCsrb 760和GNDsrb 762對安全SRAM供電。VCCsrb 760電源可以通過關閉開關770從安全SRAM 732斷開。關閉開關770可以形成在FPGA 710上。可選地,關閉開關770可以在片外。關閉開關770可以用檢測篡改或其他未授權事件的電路裝置來控制。
一個這樣的未授權事件是未授權配置比特流的加載。因此,可以驗證所使用的配置比特流。如果配置比特流無效,則到安全SRAM72的電力供應被中斷并且其內容丟失。
圖6中的電源開關670和圖7中的關閉開關770可以合并成單個單元,如圖8所示,合并為電源開關870。電源開關870在不同收入電壓中選擇以提供VCCsrb 872,并且也在消息認證代碼832的指令之下中斷電力供應。
圖8圖示根據(jù)本發(fā)明的實施例的在使用通過方法認證代碼控制的關閉開關的同時對安全RAM供電的方法。本附圖包括FPGA 810,F(xiàn)PGA 810包括I/O環(huán)820和FPGA核830。FPGA核830包括安全SRAM 832、解密電路裝置834、消息認證代碼836、其他可編程電路裝置838和電源開關870。
在本示例中,VCCio 840和GNDio 842對I/O換820供電,F(xiàn)PGA核830由VCCint 850和GNDint 852來供電,而VCCsrb 872和GNDsrb872對安全SRAM 832供電。電源開關870生成VCCsrb 872。電源開關870在本示例中接收VCCio 840、VCCint 850和VCCbat 860作為輸入。在本發(fā)明的實施例中,電源開關870可以接收這些或其他電壓。電源開關870可以在如以上關于電源開關670所描述的所接收的電壓中選擇。
在解密電路裝置834對配置比特流解密之后,可以通過消息認證代碼836對配置比特流進行處理,消息認證代碼836驗證配置比特流。如果配置比特流無效,則電源開關870被指令從安全SRAM832去除電力。以該方式,在使用未認證配置比特流時,安全SRAM832的內容丟失。片上電路裝置可以跟蹤安全SRAM的內容的丟失并且適當?shù)赝S肍PGA 810。
圖9圖示根據(jù)本發(fā)明的實施例的生成配置比特流驗證信號以控制電源關閉開關的方法。圖8中的消息認證代碼836可以使用本方法。該配置比特流包括首部部分和配置數(shù)據(jù)。配置數(shù)據(jù)被加密,而首部部分沒有被加密。在一些情況下,首部的部分可以公知,或者不能確定。如果首部被編碼,則該信息可以產(chǎn)生加密密鑰的發(fā)現(xiàn)。因此,首部不加密。首部部分包括期望值906和其余部分904。在本示例中,首部的不是期望值906的部分沒有被使用。
已加密配置數(shù)據(jù)被函數(shù)框910接收,函數(shù)框910執(zhí)行其上的函數(shù)。輸出920被提供給比較電路930。比較電路將期望值906與線路922上的輸出相比較并且做出有效性的確定940。如果配置比特流無效,則可以從安全RAM去除電源,從而擦除其內容。
圖10是圖示根據(jù)本發(fā)明的實施例的生成配置比特流驗證信號以控制安全RAM關閉開關的方法的流程圖。在步驟1010,接收包括期望值的首部。在步驟1020,接收已加密配置數(shù)據(jù)。首部和已加密配置數(shù)據(jù)形成已加密配置比特流。
在步驟1030,通過函數(shù)框對已加密配置數(shù)據(jù)執(zhí)行函數(shù)以便生成輸出。在步驟1040,將該輸出與期望值相比較。在步驟1050,確定被接收作為首部的部分的期望值是否匹配由函數(shù)框提供的輸出。如果匹配,則比特流有效1060。如果不匹配,則比特流無效1070。
圖11圖示可以用作圖9中的函數(shù)框的電路。所接收的配置數(shù)據(jù)被分為明文部分1102、1104和1106。這些部分的連結產(chǎn)生對配置數(shù)據(jù)的重編。配置數(shù)據(jù)1102的第一部分使用密鑰1112被加密,從而在線路1114上生成輸出。線路1114上的輸出通過異或電路1122與配置數(shù)據(jù)114的第二部分求異或。線路1124上的結果通過大量類似框,直到到達最終級。在這點上,線路1126上的累積結果通過異或電路1122與配置數(shù)據(jù)1106求異和。輸出通過加密框1130被加密并且結果被提供給最終加密級1140。加密塊1140提供可以與被提供作為配置比特流首部的部分的期望值相比較的輸出。雖然加密函數(shù)1110、1120、1130和1140被示出為單獨的電路,然而在實際的集成電路中,這些函數(shù)可以是一個電路。
在本發(fā)明的各種實施例中,數(shù)據(jù)可以存儲在安全SRAM中作為已加密或未加密數(shù)據(jù),或者作為其組合。數(shù)據(jù)可以使用AES、DES或3-DES來加密。可選地,可以使用其他標準或專用加密算法。
該安全SRAM中存儲的數(shù)據(jù)也可以包括用于已加密配置比特流或其他數(shù)據(jù)已加密數(shù)據(jù)的解密的密鑰??梢源鎯ζ渌畔ⅲT如芯片身份數(shù)據(jù)和其他加密數(shù)據(jù)。
在FPGA上運行的應用也可以使用安全SRAM來存儲數(shù)據(jù)以便保護其在電力被去除時或者在應用配置/重新配置過程期間不被丟失。例如,應用可以將數(shù)據(jù)存儲在安全SRAM中,并且使用認證代碼來保護之,認證代碼也存儲在安全SRAM中并且在電力被去除時被保護以免被擦除。稍后,當該應用需要恢復其數(shù)據(jù)時,例如,在電力恢復之后(也就是電力被去除并且然后恢復,或者更具體地,在電力下降至門限以下之后又上升至其上),應用可以使用認證代碼訪問數(shù)據(jù)。以該方式存儲的數(shù)據(jù)通常被存儲為未加密數(shù)據(jù),因為其僅由知道認證代碼的應用可訪問,然而該數(shù)據(jù)也可以被存儲為已加密數(shù)據(jù)。
代替依賴于認證代碼,應用可以在將數(shù)據(jù)存儲在安全SRAM中之前對數(shù)據(jù)進行加密。這保護數(shù)據(jù),因為在沒有正確的解密密鑰的情況下訪問該已加密數(shù)據(jù)的應用不能正確地解密數(shù)據(jù)。
在本發(fā)明的以上和其他實施例中,對安全SRAM的讀取和寫入訪問可以由訪問控制單元來控制。訪問控制單元通常是硬邏輯電路,也就是,其是預布線的,然而在各種實施例中,其可以由大量可編程邏輯元件形成。可選地,某些訪問控制電路可以是硬邏輯,而部分可以使用可編程邏輯元件來形成。例如,在一些實施例中,簡單版本的訪問控制電路可以是硬邏輯,而可選的附加電路裝置、諸如編碼器/解碼器電路可以使用可編程邏輯元件來形成。
通常,讀取訪問受限,而寫入訪問不受限,然而寫入訪問在本發(fā)明的各種實施例中也可以是受限的。讀取訪問通常限于更小等級,因為可以去除給安全SRAM的電力,從而擦除其內容。
訪問控制電路可以通過在可編程邏輯元件中運行的應用或者通過外部用戶或應用用于限制對安全SRAM中的數(shù)據(jù)的訪問。然而,通常,訪問控制電路被旁路或者自動允許片上配置控制器的訪問,然而也可以限制該電路的訪問。下面的三個附圖中示出了訪問安全SRAM中的數(shù)據(jù)(具體地,用于對已加密比特流進行解密的解密密鑰)的配置控制器的示例。
圖12圖示在PFGA的配置期間在配置控制器、訪問控制電路和安全SRAM之間的示例性數(shù)據(jù)傳遞。在本示例中,要用于對已加密比特流解密的密鑰(密鑰1242)被存儲為未加密數(shù)據(jù)。該附圖包括FPGA 1210,F(xiàn)PGA 1210還包括I/O環(huán)1220和FPGA核1230。FPGA核1230包括安全SRAM 1240、可編程邏輯元件1250、配置控制器1260和訪問控制電路1270。
在本示例中,配置控制器1260從訪問控制電路請求密鑰1242。由于配置控制器1260是已知的硬邏輯電路,所以訪問控制電路1270不需要來自配置控制器1260的具體的認證,然而在本發(fā)明的其他實施例中,可能需要這樣的認證。因此,訪問控制電路1270從安全SRAM 1240讀取密鑰1242。訪問控制電路1270然后向配置控制器1260提供密鑰。配置控制器1260接收已加密配置比特流并且對已加密配置比特流解密。然后使用已解密配置比特流對PFGA進行配置。
在本發(fā)明的各種實施例中,訪問控制電路1270也可以限制配置控制器1260對安全SRAM 1240的訪問。通常,不進行該操作,因為配置控制器1260是預先布線在FPGA上的硬邏輯電路并且不進行秘密的重新配置。因此,配置控制器1260可以被訪問控制電路1270授權自動訪問,或者其可以直接連接至安全SRAM 1240。下面的兩個附圖中示出了圖示這至少兩個方法的流程圖。
圖13A是圖示FPGA的操作的流程圖,其中配置控制器被訪問控制電路授權對安全SRAM中存儲的解密密鑰的自動訪問。
具體地,在步驟1310,配置控制器從訪問控制電路請求密鑰。在步驟1320,訪問控制電路從安全SRAM讀取密鑰。在步驟1330,訪問控制電路向配置控制器提供密鑰。在步驟1340,配置控制器接收已加密比特流。配置控制器然后使用密鑰對已加密比特流解密并且配置FPGA。
圖13B是圖示FPGA的操作的流程圖,其中配置控制器直接連接或者可以旁路訪問控制電路。在步驟1360,配置控制器從安全SRAM接收密鑰。在步驟1370,配置控制器接收已加密比特流,并且在步驟1380,配置控制器對比特流解密并且配置FPGA。
可編程邏輯電路裝置中運行的應用和/或配置/重新配置或安裝可以通過在電池備份安全SRAM中存儲數(shù)據(jù)來保護數(shù)據(jù)以免其被擦除。所存儲的數(shù)據(jù)被保護并且與外部條件隔離以免影響可編程邏輯電路裝置。例如,如果從FPGA上去除電力,則應用可以在電力恢復時恢復數(shù)據(jù)。應用可以通過在將數(shù)據(jù)存儲在安全SRAM中之前對該數(shù)據(jù)加密來保護數(shù)據(jù)。可選地,其可以將認證代碼連同數(shù)據(jù)一起存儲在存儲器中。當應用嘗試恢復數(shù)據(jù)時,其向訪問控制電路提供數(shù)據(jù)的位置和認證代碼。如果當前認證代碼給定,則訪問控制電路向應用提供數(shù)據(jù)。下面的兩個附圖中示出了如何實現(xiàn)該操作的示例。
圖14圖示FPGA中的示例性數(shù)據(jù)傳遞,其中通過要求認證代碼來限制對存儲器中的數(shù)據(jù)的訪問。該附圖包括FPGA 1410,F(xiàn)PGA1410包括I/O環(huán)1420和FPGA核1430。FPGA核1430包括安全SRAM1440、可編程邏輯元件1450、配置控制器1460和訪問控制電路1470。
在本示例中,在可編程邏輯1450中運行的FPGA在安全SRAM1440中具有先前存儲的數(shù)據(jù)以及對應的認證代碼1442。為了恢復該數(shù)據(jù),可以采用任何數(shù)量的方法來驗證訪問,例如密碼等。在一個實施例中,應用向訪問控制電路提供數(shù)據(jù)和認證代碼的地址。訪問控制電路驗證由應用提供的認證代碼。例如,訪問控制電路可以逐比特匹配,或者以安全SRAM 1440中存儲的認證代碼1442使用與由應用提供的認證代碼相關聯(lián)的函數(shù)。如果代碼匹配或者函數(shù)關系建立,則訪問控制電路許可應用對數(shù)據(jù)的訪問。如果失配,則拒絕訪問,這可以使用各種技術來指示而不必返回錯誤數(shù)據(jù)。
圖15是圖示通過要求認證代碼來限制對安全SRAM中的數(shù)據(jù)的讀取訪問的方法的流程圖。在本示例中,應用之前已經(jīng)將數(shù)據(jù)和認證代碼存儲在安全SRAM中。該寫入訪問通常也不受限,然而在本發(fā)明的各種實施例中,該訪問也可以受限。例如,訪問控制電路可以要求認證代碼以改寫先前使用代碼保護的數(shù)據(jù)。
具體地,在步驟1510,應用向訪問電路提供數(shù)據(jù)和認證代碼的地址。在步驟1520,訪問電路將認證代碼與安全SRAM中存儲的認證代碼相比較。通常,安全SRAM中存儲的認證代碼由應用存儲,然而其他電路、諸如訪問控制電路可以生成認證代碼,其然后存儲在安全SRAM中并且給出至應用以備后續(xù)使用。在步驟1530,如果代碼匹配,則訪問控制電路授權對數(shù)據(jù)的訪問,否則,拒絕訪問。
在以上示例中,數(shù)據(jù)通常被存儲作為未加密數(shù)據(jù)。然而,如以上討論的,數(shù)據(jù)也可以被存儲作為已加密數(shù)據(jù)。例如,用于解密已加密比特流的解密密鑰本身可以使用第二密鑰被加密。該第二密鑰可以存儲為未加密數(shù)據(jù),或者其可以使用又一密鑰來被加密。在以下示例中,使用第二密鑰來對解密密鑰進行加密,第二密鑰存儲作為未加密數(shù)據(jù)。
圖16A是圖示存儲解密密鑰的方法的流程圖,其中使用第二密鑰對解密密鑰加密并且兩個密鑰都存儲在安全SRAM中。在本示例中,訪問控制電路負責對解密密鑰解密。這具有以下優(yōu)點:配置控制器不需要知道解密密鑰如何存儲在存儲器中,也就是,配置控制器不需要知道解密密鑰是已加密數(shù)據(jù)還是未加密數(shù)據(jù)。
具體地,在步驟1610,配置控制器請求安全SRAM中存儲的解密密鑰。在步驟1615,訪問控制電路從安全SRAM讀取已加密解密密鑰和第二未加密密鑰。在步驟1620,訪問控制電路使用第二密鑰對已加密解密密鑰進行解密并且向配置控制器提供解密密鑰。在步驟1625,配置控制器接收已加密比特流,在步驟1630,配置控制器對已加密配置比特流解密并且使用已解密配置比特流來配置FPGA。
圖16B是圖示存儲解密密鑰的方法的另一流程圖,其中使用第二密鑰來加密解密密鑰,并且兩個密鑰都存儲在安全SRAM中。在本示例中,配置控制器負責對解密密鑰解密。
具體地,在步驟1650,配置控制器請求解密密鑰。在步驟1655,訪問控制電路從存儲器讀取已加密解密密鑰和未加密第二密鑰并且將它們提供給配置控制器。在步驟1660,配置控制器使用第二密鑰對已加密解密密鑰進行解密。在步驟1665,配置控制器接收已加密配置比特流。使用解密密鑰對已加密配置比特流解密,并且在步驟1670,配置FPGA。
另外,應用還可以在安全SRAM中存儲已加密數(shù)據(jù)。雖然可能需要認證代碼以訪問該已加密數(shù)據(jù),然而這樣的認證通常不需要,因為僅具有正確的解密密鑰的應用可以使用數(shù)據(jù)。(然而,本發(fā)明的各種實施例也可以要求某種認證以改寫先前寫入的數(shù)據(jù)。)下面的三個附圖中示出了圖示在安全SRAM中存儲已加密數(shù)據(jù)的應用的示例。
圖17圖示設備中的示例性數(shù)據(jù)流,其中應用通過加密在安全SRAM中具有受保護數(shù)據(jù)。本附圖包括FPGA 1710,F(xiàn)PGA 1710還包括I/O環(huán)1720和FPGA核1730。FPGA核1730包括安全SRAM1740、可編程邏輯元件1750、配置控制器1760和訪問控制電路1770。在本示例中,在可編程邏輯1750中運行的應用在安全SRAM 1740中具有先前存儲的已加密數(shù)據(jù)1742,例如在電力恢復之前,并且現(xiàn)在應用需要恢復所存儲的數(shù)據(jù)。數(shù)據(jù)可以由應用本身或者通過訪問控制電路1770來加密。
應用向訪問控制電路1770提供已加密數(shù)據(jù)1742的地址。訪問控制電路讀取已加密數(shù)據(jù)1742并且將其提供給應用。應用然后使用其密鑰對數(shù)據(jù)解密。僅具有正確密鑰的應用可以使用已加密數(shù)據(jù),否則數(shù)據(jù)無用。
雖然在本實施例中,解密由應用本身來進行,然而在其他實施例中,解密可以由訪問控制電路來進行。例如,這在訪問控制電路使用密鑰對數(shù)據(jù)加密然后將密鑰提供給應用用于進一步使用的情況下很有用。下面的流程圖中示出了示例。
圖18A是圖示接收安全SRAM中存儲的已加密數(shù)據(jù)的方法的流程圖。在本示例中,訪問控制單元針對應用解密數(shù)據(jù)。已加密數(shù)據(jù)原始可以由應用或者由訪問控制電路來加密,這取決于確切的實現(xiàn)方式。
具體地,在步驟1810,應用向訪問控制電路提供已加密數(shù)據(jù)和密鑰的地址。在步驟1820,訪問控制電路從安全SRAM讀取已加密數(shù)據(jù)。在步驟1830,訪問控制電路對已加密數(shù)據(jù)解密并且將已解密數(shù)據(jù)提供給應用。該數(shù)據(jù)也僅在應用向訪問控制電路給出正確密鑰的情況下有用。
圖18B是圖示接收安全SRAM中存儲的已加密數(shù)據(jù)的方法的另一流程圖。在本示例中,應用本身負責解密數(shù)據(jù)。
具體地,在步驟1850,應用向訪問控制電路給出已加密數(shù)據(jù)的地址。在步驟1860,訪問控制電路從安全SRAM讀取已加密數(shù)據(jù)。在步驟1870,訪問控制電路向應用提供已加密數(shù)據(jù)。在步驟1880,應用使用其密鑰對數(shù)據(jù)解密。該數(shù)據(jù)也僅在應用使用正確的解密密鑰的情況下有用。
在一個實施例中,為了靈活使用,可以對安全SRAM進行分區(qū)而沒有訪問控制,被分區(qū)成包括訪問控制區(qū)域加上數(shù)據(jù)存儲區(qū)域,其中數(shù)據(jù)存儲區(qū)域可以被進一步分區(qū)成受保護區(qū)域。為了進一步保護安全SRAM中存儲的數(shù)據(jù),對訪問控制部分進行寫入保護。存在多個可以采用的寫入保護方案,諸如一次性寫入,其中一旦存儲器位置被寫入,則其不會被改寫。
圖19是根據(jù)一些實施例的示例性FPGA 1910的框圖。FPGA1910包括I/O環(huán)1920和FPGA核1930。FPGA核1930包括具有多個獨立可重新配置區(qū)域1952和1954的可編程電路裝置1950、配置控制器1960、訪問控制電路1970和多個安全SRAM 1940、1944和1946。下面的描述描述配置控制器1960的某些功能,但是應當理解,這些功能中的一些或全部可以在訪問控制1970中實現(xiàn)。實際上,在一些實施例中,配置控制器1960和訪問控制1970可以是同一模塊。在其他實施例中,SRAM 1940、1944和1946中的每個具有其自己的專用訪問控制器。
在各種實施例中,配置控制器1960被配置成將一個或多個存儲器塊1940、1944、1946進行分區(qū)以向多個獨立可重配置區(qū)域(例如區(qū)域1952、和1954)分配不同的存儲器分區(qū)。圖19示出了分區(qū)1941和1942作為示例。然而,應當理解,可以分配任何數(shù)目的分區(qū),并且向每個分區(qū)分配的存儲器位置在存儲器中的物理位置方面可以變化。在一些實施例中,配置控制器還被配置成例如通過訪問控制器1970來控制對存儲器塊的訪問。比如,配置控制器可以被配置成防止獨立可重配置區(qū)域中的全部或某些獨立可重配置區(qū)域訪問向另一獨立可重配置區(qū)域分配的存儲器分區(qū)。該訪問限制可以應用于讀取訪問、寫入訪問或者這二者,并且可以取決于獨立可重配置區(qū)域請求訪問來變化。
在一個說明性實施例中,F(xiàn)PGA 1910包括n個存儲器塊(例如存儲器1940、1944和1946)和m個獨立可重配置區(qū)域(例如包括區(qū)域1952和1954),其中m>n。配置控制器1960可以被配置成在m個獨立可重配置區(qū)域上對n個存儲器塊進行分區(qū),例如使得m個獨立可重配置區(qū)域中的每個被分配n個存儲器塊中的一個或多個上的存儲器分區(qū)。分區(qū)可以具有任意合適的大小。配置控制器1960還可以被配置成控制對n個存儲器塊中的每個的訪問(例如單獨地或者與訪問控制器1970組合)以防止m個獨立可重配置區(qū)域中的任何給定的獨立可重配置區(qū)域訪問向m個獨立可重配置區(qū)域中的另一獨立可重配置區(qū)域分配的存儲器分區(qū)。
在一些實施例中,分區(qū)是固定的;在其他實施例中,分區(qū)可以在FPGA的第一配置上設置。也可以有默認分區(qū),其可以可選地被第一配置改寫??梢源鎯γ總€可配置區(qū)域的分區(qū)信息,包括開始和結束地址和/或存儲器大小,例如作為開始數(shù)據(jù)、第一配置數(shù)據(jù)或默認數(shù)據(jù)的部分。在一個方法中,每個可配置區(qū)域可以被分配依次跟隨在前的可配置區(qū)域分配的存儲空間的連續(xù)的存儲空間,從而消除對于存儲開始和結束地址的需要(存儲器大小可以是固定或默認值和/或存儲器大小可以在分配之后存儲)。
在各種實施例中,配置控制器1960被配置成確定是否應當授權獨立可重配置區(qū)域對向不同區(qū)域分配的存儲器分區(qū)的訪問。該確定例如可以基于第一配置上設置的比特來做出。響應于確定,配置控制器1960之后可以控制對存儲器塊的訪問以使得第一獨立可重配置區(qū)域能夠訪問存儲器分區(qū),或者拒絕請求。配置控制器1960也可以基于所存儲的比特確定是否應當授權獨立可重配置區(qū)域對存儲器分區(qū)的讀取訪問和寫入訪問。響應于只讀確定,配置控制器1960可以控制對存儲器塊的訪問以使得獨立可重配置區(qū)域能夠讀取存儲器分區(qū)中存儲的數(shù)據(jù)并且防止區(qū)域向存儲器分區(qū)寫入數(shù)據(jù)。響應于只寫確定,配置控制器1960可以控制對存儲器塊的訪問以使得獨立可重配置區(qū)域能夠向存儲器分區(qū)寫入數(shù)據(jù)并且防止區(qū)域從存儲器分區(qū)讀取數(shù)據(jù)。最后,響應于讀寫確定,配置控制器1960可以控制對存儲器塊的訪問以使得獨立可重配置區(qū)域能夠對存儲器分區(qū)數(shù)據(jù)讀取和數(shù)據(jù)寫入兩種操作。當然,應當理解,不同的可配置區(qū)域可以具有不同的訪問存儲器分區(qū)的特權,并且這些特權可以從該分區(qū)到另一分區(qū)發(fā)生變化。
配置控制器1960可以使用一個或多個訪問控制技術來控制對存儲器塊及其分區(qū)的訪問。在一個方法中,F(xiàn)PGA 1910被設計成使得所有存儲器訪問必須通過配置控制器1960。也就是,F(xiàn)PGA 1910可以用如下方式來設計:該方式需要向配置控制器提供對存儲器的訪問請求,并且配置控制器代表請求者(例如獨立可重配置區(qū)域)與存儲器通信。這例如可以通過確保(通過固定設計或者通過編程可配置互連)獨立可重配置區(qū)域沒有被提供有到存儲器塊的任何直接連接來實現(xiàn)。配置控制器在這樣的場景中僅完成確定為被授權的請求(例如通過向存儲器或特定存儲器分區(qū)轉發(fā)請求)。配置控制器可以被自動授權以對存儲器塊的任何分區(qū)的數(shù)據(jù)讀取和/或數(shù)據(jù)寫入。
在另一方法中,獨立可重配置區(qū)域可以被提供有到存儲器塊的直接連接(例如通過通信路徑1972并且可選地通過訪問控制1970),但是存儲器分區(qū)中存儲的數(shù)據(jù)被加密。在這樣的場景中,配置控制器可以在確定存儲器請求被授權的情況下通過加密數(shù)據(jù)來限制對存儲器分區(qū)的訪問。
可以使用任何其他合適的方法來控制對存儲器塊及其分區(qū)的訪問,并且在一些實施例中,可以實現(xiàn)這些方法的組合。另外,可以實現(xiàn)這些訪問控制特征以僅控制讀取訪問請求、寫入訪問請求或者這二者。在又一實施例中,可以實現(xiàn)訪問控制而沒有使用配置控制器,例如對數(shù)據(jù)加密和/或使用數(shù)據(jù)存儲MAC,如以上和以下進一步描述的。
在一些實施例中,每個存儲器分區(qū)存儲例如使用消息認證代碼(MAC)生成器(例如圖11中所示的)生成的多個消息認證代碼。當配置控制器1960接收到配置流時,MAC可以被生成并且與所存儲的MAC相比較以確定所生成的MAC是否匹配所存儲的MAC中的任何MAC。如果配置控制器1960確定匹配,則其可以授權對存儲匹配MAC的存儲器分區(qū)的訪問。否則,配置控制器1960可以拒絕訪問。
在一些實施例中,配置控制器1960被配置成響應于確定未授權的獨立可重新配置區(qū)域試圖訪問存儲器分區(qū)來使用零值改寫該存儲器分區(qū)中存儲的所有數(shù)據(jù)。在其他實施例中,通過切斷給包含目標存儲器分區(qū)的存儲器塊的電力來擦除數(shù)據(jù),如以上所描述的。
在一些實施例中,一旦第一配置分配存儲器分區(qū)和MAC代碼,則它們不能通過任何授權功能來被改變。如果控制器檢測到存儲器分區(qū)或MAC代碼發(fā)生變化,則其將擦除設備上的所有數(shù)據(jù)。這將防止攻擊者嘗試使用配置框來獲取對設備的控制??蛇x地,第一配置可以包括可以定義分區(qū)訪問或MAC代碼的一些融合比特或其他非易失性存儲器的設置。
在各種實施例中,消息認證代碼(MAC)生成器被配置成輸入所接收的配置流并且輸出所生成的消息認證代碼。MAC生成器可以實現(xiàn)為硬邏輯、軟邏輯或者硬邏輯和軟邏輯的組合。在一個方法中,MAC生成器可以包括用軟邏輯實現(xiàn)的伽羅瓦域(GF)乘法器(例如FPGA構造)。例如,可以使用修改后的軟邏輯DSP塊來實現(xiàn)這些GF乘法器。DSP塊可以支持比如GF擴展的有限場減小,如2014年10月27日提交的美國專利申請第14/524,526中討論的,其全部內容通過引用合并于此。
MAC生成器可以從存儲器塊中的一個或多個中獲取多個密鑰之一用于生成消息認證代碼??蛇x地,密鑰在可編程電路裝置的第一配置期間可以嵌入在MAC生成器的軟邏輯部分中。
在一些實施例中,可以向單個可重配置區(qū)域分配多個存儲器塊上的分區(qū)。例如,一個分區(qū)可以存儲加密密鑰和MAC,另一分區(qū)可以存儲備用數(shù)據(jù)。多個存儲器塊可以用于安全地備份數(shù)據(jù)。作為另一示例,存儲器塊可以不足以存儲可重配置區(qū)域所需要的所有數(shù)據(jù),并且因此可以向其分配一個或多個其他存儲器塊上的一個或多個分區(qū)。
圖20是圖示根據(jù)一些實施例的在具有多個存儲器塊和獨立可重配置區(qū)域的FPGA中控制存儲器訪問的方法的流程圖。在步驟2002,在m個獨立可重配置區(qū)域上、例如在第一配置下對n個存儲器塊進行分區(qū)。在步驟2004,可以在存儲器分區(qū)中的一個或多個上存儲多個MAC,例如在第一配置下或者在數(shù)據(jù)稍后被已認證區(qū)域存儲在存儲器塊中時。在步驟2006,例如通過另一區(qū)域針對所接收的配置流生成MAC。在步驟2008,將所生成的MAC與所存儲的MAC中的每個相比較,并且在步驟2010,處理確定所生成的MAC是否匹配所存儲的MAC中的任何一個。如果是,則在步驟2012授權存儲器訪問。如果沒有匹配,則在步驟2014拒絕存儲器訪問。
根據(jù)一方面,一種用于存儲數(shù)據(jù)的裝置包括:可編程電路裝置,包括第一和第二獨立可重新配置區(qū)域;存儲器塊,被配置成存儲數(shù)據(jù);以及配置控制器。配置控制器被配置成:對存儲器塊進行分區(qū)以向第一獨立可重新配置區(qū)域分配第一存儲器分區(qū)并且向第二獨立可重新配置區(qū)域分配第二存儲器分區(qū)。另外,配置控制器被配置成:從第一和第二獨立可重新配置區(qū)域接收訪問存儲器塊的請求;以及控制對存儲器塊的訪問以防止第一獨立可重新配置區(qū)域訪問第二存儲器分區(qū)并且防止第二獨立可重新配置區(qū)域訪問第一存儲器分區(qū)。
在一些實施例中,配置控制器還被配置成:基于存儲比特確定是否應當授權第一獨立可重新配置區(qū)域訪問第二存儲器分區(qū);以及控制對存儲器塊的訪問以響應于確定應當授權第一獨立可重新配置區(qū)域訪問第二存儲器分區(qū)來使得第一獨立可重新配置區(qū)域能夠訪問第二存儲器分區(qū),從而配置控制器被配置成控制對存儲器塊的訪問以響應于確定不應當授權第一獨立可重新配置區(qū)域訪問第二存儲器分區(qū)來防止第一獨立可重新配置區(qū)域訪問第二存儲器分區(qū)。
在一些實施例中,配置控制器還被配置成:基于存儲比特確定是否應當授權第一獨立可重新配置區(qū)域對第二存儲器分區(qū)進行讀取訪問和寫入訪問。首先,響應于只讀確定,控制對存儲器塊的訪問以使得第一獨立可重新配置區(qū)域能夠讀取第二存儲器分區(qū)中存儲的數(shù)據(jù)并且防止第一獨立可重新配置區(qū)域向第二存儲器分區(qū)中寫入數(shù)據(jù)。其次,響應于只寫確定,控制對存儲器塊的訪問以使得第一獨立可重新配置區(qū)域能夠向第二存儲器分區(qū)中寫入數(shù)據(jù)并且防止第一獨立可重新配置區(qū)域從第二存儲器分區(qū)讀取數(shù)據(jù)。第三,響應于讀取和寫入確定,控制對存儲器塊的訪問以使得第一獨立可重新配置區(qū)域既能夠從第二存儲器分區(qū)讀取數(shù)據(jù)也能夠向第二存儲器分區(qū)寫入數(shù)據(jù)。
在一些實施例中,裝置還包括n個附加存儲器塊和m個獨立可重新配置區(qū)域,其中m>n,其中配置控制器還被配置成在m個獨立可重新配置區(qū)域上對n個附加存儲器塊進行分區(qū)。另外,配置控制器被配置成:控制對n個附加存儲器塊的訪問以防止m個獨立可重新配置區(qū)域中的任何給定的獨立可重新配置區(qū)域訪問向m個獨立可重新配置區(qū)域中的另一獨立可重新配置區(qū)域分配的存儲器分區(qū)。
在一些實施例中,裝置內的存儲器塊在第一配置下被分區(qū)。
在一些實施例中,每個存儲器分區(qū)存儲多個消息認證代碼。
在一些實施例中,配置控制器還被配置成:針對所接收的配置流生成消息認證代碼;并且將所生成的消息認證代碼與所存儲的消息認證代碼中的每個相比較。另外,配置控制器被配置成:當所存儲的消息認證代碼中的任何代碼匹配所生成的消息認證代碼時,確定所接收的配置流是認證配置流。
在一些實施例中,裝置還包括:消息認證代碼(MAC)生成器,其被配置成輸入所接收的配置流并且輸出所生成的消息認證代碼,并且MAC生成器被實現(xiàn)為硬邏輯和軟邏輯的組合。
在一些實施例中,MAC生成器從存儲器塊中獲取多個密鑰之一用于生成消息認證代碼。
在一些實施例中,密鑰在可編程電路裝置的第一配置期間嵌入在MAC生成器的軟邏輯部分中,并且密鑰用于生成消息認證代碼。
在一些實施例中,配置控制器還被配置成響應于確定第一獨立可重新配置區(qū)域嘗試訪問第二存儲器分區(qū)來使用零值改寫第二存儲器分區(qū)中存儲的所有數(shù)據(jù)。
在一些實施例中,裝置包括加密電路,加密電路被配置成響應于配置控制器確定認證訪問請求來對給定存儲器分區(qū)中存儲的數(shù)據(jù)進行解密。
在一些實施例中,裝置的配置控制器被自動授權從存儲器塊的任何分區(qū)讀取數(shù)據(jù)。
根據(jù)一方面,一種用于存儲數(shù)據(jù)的裝置包括:可編程電路裝置,包括m個獨立可重新配置區(qū)域;n個存儲器塊,用于存儲數(shù)據(jù),其中m>n;以及被配置成針對所接收的配置流生成消息認證代碼的消息認證代碼(MAC)生成器。另外,可編程電路裝置還包括配置控制器,其被配置成:在m個獨立可重新配置區(qū)域上對n個存儲器塊進行分區(qū);在存儲器分區(qū)中的至少一個中存儲多個消息認證代碼;將所生成的消息認證代碼與所存儲的多個消息認證代碼中的每個相比較;以及當所存儲的多個消息認證代碼中的任何一個匹配所生成的消息認證代碼時,確定所接收的配置流是認證配置流。
在一些實施例中,MAC生成器還被配置成從n個存儲器塊中獲取多個密鑰中的至少一個密鑰用于生成消息認證代碼。
在一些實施例中,配置控制器還被配置成:控制對n個存儲器塊的訪問以防止m個獨立可重新配置區(qū)域中的至少一個獨立可重新配置區(qū)域訪問向m個獨立可重新配置區(qū)域中的另一獨立可重新配置區(qū)域分配的存儲器分區(qū)。
根據(jù)一方面,一種控制具有n個存儲器塊和m個獨立可重新配置區(qū)域的現(xiàn)場可編程門陣列(FPGA)中的存儲器訪問的方法,包括:在m個獨立可重新配置區(qū)域上對n個存儲器塊進行分區(qū);在存儲器分區(qū)中的至少一個中存儲多個消息認證代碼;針對所接收的配置流生成消息認證代碼;將所生成的消息認證代碼與所存儲的多個消息認證代碼中的每個相比較;以及當所存儲的多個消息認證代碼中的任何消息認證代碼匹配所生成的消息認證代碼時,確定所接收的配置流是認證配置流。
在一些實施例中,方法還包括:從n個存儲器塊中獲取(檢索)多個密鑰中的至少一個密鑰用于生成消息認證代碼。
在一些實施例中,方法還包括:控制對n個存儲器塊的訪問以防止m個獨立可重新配置區(qū)域中的至少一個獨立可重新配置區(qū)域訪問向m個獨立可重新配置區(qū)域中的另一獨立可重新配置區(qū)域分配的存儲器分區(qū)。
在一些實施例中,方法還包括:控制對n個存儲器塊的訪問以防止m個獨立可重新配置區(qū)域中的任何獨立可重新配置區(qū)域訪問向m個獨立可重新配置區(qū)域中的另一獨立可重新配置區(qū)域分配的存儲器分區(qū)。
已經(jīng)出于說明和描述的目的呈現(xiàn)了本發(fā)明的示例性實施例的以上描述。其并非意圖排他或者將本發(fā)明限于所公開的精確形式,很多修改和變型鑒于以上教導都是可能的。實施例被選擇和描述以便最佳地解釋本發(fā)明及其實際應用的原理,從而使得本領域其他技術人員能夠在各種實施例中并且在適合所預期的特定用途的各種修改的情況下最佳地使用本發(fā)明。