原文地址: https://www.4hou.com/wireless/14252.htmlhtml
導語:本文將會探討ZigBee標準提供的安全模型,用於安全通訊的各類密鑰、ZigBee建議的密鑰管理方法以及其餘固有的安全機制,如身份驗證,重放攻擊保護等。算法
##介紹安全
ZigBee被認爲是一種安全的通訊協議。其安全架構補充了IEEE 802.15.4標準提供的安全服務。ZigBee提供的安全服務包括安全密鑰創建、安全密鑰傳輸、經過對稱加密的幀保護、以及安全的設備管理。網絡
可是,其安全功能基於某些固有的假設:架構
ZigBee採用「開放信任」模式; 即,協議棧層之間彼此信任,而且產生幀的那一層負責保護產生的幀。less
安全服務僅以加密方式保護不一樣設備之間的接口。分佈式
相同設備上的不一樣堆棧層之間的接口是非加密的。函數
密鑰在傳輸期間不會發生無心中的泄露狀況。(例外狀況是在新設備的預配置期間,可能會在不受保護的狀況下發送單個密鑰。)工具
幾乎完美的隨機數生成器的可用性。性能
防篡改硬件的可用性。
考慮到這些假設,本文將會探討ZigBee標準提供的安全模型,用於安全通訊的各類密鑰、ZigBee建議的密鑰管理方法以及其餘固有的安全機制,如身份驗證,重放攻擊保護等。
##ZigBee安全模型
ZigBee標準支持兩種類型的安全模型,以下面的圖1所示,主要區別在於它們如何容許新設備進入網絡以及它們如何保護網絡上的消息:
集中安全模型:是一個複雜但應該是最安全的模型,涉及第三個邏輯設備和信任中心(網絡協調員)。信任中心負責:
配置和驗證加入網絡的路由器和終端設備;
生成用於跨網絡加密通訊的網絡密鑰;
按期或根據須要切換到新的網絡密鑰。所以,若是攻擊者獲取網絡密鑰,它將在到期前具備有限的生命週期;
爲每一個設備加入網絡時創建惟一的信任中心連接密鑰,以便與信任中心進行安全通訊,以及維護網絡的總體安全性。
分佈式安全模型:簡單但安全性較低。此模型僅支持路由器和終端設備。路由器構成分佈式網絡,負責註冊其餘路由器和終端設備。路由器向新加入的路由器和終端設備發佈網絡密鑰(用於加密消息)。網絡中的全部節點使用相同的網絡密鑰來加密消息。此外,全部節點在註冊到網絡以前預先配置有連接密鑰(用於加密網絡密鑰)。
##ZigBee安全密鑰
在ZigBee標準中使用三種類型的對稱密鑰(每一個長度爲128位)。
網絡密鑰:用於廣播通訊,由NWK和ZigBee的APL應用該密鑰。每一個節點都須要網絡密鑰才能與網絡上的其餘設備安全通訊。信任中心生成網絡密鑰並將其分發給網絡上的全部設備。網絡上的設備經過密鑰傳輸(用於保護傳輸的網絡密鑰)或預安裝來獲取網絡密鑰。有兩種不一樣類型的網絡密鑰:標準(在開放時發送網絡密鑰)和高安全性(已加密的網絡密鑰)。網絡密鑰的類型控制網絡密鑰的分發方式; 並能夠控制網絡幀計數器的初始化方式。可是,該類型不會影響消息的安全性。
連接密鑰:用於單播通訊,由ZigBee協議棧的APS應用。設備經過密鑰傳輸(密鑰加載密鑰用於保護傳輸的鏈路密鑰),密鑰創建(基於「主」密鑰和其餘網絡參數)或預安裝(例如,在工廠出廠安裝)。一般,使用帶外方法(例如,產品包裝中的QR碼)預先配置與信任中心相關的連接密鑰,而節點之間的連接密鑰由信任中心生成並使用網絡密鑰加密。將其發送到節點。
ZigBee定義了兩種類型的連接密鑰; 全局和惟一(能夠依次爲兩種類型 – 第一種是信任中心連接密鑰;密鑰在信任中心和設備之間創建,第二種是在信任中心之外的網絡中的兩個設備之間創建的應用程序連接密鑰)。連接密鑰的類型決定了設備如何處理各類信任中心消息(APS命令),包括是否應用APS加密。
此外,每一個節點還能夠具備如下預先配置的連接密鑰,該密鑰將用於導出信任中心連接密鑰(導出是經過基於證書的密鑰創建協議(若是已啓用SE安全性),APS請求密鑰方法) ,Touchlink調試,或使用Matyas-Meyer-Oseas哈希函數來完成的):
默認的全局信任中心鏈路密鑰由ZigBee聯盟定義。若是應用程序在加入時未指定其餘連接密鑰,則默認值爲5A 69 67 42 65 65 41 6C 6C 69 61 6E 63 65 30 39(ZigBeeAlliance09)並由設備使用或支持。
分佈式的安全的全局鏈路密鑰,是一種用於從同一廠商的設備之間交互的製造者特有的密鑰。
安裝碼是預配置的連接密鑰。全部ZigBee設備均可以包含惟一的安裝碼,一個由16位循環冗餘校驗(CRC)保護的128位隨機數字。信任中心可能要求每一個新設備使用惟一的安裝碼來加入集中式安全網絡,而且安裝碼必須與先前在帶外信任中心輸入的代碼(即QR代碼)匹配。驗證安裝碼後,加入設備和信任中心使用Matyas-Meyer-Oseas(MMO)哈希函數從安裝碼派生惟一的128位信任中心連接密鑰
Touchlink預先配置連接密鑰。
主密鑰:構成兩個設備之間長期安全性的基礎,僅由APS使用。其功能是保持對稱密鑰創建協議(SKKE)中兩個節點之間的鏈路密鑰交換機密。設備經過密鑰傳輸(密鑰加載密鑰用於保護傳輸的主密鑰),預安裝或用戶輸入的數據(如PIN或密碼)獲取主密鑰。
##密鑰管理
如上所述,ZigBee的一個特徵是,它具備多種密鑰管理機制:
預安裝:製造商將密鑰安裝到設備自己。用戶可使用設備中的一系列跳線(在預先安裝了多個密鑰的設備中)選擇一個已安裝的密鑰。
密鑰創建:這是一種基於主密鑰生成連接密鑰的本地方法。ZigBee網絡的不一樣安全服務使用從單向函數(使用連接密鑰做爲輸入)派生的密鑰,以免因爲服務之間的不須要的交互而致使的安全漏洞。使用不相關的密鑰可確保不一樣安全協議的執行的邏輯分離。該密鑰創建基於SKKE(對稱密鑰創建) 協議。通訊中涉及的設備必須擁有主密鑰,該密鑰多是經過預安裝或密鑰傳輸或用戶輸入得到的。
密鑰傳輸:網絡設備向信任中心發出請求,要求將密鑰發送給它。此方法適用於在商業模式下請求任何三種類型的密鑰,而在住宅模式下,信任中心僅保留網絡密鑰。信任中心使用密鑰加載密鑰來保護主密鑰的傳輸。
另外,在集中式模型中,可使用基於證書的密鑰創建協議(CBKE)來分發密鑰。CBKE提供了一種機制,能夠根據製造時存儲在兩個設備中並由證書頒發機構(CA)簽名的證書與信任中心協商對稱密鑰。
##ZigBee協議棧安全措施
IEEE 802.15.4 提供了抵禦來自其餘網絡的干擾的魯棒性,並使用具備128位密鑰長度(16字節)的AES(高級加密標準)來 實現:
數據安全性 – 經過加密數據有效負載和執行
數據完整性 – 使用 消息完整性代碼(MIC)或消息驗證代碼(MAC)實現 ,該代碼附加到要發送的消息中。此代碼可確保附加的MAC頭和有效負載數據的完整性。(它是經過使用128位密鑰加密IEEE MAC幀的部分而建立的)
在IEEE 802.15.4 MAC幀中,僅當幀控制字段的安全啓用子字段打開時,才啓用輔助安全頭。這個特殊的頭有3個字段:
幀計數器是由當前幀的源給出的計數器,以保護消息不被重放攻擊。
密鑰標識符指定了用於須要瞭解的節點通訊的密鑰類型所需的信息。
IEEE 802.15.4安全材料(如密鑰,幀計數和安全級別)存儲在訪問控制列表(ACL)中。ACL用於防止未經受權的設備加入網絡。ACL存儲在MAC PAN信息庫(PIB)中,而且與其餘MAC屬性相似的被訪問和修改。每一個訪問控制列表(ACL)存儲要與之通訊的節點的地址,Security Suite(AEC-CTR,AES-CCM-64,AES-CCM-128等),密鑰:AES算法中使用的128b密鑰,上一個初始向量(IV)和重放計數器(最後一個IV由源和目的地的重放計數器用做消息ID以免重放攻擊)。雖然IEEE 802.15.4提供了安全措施,但它並未指定如何管理密鑰或應用的身份驗證策略的類型。這些問題由ZigBee管理。ZigBee標準支持如下可選安全服務:
下面的圖3顯示了AES-CCM *在數據身份驗證和機密性方面的做用。在發送器端,128位數據塊形式的明文進入AES-CCM *。AES-CCM *的職責是加密數據並生成相關的MIC,該MIC與幀一塊兒發送到接收器。接收器使用AES-CCM *對數據進行解密,並從接收到的幀中生成本身的MIC,以便與接收到的MIC進行比較(數據完整性)。與CRC相比,MIC提供更強的真實性保證。CCM *生成的MIC用於檢測故意的和未經受權的數據修改以及意外錯誤。
CCM *被稱爲通用操做模式,它結合了數據加密,數據認證和數據完整性。CCM *僅提供加密和完整性功能,如上圖2所示。該過程當中使用的隨機數是一個13字節的字符串,使用安全控制,幀計數器和輔助頭的源地址字段構建。MIC的大小能夠是32位,64位或128位。
圖-3:AES-CCM *在數據認證和機密性方面的做用
重放攻擊保護:ZigBee網絡中的每一個節點都包含一個32位幀計數器,該計數器在每次數據包傳輸時遞增。每一個節點還跟蹤它所鏈接的每一個設備(節點)的上一個32位幀計數器。若是節點從具備與上一個接收的幀計數器值相同或更小的幀計數器值的相鄰節點接收到分組,則丟棄該分組。此機制經過跟蹤數據包並在節點已接收它們時丟棄它們來啓用重放攻擊保護。幀計數器的最大值能夠是0XFFFFFFFF,可是若是達到最大值,則不能進行傳輸。幀計數器重置爲0的惟一時間是更新網絡密鑰。
設備認證:ZigBee標準支持設備認證和數據認證。設備認證是確認將網絡加入爲真實的新設備的行爲。新設備必須可以接收網絡密鑰並在給定時間內設置適當的屬性來進行身份驗證。設備認證由信任中心執行。住宅和商業模式的認證程序不一樣。
在住宅模式下,若是加入網絡的新設備沒有網絡密鑰,信任中心會經過不受保護的鏈路發送網絡密鑰,這會致使安全漏洞。若是新設備已具備網絡密鑰,則必須等待從信任中心接收虛擬(全爲零)網絡密鑰,做爲身份驗證過程的一部分。新設備不知道信任中心的地址,並使用此接收消息的源地址來設置信任中心地址。而後,加入設備被認爲是用於住宅模式的認證。
相反,在商業模式中,信任中心從不經過未受保護的鏈路將網絡密鑰發送到新設備。可是,若是新設備沒有與信任中心的共享主密鑰,則能夠在商業模式下發送不安全的主密鑰。在新設備接收到主密鑰以後,信任中心和新設備啓動密鑰創建協議(SKKE)。新設備與信任中心創建連接密鑰的時間有限。若是新設備沒法在超時期限結束以前完成密鑰創建,則新設備必須離開網絡並再次重試關聯和身份驗證過程。確認新連接密鑰後,信任中心將經過安全鏈接將網絡密鑰發送到新設備。如今認爲加入設備已通過商業模式的認證。
此外,ZigBee還支持加入時的設備惟一身份驗證,例如Touchlink調試 – 這是一種易於使用的接近機制,用於將設備調試到網絡中。該方法經過Touchlink'發起者'肯定目標設備(待委託)的接近度以及協商/傳輸網絡參數來工做。
安全無線(OTA)固件升級:OTA更新容許製造商添加新功能,修復其產品中的缺陷,並在識別出新威脅時應用安全補丁。可是,若是協議未提供充足的保護,或者設備製造商未使用全部可用的安全措施,則OTA更新也會表明潛在的安全漏洞。ZigBee設備和相關的硅平臺提供多層安全性,以更新現場設備,並確保未更新惡意修改代碼映像:
首先,ZigBee標準提供了一種經過使用惟一密鑰加密隔空傳輸全部鏡像的方法。
其次,該標準提供了一種用另外一個惟一密鑰對OTA鏡像進行簽名的方法。
第三,鏡像能夠在製造期間被加密,使得僅最終產品包含用於解密它的密鑰。
最後,鏡像能夠存儲在芯片上存儲器中,該存儲器配置爲禁用調試回讀功能,防止使用標準調試工具進行逆向工程,這是其餘解決方案的常見漏洞。
在OTA升級期間,一旦設備接收到加密鏡像,其安全引導加載程序將對鏡像進行解密,驗證簽名,而後更新設備。此外,每次設備啓動時,引導加載程序都會檢查活動鏡像的有效性。若是鏡像無效,則引導加載程序會阻止它更新並返回使用先前已知的正常鏡像。所以,將快速檢測到鏡像損壞,而且系統操做員能夠採起行動。
基於邏輯鏈路的加密:另外一個關鍵的安全工具是可以在網絡中的一對設備之間建立應用級安全鏈路。這是經過在一對設備之間創建一組惟一的AES-128加密密鑰來管理的。這容許網絡中任何兩個設備之間的邏輯安全鏈路,從而支持網絡中的一對設備與許多其餘設備之間的「虛擬專用鏈路」。此措施限制了獲取網絡密鑰的攻擊者攔截或注入其餘設備將採起行動的消息的能力。
運行時密鑰更新:按期或在須要時,信任中心主動更改網絡密鑰。信任中心生成一個新的網絡密鑰,並經過使用舊網絡密鑰對其進行加密,將其分發到整個網絡中。更新後,全部設備將在短期內繼續保留舊網絡密鑰,直到網絡上的每一個設備都切換到新網絡密鑰。此外,設備在接收新網絡密鑰時將其幀計數器初始化爲零。
網絡干擾保護:在低成本的ZigBee節點中,因爲成本或節點大小的限制,使用帶選擇濾波器多是保護網絡不受干擾的一種選擇。然而,ieee802.15.4和ZigBee網絡的基本特性,如低射頻傳輸功率、低佔空比和CSMA/CA信道接入機制,有助於下降ZigBee無線網絡對附近其餘系統的影響,反之亦然。提升ZigBee網絡共存性能的途徑有兩種:協同性和非協同性。
在協同方法中,ZigBee網絡和其餘網絡(例如,IEEE 802.11b / g網絡)的某些操做被一塊兒管理。每當一個網絡處於活動狀態時,另外一個網絡將保持非活動狀態以免數據包衝突。在該方法中,ZigBee網絡和其餘網絡之間必須存在通訊鏈路以實現和管理協做。
非協同方法是任何ZigBee網絡能夠遵循的程序,能夠在不知道附近干擾無線設備的操做機制的狀況下提升其共存性能。該方法基於檢測和評估干擾並儘量避免干擾。能夠在ZigBee無線網絡中使用的一些非協同方法包括:
具備衝突避免的載波偵聽多路訪問(CSMA / CA)
相似DSSS的信號擴頻技術容許所需信號具備處理駐留在相同頻帶中的任何干擾的增益的優勢。所以,信號擴展一般改善了網絡對干擾源的魯棒性
動態RF輸出功率控制 – 根據信道條件和節點之間的距離調整發射器的RF輸出功率。下降發射器輸出功率可下降與附近其餘無線設備的干擾,但信號接收方更容易受到干擾。
網狀網絡和位置感知路由 – 若是網絡中的某個路由器節點始終存在強幹擾,將頻繁致使數據包傳遞到下一跳失敗,則網狀網絡能夠選擇另外的路徑來承載到最終目的地的消息,避免路由器靠近主要干擾源。這有時被稱爲路徑多樣性。在位置感知路由中,在計算鏈路成本函數時,能夠考慮關於可能的高干擾區域的信息(若是已知)。以這種方式,儘量地將分組業務流引導遠離高干擾區域。可是干擾源仍然影響由高干擾區域內的節點發起或打算髮送的傳輸
頻率信道選擇 – 當所需信道中的干擾信號的能量不可接受時,改變頻率信道能夠是解決干擾問題的簡單方法。ZigBee提供頻率捷變功能,容許整個網絡在干擾時改變信道。若是已知附近網絡中的干擾信號的操做頻率和帶寬,則能夠相應地選擇ZigBee網絡的頻率信道以最小化干擾信號的影響。這被稱爲通道對齊。
自適應分組長度選擇 – 基於信道條件。減少分組的大小一般被認爲是在存在干擾的狀況下改善PER的方式。通常而言,較小的分組在干擾源出如今同一頻率信道以前具備更好的接收目的地址的機會。可是,一些實驗代表減小數據包長度並不總能帶來更好的PER性能。
##結論
儘管ZigBee在設計時考慮了安全性,但仍須要進行權衡以保持設備的低成本,低能耗和高兼容性。它容許在同一設備上的不一樣層之間重複使用相同的密鑰,並容許在設備到設備的基礎上實現端到端安全性,而不是在兩個通訊設備上的特定層對(甚至是應用程序對)之間實現)。此外,對於設備的互操做性,ZigBee對給定網絡上的全部設備和設備的全部層使用相同的安全級別。儘管如此,這些措施也不可避免致使安全風險。所以,負擔在於開發人員解決這些問題,幷包括檢測和處理錯誤,丟失密鑰同步,按期更新密鑰等的策略。
雖然本文探討了ZigBee提供的基本安全功能,但下一篇文章ZigBee 安全:滲透測試篇(第1部分)將會探討能夠在支持ZigBee的設備上執行的各類攻擊以及可用於執行評估的工具。
參考
[1] ZigBee規範文件053474r20。由ZigBee聯盟提供。
[2] http://www.libelium.com/security-802-15-4-zigbee/
[4] ZigBee無線網絡和收發器 – Shahin Farahani
[5] 最大化ZigBee網絡的安全性 – 恩智浦
本文翻譯自:https://research.kudelskisecurity.com/2017/11/08/zigbee-security-basics-part-2