2017年9月27日 星期三

.淺談智慧家庭無線技術保全應用與 Z-Wave S2 技術

Smart Home Automation Guide 2017 - Part 1 - Echo Dot, SmartThings vs Wink Hub, Harmony, Hue, Nest





來源: 数智网


智慧家庭的保全監控肯定是個重要課題,當中的危機不單因為私人家居和人生活,都可以在互聯網上被駭客入侵,還有能源供應商或其它情報單位;用戶也擔心攻擊者會將他們的照明隨意開關,甚至乎會開啓他們的門戶,讓盜賊輕易進入。

保全一直是資訊科技的重要課題,不過,互聯網保全及資訊科技所應用的規則和技術,只有部分可被應用於智慧家庭的環境裡,因此值得我們對保全課題作出更全面的檢視。

保全及典型攻擊的一般介紹
在資訊科技行業,一般保全意指對以下三種可能攻擊的保護:
第三方對私人數據的獲取

第三方冒充被攻擊者的身份進行某些行為

用戶的資訊系統功能被廢除 – 一般稱為「拒絕服務」(Denial of Service)

在公共網路裡,比如互聯網,有兩個常用的方法去保護數據之交換:

數據加密(Encryption)

鑒權(Authentication)及授權(Authorization)

加密(Encryption)可防止數據被未獲授權之第三者解讀,而鑒權(Authentication)及授權(Authorization)確定未獲授權人士,不能夠獲得及使用他人之某些服務的身份或權力,比如銀行賬戶;這兩個機制,都是針對在公眾而沒有保護之互聯網裡,為敏感及私人數據的傳輸及應用而設。不過,私人的智慧家庭環境,並不完全符合這個設計概念。

加密(Encryption)及重播式攻擊(Replay-Attacks)
相較於資訊科技之個人數據傳輸數據包,智慧家庭或者物聯網中,用於控制與狀態報告之數據包,其實非常細小,而且數據包之內容亦被規範而標準化,可以隱藏的內容並不多。

對如此透明之數據加密,對處理可能之攻擊可以說是無補於事,駭客要瞭解數據包內容,無需花很多時間和力氣來解碼。

真正的威脅來自於,駭客捕獲數據包後,在另一個不適當之時刻,將數據包重發(replay),若攻擊者能重發並產生可見動作,如將燈開亮、或將門打開,這些都屬於騷擾或危險類的攻擊方法,在這類攻擊中,數據包有沒有加密其實也沒有關係。

捕獲一個數碼數據包,並之後將其再發送,這種攻擊稱為重播式攻擊(replay attack),數據加密是無法應對重播式攻擊的。


浅谈智能家居无线技术保安与Z-Wave S2技术
加密通訊驗證碼




讓智慧家庭免疫於重播式攻擊的唯一方法,是每一次傳送都運用一次性鑰匙,讓被捕獲的數據包變得無效,因為對指令授權之鑰匙,經發送者使用過、或鑰匙產生之一段時間後,已告失效。這個一次性密碼或交易鑰匙稱為一次性驗證碼(Nonce),和保護線上銀行交易之技術同出一撤,銀行業稱之為TAN(交易授權碼Transaction Authorization Number)。

使用TAN或一次性驗證碼,能有效地保護數據傳輸,免於重播式攻擊,但對於這類無線連接,其他種類的攻擊依然存在:

產生一次性驗證碼的方式是已知的,因此攻擊者可隨時為攻擊,產生一個新的一次性驗證碼,這個威脅,跟銀行交易中所使用的公共交易授權碼生成器(public TAN generator)可以相比擬。

一次性驗證碼被捕獲,並且沒有抵達接收者,攻擊者可以在等候超時(time-out)之內、冒充為獲授權之發送者、發送偽冒獲授權的數據包,這種攻擊也稱為中間人攻擊(MITM, Man-in-the-Middle Attack)。線上銀行交易也有很多這種攻擊,稱為網路釣魚(phishing)。

使用一次性驗證碼並對數據包加密,是應對中間人攻擊的強力方法,再加上一重發送者的合法認證,因此PIN/TAN組合,便成為線上銀行的實施方式。

最有效的做法,是收發雙方的一次性驗證碼,都不需要依賴對方,而每次的一次性驗證碼,都是隨機產生的,這樣確保了通訊的最佳保護,但亦因此必須要接收者產生一次性驗證碼,並回覆給發送者;若通訊有足夠加密,一次性驗證碼也可以與真實數據,經同一條途徑傳輸,而由於一次性驗證碼只可以被發送一次,攻擊者根本沒有足夠時間作出重播式攻擊,而加密也無需十分強勁,已足夠延誤攻擊者,當等候超時(time-out)過後,一次性驗證碼已經失效。

拒絕服務式攻擊(Denial-of-Service-Attack)
另外一個較出名之攻擊方法,為拒絕服務式攻擊,攻擊者之目標既不是進接私人數據,也不是冒充被攻擊者,而是令通訊無法實現。拒絕服務式攻擊是一種破壞式攻擊方法。

在無線通信領域,百分百免於拒絕服務式攻擊是不可能的,攻擊者隨時都可以利用一個寬頻發送器,干擾所有無線通信,這現象不單發生於智慧家庭中,動電話機及廣域網交通,亦面對性質一樣的問題。

在智慧家庭,有線通信方式一個優勢,是其更有效免於拒絕服務式攻擊,此論點是有力的,但並不完全,理由是行動電話及無線網路(WLAN)仍繼續採用,相對脆弱的無線通信方式。

個中之原因也和這種技巧一樣簡單:給行動電話及廣域網製造拒絕服務式攻擊一點不難,但對於攻擊者,也沒丁點趣味並得益不多。要產生一個公眾事件(如,將某條街的街燈全關掉)並不容易,而入侵一個家庭也不見得有巨大之有型得益,事實上,有更多比無線干擾更簡單、更低成本、更好的方法去騷擾他人,試想一下,有什麼比在冷天擲石敲破人家的玻璃窗更有影響。

無線安全性的其它方面
另一個可算是對拒絕服務式攻擊,及中間人攻擊的先天性保護,是無線通訊於距離上的限制。Z-Wave領域裡有個別的例子,運用發射功率高達25毫瓦(mW),但一般數據發送都只在幾毫瓦之內,因此戶外無線距離都在一百米範圍內, Z-Wave在設計上運用路由功能,來平衡其短距離特性。

高的發射功率,無疑會令無線技術更易受到攻擊,若信號不會伸延得離家太遠,攻擊者便必須很接近住所才能發動攻擊。

最後一個無線網路之保權課題,但亦相當重要之考慮,是成本/效益比。例如亞洲駭客進接到一個歐洲家庭裡的洗衣機,獲得相關之能源消耗資料,對於大部分人來說,都覺得頗無意義,試問數千公裡外的駭客可以從數千公里遠的家庭得到什麼有型利益?

他寧可花精力去入侵受害者之銀行戶口,更為有利;能夠近距離接近一個住所固然讓攻擊者,有更多選擇去搞破壞,但一塊石頭總比複雜之電子技術,來的更便宜及更方便,更不用說擲石的知識,比裝備干擾的發送機之知識更易獲得。
另一個類似道理,一個有經驗的盜賊可以在數分鐘內,破壞最先進的機械門鎖,而攻擊者能運用電子技術,將門戶打開的風險,其實已經大大減輕了。


浅谈智能家居无线技术保安与Z-Wave S2技术



Z-Wave S2 保全技術
2016年初,Z-Wave 公佈了更先進的S2加密機制(有別於上一代S0保全機制)S2向下對原來S0加密機制相容,S2採用了Diffie-Hellman密鑰交換機制,免除了交換密鑰的風險。

S2除瞭解決了密鑰交換那一瞬間的暴露風險以外,還有一系列的改進:

不需要用輪詢(polling)去查詢設備狀態
為了減低節點之間通信頻次,提高網路容量,Z-Wave plus規格嚴格限制了輪詢的使用,S2提供Supervision 指令集去取代輪詢的功能,即控制器發出控制指令之後無需向目標節點(destination node)輪詢狀態;Supervision指令允許目標節點用一個報告同時提交目前跟未來的狀態,以減省通信的頻次。

舉一個例子,控制器發命令給門鎖把門鎖上,門鎖可以透過supervision指令,報告目前是「進行中」,3秒鐘之後會「完成」,所以控制器會在用戶介面上,顯示門鎖狀態為「正在工作」,而3秒後會轉變為「鎖上」

S2採用主動防護機制規避「重播式攻擊」
每一個發出的數據幀,都透過13byte動態驗證碼加密,讓截聽者無法預測資訊內容的模式(Patterns)

S2 支持3個保全層級
S2 Class 0 – 非鑒權(Unauthenticated)
這一級的保全度最低,廠家如果想降低成本,不提供DSK標籤可以用這這個層級。

另外那些不支持DSK鑒權功能的控制器,也要用這一層級。

S2 Class 1 – 鑒權 (Authenticated)
所有帶DSK標籤的設備,應該通報為S2 Class 1,但門磁與類似的設備會有一些限制。

這些設備進行【添加】的時候需要輸入「設備指定密鑰」(Device Specific Key,簡稱DSK,一般是設備上的一個QR二維碼標貼)前面的5位數字

S2 Class 2 – 門禁控制(Access Control)

這是Z-Wave S2機制最高保全層級
門鎖應該只通報這一個層級,因為需要最高保全性能。

Z-Wave技術由於S2保全機制的實現,為目前唯一獲(美國)UL列入部件認可名單的自組網無線通信技術,換句話說,採用Z-Wave S2技術的產品,具備通過UL安控設備的條件(注1),從而得到保險公司的認可理賠資質。

S2於2017年4月1日成為Z-Wave聯盟對於新產品認證的強制性要求。

注1:
美國安控服務營運商與保險公司,通常會要求產品根據其自身功能,而需獲得額外相關UL認證,作為認可接入系統的要求,常見的有:

UL 634 (Standard for Connectors and Switches for Use with Burglar-Alarm Systems)

UL 639 (Standard for Intrusion-Detection Units)

關於Diffie-Hellman 密鑰交換機制
Diffie-Hellman 密鑰交換機制是採用公共密鑰(Public key) 與私人密鑰(Private key)去實現:
1.一開始A與B雙方會先交換公共密鑰(Kp),我們假設C一直在旁截聽,所以C也收到這個公共密鑰;公共密鑰包含了質數底數G(Generator)和質數模P(Prime Modulus)。然後A與B他們自己各自會生成一個私人的隨機密鑰(分別為Ka 和Kb) ,這個私人密鑰不會告知對方,因此C沒法截聽而得知;

2.A和B會把自己的私人密鑰Kx和收到的公共密鑰匙(含G和P)作模算術(modular arithmetic)生成一個余數Rx,再發給對方,故 A從B收到的資訊,是B透過公共密鑰Kp取得的底數G和質數模P,再以私人密鑰Kb作為G的指數(exponent)透過模算術求出mod P的餘數Rb;同樣B也從A那裡,收到A以相同方式算出來的餘數Ra;

算式是: GKx mod P = Rx, x是a或b

Kx是雙方自己隨機生成的私人密鑰(Private Key), mod是求餘算法。

假設G是3,P是17,Ka是10,Kb是6

那麼A的算式是:310 mod 17 = 8(Ra);B的算式是:36 mod 17 = 15(Rb)

3.最後一步,雙方把從對方獲得的餘數Rx作為底數G,以自己私人密鑰作為指數,再用模算術求餘,算出一個最終的餘數出來。雙方算出來的結果R會是一致的,就是雙方以後使用的密鑰。

算式是: RxKx mod P = R

因此A的算式是: 1510 mod 17 = 4 ;B的算式是: 86 mod 17 = 4

兩者得出的餘數R皆是4,這就是雙方以後加密數據用的密鑰,而由於Ka和Kb從來沒有在空氣中交換過,所以C無法得悉(C只截聽到G、P、Ra、Rb),因而無法算出R。

模算術的優點是其單向性(one way function),G與P都是質數,沒法用算式把餘數與底數,反向求出指數Kx,只能一個一個去試(Trial and error),只要G和P的數值足夠大,要一個一個去試的時間會很長,例如達幾百位的10進數,用目前最快的超級電腦去試的話,都需要幾十年以上。這就堵塞了交換密鑰的保安風險。




                                                                                                                                                                                                                 

沒有留言:

張貼留言