當前位置: 主頁 > 專題報導 >
 

淺談M2M的安全性問題

本文作者:紀博文       點擊: 2012-11-19 16:56
前言:

M2M的簡單介紹

 

Machine-to-MachineM2M,或者也稱為IOTInternet of Things),就字面上來說,就是將所有的物品都連上網路,並且讓彼此之間可以進行資料交換,進而擁有根據環境來作決策判斷的能力,並採取相對的行動。舉例來說,當溫度計偵測到氣溫上升,會通知冷氣機來降低室內溫度;當溫度下降的時候,則會適時的提昇室內溫度。甚至整個系統也可以根據考慮到二氧化碳的排氣量來決定溫度的控制。總而言之,就是為人類盡可能地提供全自動化的環境,創造更舒適的生活。M2M的理想境界可以用下面這張圖來表示:


1:DIKW金字塔(資料來源:[1]

 

這張圖包含了四個部份,分別是資料(Data)、資訊(Information)、知識(Knowledge)以及智慧(Wisdom)。當一個M2M的系統建立起來後,整個系統要能收集必要的資料,從再資料中整理出有用的資訊,並將累積的資訊消化、歸納後建立一套專家系統。之後這套專家系統就可以對應各種環境做出不同的判斷。

 

其實,M2M 並不是一個太新鮮的想法,早在90年代,IPv6制定的時候,就已經考慮到將世界上所有的東西都連上網路,所以才將IP的定址空間由IPv432位元大幅擴充到了128位元。既然當年就已經有考慮到這樣的使用情境,那為什麼直到近三四年這個題目才開始夯起來,甚至讓眾多的科技大廠爭相投入研發資源到其中呢?主要有下面幾個原因:

 

1.硬體成本的降低

隨著硬體晶片技術的進步,越來越多高效能、低功率的硬體被開發出來,這讓許多的製造商不需要花大錢就可以提供物品更強的運算能力以及網路連線的能力。

 

無線網路技術的成熟

M2M的系統來說,無線網路技術是不可或缺的一環。這到不是說物品只能透過無線網路才能上網,而是當有大量物品需要上網時,佈建有線網路不但有設定上的麻煩,同時空間規劃上也是一個頭痛的問題。

 

雲端運算的興起

如上面所說,M2M網路最終的理想是自動化的專家系統。在雲端運算的發展下,大部分的運算都可以集中到雲端,這使得M2M網路中大部份的物件都不需要過度強大的運算能力,只需要收集資料給雲端中的管理機制,並且聽從來自雲端決策系統的指揮。這樣的機制不但簡化了前端物件的開發難度,也加速了M2M系統的普及。

 

一切看起來都那麼美好,但是...

 

就如上面所言,發展M2M技術所需要的條件、背景幾乎都已經備齊了,看起來前途一片美好,但其實還有許多的問題需要被克服。本篇文章將集中探討當中最重要的一個問題,那就是M2M系統中的安全性。當一提到「資訊安全」的問題,很多人的直覺反應就是「我又沒有什麼機密資料,駭客才不會找上我呢!」毫無疑問,這絕對是錯誤的觀念,不過把這個問題放到M2M的系統中,恐怕這就不單單是洩密的問題,甚至還會牽涉到人身安全的層級。有這麼嚴重嗎?來想想看下面的例子。

 

數位家庭一直是M2M主打的應用情境,透過數位系統來提供舒適又安全的生活。瓦斯偵測系統就是其中的一種應用。當偵測器偵測到室內瓦斯含量過高的時候,會自動通知窗戶系統,將窗戶打開,並聯絡瓦斯系統自動關閉,而後通知住戶以及警察局。聽起來很棒,但,如果駭客入侵系統的話怎麼辦呢?駭客可以控制窗戶系統全部緊閉,並且打開瓦斯,甚至還可以透過瓦斯爐直接點火。一個駭客根本不用進行實體入侵,只要透過網路遠端遙控就可以觸發火災。再看看另外一個自動車的例子。當雷達偵測到車子與前面車輛的間距過近時,就會自發性連動煞車系統來調節車子的行進速度。如果駭客入侵系統導致這套決策機制「反過來」怎麼辦呢?越想越可怕,那是不是放棄這樣的新科技比較好?

 

在繼續討論安全性的問題前,我們先來看看M2M系統的網路架構。


2:M2M網路架構(資料來源:資策會自行繪製)

 

從架構上來看,M2M在網路上可以切割成為三塊,分別是M2M節點、網路傳送載體、後端控制決策系統。M2M節點負責的工作是收集資料,並將資料回傳至後端系統,之後接受來自後端系統的命令,做出反應行動。當然某些節點可能只有單一功能,像是只有偵測器的功能而無法執行任何指令。一般來說,M2M節點因為成本考量的因素並不會具有太強的資源,大部分的運算工作都會交給後端的服務系統來處理。第二個部份則是網路傳送載體的部份,負責作為把前後端資料交換的媒介。當然這裡並不限制一定要是有線網路或是無線網路,事實上,也不一定會連接到網際網路上,像是如果在前後端都在同一個網域當中當然就不需要了。最後一個部份則是後端的控制系統,主要在收集資料、進行判斷並做出反應,並將反應傳給前端的節點執行。

接下來我們要根據這三個部份來討論安全性的問題:

1.    M2M節點

M2M節點的部份,最重要的就是要確保M2M節點通訊時的安全性,不管是節點間的通訊,還是節點跟後端服務系統的溝通,當中傳送的資料都應該保證隱密性,免得被有心人士利用。要解決這個問題,最直覺的方法就是將資料加密。把資料加密並不是難事,但是加密需要金鑰,而金鑰管理就是十分頭大的問題了。特別在M2M這種強調大量節點同時存在的環境,金鑰的數目是非常可觀的,而每個節點的資源有限,自然也無法花太多的記憶體空間來儲存、管理眾多的金鑰,這時後要如何處理呢?

 

除了金鑰管理的問題以外,還有另外一個要考慮的問題,就是感測資料收集的正確性。造成感測資料的錯誤有兩個可能的原因,一個是因為M2M節點電力不足、或是硬體老化等問題造成感測器收集到的資料錯誤。因為成本考量的問題,使得這在M2M節點是很常見的問題。另外一個可能就是駭客入侵感測器後,再控制感測器送出錯誤的資料。感測資料錯誤會造成甚麼後果呢?就像前面提到的,因為後端服務系統會根據前端節點所收到的資料進行判斷,如果資料有誤,自然也會造成錯誤的判斷,進而執行錯誤甚至是危險的處理行動,帶給人類生活極大的危害。

 

2.    網路傳送載體

網路傳送載體主要的任務是將感測器的資料傳送到後端服務系統,並將後端服務系統的命令傳給前端的代理人。除了資料竊聽以外,在這部份最要注意的是網路傳輸的可靠性。針對網路傳送載體的常見攻擊有兩種,一是阻斷服務攻擊Denial of Service Attack),包含了分散式阻斷服務攻擊Distributed Denial of Service Attack),或是蟲洞攻擊Wormhole Attack),這種類型的攻擊主要是截斷M2M節點到後端服務系統,使後端服務系統無法接收來自前端感測器的資料,自然也無法傳送對應的命令到前端的代理人,整個系統的功能因此就被癱瘓掉了。第二種則是中間人攻擊Man in the Middle Attack),攻擊者位在前端感測器和後端服務系統之間,向前端感測器宣稱自己是後端服務系統,對後端服務系統宣稱自己是前端的感測器,藉以達到偷聽或是竄改資料的目的。

 

上面提到的兩種攻擊模式在資安領域不是太新鮮的議題,事實上所有的網路系統的安全機制都會將這兩種攻擊模式考慮在內。一般來說,要解決阻斷服務攻擊通常會使用偵測的方式,一旦偵測到有阻斷式攻擊事件(像是有過多的異常封包傳送到服務系統等),防禦機制就會改變服務系統的網路入口,將合法的封包透過不受干擾的路由導入系統。至於中間人攻擊的部份,通常會使用相互認證(Mutual Authentication)的機制,互相確保彼此的身份。因為解決方案跟其他系統大多大同小異,所以本文也不會對這方面的安全議題作深入的介紹。

 

3.    後端服務系統

後端服務系統主要負責資料統計以及自動化智慧決策。一般來說,這個系統會建置在雲端,或是某個機房裡面,並且有專業的MIS人員管理、維護。如何做好一台主機或是伺服器的資安防護措施一直都是一個重要的議題,M2M的系統在這方面和其他系統並沒有太多的差異。因此,雖然後端服務系統的防護相當重要,但本篇文章卻不會對這個議題有太多的著墨。

 

可能的解決手段

當談到資訊安全的時候,所有的環節都必需要考慮到,只要一個環節有漏洞,就算其他部份的安全機制設計的再完善,攻擊者還是可以輕易的從漏洞突破系統進而造成破壞。然而要把所有層面的安全機制都討論一遍文章空間也不太,因此本文就集中在介紹前端M2M節點部份的安全機制。

 

1.基於身份識別的密碼系統(Identity-Based Cryptography

因為M2M系統通常會包含大量的物品,因此在考量到金鑰更新、記憶體成本的情況下,對稱式金鑰密碼系統並不是一個好的方案。而在大部分的公開金鑰密碼系統中,通常都會一個角色在扮演金鑰管理的角色,像是在自然人憑證中,所有人的金鑰是由內政部在管理,或是在X509的架構中,那個負責產生金鑰、憑證的最高認證中心。問題是,在M2M的系統當中,所有的「物品」之間都需要溝通的話,那這個金鑰管理者就會因為大量的詢需求而成為整個網路的效能瓶頸,大幅影響M2M系統的實際運作。

 

「基於身份識別的密碼系統」是由密碼學大師Shamir1984年所提出的概念[2]Shamir當年提出了一個構想,有沒有可能當使用者需要另外一個使用者公開金鑰時,並不需要到金鑰管理中心那邊進行詢,而是只需要知道對方的身份識別碼即可以算出對方的公開金鑰。在1984年裡面,Shamir使用的例子是對方的Email帳號。這個概念可以應用到M2M的網路系統。當兩個物品要進行溝通時,只要知道對方的ID就可以透過公開金鑰系統去建立彼此的金鑰,確保物品間溝通的安全。

 

Shamir1984年提出了這樣的構想,不過卻沒有合適的演算法可以達到這樣的特性。一直到2001年,BonehFranklin提出了第一個實際的演算法來實現這套密碼系統[3]。這套密碼系統主要是使用Weil Pairing 的雙線性映射(Bilinear Map)和隨機神諭(Random Oracle),並建立在Bilinear Diffie-Hellman的難題假設上面。這個密碼系統簡介如下。首先,系統會隨機選出兩個群(Groupgenerator以及一個雙線性映射函式 。整個系統的祕密資訊為,公開資訊為 ,而一個用戶的私密金鑰則是,其中 是這個用戶的身份識別碼。加密方式如下:


解密方式則是:


 

相關的細節與證明請參考[3]。從2001到現在,有越來越多的人投入在這方面的研究,並且也取得了很大的進步。不過再介紹下去就偏離了本文的重點,所以就留待讀者自己去詢相關資料。

 

2.成對監督機制

在說明這個機制之前,要先介紹一下攻擊者入侵感測器的作法。一般來說,感測器的程式都是燒錄在ROM裡面執行,因為記憶體是唯讀的關係,攻擊者不太可能透過網路對感測器的程式進行惡意改寫。因此,要入侵感測器最好的作法,就是實體接觸到感測器,並將惡意程式重新燒到ROM當中,並讓感測器重新上線來影響系統。

 

要解決這個問題,最好的辦法就是從實體層面著手,讓攻擊者無法直接接觸到實體的感測器,像是把感測器放在有警衛看守的地方,或是藏在某個秘密地點。但這卻不是可行、有效的作法。當使用M2M系統的時候,最主要的目的就是要減少人力的消耗,盡可能建立自動化的環境,如果還派人看守,不是有本末倒置的問題嗎?此外,感測器就是要偵測所要監控的環境,如果鎖在秘密地點也喪失了偵測的本意(當然要監控這秘密地點除外)。

 

為了解決這個問題,Lin2009年提出了一套成對監督機制[4]。概念很簡單,當攻擊者要重新燒錄感測器的ROM,這個動作毫無疑問會花上不少時間,而這段時間感測器是沒有任何功能的。就算攻擊者攜帶已經燒好惡意程式的ROM,要更換ROM也是必要先把感測器關機,等替換好才重新動,這也是感測器無法反應的時間。所以Lin利用這個時間上的落差來設計安全機制,只要有感測器有一段時間呈現沒有反應的狀態,系統就會把這個感測器視作正被攻擊者攻擊,那麼之後就算感測器重新上線,也會被當作是惡意的感測器。要實做這個功能,系統會為每個感測器非配一個「配偶」,然後這對「夫妻」感測器間就會定時傳送封包給對方。一旦有感測器超過反應時間沒有進行回報,該感測器的「配偶」就會回報系統,系統就會得知這個攻擊事件,並將那個沒有反應的感測器歸類為惡意感測器。

 

3.協同式錯誤資料偵測過濾機制

前面有提過,M2M系統裡面,感測器的工作主要就是接收資料給後端服務系統,後端系統進行判斷決策後再交由前端的代理人執行。如果感測器收集到的資料有問題,會導致決策系統做出錯誤的判斷,導致很嚴重的後果。前面一個方法固然可以防止攻擊者重新覆蓋程式,但是電力不足、或是硬體老化這種自然、非攻擊者造成的資料錯誤也必須要考慮在內。那要如何確定收集到的資料是沒問題的呢?

 

為了解決這個問題,[5]提出了一種協同式的解決方案。簡單來說,每個感測器要傳送資料的時候,必須要得到周圍其他感測器的背書。這個機制之所以會這樣設計是出於一個很直覺的假設,那就是附近的感測器都會偵測到同樣的數。整個機制的示意圖如下:


 

3:協同式錯誤資料偵測過濾機制(資料來源:[5],資策會重新繪製)

當有感測器要回傳收集到的資料給後端的服務伺服器時,它會先把自己到伺服器中間所有路徑節點的身份識別傳送給周圍的感測器,而這些周圍的感測器會對自己所偵測到的資料對每個路徑上的節點進行簽章,並把這些簽章傳回給要送資料的感測器。這樣感測器就得到一個簽章的矩陣,如下所示:

 


 

其中鄰近感測器對路徑節點 所作的簽章。在這邊有兩個問題要特別提出來。首先,鄰近的感測器要怎麼和路徑上所有的節點建立金鑰並進行簽章呢?這個問題可以使用之前提到的「基於身份識別的密碼系統」來處理,只要有路徑上所有節點的ID即可解決這個問題。再來,如果每個鄰近的感測器都把資料進行簽章後送還給中央的感測器,那麼等到感測器要真的將資料回傳給後端的服務伺服器時,傳送的資料量豈不是會很大嗎?為了減輕傳送的資料量,每個鄰近感測器並不會回傳全部簽章資料,反而只會回傳簽章資料的最後一個位元,因此簽章矩陣長得會像下面這個樣子:

 


之後當中央感測器將收集到的資料以及從周圍感測器收集到的資料簽章送往後端服務伺服器,每個路徑上的節點會來驗證和自己有關的簽章,如果有問題的話就把這個封包丟棄,沒問題的話才繼續往後端服務伺服器傳送。當然,因為每筆簽章的資料只有一個位元,也就是只有01兩種可能,所以攻擊者有一半的機率成功的偽裝成合法的簽章。但只要路徑上的節點或是鄰近的感測器數量多,就可以大幅減少錯誤資料傳送到後端服務伺服器的機率。

 

聽起來可以安心了,真的嗎?

 

上面介紹了不少安全性機制,看起來也都挺有效的,但其實還有不少問題需要考慮,甚至會影響整套機制的可行性。

 

第一個問題是電力問題。在M2M的環境裡,大部分的感測器節點都是採用電池供電的(想像一下當所有M2M的物品都要接插座的話,那電源線整理起來是一件多可怕的事),當安全機制需要大量運算或是無線封包傳輸的話,電池的電力很快就會消耗殆盡,導致更新電池的頻率大幅上升,讓M2M自動化的效果大打折扣。

 

第二個問題是網路傳輸的問題。目前M2M大多使用無線網路,無線網路有共享媒介的特性,造成無線封包很容易在空間中彼此形成干擾。所以一旦M2M系統中的物品太多,就很容易造成無線傳送失敗,以致被迫重傳資料,又更進一步加速電力的消耗。不但如此,不管是「成對監督機制」或是「協同式錯誤資料偵測過濾機制」,都需要仰賴大量的無線網路傳輸,這也加重了無線傳輸的負擔。

 

第三個問題出在「協同式錯誤資料偵測過濾機制」,這個機制固然可以有效的防止感測器傳送錯誤的資料,不過也給予了惡意感測器封殺正常感測器的可能性。只要惡意感測器故意傳送錯誤的簽章,一筆正常的資料就會在傳送過程中被路徑上的節點所丟棄。除此以外,只要攻擊者多安排幾個惡意的感測器,他也還是可以對後端服務伺服器送出錯誤的資料。

 

還有沒有呢?當然還有。不過,系統設計人員也可以找到更多對應的安全機制來處理,但再寫下去文章就太長了。M2M的系統是一個很龐大、複雜的服務系統,也因為它的龐大、複雜,每個環節都必需要考慮到是否有漏洞,同時也不能忘記考慮到實際的應用環境。本文所提到的不過是個開頭,接下來還有更多的地方需要被考慮、解決。

 

結論

 

本文先介紹了M2M系統的架構,接著討論了M2M在架構上要注意的幾個安全性議題,並集中討論在前端感測器部份可以採用的一些機制。之後再重新審視這些機制,提出可能會遇到的一些問題。盼望這樣的討論可以讓讀者們對M2M安全議題上有一些初步的認識,一起來討論、檢視,讓M2M系統成為可靠、的系統,帶給人更便利、舒適的生活。

 

 

參考資料

The Internet of Things (IBM). http://youtu.be/sfEbMV295Kk.

Adi Shamir, Identity-Based Cryptosystems and Signature Schemes. Advances in Cryptology: Proceedings of CRYPTO 84, Lecture Notes in Computer Science, 7:47-53, 1984.

D. Boneh and M. Franklin. Identity Based Encryption from the Weil pairing. In Advances in Cryptology – Crypto 2001, volume 2139 of LNCS, pages 213–229. Springer-Verlag, 2001.

X. Lin. CAT: Building couples to early detect node compromise attack in wireless sensor networks,” in Proc. IEEE GLOBECOM’09, Honolulu, Hawaii, USA, Nov. 30 - Dec. 4 2009.

R. Lu et al., “BECAN: A Bandwidth-Efficient Cooperative Authentication Scheme for Filtering Injected False Data in Wireless Sensor Networks,” IEEE Trans. Parallel and Distrib. Sys., 2010.

 

作者介紹:

紀博文,目前任職於資訊工業策進會智慧網通系統研究所先進網通技術中心。

 

電子郵件:look@compotechasia.com

聯繫電話:886-2-27201789       分機請撥:11