1. 程式人生 > >安全防護與資訊加密:一個新的挑戰

安全防護與資訊加密:一個新的挑戰

本文轉自:http://www.eetop.cn/blog/html/28/1561828-6339369.html

首先來說:在晶片中增加安全防護(safety)和資訊加密(security)特性需要付出額外的代價,如何去評估和控制這種代價其影響是非常深遠的。並不是說所有的技術應用都能帶來相應的回報。

 

從目前來看,還沒有人能夠很好地將安全防護和資訊加密的特性整合到他們的設計當中去。很大程度上是因為我們還沒有對其施加足夠的重視,只有一些密集的高強度的惡意攻擊才會引起工業界的注意。除此之外,我們對安全防護以及資訊加密在晶片設計當中的應用也沒有一個很好的解決方案。對於如何在成本,效能,風險以及收益當中權衡,也不是非常清楚。

 

將安全防護與資訊加密放在一起考慮並共同設計是一個新的趨勢,但是同時也增加了晶片設計的複雜性和設計難度。首先,這兩個領域的技術發展在工業界的成熟度並不相同。第二,很多公司相信他們只需要處理好其中的一個方面即可,但是汽車行業告訴我們,資訊保安影響著人身的安全防護,二者是緊密聯絡的。有趣的是,在德語中安全防護(Safety)與資訊加密(Security)都是用一個詞-sicherheit來表示的。

 

將安全防護和資訊加密融入到晶片產品當中去並不是使用一個新的工具或者整合一個新的IP所能解決的。它需要我們改變設計和生產流程而不僅僅是在功能文件上增加幾點說明或者在當前工藝節點上新增幾項設計流程。同時我們也要轉變我們的設計思維方式,因為安全防護和資訊加密需要從一開始就融入到設計當中。

 

Cadence DSG事業部產品管理總監Rob Knoth表示:“很重要的一點就是:設計人員需要重新安排他們任務的優先順序並且深刻理解成本,效能以及收益之間的折衷。”我們需要重新考慮我們的設計時間表,並且由於上市時間視窗的限制,我們需要在本來就極具挑戰性的設計時間表上來重新考慮安全防護和資訊加密,這些都是非常困難的。

 

在越來越多的晶片中,忽視安全防護和資訊加密不再僅僅只是一個可有可無的問題。Imagination Technologies的MIPS業務部門的業務發展高階經理Tim Mace指出,隨著晶片的功能越來越強大,同時也被用於一些更加獨立自主的系統當中,晶片是否能夠正確快速地分析和應對環境變得越來越重要,甚至在某些情況下是極其關鍵的。而這些安全漏洞可能源於設計本身又或者是故意的惡意企圖。因此晶片的安全性變得非常重要,越來越多的客戶要求晶片必須解決安全防護和資訊加密問題。這些對晶片的要求,風險以及折衷方案都需要我們認真理解並達到相應的標準。

 

在考慮安全防護和資訊加密時,必須考慮三類漏洞:隨機的,系統的,惡意的。每種漏洞都需要不同的方法來應對和分析,而每種方法都會對產品的進度和成本產生不同的影響

 

隨機漏洞

或許三類漏洞裡面最容易分析的就是隨機漏洞了。我們已經有一系列的工具和技術可以幫助我們在硬體中檢查和排除這類漏洞。該方法與半導體測試技術還沒有使用掃描測試技術之前的測試方法類似。首先建立一個故障模型,該模型至少能夠包含每個節點的固定0(stuck at 0)或者固定1(stuck at 1)障礙,故障模擬則能夠幫助發現設計的功能是否被更改過。對於一個對安全性要求極高的晶片,我們會希望每個漏洞都被發現或者漏洞不會影響系統的正常工作。Knoth解釋說:“這樣可以防止諸如電子遷移(EM)等隨機故障或者在整個產品生命週期中出現瞬態故障等情況的發生。”

 

問題是如何才能夠做到這一點。Kurt Shuler解釋說:“為了建立一個非常安全的系統,我們可以簡單的複製系統中的所有模組,甚至每個晶片上的所有IP(我們已經看到有人在實踐當中這樣做了),像這樣盲目建立冗餘系統或許可以保證晶片達到ASIL-D標準,但是卻損失了很多的效能,裸片的面積以及帶來了很大的軟體複雜性。”

 

當然更好地方式是有可能的,而這肯定也是各個公司相互競爭的關鍵所在。Mace指出:“並非所有的冗餘設計都會使用簡單的重複設計。對於通訊和儲存領域,冗餘系統可以通過奇偶校驗或者ECC保護的形式來實現,而且功能級別的冗餘還可以通過再次使用現有的硬體檢查之前的操作來實現,這雖然會增加一點功耗但卻可以節省晶片面積。”

 

在有些地方冗餘系統是很有必要的。Sonics公司首席技術官Drew Wingard解釋說,冗餘是為了讓我們可以在系統中相互檢查,當預測行為的狀態複雜性和任務本身一樣複雜時,我們就應該使用冗餘系統來幫助我們檢查,我們可以僅僅只複製控制邏輯的某一部分而不用複製整個模組。對於片上網路(NoC)的技術與其他型別的邏輯沒有根本的區別,只是我們必須認識到NoC中複雜的邏輯操作往往是圍繞著控制而不是圍繞資料。

 

我們還面臨的挑戰就是要找出硬體的哪些部分是我們要特別關注的。OneSpin解決方案產品管理總監Ashish Darbari說:“這可能包括我們要冗餘暫存器檔案,在記憶體中增加ECC保護,冗餘CPU核心,以便進行鎖步操作(lock-step)。雖然我們可以新增一個鎖步CPU,但你可能不需要複製所有的暫存器檔案。 這涉及到很多計算機架構的知識而我們只需要關注的是這個CPU是否能夠很好地完成鎖步這項工作。”

 

這種方法還存在著一定的隱患。Knoth說:“我們需要非常謹慎地去考慮複製哪一部分邏輯以及如何去複製。雖然你可以簡單地擴大矽片的面積,但是這並不能直接讓我們的產品變得更加安全。相反會使得我們的產品變得更加複雜和更容易出錯。這其中關係非常地微妙。”

 

Shuler總結了一下最常用的冗餘技術。我們只需要在對功能安全診斷覆蓋率影響最大的模組中新增冗餘硬體模組,以及對一些沒有足夠保護的IP中增加一部分冗餘模組。為了制定清晰的安全性指標以及明確需要實現功能安全保護的具體模組,需要我們對潛在的系統故障模型進行深入地分析,然後定量地去證明安全機制是否完全覆蓋了這些故障或者漏洞。

如何去找到權衡的平衡點同時也取決於市場應用。OneSpin公司的Darbari說:“對於物聯網晶片和一些小型裝置用的晶片,我們不能建立大量的冗餘系統。因為這些晶片的面積需要非常小,同時要具有良好的低功耗特性。”

 

在航空電子裝置中,安全性是由重複性的冗餘來保證的,它使用了不同設計結構的冗餘系統,這種方法會大大增加設計和驗證的費用,對於大部分的市場應用來說是不合理的。

Shuler說:“安全加密是需要付出很多代價的,如果系統不能達到接近實時的延時要求以及巨大的處理吞吐量要求,那麼人們可能會受傷或死亡。但是,如果這個系統太昂貴,無法在經濟上得到發展和配置,那麼整個行業或許就失去了挽救生命的機會。”

 

為隨機故障增加防護措施也說明了很多原來用於半導體測試的方法現在都被整合進我們的產品當中去了。Knoth說:“現在的測試都已經包含在了產品的功能需求當中了,我們不僅需要在製造過程中測試,還需要進行現場測試,以及上電測試等。測試團隊需要做LBIST以及MBIST的RTL插入以及所有的功能測試例如時鐘控制等。如果我們在RTL中不做這樣的設計,系統很多的關鍵部分將無法被驗證。”

 

除了故障模擬外,形式驗證也開始發揮更大的作用。Darbari說,我們可以使用故障模擬器,也可以使用形式驗證工具,來精確評估哪些漏洞是可以被觀察到的,哪些是不可以的。我們的目標就是把分析的範圍縮小到儘可能地精確,這樣就不會有未知數。

 

不是所用的故障都能在RTL級別被觀測到,並且故障模擬也不能評估系統級的所有故障。這也意味著從系統層面以及方法實施層面來看,不同的技術和方法適用於不同的模組級和IP級。

 

現在也有一些自頂向下的方法來評估系統故障的可能性。Knoth說,失效模式缺陷分析(Failure Mode Effect Defect Analysis)是一個貫穿整個系統的嚴格正式的過程,我們需要了解每個部件的可靠性,瞭解你所插入的每一個安全加密機制,瞭解我們能從中提取出多少覆蓋率,以及我們有多大的把握能夠發現每一個漏洞。這是一個十分有效的機制,從制定系統架構開始一直貫穿到系統的佈局佈線,甚至能夠發現一些諸如冗餘通孔的問題。這個流程將有效地指導安全加密整合的各個方面。

 

系統漏洞

如何發現系統漏洞是現代驗證領域的一個具有里程碑意義的挑戰。簡單來說我們要確定設計是否實現了功能描述文件中描述的所有功能,以及是否達到了相應的指標要求。雖然業界有很多的工具來幫助我們應對這個挑戰,但這也確實是行業中最棘手的一個難題。

 

Darbari說,我們如何才能知道我們已經做好了充足的工作呢?雖然覆蓋率可以指導我們找到差距,但是我們還需要考慮完備性的問題。“是否所有的要求都得到了正確的驗證呢?是否在測試平臺中存在過分約束的情況呢?執行過程中是否存在著隱藏的漏洞呢?”等等這些問題無時無刻不在困擾著驗證工程師們。(路桑覺得也很喪,專案經理經常挑戰verifier們怎麼signoff驗證是完備的呢?)

 

上述這些問題依然是EDA廠商近幾年來投入最大的地方。擁有更大容量,更高效能以及更多功能的新工具和技術一直在被不斷開發出來。形式驗證在最近幾年也取得了很大的進展。

 

驗證其實是一個比較單一簡單的概念,它就是來比較兩個獨立開發的模型,因為兩個獨立開發的模型出現相同的設計失誤的概率非常小。這兩個模型就是通常我們所說的待測設計測試平臺。我們一般會使用工具來進行精確地比較,因為我們人自己缺乏嚴格證明兩個模型的功能是否一樣的能力,或者證明待測設計所包含的行為是測試平臺所包含的子集的能力。(路桑認為這是哲學層面上對於驗證的理解,路桑桌上也放著幾本西方哲學...最近還放一盒摺紙)

 

驗證行業的發展正在逐步接近這一目標。Darbari解釋說,順序等價性檢查可以幫助我們證明兩個設計的模型是否在功能上是等價的。我們可以使用C語言建立一個模型然後再用RTL建立一個模型,然後來比較這兩個模型。這兩個模型的基礎都沒有太大改變,解決問題的方法也沒有太大改變。我們也可以在設計流程的早期就開始做這些工作,我們現在擁有的形式驗證技術就可以幫助我們在早期實現這一目標。

 

另外,Accellera正在研究行動式激勵標準。Breker Verification Systems執行長Adnan Hamid解釋說,這使得我們可以在比UVM還要抽象的層次上定義我們的驗證意圖模型。該模型定義了系統內部所有的功能路徑,並有助於確保系統級驗證的完成。該模型還可以在未來進行其他型別的驗證分析,例如系統級的故障注入以及定義一些理論上無法達到的功能邊界。(路桑認定這是下一個提高系統性驗證效率的方向,不過要驗證、軟體和系統各方面坐在圓桌一同買單才可以)

 

硬體只是系統的一半。Knoth補充說,我們希望軟體方面也採用同樣嚴格的方法來防止系統性漏洞的產生,系統性的漏洞一般都非常隱蔽,讓人難以捉摸。(軟體總會抱怨硬體遺漏漏洞,硬體總會不理解軟體為什麼不可以軟體修復而在那裡嘰嘰歪歪)

 

另外,新的硬體架構正在對驗證的某些方面提出質疑。Shuler指出,例如用來執行類似神經網路處理或者自主駕駛等任務的多處理晶片,在其中實現功能安全特性是一個特別困難的挑戰。即使系統沒有漏洞,安全性也可能受到諸如系統性能超載或者惡劣天氣等外部條件的影響,這些都可能導致系統對外部輸入產生錯誤的判斷。(國內的地平線機器人公司前不久釋出的盤古處理器值得最終在產品上驗證其效能)

 

有一個ISO 26262工作小組正在研究如何解決這個問題。Shuler補充說:“我們稱之為預期功能的安全性(Safety of The intended Function)該團隊試圖去證明某一個非常複雜的系統的安全性,這個系統甚至不可能進行完備的驗證。”