“爸爸媽媽,天空為什么是藍色的?”
在您思索是為孩子講解空氣折射率的知識還是轉移他的注意力時,您已經(jīng)心知肚明,無論您怎樣回答,孩子都會天真地繼續(xù)追問:“為什么呢?”等問題,直到您完全失去耐心。如果您有這種感受,那么歡迎來到保護物聯(lián)網(wǎng) (IoT) 的世界。這個世界里沒有既定的標準,也沒有絕對的錯誤。就像孩子提出的問題一樣,我們可能只是閑聊或喚醒科學好奇心,至于何時停下來,則由作為系統(tǒng)設計師的您做主。就像上面的引導性問題一樣,這個世界在很大程度上取決于問題的癥結。
問題的癥結
我們很快就會看到,保護物聯(lián)網(wǎng)設備將可能成為一個需要投入無限成本,卻又永無止境的問題(圖 1)。不過,ARM* 物聯(lián)網(wǎng)服務集團副總裁 Ian Ferguson 在最近的物聯(lián)網(wǎng)設備安全峰會上表示,大多數(shù)物聯(lián)網(wǎng)設備均有著非常嚴苛的成本目標。
圖 1.即便多個安全層也可能無法為物聯(lián)網(wǎng)終端設備提供全面保護。
Ferguson 曾警告:“經(jīng)濟學原理已經(jīng)不再適用。安全的芯片不可能僅僅靠 1 美元就得到解決。”
因此,物聯(lián)網(wǎng)安全領域的第一個問題就是“它對您有何價值?”這完全取決于問題的癥結。
可惜這個問題并不簡單,并不是一個可以根據(jù)設備的預期用途給出回答的問題。Ferguson 舉了一個利用水族箱控制器中的漏洞攻擊某賭場安全網(wǎng)絡的例子。您必須要問的不是物聯(lián)網(wǎng)設備應該做什么,而是它能夠做什么。它可以使飛機上的副翼轉向嗎?它能夠操作電廠的高壓開關嗎?它能夠觸發(fā)不必要的維護程序嗎?它可以避開防火墻嗎?
物聯(lián)網(wǎng)設備安全的管理原則并不是使設備無懈可擊,您做不到這一點。而是要讓狡猾的攻擊者明白,攻擊付出的代價大于收益。作出這個決定不僅需要了解被攻擊的設備能夠帶來哪些損害,也需要仔細研究物聯(lián)網(wǎng)設備中的哪些部分需要保護以及如何保護。
要點
假設物聯(lián)網(wǎng)設備中有四種對象:硬件、軟件和固件、數(shù)據(jù)以及進出設備的消息。每當設備使用其中一個對象時,它會做出三個假設:
對象來自可信來源
對象沒有被篡改
對象將按照系統(tǒng)設計師的預期方式運行
每次使用時,設備可以信任這些假設,也可以測試它們。
也許舉個例子很合適。假設我們有一個物聯(lián)網(wǎng)設備管理高壓交流電源開關上的一組傳感器,并控制開關位置。根據(jù)這一功能描述,設備可能是一個非常簡單的微控制器 (MCU)。現(xiàn)在我們有一個命令到達設備的網(wǎng)絡端口,告訴控制器關閉開關。您希望控制器讀取命令并為執(zhí)行器供電,當開關閉合時,通過網(wǎng)絡端口確認消息的新狀態(tài)。
我們來回顧一下這個場景,從安全設計的角度來看看。首先,命令到達。您有一些選擇:您是否相信這個命令是未經(jīng)過修改的真實命令,或者說您是否對它進行了驗證?您是否相信它的行為,或者您是否對它進行監(jiān)控?
如果您認為這個命令是合法的,則表示您信任數(shù)據(jù)中心的遠程應用(可能是公有云),并且互聯(lián)網(wǎng)的所有部分恰好位于消息的傳遞路徑上。有一些情形可以證明這種信任是正確的。一種情形可能是錯誤命令的結果無關緊要——當然不是對電源開關無關緊要,而可能是簡單的消費玩具。另一種情形可能是設備沒有直接聯(lián)網(wǎng),而是通過安全的連接連到可信中心。否則,您需要對命令進行驗證。
幸運的是,有一種使用公鑰加密進行驗證的合理方法(圖 2)。這種技術使用一對加密密鑰,其中一個密鑰只有持有者知曉,另一個密鑰可供所有人使用。任何一個密鑰的持有者都可以對使用匹配密鑰加密的任何內容進行解密。因此對我們來說,服務器可以創(chuàng)建其打算發(fā)送的命令的散列,使用其私鑰對其進行加密,然后將命令和加密的散列發(fā)送到您的設備。接下來您自己可以創(chuàng)建命令的散列,然后使用您的公鑰對服務器的加密版本進行解密。然后您可以將自己創(chuàng)建的散列與解密的散列進行比較。如果這兩者相同,那么您可以比較肯定的是:
私鑰的持有者發(fā)送了命令(因為您的公鑰成功對其進行了解密)
這個命令沒有修改過,因為傳輸前的散列和接收后的散列匹配。
圖 2.公鑰加密可幫助設備驗證消息
事實上,您不需要散列,您可以對整個命令進行加密和解密。但公鑰算法需要大量計算資源,所以缺少硬件加密加速器和大量內存的設備會盡量縮短其必須處理的字符串的長度。除非常簡短的命令之外,散列將比任何命令短很多。
您已經(jīng)鑒定和驗證了命令。您相信它是合法的。但為什么呢?您怎么知道自己使用的命令和公鑰并非來自攻擊者,而是來自您的服務器?因為有認證機構。認證機構是一個可信的第三方,已對公鑰發(fā)起者的身份進行了驗證。但您為何信任認證機構的證書呢?因為您使用相同的公鑰算法(包含機構發(fā)給您的密鑰)對證書進行了驗證。但為什么…好了,您肯定明白了。除非您選擇信任某方及其發(fā)給您的密鑰,否則這個問題鏈將一直循環(huán)下去。這個問題有時可以歸結為一個人將文件交給另一個人。
相信自己
到這里,偏執(zhí)的人可能會認識到,我們仍然在做一些籠統(tǒng)的假設。如果有人篡改了您的加密應用代碼或者操作系統(tǒng),欺騙您接受這個命令呢?如果有人更改了您的公鑰文件夾呢?或者更糟糕的情況,如果有人在您的硬件中置入了一個隱秘的后門呢?
如果風險很小,或者如果您不了解高價值系統(tǒng)曾遭遇過哪些攻擊,那么上面這些問題聽起來可能有點異想天開。畢竟,誰會對不值錢的消費類設備上的應用代碼進行篡改?但確實有人攻擊了成千上萬臺物聯(lián)網(wǎng)嬰兒監(jiān)控器,創(chuàng)建了一個僵尸網(wǎng)絡,然后用它發(fā)動了歷史上最具破壞性的拒絕服務攻擊之一。這并不是異想天開:即使您不是飛機控制系統(tǒng)或核電站的設計師,您也需要考慮這些問題。
第一次接收和驗證對象時,驗證軟件和固件可以像按照您信任的散列檢查對象陣列那樣簡單。更新必須按照針對我們命令的上述流程進行驗證。每次加載操作系統(tǒng)和應用代碼時,許多安全系統(tǒng)都會執(zhí)行這一任務。但您為什么相信自己保存的散列呢?對于這個問題,您為什么相信自己的散列函數(shù)呢?最終,這種回歸將我們引向了一個重要的概念:信任根。
解決方案根
現(xiàn)在,許多 CPU 架構都包含一種安全操作模式,在這種模式下,您可以確信代碼的可信性、數(shù)據(jù)的正確性并且所有任務都得到適當授權。這種模式可讓您對設備的加密和身份驗證流程充滿信心,并為您提供一種存儲和保護密鑰及證書的方法,使攻擊者更難以更改它們。
實施信任根對 CPU 設計師而言并不是一件簡單的工作:他們面臨著與用戶相同的無限回歸問題。信任根必須從可信硬件著手,啟動可信代碼。現(xiàn)在的可信硬件是一個相對的術語。如果您在設計一些無害的東西,這可能意味著您從一家大型廠商購買了微控制器單元 (MCU)。如果您正在研究用于核武器的起爆裝置,這可能意味著您使用嚴格的正規(guī)驗證和功能安全標準來自己設計芯片,監(jiān)督貴組織所控制或檢查的國內工廠的芯片制造,并納入到設計防篡改、旁路攻擊防護和物理上不可克隆的功能 (PUF),從而為芯片提供不可復制的秘密 ID 號。然后您就可以信任硬件了。
安全啟動可能同樣具有挑戰(zhàn)性。您必須確保啟動代碼是未經(jīng)過修改的真實代碼。我們當然可以使用與輸入命令相同的解決方案:公鑰解密和散列。我們如何在加載代碼之前解密簽名并計算散列值?
在大型系統(tǒng)中,答案是硬件安全模塊 (HSM)。圖 3 是一個受篡改和入侵檢測保護的電路板或安全框,其中包含安全密鑰存儲和通常基于硬件的可信加密引擎。HSM 監(jiān)督安全啟動流程,在啟用前對每個代碼模塊進行驗證。
圖 3.硬件安全模塊包含在防篡改安全模塊中進行身份驗證和加密/解密所需的所有硬件和代碼。
但在 MCU 中呢?行業(yè)仍在研究如何將盒級 HSM 簡化為低成本芯片上的 IP 模塊。Ferguson 認為這是不可能的。其他人則認為,對于大多數(shù)系統(tǒng)而言,較簡單的措施(例如將開機密碼和密碼保存在片上非易失性內存中)就足夠了。
無論您如何保護啟動過程,都有一個信任根的第三個基本組件:內存保護。對于可信代碼、密鑰存儲、系統(tǒng)軟件和數(shù)據(jù)結構而言,必須只能從信任根內部進行讀取或修改的內存區(qū)。這需要一個硬件內存保護單元,它本身只能在信任根內進行設置。顯然,這個內存保護單元將不得不初始化為已啟用安全啟動的狀態(tài)。
實際上,系統(tǒng)會以這種方式運行。在初始化時,安全啟動進程將在內存中創(chuàng)建一個可信區(qū)域,并將其加載到可信的代碼和數(shù)據(jù)中,包括加密例程、可信的輕量級管理程序、加密密鑰和證書。接下來,這一管理程序將以加密形式加載操作系統(tǒng)和應用代碼,為每個任務分配物理保護的內存區(qū)域,并在激活之前使用散列和公鑰方法對每個代碼塊進行解密和驗證。通過這種方式,您可以比較肯定設備中的所有活動代碼都來自可信來源且未被污染。內存保護硬件可確保即使出現(xiàn)問題,任何任務都不能讀取或寫入其他任務的代碼或數(shù)據(jù)。
最后一個功能還可以讓您的設備運行您不信任的代碼。內存保護功能可以保證即使惡意代碼也無法從其指定的區(qū)域分支出來,破壞其鄰居,或在未經(jīng)管理程序同意的情況下執(zhí)行 I/O 操作。
那么,合法應用如何執(zhí)行 I/O 操作呢?當然是通過系統(tǒng)調用。但您還有其他選擇。所有應用都經(jīng)過了身份驗證,可以讓它們按照自己的方式執(zhí)行系統(tǒng) I/O 調用。或者,您可能需要 I/O 請求和任務間通信,以便進入管理程序進行審批。然后管理程序可以檢查規(guī)則,以查看請求是否適合于請求任務。管理程序甚至可以向證書證明其有權提出請求的任務提出要求。
活動監(jiān)控器
所有這些措施都是為了防止被篡改的代碼、數(shù)據(jù)或命令進入設備,或防止它們在進入設備后執(zhí)行非法操作。但在關鍵系統(tǒng)中,您可能還需要更高級別的安全性:主動監(jiān)控設備行為。
這個概念很簡單:可信源知曉設備應該執(zhí)行和不應該執(zhí)行的操作,并監(jiān)控設備的行為。簡單而言,這個監(jiān)控器可能是一個代碼塊,甚至是一個在設備可信區(qū)域運行的硬件狀態(tài)機。當您可以通過一組緊湊的規(guī)則定義正確的行為時,這種方法是有效的。內存保護實際上就是一個例子:一組規(guī)則決定哪些代碼可以訪問內存中的哪些地址,保護單元的硬件執(zhí)行這些規(guī)則。
隨著規(guī)則變得越來越復雜,通過在可信軟件中評估的規(guī)則進行監(jiān)控可能不再可行。或者系統(tǒng)行為可能過于復雜,無法成功捕捉一組規(guī)則。解決這個問題的一個建議是使用機器學習。原則上,您可以通過訓練神經(jīng)網(wǎng)絡來識別優(yōu)劣行為,而不必制定規(guī)則。然后網(wǎng)絡可以不斷評估系統(tǒng)的行為,并在看到不良行為時發(fā)出警報。
但深度學習網(wǎng)絡也有自己的問題。在如今的就業(yè)市場中,具備所需設計和培訓技能的人才很難找到。將監(jiān)督式學習所需的成千上萬個標記示例組合起來很難,甚至不可能。構建示例集的過程容易受到攻擊:犯罪分子可能會導致您的示例集存在偏見,從而導致網(wǎng)絡忽略特定攻擊。最后,在推理模式下運行訓練網(wǎng)絡所需的計算和內存資源非常重要。這對于 1 美元的 MCU 來說是不可能的。
對于大多數(shù)關鍵系統(tǒng)而言,異構冗余是異乎尋常的一個步驟。在這種方法中,您有三個不同的系統(tǒng)(如果可以在運行期間暫停和禁用設備,則有兩個系統(tǒng)),每個系統(tǒng)專為設備的執(zhí)行而設計和編程。每個系統(tǒng)都使用不同的硬件,由使用不同算法和庫的不同團隊進行編程。
這三個系統(tǒng)并行運行,通過多數(shù)投票的方式來確定設備的行為。若要成功破解設備,攻擊者必須同時攻擊這兩個完全不同的系統(tǒng)。這樣煞費苦心的攻擊可能聽起來很荒唐,但一些軍事和其他危險設備可能需要這樣的冗余系統(tǒng)。
付款
我們已經(jīng)看過,開發(fā)安全的物聯(lián)網(wǎng)設備可能需要可信的硬件和符合功能安全要求的方法。這可能是指加密硬件加速、防篡改的密鑰存儲位置、可信操作模式、實時設備監(jiān)視器,甚至是完全冗余。
但這些對于 1 美元的 MCU 沒有任何意義。怎么辦呢?
有些人會忽視這個問題或提供一些令牌,從而輕松擊敗安全攻擊。其他人會將安全責任上報到物聯(lián)網(wǎng)中心,為端點終端設備提供安全庇護,將物聯(lián)網(wǎng)設計轉化為邊緣計算網(wǎng)絡。隨著潛在銷量的增長以及人們對威脅現(xiàn)狀的了解,仍有其他供應商會利用先進工藝節(jié)點的大量晶體管來解決問題。在 7 納米時,帶某種內部 HSM 的三冗余 MCU 是可行的。
但 ARM 的 Ferguson 的觀點更激進一些。在設備安全峰會上,F(xiàn)erguson 主張預先了解保護物聯(lián)網(wǎng)設備的真實成本并改變行業(yè)的業(yè)務模式,以便將成本分攤到整個供應鏈。這可以通過評估與物聯(lián)網(wǎng)設備通信的系統(tǒng)的版稅或關稅來完成。或者半導體廠商可以從已完成的物聯(lián)網(wǎng)系統(tǒng)所帶來的收入或成本節(jié)省優(yōu)勢中獲益。也許更有可能的是,安全設備只需 25 美元(而非 1 美元),真正安全的系統(tǒng)將由垂直一體化公司部署,這些公司可以將設備成本并入到系統(tǒng)成本中,然后從服務合同、維護以及系統(tǒng)數(shù)據(jù)的價值中收回成本。
與舊的 MCU 商用半導體市場相比,這是一個全新的世界。但這個世界面臨著更多威脅,遲早要認真對待。
-
ARM
+關注
關注
134文章
9156瀏覽量
368555 -
物聯(lián)網(wǎng)
+關注
關注
2912文章
44897瀏覽量
375801 -
物聯(lián)網(wǎng)安全
關注
1文章
111瀏覽量
17261
發(fā)布評論請先 登錄
相關推薦
評論