AES-128 RNG WSN

AES-128編碼器/RNG把關 WSN資料安全防護更嚴密

2015-03-09
物聯網市場正在快速成長中,而無線感測器網路(WSN)節點對於擴展網路基礎設施,以覆蓋整個環境是相當重要的。現階段,WSN解決方案已在全球各地的關鍵監控應用中獲得廣泛的採用,這些監控系統中的任何保障缺失都可能對效率和安全性產生實際和直接的影響。
很幸運的是,有關保護無線系統的文獻相當豐富,而且最佳的做法也廣為所知。不過,儘管工程師擁有這些知識,但是關於一般無線網路及特定WSN遭受攻擊的報導仍時有所聞,令人驚訝的是,市面上很多產品甚至不具備最基本的系統安全防護機制,而另一些要求高度安全性的產品卻沒有達到目標;因此,本文對此記錄了一些常見的錯誤,並將提供其眾所周知的解決方案。

無線安全性並非微不足道,但憑藉對於細節的嚴格關注,構建不易遭受無線攻擊的系統還是很簡單易懂的。

WSN首重資料保密性/完整性/真實性

首先工程師要了解的是安全性問題並不局限在無線系統。現在大大小小的網路攻擊事件實在屢有所聞,以至於幾乎沒什麼新聞價值,但有一種卻看法認為無線系統更容易遭受攻擊,因為任何人採用合適的無線電裝置都能從遠處與一部無線設備進行通訊。當然,在網路上,任何人使用電腦都可以從比所有無線電訊號傳播距離更遠的地方發起網路攻擊,因此所有網路實體系統,無論是有線還是無線都須採取針對攻擊的預防措施。

在WSN中,網路安全性的目標是達成以下三點:

保密性:在網路中傳輸的資料只可由預定的接收人讀取,其他任何人均不能截取閱讀。
完整性:接收的任何訊息都被認定確實是發送時的訊息,其內容未經任何添加和刪改。
真實性:確認聲稱來自某個給定資訊源的訊息,的確來自那個資訊源。如果時間被用做認證方案的一部分,那麼真實性還可避免訊息被記錄和重置。

其中,保密性不僅是與安全相關的應用所需要的,對於日常應用也必不可少。舉例來說,有關生產水準或設備狀態的感測器資訊,或許具有某種涉及競爭的敏感性,如美國國家安全局(NSA)就不公布其資料中心的功耗情況,因為該資料有可能被競爭對手用來估計其運算資源。

也因此,感測器資料應加密,亦即只有預定的接收者才可以使用;而感測和命令資訊需原封不動地到達。如果感測器提供罐內液面水準為72公分(cm)的資訊,或控制器下達將閥門旋轉至90o的命令,那麼這些資料中的任何一個數位資料的遺漏都將造成非常糟糕的問題。

此外,對訊息來源有信心是至關重要的。假如上面兩個訊息中的任一個是由某個惡意攻擊者發送,也有可能造成嚴重的後果。

確保WSN安全與互通性 加密/認證方法至關重要

安全性欠佳的後果並非總是容易預料的。例如無線溫度感測器或恆溫器或許看似一種幾乎不需要安全性的產品,然而,設想犯罪分子是否可使用無線電裝置探測到恆溫器上的「假期」設定,並趁主人外出度假之際洗劫這些房屋?這對於客戶忠誠度的影響將是巨大的,更不用說對銷售業績的衝擊。因此,最安全的WSN防護程式是對所有的資料實施加密處理。

在ZigBee進入市場的早期階段,大多數網路運作都沒有任何安全性保障,當面對眾多潛在客戶進行多供應商互通性展示時,不少ZigBee網路便出現重大故障,因為它們將來自一個不同網路的命令解讀為協調器重配置訊息,該訊息告訴它們改變通道。ZigBee網路完全沒有辦法確定這些訊息是來自一個不在其網路內的設備,這種災難性的行為並非源於一次實際的攻擊,而是缺乏認證手段所致,導致設備解讀一個來自完全不同網路的資料包。

在工業自動化過程中,遭受網路攻擊所產生的後果也許遠比失去客戶要可怕得多。由於錯誤的程序控制資訊被傳送至控制系統,因此攻擊有可能造成實體損壞,例如一個負責向電機或閥門控制器饋送資料的感測器宣稱電機速度或罐內液面過低,則可能引發災難性的故障,與震網(Stuxnet)病毒攻擊中離心機所遭遇的情況相似。

幸運的是,業界已發展出用於構建安全、堅固型無線通訊網路的強大工具,這僅需要工程師勤奮關注設計細節,並沒有什麼實質上的困難。以下分別介紹主要的工具和方法。

搭配亂數訊息計數器 AES-128提供強力防護

最基本的加密工具是區塊編碼器。舉例來說,先進加密標準(AES)-128就是一種特殊的區塊編碼器,其取一個16位元組訊息(明文)和一個128位元金鑰,並產生出該訊息的16位元組加密版本(密文)。任何擁有相同金鑰的人都可對密文進行解密以恢復明文;而沒有金鑰的人則不能找回明文。

AES密碼易於採用軟體來實現,且在許多無線電和微處理器(MPU)晶片上通常能以硬體的方式提供。眾所周知,AES-128是不可破譯的,在密文沒有金鑰的情況下是絕對無法獲知明文的。實際上,美國國家安全局選擇相同的基本密碼用於最高機密檔的加密;在WSN安全遭受攻擊的所有相關報導中,也從未有人聲稱AES密碼是其中的薄弱環節。

唯一已知針對AES-128的攻擊是所謂的「蠻力」攻擊,意思是攻擊者嘗試每種可能的金鑰以確定哪一種提供合理訊息。嘗試每一種可能的128位元金鑰是一項十分浩大的任務,假設攻擊者有十億台電腦,每台電腦每秒可檢查十億個金鑰,那麼讓所有這些電腦運行十億年也將只能嘗試全部可能的128位元金鑰的大約0.1%。

區塊編碼器讓訊息源對訊息進行加密,從而使得只有目的地(擁有相同的金鑰) 能夠對其進行解密(圖1)。當然,如果是類似於開燈或關燈這樣的簡單訊息,那麼即使這些訊息被加密成看似沒有意思的位元串,任何截取幾條訊息的人也可快速地斷定只有兩種不同的訊息。

圖1 源節點採用一個區塊編碼器、一個亂數和一個金鑰來加密明文訊息,將其轉變為密文。只有掌握金鑰的人方能進行訊息解密,亂數既可以明確地發送,也可以是隱含的,端視協定結構而異,如時間戳記。

針對該問題的解決方案則是採用一個訊息計數器,並對每個發送的訊息進行編號。由於密碼性質的原因,訊息明文中的任何變化都會產生一個不同的密文,而且在不同的時間發送兩條訊息(比如訊息1:開燈和訊息53:開燈),這對於任何未掌握金鑰的人來說,看上去將是完全不同的。只要訊息計數器永不重複,那麼密文也將永遠不會重複,這種絕不重複的訊息計數器概念被稱為亂數(Nonce),其代表只使用一次的數字(Number Used Once)。

訊息完整性檢查強化訊息匹配安全

訊息完整性檢查(MIC)(有時也被稱做訊息認證碼(MAC)是訊息的密碼校驗和。其利用一個帶特定金鑰的區塊編碼器運行一條訊息的所有部分,訊息的發送者可創建整條資訊的簡短加密概要,故稱為訊息完整性檢查。該MIC隨後被添加到訊息上,採用相同金鑰的接收者能在該訊息上執行同樣的函數,計算其特有的MIC,並驗證計算結果與接收到的MIC相匹配。

在此狀況下,訊息的任何改變都將引起MIC的改變,從而導致訊息遭遇接收者的拒絕。

亂數產生器實現隨機加密金鑰

設計人員通常可在WSN中產生加密金鑰,但這往往不切實際且最終將是不安全的。理想的情況是,由電腦來產生金鑰,且不希望任何人猜出金鑰,所以期望金鑰是隨機的,這將需要一個亂數產生器(RNG)。讓電腦真正地隨機並不是一件普通任務,而且總是需要與某種非數位的東西進行互動,幸運的是,無線電通訊本質上就是非數位的,其從馬可尼(Marconi)時期開始歷經一個世紀的進步,發展到能夠可靠傳輸數位資訊的階段。

當所有設計精良的WSN系統都將使用無線電或某種熱噪音源做為其RNG的一個組成部分,就能透過電腦產生真正隨機的數字。

值得注意的是,即使是一個合法獲得的設備,如果部署不當,也有可能使一個未預料會有額外輸入的控制系統無所適從,此時工程師須透過接入控制清單(白名單、黑名單)提供一個附加的控制層,以確保不需要的設備不會使網路陷於混亂。

避免安全漏洞 共用金鑰問題不容輕忽

在WSN安全性中最常見的一個錯誤,是設計人員未重視問題的嚴重性,直到問題出現時一切為時已晚。設計和部署不具備安全性的無線照明控制系統也許聽來不像是個問題,但當一個搗蛋的大學生在用戶的辦公地點外控制燈光之時,系統業者對於相關的影響才會恍然大悟。

即使那些認識到安全重要性的人也有可能忽視廣泛存在複雜性、軟體和硬體工具,以及可利用但常常施加在該衝突的陰暗面的技能。多家WSN公司推銷著其通道跳頻協議所具備的某些安全性優勢,仿佛攻擊者不能購買多通道接收器和發送器似的。其他的公司則認為幾百萬或幾十億個金鑰便足以避免遭受攻擊,而事實上即使是幾百億個金鑰也未必足夠。

如果存在蠻力攻擊破解金鑰的可能性,那麼採用一種金鑰旋轉計畫(其建置時間要比蠻力攻擊的時間短得多)將能夠阻止一般的攻擊者,但也許無法阻止其中的某個非常幸運的攻擊者。

若選擇一種合適的密碼,並採用亂數,那麼最簡單的系統將為所有的密碼操作使用單個共用金鑰。只要金鑰處於保密狀態,此方法自然相當理想,但這個目標並不容易實現。

一個極端的例子是近期報導一種藍牙控制型馬桶/坐浴盆組合式產品所存在的安全性漏洞,該產品中使用的是全部為「0」的default配對金鑰。實際上,更多的是的例子是無安全性的(而非安全性欠佳),這說明了最好的協議對於選擇不當的金鑰(甚至是一種在網路上變得廣為人知的隨機金鑰),並不具備防禦作用。藍牙具有非常出色的安全工具,但如果未能正確地加以使用,一旦有人將設計者考慮不周的產品金鑰散布在網路上,則其就不具價值。

防堵軟體逆向工程 網路節點須具備個別唯一金鑰

下一個級別是為每個提供或安裝的網路採用單個唯一金鑰,或者每次形成一個網路就啟用一個新金鑰。如果設計者有一部良好的亂數產生器,並能控制網路中的所有硬體,那麼這種方法就是很好的;然而,假如網路中的任何一個節點受到損害,則整個網路對於攻擊而言便是門戶大開。如果允許使用者在網路中的節點上編寫其自有的軟體,則很難阻止那些惡意的使用者找到網路金鑰。

即使網路軟體被封閉,倘若攻擊者擁有硬體,那麼要想防止他讀出微處理器中的程式是相當困難的。有關安全的文獻中大量列舉此類攻擊的例子:

獲得硬體的一個合法版本並非法侵入以獲得代碼。
對代碼進行逆向設計以找出金鑰的儲存位置(這可以簡單到透過比較來自兩個不同網路的代碼,以查看哪些位元是不同的)。
使用該資訊以弄清金鑰是如何運算,或者大大加速從遭受攻擊的實際網路所捕獲之硬體中,取出金鑰的速度。

數位視訊光碟(DVD)的安全性已經成為此類攻擊的犧牲品。攻擊者通過檢查播放機代碼並暴露和公布用於保護該材料的若干處理金鑰,使得最初的DVD內容加擾系統(CSS)和後來的HD-DVD/Blu-Ray(藍光)高級內容訪問系統均遭到破壞。

設計人員須進行這樣的假設,就是一個下定決心的攻擊者將能取得硬體,讀出代碼並逆向設計出相關演算法和軟體,極少會有例外。因此,一個設計良好的安全系統一定不得依賴於演算法和軟體處於保密狀態,且絕對不可完全寄望於任何一部設備中的金鑰處於保密狀態。

相反地,設計者須假定擁有網路節點之一的攻擊者能取得該節點的全面控制,而在一個精心設計的系統中,單個節點受到損害一定不會影響到網路中其餘節點的安全性。

針對該逆向設計問題最簡單的解決方案是確保每個通訊會話(或者兩個端點之間的資料流程動)具有其自己的唯一金鑰,此金鑰不為網路中的任何其他節點所知。在這種情況下,即使是網路中的一個已受到攻擊損害的節點也無法偵聽、篡改或模仿來自網路中任何其他節點的資料或命令。

安全管理器掌管隨機金鑰分布

當使用合適的協定和密碼時,具有用於每個端到端會話的唯一隨機金鑰的網路可保護網路通訊的保密性、完整性和真實性(圖2)。然而,金鑰分布在某些系統中卻暴露出弱點。通常不方便為網路中的每一個節點預設置其全部未來會話將需要的所有唯一金鑰,因此金鑰在網路形成之後須進行分配。

圖2 大多數安全WSN系統採用兩級金鑰,包括端到端工作階段金鑰和一個或多個連結金鑰。每對具有一個端到端通訊通道的微塵(Motes)將擁有一個用於加密和驗證的唯一共用金鑰;此外,還有一個連結金鑰用於逐跳驗證。

在某些系統中,係以明碼的方式(不加密)發送初始工作階段金鑰來實現,其假設條件是網路隨後僅在網路形成期間,容易遭受持續時間但短暫的攻擊。不幸的是,攻擊者完全能夠建立他的偵聽設備並耐心地等待網路重置,或透過對網路控制器或閘道的供電迴圈等方法使網路重置。

面對該問題,一種簡單的解決方案是在製造時於網路中的每個節點上安裝單個唯一金鑰,並在網路中設有單個受信任的安全管理器(由其掌管這些金鑰),從而在每個節點與安全管理器之間實現可靠的會話。該安全管理器隨後產生所有其他會話需要的金鑰,並透過其秘密頻道將這些金鑰發送給相關的每部設備。另外,還有一套採用公共金鑰基礎設施的工具,其可提供相似的功能及其他的優勢。

128位元RNG提升金鑰可靠度

在那些認真對待安全性的人群中,也許最常見的錯誤就是使用了一個隨機性欠佳的亂數產生器。即使採用所有正確協定和密碼,網路遭受攻擊的難度也只相當於猜測金鑰的難度,這裡常犯的錯誤是使用非加密的亂數產生器,或者那些具有非隨機種子(初始值)的加密亂數產生器。

在電腦科學領域諸多的不同應用中,亂數都是很有用處的,因此許多作業系統都內建rand()函數。例如:最初的UNIX rand()函數保持一種內部32位元狀態,並根據當前狀態來計算下一個亂數和下一種狀態。用戶可為該RNG賦予32位元數的種子,然後,rand()函數的每一次調用將產生一個含四十億個數值之序列中的下一個數值。

它雖然不是一種非常出色的RNG,但在過去對於大多數非加密應用來說卻已足夠。然而,如今利用一部桌上型電腦來產生包含所有四十億個可能的亂數及其在序列中之位置的表格,只是一項簡單的家庭作業。即使再多的種子隨機處理也將無濟於事,因為RNG本身設計不夠複雜。

新型加密RNG採用更多的內部狀態,通常至少為128位元。如前所述,由於採用128位元金鑰,因此即使幾十億台電腦運作幾十億年也幾乎不可能找到數位序列中的一種模式。

不過,即便是最好的RNG演算法其隨機性也只能與提供給它的種子相同。IOActive指出兩個WSN安全系統中的一個常見錯誤,在這裡,他們透過對兩個產品的軟體二進位檔案進行逆向設計發現:它們採用的是一種非常不具備隨機性的種子。兩個產品皆採用時間函數(單位:秒)做為其亂數發生器的種子,由於一年只有幾千萬秒,即使是一部性能適中的筆記型電腦也能透過對過去幾十年的快速搜索而產生全部可能的金鑰。

搭配安全協定與建置方案 WSN滿足工業自動化應用

儘管新聞中充滿有關無線網路安全性失效的案例,但世界上仍然遍布著十分安全的無線網路,只是安全的網路沒有什麼新聞價值罷了。如全文討論的,安全的網路需要一個安全協定和一個安全的建置方案(圖3),在WSN中,設計巧妙的安全協定之部分實例包括Wireless HART和ISA100.11a工業自動化協議,以及ZigBee智慧能源(Smart Energy)協議,這些協議都經過安全專家的廣泛審議,並有很多實際應用已順利通過類似的評核。

圖3 正確使用廣為人知的安全性技術能夠可靠地將保密、真實、未經更改的訊息從源端輸送到目的端,並可檢測和防堵無效使用或攻擊。

特別的是,Wireless HART協定是部署在世界各地(從北極圈到阿拉伯沙漠均在其列)關鍵型基礎設施應用中的安全網路基礎。此項技術的最終用戶放心地託付WSN在經過認證的端點之間可靠和保密地提供程序控制資訊,該業界用戶及為其供貨的供應商對此網路很有信心,原因是對協議和做為其基礎的實現方案之深度分析和測試。

在工業自動化的WSN應用中,從一開始人們就知道安全性是至關重要的,而且協議和實現方案也印證此一現實。隨著新協議不斷湧現(特別是針對IoT的協定),設計人員將需要在應用環境中重溫一些深刻的教訓,其在此類環境中可能不像「安全性是至關重要的」這一點那麼明顯。

正如本文中的例子所示,有些設計者尚未得到這些教訓,幸運的是,在網際網路協定(IP)應用中提供「工業品質」的安全性與在工業應用中一樣容易。具體實例包括由凌力爾特(Linear Technology)所提供的SmartMesh IP和幾種新興的IP標準(圖4)。

圖4 符合IEEE 802.15.4E標準的無線感測器網路產品。

在WSN中,安全性欠佳的後果是相當嚴重的。不幸的是,目前市面上的許多產品,有些是並未在實現安全性上進行認真的嘗試,有些是在努力之後因失敗告終。工程師若透過運用已確立的原則、合適的協定和密碼,以及熱雜訊之物理性質中固有的隨機性,將可構建兼具安全性和高效性的系統,現今有許多此類協議和實現方案存在,而且世界上也遍布著安全的無線網路。同時,當網路的所有其餘部分均安全時,WSN空間中的每個人也將因此獲益。

(本文作者K. Pister為凌力爾特Dust Networks產品部首席技術專家,J. Simon為系統工程主管)

本站使用cookie及相關技術分析來改善使用者體驗。瞭解更多

我知道了!