今日超大型及複雜的ASIC及FPGA設計使用了大量的IP,這些IP區塊可能是一般用途的處理器核心,數位信號處理器(DSP)核心,記憶體控制器,通信功能模組等。這些佔了整體設計絕大部份的外部IP,通常來自一些不同的IP供應商。
由於每個IP區塊代表了大量的時間及投資,毫無意外的,IP供應商當然希望能保護他們的機密。這可經由對原始碼加密來達成,這種方法意味者透過編碼,讓未獲得授權的廠商,無從理解其內容。
這個問題在於電子設計流程中仍缺乏一套讓業界互通的加解密標準,造成不同的IP及EDA供應商各自採用不同的自訂方案,導致不同組織中大量的支援負擔,這對使用者很困擾,而且導致不一致性(如:電路模擬時,用的是一種IP區塊版本,但合成電路時,卻採用另一種版本)。
為了解決這個問題,科學家及工程師們已經開發出一種開放式的IP加密環境,以利於整個設計流程中,從IP到EDA到矽晶供應商,都使用同一套經加密保護的IP。
文中首先探討在設計流程中有哪些加密及解密的?驟,接著會介紹傳統加密技術(特別是對稱及非對稱演算法),並解釋在電子設計流程的環境中用這些方法會有哪些問題,最後描述一種利用既有技術產生的,綜合對稱及非對稱之開放式解決方案,完全能滿足現代電子設計環境的需求,而且能輕易被IP,EDA,矽晶供應商所採用。
設計流程中的加密及解密?驟
在介紹加解密的各種選擇之前,了解這些動作在設計流程中哪裡出現是很重要的,舉例來說,考慮一個FPGA流程中的合成部份有關的動作,如圖一所示。
IP區塊一般是由RTL程式寫成,外部供應商加密(圖一a)。這個加密後的區塊接下來被送到客戶設計團隊的手中。設計團隊一般會將此IP區塊和他們自家產生的RTL結合在一起,以建構出整體設計。該團隊會使用來自某家EDA供應商的合成工具將設計轉成gate-level netlist(圖一b);稍後他們會用由FPGA供應商提供的佈局繞線工具來產生位元流(bit-stream),最後並用以設定程式化FPGA(圖一c)。
再一次,圖一著重在流程中與合成相關的動作。如同本篇稍後會討論到的-加密的IP可能需要被多個EDA工具使用到-像是電路合成及模擬-這些工具常常由不同供應商所提供。
《圖一 和FPGA設計流程中有關電路合成部份的加密及解密動作》 |
|
在這電路合成的例子中,範例區塊-連同其他IP區塊-會先被解密,再與設計中其他任何無加密保護的部份一起合成。很多情形下,要保護的netlist-或至少那些受保護IP功能的部份netlist-會被重新加密以進一?送進FPGA供應商的工具。重要的是,所有的解密、資料處理,以及加密動作都發生於電路合成之應用程式本身內部。解密後的IP絕不會被使用者取用到,而加密過的檔案只有在記憶體內部解密(並沒有儲存在磁碟中),而且是以小區塊一塊一塊地解密,以阻止記憶體傾印技術的入侵。
緊接在合成後,加密netlist送進FPGA供應商的工具中,又一次,任何受加密保護的netlist部份會先解密才能被佈局繞線引擎處理,圖一中的最後?驟顯示了由矽晶供應商的佈局繞線應用程式所產生的位元流的加密過程。本例中,佈局繞線工具可能對整個位元流加密或是僅針對代表著受加密保護IP的位元流部份來加密。這?驟的責任落在FPGA供應商的工具身上,這是FPGA架構底層的一個功能,本文不再進一?探究。
ASIC設計流程和圖一所示的FPGA流程非常類似,但ASIC流程包含了非常多於FPGA流程中所沒有的驗証?驟,每一步驟都需要使用EDA工具,而且每個工具都可能來自不同的EDA供應商;再者,在ASIC流程的情況下,佈局繞線引擎輸出的是GDSII檔案,這是用來建立隨後生產製造元件的光罩,目前這些GDSII檔案通常不會加密,如前所述,本文提出的流程可以很輕易地應用在這個領域。
目前加密流程的問題
有二種主要的加/解密演算法:可分為對稱及非對稱。每種技術的優缺點將會被討論到。
對稱加密法
要對一原始碼加密,加密演算法用一種被稱作鑰匙(key)的特別數字,鑰匙的值會改變這演算法細部的運算,也就是改變原始檔內容會如何被「打亂重組」的方法。這意味著如果同樣的檔案用二個不把的鑰匙加密,結果會完全不同,演算法及鑰匙的產生,就是要讓未被授權的一方想要「破解密碼」的困難度盡可能地增加;換言之,要想打開加密檔案取用資料,使用者需要取得適當的鑰匙。
過去,加密演算法主要都是一種大家所熟知的對稱法,意指加解密是用同一把鑰匙(如圖二),這種技術的好處是計算量需求相對少,利用現代電腦,即使加密很大的檔案,使用對稱演算法僅需花數秒鐘的時間,而且當檔案被像是電路合成等應用軟體解密以取用時,所花的時間之少,使用者根本毫無察覺。
《圖二 對稱加密演算法需發動加密者和使用者(執行解密的人)交流鑰匙》 |
|
這型演算法的例子是資料加密標準(Data Encryption Standard,DES),其標準於1977年首次公開,三重DES[亦被稱為TDES或TDEA(三重資料加密演算法),包含使用三次的DES],以及於2001被採用之更複雜的先進加密標準(Advanced Encryption Standard,AES)。
對稱加密致命弱點是需要鑰匙的交流,自有密碼學以來,這交流就得由信得過的情報員走遍全球以傳遞鑰匙給使用者,在電子設計的環境中,這方法顯然行不通,存在如此眾多的IP及EDA供應商的事實,讓情況變得更混亂,儘管實際的數目很難去限制,大約有300至500個重要的IP供應商在全球各角落分配25,000至30,000個不同的IP區塊(其中大約2/3是數位IP,1/3是類比及混訊IP)。
若每家IP供應商僅用一把鑰匙,若那把鑰匙被「破解」或「洩漏」,所有來自那家供應商的IP都會被牽連,因此為了最大的安全性,每一家IP供應商有必要對每一家EDA供應商都製作一把唯一的鑰匙;同樣地,每家EDA供應商也必須為每一家矽晶/FPGA供應商製作一把唯一的鑰匙,其結果就是一團亂,更別提要所有應用程式如電路模擬及合成等軟體必須保證使用了同一版本的IP。
甚者,若IP供應商決定更改鑰匙版本並重新發行IP,使用者必須等到該EDA應用軟體(內含有個別IP及矽晶/FPGA供應商的鑰匙)的下個正式發行版本。
每當IP供應商提出他們內部自有的加密機制,他們必須說服各EDA供應商來使用它,同樣的,每當EDA供應商提出他們自有的方法時,他們必須說服IP供應商,其他EDA廠商,以及矽晶/FPGA供應商採用,最終的結果是整個業界混雜著各種相異且不相容的機制,嚴重地妨礙設計及實作流程中,不同應用程式之間的互通性。
非對稱加密法
Whitfield Diffie及電機工程師Martin Hellman於1976年創造了加/解密著名的非對稱性形式,採用「非對稱」這個名稱是因為用來解密資料鑰匙和用來加密資料的鑰匙是不同的,儘管DH(Diffie-Hellman)規約仍被使用,一個更普遍及一般使用的方法是MIT研究者於1977年所描述的,這系統就是著名的RSA(以發明人的姓:Riverst,Shamir,及Adleman取名)。
非對稱機制一般也稱為公鑰加密法,因為它是靠二種鑰匙的使用:公鑰及私鑰。這個點子來自於公鑰是二個質數的乘積,它是每個人都可取用的(至少是那些需要知道的每個人)。公鑰用來加密,但它不能用來對受保護的檔案解密;解密需要先取得私鑰,那是用來建立公鑰的其中一個質數。
例如,一家EDA供應商想要建立一個公鑰及其相對應私鑰,會先將公鑰讓所有的IP供應商取得,而這些供應商會用這個公鑰對他們的IP區塊加密;接著會使用它的私鑰(這會內建於它的應用程式中,為了安全起見,為將私鑰本身以加密形式儲存於這些應用軟體內部)對每個IP供應商的IP解密(如圖三)。
《圖三 非對稱加密演算法需要使用者產生公鑰及私鑰,以提供公鑰給那些執行解密的人》 |
|
除了他們相較於對稱機制更難破解外,非對稱機制的主要優勢,則是用來解密檔案的鑰匙不會到處傳遞。
但該機制的缺點之一是IP供應商仍必須建立多個IP區塊的加密副本-每個EDA廠商一份-這會導致之前提過的一致性問題(例如:電路模擬及合成的IP不同版本)
但非對稱方法的最大缺點可能是其高度計算密集動作,舉例來說,一個大的IP區塊會花上數個小時來加密或解密,但對IP供應商來說,極為不便,而對使用者,基本上來說,更是一個終極障礙。考慮一個包含數個IP區塊的設計-對使用者來說,在模擬或合成都尚未著手進行前,要再花上數小時解密每個區塊是完全無法接受的。
解決方案:綜合式解密流程
IP加密問題的解決方案就是用一種綜合對稱-非對稱的加/解密流程,整個解決方案可稱作密碼系統。一開始,先考慮由IP供應商所執行的初始加密(如圖四)
首先,IP供應商將IP本身以內部產生的對稱鑰來加密(如圖四a),為了討論方便,稱這把鑰為「資料鑰」;如同前面討論過的,此種加密形式非常快,即使用於大區塊的IP上,步驟的結果稱之為資料塊,注意到重要的一點是IP供應商可自由選擇他們希望使用的加密形式:DES,三重DES,或AES。
《圖四 在綜合式方法中,資料是以對稱演算法加密,而加密資料的那把鑰匙本身再以非對稱演算法加密。》 - BigPic:662x466 |
|
接下來,IP供應商將這把資料鑰透過RSA演算法以EDA廠商的公鑰來加密(如圖四b)。其結果稱之為「鑰匙塊」。IP供應商重覆這個過程以產生多個鑰匙塊。每個EDA廠商一塊,每塊都是以那家的EDA廠商的公鑰來加密。雖然本質上這種型式的加密是需密集計算的。但資料鑰本身非常小,所以整個過程僅花費數秒。
最後,IP供應商將資料塊及所有的鑰匙塊,封包於單一檔案中,而與所有的EDA廠商就以此檔案交流(如圖四c)。
有趣的是,這種綜合式方法的技術和PGP(Pretty Good Privacy)機制一樣,該機制由Phil R. Zimmermann於1991年首次公開。即使PGP是相當普遍,但它仍不適用於電子設計流程中,由於其檔案為私有格式,使用此種技術必須強迫於整個流程中都使用PGP。甚者,PGP只提供點對點的交流,所以只支援一個鑰匙塊。相較之下,這裡提出的機制,透過多個鑰匙塊,可支援多方接受者的使用模式。(注意到該接受方從不需分享彼此的秘密)
現在讓我們從EDA廠商的角度來看綜合式流程。尤其從電路合成器供應商的觀點來看事情。因為這些動作已包含其他工具所需的動作,如電路模擬,(圖五)
當合成工具自供應商取得IP區塊,第一步就是使用EDA廠商的私鑰(圖五a)-它已經編碼並內嵌於合成器應用軟體本身中-來對該EDA廠商的鑰匙塊解密(圖五b)並將IP供應商使用的對稱式資料鑰擷取出來(圖五c)
《圖五 合成工具將緊接於資料後的資料鑰解密;而產生的netlist以原本的資料鑰來加密,該資料鑰本身接著又以FPGA供應商的公鑰來加密》 - BigPic:600x397 |
|
一旦被擷取出,就可以這把鑰匙(圖五d)來對加密後的RTL資料塊(圖五e)解密,以存取該IP區塊(圖五f)的RTL表示式。注意到合成工具會自動以適當的演算法來對資料解密(也就是IP供應商所用的演算法):DES,三重DES或AES(再提一次,我們稍後會再回頭來看這點)
也注意到,針對其他加密保護的IP,不論來自這個IP供應商或其他IP供應商,這過程會不斷重覆。合成工具會把所有的IP區塊之RTL,連同設計工程師(圖五g)的其它未被加密保護的RTL一起編譯合成為閘級netlist(圖五h)。
在整個合成過程中,合成工具一直鎖定被加密保護的IP區塊。若IP供應商已經先行要求其IP區塊必須始終維持加密保護狀態,合成工具會使用該IP供應商提供的原始對稱資料鑰(圖五i)-以及該IP供應商原先使用的演算法-來將和該IP區塊(圖五j)有關的netlist部份加密並產生對應之加密netlist資料塊(圖五k)。
合成工具接下來使用由FPGA供應商所提供之公鑰(圖五l)-其本身是經過編碼並內嵌於合成應用軟體中-來對資料鑰(圖五m)加密並產生對應之資料鑰(圖五n)。這個過程對設計中所有被加密保護的IP區塊都會重覆一次。最後,這個安全無虞的netlist交給FPGA供應商的佈局繞線軟體。任何受加密保護區塊的內容,絕不會遭未經授權的其他方所存取。
其他的考量
為了讓EDA設計流程能支援所提出的密碼系統,在以語言表示的RTL及閘級netlist檔案,如Verilog, VHDL及EDIF中,必須要有某種適當的機制來描述:
- ●多重鑰匙塊
- ●每個鑰匙塊的加密機制
- ●打算使用每個鑰匙塊的使用者
- ●資料塊
- ●資料塊的加密機制
事實上,Cadence Design Systems公司已經將他們提議的嵌入式加密機制贈給IEEE1364-2005年Verilog工作小組,並於標準制定的路上(使用Verilog相容擴展指令)來將加密系統之定義內嵌於HDL檔案內。例如,該標準允許IP供應商指定他們希望採用的加密演算法形式,像是DES,三重DES,及AES(同樣的基本方法最近也被贈予IEEE1076-200x VHDL技術委員會)
標準的重要性是要訂出某種機制讓IP供應商可以指定屬性,以控制下游工具使用他們IP的權限。比如說,代表某一特定IP區塊的部份輸出netlist,IP供應商可能要具備設定他們是否要被重新加密的能力。(核心功能在整個流程中保持加密保護狀態,而外部介面功能則允許在合成後被「看見」 (也就是解密開來)以利驗証及除錯, 某些IP區塊在層級中可能正是以此方式呈現,這是可意料到的)
結論
目前於電子設計流程中並無加解密標準以促進業界互通,結果不同的IP及EDA供應商各自採用不同的自有機制。這也導致了各組織中大量的支援負擔。這讓使用者困擾,也可能造成版本的不一致 (如:電路模擬時,用的是一種IP區塊版本,但合成電路時,用的是另一種版本)。
為了解決這問題,Synplicity正提議一種開放式IP加密環境,可於整個設計流程中都使用加密保護的IP:從IP供應商到EDA再到矽晶廠商,這個對稱-非對稱綜合式加/解密技術有多項好處。首先IP供應商只需建立單一版本的加密資料提供給所有有意使用的廠商,此舉確定了一致性,因為能保証所有的下游工具都會使用相同的IP。
另一項優勢是,可以對大型的資料區塊以快速的對稱法加密,而僅對較小的資料鑰以較慢,計算力密集之非對稱法加密,不過這機制最主要的好處在於它是開放式的,可以利用現存的技術,完全地滿足現代電子設計環境的需求,它能促進業界互通,可應用於ASIC及FPGA設計流程中,並能輕易地被IP,EDA及矽晶/FPGA供應商所採用。
(作者為Synplicity全球工程部資深副總裁)