物聯網(IoT)使我們得以用空前的規模來優化和改善現代生活的大多數層面。隨著數以億計的物聯網設備帶動數億美元的經濟價值,物聯網的巨大潛力也引來了惡意的敵對者與攻擊者。如果要讓物聯網設備達到安全并阻礙攻擊,就必須確保物聯網所有的終端節點都可升級。物聯網設備的壽命長,加上敵對者所使用的知識和工具進步迅速,使得設備無法設計成在任何安全等級上永遠保持充分安全。因此,設備如果要保持安全,就必須確保安全性可通過軟件更新來升級。我們就從對安全性是如何隨著時間而改變的歷史的洞察開始講起,然后思索安全更新對物聯網設備的設計有何影響。
安全性通常以對立的方式來看待:設備、服務或系統要么是安全的,要么就是不安全的。但我們該問的問題是,安全針對的對象是什么?在現實中,安全性有不同的等級,而且就攻擊者而言,只有當安全等級比攻擊者的能力要高時,設備才能算是安全。
此外,攻擊者的能力一般都是非靜態的,因此安全等級會隨著時間而改變。攻擊者的能力提升可能會以多種不同的方式呈現,從發現和/或發布問題與弱點,到廣泛的可用攻擊設備和工具等等。
關于安全等級是如何隨著時間而演進,我們來回顧幾個例子,并從對稱式加密算法開始。1977年,數據加密標準(DES)算法被確立為標準對稱式密碼。DES用的是56位的密鑰尺寸,所以只要既有的運算能力提高,標準就容易遭到強力破解式攻擊。1997年時,算法經證明花了56小時就遭到強力破解攻破。DES明確遭到攻破后,三重DES便被確立為標準安全對稱式密碼,基本上就是以不同的密鑰把DES執行三次。關于DES的安全等級,有人推測假如政府在1977年時就已經能攻破密碼,那DES絕對抵抗不了國家級的攻擊。不過從2000年代初期以來,由于運算能力唾手可得,DES連業余玩家的個人計算機都擋不住。
從2001年起,高級加密標準(AES)便取代了DES。但連AES都無法保證絕對安全。即使算法無法輕易遭到攻破,在實行時也經??赡茉夂?。例如試想一下差分能量分析(DPA)攻擊,它是用電路在執行加密時的能耗或電磁幅射來獲知密碼密鑰的。具體來說就是DPA會去掌握為數眾多的能耗蹤跡,再靠分析來揭露密鑰。DPA在1998年引入,自此以后,Cryptographic Research Inc.此類的公司(現在的Rambus)就販賣工具來執行DPA攻擊,只不過工具的售價是業余玩家和大部分的研究人員所負擔不起的。如今執行進階DPA攻擊的硬件工具花不到300美元就能入手,進階的后處理算法則在網絡上就有免費的可用。如此一來,從事DPA攻擊的能力便從國家級和有錢的敵對者轉移到了幾乎任何黑客身上。
接下來我們在物聯網設備的長使用壽命背景下來討論這些歷史經驗教訓。物聯網設備一般的生命期依賴應用而定,20年在產業應用上算是很普遍,也是我們在這段討論中所采用的時間長度。例如在1998年推出的設備曾經只可能被國家級的攻擊攻破;如今它則必須要能承受那些擁有僅需300美元的工具的業余玩家,利用一些閑暇的喝咖啡時間發起的DPA攻擊。要預測一群敵對者的未來潛能就算不是不可能,也是難上加難,尤其是時間跨度為20年時。
要應對未來的攻擊情景,唯一合理的方式就是讓設備的安全性隨著敵對者的能力增長而演進。這必須使物聯網的安全性可在軟件上升級。有的功能當然有賴于硬件支持,而無法通過軟件更新來修正。不過,當另一個選擇是上門服務時,在軟件上所能解決的事就不容小覷。
對各位的物聯網產品來說,這意味著什么?首先,產品需要能以安全的方式來接收軟件更新。我們來討論安全的軟件更新的兩個方面:從技術角度看,也就是對設備和軟件的要求;從實施過程的角度,具體來說就是軟件更新發布的授權和控制。
從技術角度,安全的更新牽涉到驗證、完整性檢查,以及可能要為設備軟件加密。處理這類安全性更新的軟件是引導程序,而且基于這些特性,它一般都被稱為安全引導程序。連同相應的加密密鑰,安全引導程序本身構成了系統的信任根本,而且一般都不可升級。因此,引導程序和密鑰必須擺在不可修改的內存中,像是一次性可編程(OTP)內存或只讀存儲器(ROM)。這種程序代碼的任何弱點都等同于硬件問題,并且無法在現場補救。
靠著設備僅有的公開密鑰,驗證和檢查完整性應該是用非對稱加密來進行。設備的簽名檢查密鑰并不是非保護不可。由于保護部署在外設備的密鑰比保護擁有者管控的設備的密鑰要來得難(或者至少應該是如此), 所以讓許多設備使用相同的引導程序密鑰也無妨。最后,由于設備可包含及使用公鑰,所以系統在DPA攻擊方面很安全。
在物聯網設備上運行的軟件加密有兩個好處。第一,它保護供應商視為知識產權的軟件,免遭競爭對手及仿冒廠商竊取。第二,加密可防止敵對者去分析軟件的弱點。不過,把安全引導的新軟件加密的確會牽涉到設備的密鑰,而保護現場設備的密鑰正變得日益困難。與此同時,較新的設備則已提高對DPA攻擊的抵抗力。再者,對DPA攻擊的常見反抗措施是對密碼的運行次數加以限制,使它無從取得充分的資料來泄漏密鑰。即使密鑰保護起來很難,而且具備動機的敵對者還是有可能破解到,但它的確可提高門檻,使攻擊者在施展身手時難度大增。因此,安全引導應該總是會涉及軟件加密。
安全更新的另一個結果是,物聯網設備未來可能會需要更多的內存?;谥T多原因,這會是復雜的取舍。首先,軟件往往會充分利用設備的可用內存。所以設備如果有較大的內存,軟件團隊就必須有規劃性地為未來的更新預留空間。另一個復雜之處則是為未來預留的內存的價值對比設備的初始成本。內存較多往往會使設備的成本提高。從設備制造商和消費者的角度來看,這筆成本肯定是合情合理的。遺憾的是,市場占有率的激烈競爭使許多設備制造商都趨于短視,他們有時候會把成本看得比未來的安全性更重要。
最后,很重要的是,安全性更新要有配送計劃。就大部分的設備而言,這些更新都是利用設備既有的網絡連接。但在某些情況下,必須增添或利用到實體接口,例如U盤(也就是sneakernet)。也很重要的是,要考慮到設備可能會有防火墻,或是在某些情況下連不上互聯網。
安全更新一旦在技術觀點上有可能性,問題就會變成誰有權簽署及發布軟件更新。對物聯網設備而言,日益常見的是軟件完全由設備制造商擁有和管理。這代表設備制造商應該要有經過證明的既定流程,以便從內部來保護簽署密鑰,尤其是保護可發布更新者。這不見得要得到顧客或終端使用者的授權。以某些設備來說,終端使用者必須主動下載更新和應用,或者起碼要啟動更新程序。在某些例子中,更新則是全自動的。
所部署的物聯網設備的壽命長,加上敵對者的工具和知識增加,使得設備無法打造成在任何安全等級上都永遠保持充分安全。因此,如果要讓物聯網設備在整個實際生命期都保持安全,就一定要確保這些設備的安全性可通過軟件更新來升級。但由于更新機制也是攻擊點,所以一定要在物聯網產品的可編程設備里布建安全引導程序,并把引導程序密鑰保管好。物聯網廠商應該期望從IC供應商手上獲得安全引導程序的功能。再者,物聯網廠商必須把發出更新的傳送機制和程序給預先規劃好。所幸安全引導程序隨手可得,而且相關設備已連上了互聯網。實現安全更新花不了多大工夫,所以沒有不實施的理由。