用于保護(hù)可編程器件的編程數(shù)據(jù)的方法和裝置制造方法
【專利摘要】用于可編程集成電路器件的配置數(shù)據(jù)根據(jù)至少一種加密方案至少部分被加密。多個密鑰存儲存儲用于至少一種加密方案的多個解密密鑰??刂齐娐酚趶闹辽俨糠旨用艿呐渲脭?shù)據(jù)標(biāo)識所需密鑰并且生成密鑰選擇信號。密鑰選擇電路響應(yīng)于密鑰選擇信號而讀取多個密鑰存儲并且向控制電路提供所需密鑰??刂齐娐房梢园ń饷茈娐?,解密電路使用所需密鑰解密至少部分加密的配置數(shù)據(jù)。在一些實施例中,配置數(shù)據(jù)的可以代表器件的單獨(dú)部分重配置的不同部分需要不同解密密鑰??梢詮拿荑€存儲的內(nèi)容的組合生成密鑰。
【專利說明】用于保護(hù)可編程器件的編程數(shù)據(jù)的方法和裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種用于保護(hù)可編程器件(例如現(xiàn)場可編程門陣列(FPGA)或者其它可編程邏輯器件(PLD))的編程數(shù)據(jù)免于復(fù)制的方法和裝置,并且涉及這樣保護(hù)的可編程器件。
【背景技術(shù)】
[0002]可編程器件眾所周知。在一類已知PLD中,每個器件具有大量邏輯門,并且用戶通常使用由器件的制造商提供的軟件工具將器件編程為采用這些邏輯門的特定配置,讓軟件工具在具有適配器的計算機(jī)上執(zhí)行,器件被插入到適配器中。早期幾代此類器件通常使用一些形式的可編程只讀存儲器(“PR0M”)技術(shù)來存儲由軟件工具產(chǎn)生的配置數(shù)據(jù)。在這些早期器件中,軟件工具通過熔斷可熔鏈來引起計算機(jī)將型樣(pattern) “燒錄”到PROM存儲中。在后期幾代中,PROM技術(shù)可以已經(jīng)成為可擦除可編程只讀存儲器(“EPR0M”)技術(shù),其不被燒錄,并且可以通過暴露于紫外線而被擦除(用于重編程)。再往后幾代可以已經(jīng)使用電可擦除可編程只讀存儲器(“EEPR0M”或者“E2PR0M”)技術(shù)。
[0003]所有這些技術(shù)為相對安全。在選擇使用可編程邏輯器件而非蒙受開發(fā)定制芯片的努力和消費(fèi)的用戶的情況下,如果用戶的競爭者試圖逆向工程被編程的可編程邏輯器件,競爭者將基本上必須逐層切片器件以辨識其編程。對于所討論的類型的用戶(按照定義并非芯片制造商)而言,雖然這樣的努力可能是技術(shù)上可行的,但是競爭者能夠或者將承擔(dān)該努力的可能性較小。
[0004]隨后,在靜態(tài)隨機(jī)存取存儲器(“SRAM”)存儲中存儲其配置數(shù)據(jù)的可編程邏輯器件變得可用并且仍然普遍。此類器件相比基于EPROM技術(shù)的器件具有更小和更快的優(yōu)勢。
[0005]然而,SRAM存儲是易失性的;當(dāng)斷電時其并不留存其內(nèi)容。因此,使用具有非易失性存儲的基于SRAM技術(shù)的可編程邏輯器件,以在關(guān)斷器件或者另外不提供功率期間留存配置編程數(shù)據(jù)。例如可以以閃存的形式提供此類非易失性存儲,但是可以使用任何形式的非易失性存儲,并且其可以在器件上或者與器件分離。
[0006]不管使用何種類型的非易失性存儲,具有其配置數(shù)據(jù)的非易失性存儲的SRAM可編程邏輯器件在防范其用戶的競爭者逆向工程方面較不安全。這是因為競爭者可以監(jiān)控流出上電的非易失性存儲的數(shù)據(jù),并且由此確定可編程邏輯器件的編程配置。事實上,競爭者甚至無需分析數(shù)據(jù)流,而僅需在其器件中記錄數(shù)據(jù)流并且存儲數(shù)據(jù)流。
[0007]共同轉(zhuǎn)讓的第5,768,372號和第5,915,017號美國專利描述了在非易失性存儲中存儲的配置數(shù)據(jù)的加密以及在向可編程器件中加載時其解密,包括向解密電路提供對信號的指示符,若干可能的加密/解密方案的指示符用來加密配置數(shù)據(jù)并且因此應(yīng)當(dāng)用來解密配置數(shù)據(jù)。
[0008]因此,可編程器件市場已經(jīng)變得更加復(fù)雜。以前器件制造商向原始消費(fèi)者出售空白可編程邏輯器件,原始消費(fèi)者通常將對其編程并且將每個器件作為最終用戶產(chǎn)品的一部分出售。因此,制造商的原始消費(fèi)者通常為提供配置數(shù)據(jù)的唯一一方并且因此為需要保護(hù)配置數(shù)據(jù)的唯一一方。最近,器件制造商或者第三方已經(jīng)出售用于各種通用功能的供應(yīng)商提供的專屬配置數(shù)據(jù)(通常被稱作“知識產(chǎn)權(quán)核心”)。如果一方提供此類專屬配置數(shù)據(jù),其可能希望保護(hù)這些數(shù)據(jù)不被讀取,但是原始消費(fèi)者需要從另一供應(yīng)商(其也將希望保護(hù)其專屬配置數(shù)據(jù))自由添加附加專屬配置數(shù)據(jù),以及其獨(dú)有配置數(shù)據(jù),并且隨后希望保護(hù)包括其自己的配置數(shù)據(jù)和任何供應(yīng)商提供的配置數(shù)據(jù)的最終配置。
【發(fā)明內(nèi)容】
[0009]本發(fā)明涉及一種用于使用不同加密(包括選擇不加密)和密鑰來單獨(dú)保護(hù)可編程器件的配置數(shù)據(jù)的不同部分、以及提供不同密鑰和密鑰組合的電路裝置和方法。
[0010]因此,根據(jù)本發(fā)明的實施例,提供一種可編程集成電路器件,該器件具有用于配置數(shù)據(jù)的輸入,配置數(shù)據(jù)用于可編程集成電路器件。根據(jù)至少一種加密方案至少部分加密配置數(shù)據(jù)。多個密鑰存儲存儲用于至少一種加密方案的多個解密密鑰??刂齐娐费b置從至少部分加密的配置數(shù)據(jù)標(biāo)識所需密鑰并且生成密鑰選擇信號。密鑰選擇電路裝置響應(yīng)于密鑰選擇信號讀取多個密鑰存儲并且向控制電路裝置提供所需密鑰??刂齐娐费b置可以包括解密電路裝置,解密電路裝置使用所需密鑰解密至少部分加密的配置數(shù)據(jù)。
[0011]根據(jù)本發(fā)明的附加實施例,配置數(shù)據(jù)包括多個部分配置數(shù)據(jù)部分。多個部分配置數(shù)據(jù)部分中的相應(yīng)部分配置數(shù)據(jù)部分被加密并且需要相應(yīng)解密密鑰??刂齐娐费b置從配置數(shù)據(jù)標(biāo)識相應(yīng)所需密鑰并且生成相應(yīng)密鑰選擇信號。密鑰選擇電路裝置響應(yīng)于相應(yīng)密鑰選擇信號讀取多個密鑰存儲并且將這些相應(yīng)所需密鑰提供給控制電路裝置。
[0012]也提供配置和操作此類可編程集成電路器件的方法。
【專利附圖】
【附圖說明】
[0013]結(jié)合附圖考慮以下詳細(xì)描述,本發(fā)明的其它特征、其性質(zhì)和各種優(yōu)勢將變得明顯,在附圖中相同參考字符貫穿全文指代相同部分,并且在附圖中:
[0014]圖1是其中可以實施本發(fā)明的可編程器件的框圖;
[0015]圖2是根據(jù)本發(fā)明的一個實施方式的密鑰選擇電路裝置的框圖;并且
[0016]圖3是采用并入本發(fā)明的可編程邏輯器件的示例性系統(tǒng)的簡化框圖。
【具體實施方式】
[0017]圖1示出作為其中可以實施本發(fā)明的可編程器件的示例的可編程邏輯器件100的框圖??删幊踢壿嬈骷?00優(yōu)選地包括存儲編程數(shù)據(jù)的非易失性存儲112和具有編程電路113的基于SRAM的可編程邏輯核心111?;赟RAM的可編程邏輯核心111可以是FPGA,其中非易失性存儲112在單獨(dú)的裸片上,該裸片可以與核心111在共同的封裝中或者可以完全分離(并且僅通過接線或者跡線連接)。備選地,器件100可以是其中非易失性存儲112和核心111在相同裸片上的PLD的類型。
[0018]如果配置數(shù)據(jù)未加密,則當(dāng)首先向可編程邏輯器件100施加功率時,在非易失性存儲112中存儲的配置數(shù)據(jù)將通過連接130輸出到可編程邏輯核心111。數(shù)據(jù)優(yōu)選地將被串行鎖定到移位寄存器鏈120中。優(yōu)選地,當(dāng)填充移位寄存器鏈120時,移位寄存器鏈120中的數(shù)據(jù)將通過連接121被傳送到緩沖器122,由此它們被傳送到配置可編程邏輯核心111的邏輯結(jié)構(gòu)的SRAM編程寄存器的“列”123。在緩沖器122中的數(shù)據(jù)被傳送到列123時,配置數(shù)據(jù)優(yōu)選地將繼續(xù)從非易失性存儲112被鎖定到移位寄存器鏈120中(直到存儲112為空)。到移位寄存器鏈120再次為滿時,緩沖器122優(yōu)選地將準(zhǔn)備再次接收數(shù)據(jù),優(yōu)選地允許非易失性存儲112之中的數(shù)據(jù)不間斷流向移位寄存器鏈120中。
[0019]然而,由于可以使用配置數(shù)據(jù)的加密來防止未授權(quán)的監(jiān)聽連接130上的配置數(shù)據(jù),因此編程電路113包括控制和解密模塊114用于選擇適當(dāng)?shù)拿荑€并且解密配置數(shù)據(jù),如以下所描述的那樣。
[0020]如上所述,期望允許單獨(dú)加密配置數(shù)據(jù)的不同部分。例如編程電路113可以允許器件100的部分重配置。因此,在一個方案中,初始配置可以由器件制造商存儲于非易失性配置存儲中,包括某些專屬配置數(shù)據(jù)。從器件制造商購買該器件的購買者隨后可以使用部分重配置特征來添加其自己的專屬配置數(shù)據(jù),而不破壞或者重寫器件制造商的配置數(shù)據(jù)。器件100隨后可以被出售給另一購買者,該另一購買者隨后可以使用部分重配置特征來添加最終編程,而不破壞或者重寫器件制造商的配置數(shù)據(jù)或者第一購買者的配置數(shù)據(jù),隨后可以將器件100并入到最終用戶產(chǎn)品中。作為備選,器件制造商可以在單獨(dú)介質(zhì)上向第一購買者提供其配置數(shù)據(jù),并且第一購買者可以在單獨(dú)介質(zhì)上向另一購買者提供制造商的配置數(shù)據(jù)和其自己的配置數(shù)據(jù)二者。另一購買者隨后可以向編程軟件中輸入這些來自單獨(dú)介質(zhì)的數(shù)據(jù)以及其自己的編程指令以產(chǎn)生最終配置。如下所述,每個部分或者部分配置仍然可以單獨(dú)進(jìn)行加密。
[0021]在另一方案中,第一公司想要從第一供應(yīng)商購買PLD并且從第二供應(yīng)商購買一些知識產(chǎn)權(quán)核心。第一供應(yīng)商或者第二供應(yīng)商向第一公司出售器件。無論哪種方式,器件帶有當(dāng)前非易失性密鑰進(jìn)行出售,該非易失性密鑰可以是通過將熔斷器陣列中所選的熔斷器熔斷而設(shè)置的“熔斷器密鑰”。不管誰設(shè)置當(dāng)前密鑰,第二供應(yīng)商向第一公司出售利用當(dāng)前密鑰加密的配置圖像。第一公司不知道當(dāng)前密鑰,因此第二供應(yīng)商的配置圖像是安全的。第一公司隨后生成其自己的配置圖像以及易失性密鑰,該易失性密鑰用來生成器自己的配置圖像的加密版本。
[0022]在利用第二供應(yīng)商的加密配置圖像配置器件并且隨后執(zhí)行部分重配置以在第一公司自己的加密配置圖像中添加之后,第一公司隨后在待出售給最終用戶的最終產(chǎn)品中并入該器件。如上所述,兩個配置可以駐留在芯片上存儲器件或者芯片外存儲器件中。第一公司的專屬配置和第二供應(yīng)商的專屬配置對于那些第二公司中的每個第二公司以及最終用戶來說仍然安全。
[0023]這些事件序列僅為示例,并且或多或少的中間購買者和重配置是可能的。無論如何,在這些示例中,提供配置數(shù)據(jù)的實體的一些實體或者所有實體可能想要通過加密來保護(hù)這些配置數(shù)據(jù)。為此目的,可以設(shè)計部分重配置特征以允許不同的部分重配置被加密或者未被加密,該部分重配置包括初始配置本身(其可以是根據(jù)于2011年4月13日提交的Gao等人的共同待審的、共同轉(zhuǎn)讓的美國專利申請N0.13/085, 679的全部或者部分配置)。對應(yīng)于每個部分重配置(包括初始配置)的一連串控制位標(biāo)識特定部分重配置是否被加密。因此,在其中存在兩個重配置(初始重配置和一個部分重配置)的示例中,可能存在兩個如下控制位(其中“P0F”代表包含配置比特流的“程序員對象文件”):
[0024]
【權(quán)利要求】
1.一種可編程集成電路器件,包括: 用于配置數(shù)據(jù)的輸入,所述配置數(shù)據(jù)用于所述可編程集成電路器件,所述配置數(shù)據(jù)根據(jù)至少一種加密方案至少部分被加密; 多個密鑰存儲,其存儲用于所述至少一種加密方案的多個解密密鑰; 控制電路裝置,可操作用于從所述至少部分加密的配置數(shù)據(jù)標(biāo)識所需密鑰并且可操作用于生成密鑰選擇信號;以及 密鑰選擇電路裝置,響應(yīng)于所述密鑰選擇信號可操作用于讀取所述多個密鑰存儲并且可操作用于向所述控制電路裝置提供所述所需密鑰;其中: 所述控制電路裝置包括解密電路裝置,所述解密電路裝置可操作用于使用所述所需密鑰解密所述至少部分加密的配置數(shù)據(jù)。
2.根據(jù)權(quán)利要求1所述的可編程集成電路器件,其中所述密鑰選擇電路裝置可操作用于從所述多個密鑰存儲中的一個密鑰存儲選擇所述所需密鑰。
3.根據(jù)權(quán)利要求2所述的可編程集成電路器件,其中所述密鑰選擇電路裝置包括多路復(fù)用器。
4.根據(jù)權(quán)利要求1所述的可編程集成電路器件,其中所述密鑰選擇電路裝置可操作用于從所述多個密鑰存儲讀取所述解密密鑰中的至少兩個解密密鑰,并且可操作用于從所述解密密鑰中的所述至少兩個解密密鑰生成所述所需密鑰。
5.根據(jù)權(quán)利要求4所述的可編程集成電路器件,其中: 所述密鑰選擇電路裝置包括異或門;并且 所述密鑰選擇電路裝置可操作用于通過使用所述異或門來執(zhí)行異或功能而組合所述解密密鑰中的所述至少兩個解密密鑰來生成所述所需密鑰。
6.根據(jù)權(quán)利要求1所述的可編程集成電路器件,其中: 所述可編程集成電路器件通過向所述輸入中寫入配置數(shù)據(jù)的附加部分而部分可重配置,所述配置數(shù)據(jù)的附加部分根據(jù)所述至少一種加密方案中的一種至少部分被加密; 配置數(shù)據(jù)的原始部分和所述配置數(shù)據(jù)的附加部分的相應(yīng)部分需要相應(yīng)解密密鑰;所述控制電路裝置可操作用于從所述配置數(shù)據(jù)的至少部分加密的原始部分和所述配置數(shù)據(jù)的至少部分加密的附加部分標(biāo)識相應(yīng)所需密鑰,并且可操作用于生成相應(yīng)密鑰選擇信號;并且 所述密鑰選擇電路裝置可操作用于響應(yīng)于所述相應(yīng)密鑰選擇信號讀取所述多個密鑰存儲并且可操作用于向所述控制電路裝置提供所述相應(yīng)所需密鑰。
7.根據(jù)權(quán)利要求6所述的可編程集成電路器件,還包括: 配置數(shù)據(jù)存儲,可操作用于存儲所述配置數(shù)據(jù)并且可操作用于向所述輸入提供所述配置數(shù)據(jù);其中: 所述配置數(shù)據(jù)存儲可操作用于以其相應(yīng)加密形式存儲所述配置數(shù)據(jù)的原始部分和所述配置數(shù)據(jù)的至少一個附加部分中的所述相應(yīng)部分。
8.根據(jù)權(quán)利要求1所述的可編程集成電路器件,其中所述多個解密密鑰包括: 非易失性密鑰; 易失性密鑰;以及 可加載密鑰。
9.根據(jù)權(quán)利要求8所述的可編程集成電路器件,其中所述非易失性密鑰是熔斷器密鑰。
10.根據(jù)權(quán)利要求8所述的可編程集成電路器件,還包括用于所述易失性密鑰的備用電池。
11.根據(jù)權(quán)利要求1所述的可編程集成電路器件,其中: 所述可編程集成電路器件包括可編程邏輯核心;并且 所述控制電路裝置可操作用于經(jīng)由所述輸入向所述可編程邏輯核心提供解密的配置數(shù)據(jù)。
12.根據(jù)權(quán)利要求11所述的可編程集成電路器件,還包括配置數(shù)據(jù)存儲,所述配置數(shù)據(jù)存儲可操作用于存儲所述配置數(shù)據(jù)并且可操作用于向所述輸入提供所述配置數(shù)據(jù)。
13.根據(jù)權(quán)利要求12所述的可編程集成電路器件,其中所述配置數(shù)據(jù)存儲和所述可編程邏輯核心形成于單個裸片上。
14.根據(jù)權(quán)利要求12所述的可編程集成電路器件,其中所述配置數(shù)據(jù)存儲和所述可編程邏輯核心形成于單獨(dú)的裸片上。
15.根據(jù)權(quán)利要求14所述的可編程集成電路器件,其中所述配置存儲和所述可編程邏輯核心裝配在單個封裝中。
16.根據(jù)權(quán)利要求`11所述的可編程集成電路器件,其中所述可編程邏輯核心是現(xiàn)場可編程門陣列。
17.一種可編程集成電路器件,包括: 控制電路裝置; 多個密鑰存儲,可操作用于存儲多個解密密鑰; 密鑰選擇電路裝置;以及 用于配置數(shù)據(jù)的輸入,所述配置數(shù)據(jù)用于所述可編程集成電路器件,所述配置數(shù)據(jù)包括多個部分配置數(shù)據(jù)部分;其中: 所述多個部分配置數(shù)據(jù)部分中的相應(yīng)部分配置數(shù)據(jù)部分被加密并且需要相應(yīng)解密密鑰; 所述控制電路裝置可操作用于從所述配置數(shù)據(jù)標(biāo)識相應(yīng)所需密鑰并且可操作用于生成相應(yīng)密鑰選擇信號;并且 所述密鑰選擇電路裝置可操作用于響應(yīng)于所述相應(yīng)密鑰選擇信號而讀取所述多個密鑰存儲并且可操作用于向所述控制電路裝置提供所述相應(yīng)所需密鑰。
18.根據(jù)權(quán)利要求17所述的可編程集成電路器件,其中所述多個解密密鑰包括: 非易失性密鑰; 易失性密鑰;以及 可加載密鑰。
19.根據(jù)權(quán)利要求18所述的可編程集成電路器件,其中所述非易失性密鑰是熔斷器密鑰。
20.根據(jù)權(quán)利要求19所述的可編程集成電路器件,還包括用于所述易失性密鑰的備用電池。
21.根據(jù)權(quán)利要求17所述的可編程集成電路器件,其中:所述可編程集成電路器件包括可編程邏輯核心;并且 所述控制電路裝置可操作用于經(jīng)由所述輸入向所述可編程邏輯核心提供解密的配置數(shù)據(jù)。
22.根據(jù)權(quán)利要求21所述的可編程集成電路器件,還包括配置數(shù)據(jù)存儲,所述配置數(shù)據(jù)存儲可操作用于存儲所述配置數(shù)據(jù)并且可操作用于向所述輸入提供所述配置數(shù)據(jù)。
23.根據(jù)權(quán)利要求22所述的可編程集成電路器件,其中所述配置數(shù)據(jù)存儲和所述可編程邏輯核心形成于單個裸片上。
24.根據(jù)權(quán)利要求22所述的可編程集成電路器件,其中所述配置數(shù)據(jù)存儲和所述可編程邏輯核心形成于單獨(dú)的裸片上。
25.根據(jù)權(quán)利要求24所述的可編程集成電路器件,其中所述配置存儲和所述可編程邏輯核心裝配在單個封裝中。
26.根據(jù)權(quán)利要求21所述的可編程集成電路器件,其中所述可編程邏輯核心是現(xiàn)場可編程門陣列。
27.一種配置可編程集成電路器件的方法,包括: 在非易失性存儲中存儲用于所述可編程集成電路器件的部分配置數(shù)據(jù),所述部分配置數(shù)據(jù)根據(jù)至少一種加密方案至少部分被加密;并且 在所述可編程集成電路器件上的多個密鑰存儲中的一個密鑰存儲中存儲用于所述部分配置數(shù)據(jù)的至少一個解密密鑰。
28.根據(jù)權(quán)利要求27所述的方法,其中所述至少一個解密密鑰包括以下中的一項: 非易失性密鑰; 易失性密鑰;以及 可加載密鑰。
29.根據(jù)權(quán)利要求28所述的方法,其中: 所述至少一個解密密鑰是非易失性密鑰;并且 所述非易失性密鑰是熔斷器密鑰。
30.一種操作可編程集成電路器件的方法,所述集成電路器件的配置數(shù)據(jù)在所述可編程集成電路器件中被加密,所述方法包括: 讀取與所述配置數(shù)據(jù)相關(guān)聯(lián)的控制數(shù)據(jù);并且 基于所述控制數(shù)據(jù),選擇密鑰來解密所述配置數(shù)據(jù);其中所述密鑰從以下之一中選擇: (a)非易失性密鑰; (b)易失性密鑰; (C)可加載密鑰;以及 (d)所述非易失性密鑰、所述易失性密鑰和所述可加載密鑰中的至少兩種密鑰的組合。
31.根據(jù)權(quán)利要求30所述的方法,其中: 所述配置數(shù)據(jù)的多個部分被單獨(dú)加密; 所述讀取包括讀取與所述多個部分中的每個部分相關(guān)聯(lián)的控制數(shù)據(jù);并且 所述選擇包括選擇單獨(dú)的密鑰來解密所述配置數(shù)據(jù)。
32.根據(jù)權(quán)利要求31所述的方法,其中每個所述單獨(dú)的密鑰單獨(dú)地從以下之一中選擇: (a)所述非易失性密鑰; (b)所述易失性密鑰; (c)所述可加載密鑰;以及 (d)所述非易失性密鑰、所述易失性密鑰和所述可加載密鑰中的至少兩種密鑰的單獨(dú)的組合。
【文檔編號】G06F21/76GK103493062SQ201280020697
【公開日】2014年1月1日 申請日期:2012年4月17日 優(yōu)先權(quán)日:2011年4月29日
【發(fā)明者】D·A·瑞斯, J·喬伊斯 申請人:阿爾特拉公司