為希科技
如何防止FPGA設計被複製?
如何防止FPGA設計被複製?
刊登日期 : 2009-07-08本文介紹了一種新的設計標記方法,可幫助用戶有效對付迅速盛行的IP剽竊和複製設計之風。過去,這類話題甚少受到業界關注,但最近,有關這方面的討論聲音越來越強烈。
據估計,盛行的仿冒電子產品已佔整體市場的10%──該數字獲得反水貨市場和反假冒聯盟(AGMA)證實──AGMA是由惠普、思科和其他大型OEM公司組成的產業聯盟。據AGMA統計,製造商因此造成的損失超過1,000億美元,而對最終用戶來說,信譽損毀和可靠性問題帶來的隱性成本更難以估算。
可編程邏輯的風行和ASIC衰退所帶來的負面影響,是越來越容易拷貝設計。一些亞洲或東歐公司公開聲稱專門從事‘逆向工程’或拷貝PCB佈局及記憶體內容。對ASIC進行逆向工程是一件困難、昂貴且費時的工作,但拷貝最流行FPGA的配置位元串流卻相當簡單(圖1)。

圖1:剽竊一個FPGA設計並不複雜
因此,許多公司也許會發現他們的知識產權(lP)第二天就出現在競爭對手的產品中。剽竊者不需要花費半點研發成本,因此能以比合法供應商低得多的價格出售產品,竊取更多市場佔有率。
問題是如何才能阻止這種偷竊行為並證明設計所有權。Algotronix公司的DesignTag產品或許可做到這一點。DesignTag程式碼可以隱藏在FPGA位元串流中,即使剽竊者知道FPGA位元串流中包含DesignTag程式碼,仍然很難找到並去除它們。
一旦這個程式碼被複製進被盜取的位元串流中,它就會像信標一樣不斷提示人們這個設計是拷貝的。這個概念類似於使用UV筆做的郵遞區號或郵遞區號的標記價值。它不能阻止盜竊行為,但能在日後使用時釐清所有權。
以成本觀點來看,在XC3S2000 FPGA中,DesignTag程式碼只佔0.57美分的矽晶片(使用100片以上的價格),佔用晶片上1.3%的邏輯資源。與非法拷貝造成的潛在損失相較,這點開銷微乎其微。
另一個問題來自所謂的‘過度製造(over-building)’。造成這個問題的背景因素是,過去10多年內許多公司撤銷生產部門,專注於設計產品,並將產品交給合約廠商(CEM)製造。這種方式將CEM置於中心和關鍵位置。當然,絕大多數CEM是負責任的,提供有價值的服務。但也有少數不道德的CEM會生產超出合約數量的產品並出售給水貨市場,從中獲取超額利潤。這時DesignTag就能用來識別設計來源和所有者。
DesignTag的另一項應用是提供串列序列號或版本識別。醫療、汽車、產業、軍事或航空領域的製造商,可能希望設備能附上最終用戶程式碼標記,或追蹤FPGA配置版本。在更新頻繁的應用場合,版本控制能力相當重要。而無需進行電氣連接就能在工作中的系統中檢測出DesignTag的特性,對採用球閘陣列封裝的裝置來說優勢更多,因為接觸這種封裝的頂部比電氣連接更加方便,而且不用求助於可能影響正常工作的軟體或硬體中斷就能實現監視功能。
另一個潛在好處是讓嵌入式系統與DesignTag互動,以便標記出故障或狀態情形。在這種應用中,DesignTag經過編程可輸出一個指示內部狀態的不同程式碼。

圖2:DesignTag提供了‘剽竊證據’
DesignTag如何運作?
DesignTag是一個小型低成本IP核心,可內建在FPGA中作為設計的一部份。它是一種帶唯一程式碼(‘簽名’)的數位核心,可以從外部識別,而無需讀取FPGA位元串流或內部暫存器。
它的工作原理是以一種預先定義好的方式調變主元件的功耗。微小的熱脈衝能以極低的衰減透過晶片封裝傳播。選擇功率‘突波’電平以提供僅約0.1℃的封裝溫升。額外增加的典型功耗值是5mW,而中等規模的Spartan FPGA正常功耗通常大於150mW,這意味著這個標記訊號遠在雜訊電平之下。
默認情況下,DesignTag在工作15分鐘後關閉(用戶可修改該時間)。這種做法有兩大作用。首先,它消除了少量增加的功耗。其次,由於功率循環,剽竊者的檢測也更加困難。DesignTag也可以被FPGA
DesignTag資料庫
所有DesignTag的程式碼資料都保存在中央資料庫中。用戶可以選擇是否願意將他們的程式碼‘公開’或‘隱蔽’。公開列表的優勢在於所有DesignTag閱讀軟體都可以檢測這些程式碼,允許用戶、執行代理或合約廠商確認被測元件(DUT)的有效性。
相較之下,當用戶不希望任何第三方知道他們的產品是否被打上了標記時,隱蔽程式碼是最好的選擇。在這種情況下,程式碼由用戶分發到受信任方,只有安裝了這些程式碼的閱讀軟體才能檢測出相應的標記。
在FPGA中整合DesignTag
在FPGA中使用的這種IP核心被實例化為HDL程式碼,形成一個用Verilog或VHDL編寫的‘黑盒’。可提供的內容包括用於驅動熱量輸出的內建程式碼以及電路要求的I/O接腳。全數位設計尺寸很小,一般在賽靈思的Spartan 3 FPGA中只佔用256個片(slice)。
基於安全性考慮,這種核心只提供加密過的EDIF網表。該IP採用了多種技術來阻止‘逆向工程’,並能將自己隱蔽起來防止受到篡改或檢測。
DesignTag核心很大程度上獨立於用戶設計,因此對設計流程的影響很小。
DesignTag採用2MHz-250MHz範圍內的一個輸入時脈來驅動工作時序。這個時脈應來源於系統內的任何可用時脈,而不能是專門為標記IP核心產生的時脈,原因有兩個。當然最主要的是最低成本因素,但它還能透過合併到系統內來混淆檢測或停止標記功能的企圖。
DesignTag的控制輸入可以由嵌入式系統驅動,或在設計階段設置為預設值。例如,標記核心可以根據需要設置為連續發送;也可以在上電後的一段規定時間內發送,然後進入待機模式。還有另外一個選項,即發送序列可以在任何時間由觸發輸入端來啟動。
標記核心可以許可最多4個不同的內建程式碼,這可以透過Code Select輸入端進行選擇。嵌入式系統可以編程這個核心,讓它根據要求發送其中一個程式碼來指示內部狀態條件。例如,指示記憶體發生溢出或檢測到軟故障的條件可以發送出來,整個過程不會中斷系統功能。
Tamper output訊號可以從DesignTag送入嵌入式系統,這有兩個好處。第一,它能作為削弱系統性能的去啟動訊號,並透過翻轉配置位元串流中的隨機位元來迷惑取消標記功能的企圖。第二,如果攻擊者對位元串流實施逆向工程來重建設計,那麼DesignTag區塊便會因為看起來像是設計的原始組成部份而無法被識別。
可以在元件正常工作時,將熱電偶以良好熱接觸的方式放置在封裝頂部來檢測DesignTag程式碼,如圖3所示

圖3:用熱電偶檢測熱訊號
熱量讀取資料被輸入進DesignTag閱讀軟體,並進行解密。完成程式碼識別的檢測時間需要數分鐘,系統可以檢測和區分同一元件中的多個標記。
不良條件可能增加檢測時間,但內部演算法會隨著採樣量的增加而提高信任度(圖4)。如果閱讀工作在靜止空氣中進行,獲取時間可以縮短。由於加電而導致DUT自身的散熱不會阻止標記的檢測。可能延長檢測時間的因素包括:熱不穩定狀態,探針與封裝之間接觸不良,或一個設計中有多個程式碼。

圖4:訊號被累積和處理直到取得很高的把握
DesignTag可支援所有主流封裝類型。不過目前DesignTag不推薦用於散熱器或採取強制冷卻的場合。
Algotronix公司推薦使用Pico科技公司帶熱電偶的TC-08資料記錄儀。其他設備正在評估中。TC-08已包含在DesignTag入門套件中,套件中還包含有閱讀器軟體、安裝有FPGA和5個有效DesignTag程式碼的評估板(圖5)。閱讀器軟體可在Windows(XP或Vista)的PC上執行。

圖5:入門套件包括資料記錄儀、軟體、評估板和5個唯一程式碼
攻擊DesignTag的企圖
任何反剽竊機制的最重要特性之一是識別、刪除或去啟動身份標記的難度。基於明顯的原因,本文不會詳細描述防止刪除和逆向工程的內部對策,不過讓我們討論一下剽竊者會如何攻擊DesignTag。
潛在偷竊者要解決的第一個問題是判斷被盜程式碼中是否包含DesignTag。微小的熱訊號包含有64位元程式碼,必須使用DSP和解密技術才能檢測出來。擴展程式碼被用來控制採用線性反饋移位暫存器(LFSR)類電路的熱發生器。
擴展程式碼發生電路基於唯一的‘標記ID’,就像是密鑰一樣,其中每個密鑰可導致不同的偽雜訊序列。DesignTag閱讀軟體可以識別公開程式碼,但沒有基礎知識和授權,軟體是無法檢測私有程式碼的,這些程式碼將保持隱秘狀態。
各種形狀的標記波形是偽隨機的。這些程式碼是專門為了破解試圖透過重複功率循環和關聯被觀察訊號以便對訊號進行解碼的行為所設計的。
另外一種可能的攻擊方式是獲得多個DesignTag IP核心,並在位元串流或加密的網表級對它們進行比較,以便觀察哪些特殊原始碼被修改過,並假設這些特殊原始碼對應的就是標記程式碼位元。為了破解這種攻擊,標記IP核心的許多內容以隨機方式改變,因而在任意兩個標記實例之間形成巨大數量的差異。
攻擊者可能試圖啟動DesignTag。DesignTag是在設計擷取階段作為黑盒實例化進FPGA設計,一旦融入設計,就被整合進配置SRAM元件的位元串流中。用戶可以選擇加密這些位元串流,但大多數用戶不會這麼做。FPGA配置位元串流的大小不等,一般從中等規模Spartan元件的2Mb到大型Virtex系列元件的10Mb都有。攻擊者可能試圖使用軟體從位元串流資訊中重構網表。
雖然過去這種軟體已經開發出來,且在技術文獻中有過報告,但目前攻擊者似乎還無法公開得到這些工具。這種軟體的輸出通常是映射到FPGA原語後的扁平設計網表;雖然在位元串流基礎上向前進了一步,但與原始的設計原始程式碼相較還有很大的差距。
攻擊者還可能在位元串流級嘗試和作業設計,他們會有選擇地‘翻轉’某些位元,然後在關閉安全特性的情況下監視效果。這是一種比較實用的攻擊方法,因為它不依賴於開發或購買位元串流逆向工程軟體,不過它要求重新運算FPGA位元串流的校驗和(checksum),因此也不是完全直接了當。
挫敗這種攻擊的關鍵是使每次翻轉一個位元然後觀察發生了什麼'所需的時間盡可能長,並使攻擊者很難判斷事實中的安全特性是否完全被關閉。讀一個DesignTag程式碼需要花數分鐘時間,這使得類似這種基於研究的攻擊的可行性大幅降低。
與FPGA設計安全機制(如元件DNA或需要透過I/O接腳存取外部晶片的質詢/回應機制)相較,DesignTag的優勢還在於它不依賴於FPGA的特定資源,而攻擊者很容易利用這種依賴性確定位元串流中的位置。
基於快閃記憶體或反熔絲技術的FPGA是在工廠中配置的,因此包含DesignTag的程式碼不會泄漏給最終用戶。對DesignTag的任何攻擊都將涉及實體性地篡改元件,因而導致FPGA損壞。
為什麼是熱訊號而不是電氣訊號?
到這個階段,你可能想知道為何選擇非傳統的訊號媒介。與晶片內電路交流訊號最顯而易見的方法是透過封裝接腳。然而,這種機制在這種情景下有很大的缺陷。為了有益於最終用戶,標記機制必須獨立於安裝晶片的電路板,並獨立於任何系統軟體。
在某些情況下,電路板和系統軟體發展人員可能就是懷疑濫用IP的那一方。另外,存取標記不應要求詳細地瞭解包含可疑晶片的系統。在使用BGA晶片和精細間距扁平封裝時,即使在電路板上找到合適的位置來探測訊號也可能很有技巧性。因此透過封裝接腳存取標記資訊通常要求訓練有素的技術人員才能辦到。
通過封裝的熱通道頻寬是很窄的,這與DesignTag採用的訊號機制非常匹配。資料傳輸速率很低,但製作程式碼只需極少量的位元,而且熱方法還有一些額外的優點。熱訊號透過封裝發送,並由與封裝頂部接觸的探針檢測到。這種方法不會影響元件的正常工作,不需要存取電氣連接,也不需要使用額外的封裝接腳,因此DesignTag可以被增加到現有產品中而不改變它們的接腳佈局。
半熟練作業人員可以從元件所在位置或在測試裝置中進行閱讀。高接腳數量的球閘陣列要求高密度的PCB走線,而引出到測試點的額外走線是個大問題,可能讓攻擊者想到DesignTag的存在。利用EMI、射頻或電源雜訊的標記訊號方式理論上也是可能的。低電平電氣訊號機制將深受晶片正常工作、快速電源突波和地線反彈以及相鄰PCB走線訊號耦合帶來的外部雜訊的影響。而諸如無線電波、主電源和其他EMI等外部訊號源也會造成干擾。
現代系統通常使用多個電源,這些電源必須很好地加以遮罩和去耦。電源平滑濾波可能負面影響到晶片輸出的回送訊號,因而降低晶片性能和標記訊號品質。雖然電氣訊號的寬頻寬能夠提供快得多的檢測,但實驗顯示這種好處無法彌補上述缺點。
被竊IP和被複製設計成本在迅速提高。本文介紹的DesignTag技術提供了在設計中增加浮水印的低成本簡便方法。標記目標設計提供了驗證盜版或欺騙行為的簡單途徑,無需求助於冗長的工程評估。不需要數天或數周、只需數分鐘就能檢測出贗品。
作者:Paul Dillien
High Tech Marketing公司
全文摘錄自:電子工程專輯http://www.eettaiwan.com/ART_8800577811_676964_TA_a4c2e0e4_3.HTM

