天天看點

ZigBee Security 基礎知識第一章 ZigBee Security 基礎知識

歡迎轉載,請注明作者:石韌

http://blog.csdn.net/stonerme/article/details/53406530

第一章 ZigBee Security 基礎知識

本文主要闡述ZigBee安全相關的概念,介紹ZigBee安全相關的基礎知識,建議初學者好好了解這一部分的概念。

【正文】

1.1 ZigBee Security 架構

在ZigBee協定棧架構中,安全是一個重要的關注點,ZigBee使用IEEE 802.15.4中基本的安全元素,比如:Advanced Encryption Standard (AES) 加密和Counter with CBC-MAC (CCM) 安全模型。它涉及如下安全:

• 128-bit AES 加密算法

• 美國國家标準與技術研究院認同的安全

• 定義密鑰Key的類型 (Link key, Network key)

• 定義密鑰Key的建立和維護

• 密鑰Key能被硬連結到應用中

• CCM* (Unified/simpler mode of operation)

• Trust Center

• 應用層可以定制安全

在ZigBee協定棧架構中,如下圖所示,安全服務提供者(Security Service Provider)子產品與應用層和網絡層互相作用。即ZigBee在應用層和網絡層實作對消息的安全加密。目前,ZigBee支援一種标準安全(Standard Security),在很早的ZigBee版本中支援限制性安全(Residential Security) 和進階安全(High Security),現在已經被棄用。

• 安全服務提供(Security Service Provider)子產品與應用層和網絡層互相作用。

• ZigBee在網絡層和應用層實作對消息的加密。

• ZigBee目前僅支援一種安全模式:标準安全模式。

ZigBee Security 基礎知識第一章 ZigBee Security 基礎知識

Zigbee協定棧架構

1.2 Network Layer Security

本節描述了網絡層安全(Network Layer Security)包含的相關概念。網絡層安全屬于标準安全,其不依賴于應用層,可以直接運作在ZigBee節點上。所有經ZigBee認證的裝置都必須使用網絡層安全,它提供一種基本的通路控制方法,用來控制節點是否允許其加入到某一特定的ZigBee網絡。與網絡層安全對應的是APS Layer Security(應用層安全)。

1.2.1 Network Key

網絡安全使用Network Key來對消息進行加密和解密。當裝置成功加入ZigBee網絡并被認證之後,該裝置會對Network Key進行備份,并使用這個Network Key對網絡消息進行加密和解密。每一個Network Key對應一個序列碼(Sequence Number)。是以用序列碼來識别某一個特定的Network Key。當Network Key更新時,序列碼會增加1。序列碼的好處是可以讓裝置識别目前的加密消息中使用了哪個Network Key。序列碼的範圍是0-255,當到達255之後,再從0開始計數。

• 所有的ZigBee相關的Key的長度都是128 Bit。

• 所有加入安全網絡中的裝置都擁有一個對Network Key的備份。

1.2.2 Hop by Hop security

ZigBee的網絡安全是基于逐跳(Hop by Hop)原理,每個路由在轉發和處理資料包之前需要認證這個加密資料包是否有效。認證過程是先對安全資料包進行解密,然後驗證資料包的完整性。在發送資料包給下一跳目标之前,路由使用其自己的網絡參數(如源位址和幀數)重新對資料包進行加密。如果沒有這種保護機制,黑客可以relay一個消息到網絡中,并被路由到其他裝置,是以造成網絡資源的消耗。使用逐跳安全使得路由能阻止企圖惡意消耗網絡帶寬的行為。

• 網絡層的逐跳(Hop by Hop)安全對應與APS層的端到端(End-to-End)安全。

1.2.3 Package security

網絡層的安全資料包結構如下:

ZigBee Security 基礎知識第一章 ZigBee Security 基礎知識

1.2.3.1 Auxiliary Header

輔助頭(Auxiliary Header)包含一系列資料,包括Key的類型,序列碼(如果是Network Key的話),發送安全資料包節點的IEEE位址和幀數(Frame Counter)。接收安全資料包節點使用輔助頭的這些資料來進行認證和解密資料包。

1.2.3.2 Authentication and Encryption

ZigBee使用128位的對稱加密密鑰(AES-128)來加密所有在網絡層傳輸的資料。網絡頭和輔助頭是以明文發送,但都經過認證的。而網絡層的負載(Payload)同時被認證和加密。AES-128用來建立一個對整個消息的網絡部分(包括NWK頭、AUX頭和Playload)的Hash運算,并将結果附加到消息的末尾,即Message Integrity Code(MIC,4個位元組)。MIC用于對消息進行認證,以確定其沒有被修改。接收節點在收到該消息後,對消息進行Hash運算得到新的MIC值,并将其與消息末尾的MIC值進行對比,如果相同,則代表消息是一個有效安全資料包,如果不相同,則接收節點會忽略這個消息。

1.2.3.3 The Network Security Frame Counter

Frame Counter(幀數)包含在輔助頭裡面,用來避免Replay Attacks(重播攻擊)。所有的裝置都有自己的發送資料的幀數,并同時維護它們的相鄰裝置(Route)和子裝置的幀數。當裝置發送一個資料包時,發送幀數會增加1。接收裝置接收資料包時,驗證這個資料包的幀數是否在之前接收的資料的資料幀基礎上增加1。如果這個幀數沒有增加1,那麼這個資料包被默默丢棄。如果接收裝置不是最終的目的節點,隻是一個路由裝置,則資料包将被解密并被修改為該路由裝置的幀數,然後重新加密并發送到下一跳。

幀數是一個32 bit的數,在幀數到達最大值(0x80000000)之前,Network Key能被更新。如果本地裝置的幀數大于0x80000000,幀數會被複位到0。

• 重播攻擊(Replay Attacks)又稱重播攻擊、回放攻擊或新鮮性攻擊(Freshness Attacks),是指攻擊者發送一個目的主機已接收過的包,特别是在認證的過程中,用于認證使用者身份所接收的包,來達到欺騙系統的目的,主要用于身份認證過程,破壞認證的安全性。

1.2.3.4 Unencrypted Network Data

所有正常的網絡資料包均需要有網絡安全(Network Key)和有效的幀數(Frame Counter)。 但有一種情況下是例外,當裝置加入網絡的過程中,此時裝置沒有Network Key。 在這種情況下,入網裝置的消息依靠它的父節點來中轉,直到它完全加入到網絡并且已經認證。是以,任何其他的消息,如果在被接收時,沒有網絡層的安全,将被默默丢棄。

1.3 APS Layer Security

本小節描述了ZigBee APS層安全相關内容。

1.3.1 End-to-End Security

APS安全使用端對端的安全,當在網絡中來發送安全的消息,除了源節點和目的節點之外沒有其他節點能解密這個消息。這與網絡層提供的逐跳(Hop by Hop)安全不同。APS安全使用分享的Key,隻有源節點和目的節點知道這個Key,是以提供端對端的安全。

APS安全和網絡安全可以同時對消息進行加密,在這種情況下,先使用APS安全對消息進行加密,然後使用網絡安全進行加密。

APS層的安全資料包結構如下:

ZigBee Security 基礎知識第一章 ZigBee Security 基礎知識

1.3.2 Link Keys

APS安全中使用的Key被稱為Link Key。兩個裝置進行通信時,需要先建立Link Key之後才能發送APS安全資料。ZigBee網絡中共有兩種類型的Link Key:Trust Center Link Key和Application Link Key。

1.3.2.1 Trust Center Link Keys

Trust Center Link Key是一種特殊的Link Key,兩個通信的裝置中有一個裝置是Trust Center。協定棧使用Trust Center Key來發送和接收Trust Center的APS指令消息,應用層也可以使用這個Trust Center Link Key來發送APS加密資料消息。

所有的網絡中的裝置必須有Link Key。在Trust Center Network中,裝置必須有Trust Center Link Key;在Distributed Trust Center Network中被稱為Distributed Trust Center Link Key。

1.3.2.2 Application Link Keys

Application Link Key是網絡中兩個節點之間建立的分享Key,并且這兩個節點都不是Trust Center。它對于應用層消息來講是一種可選的安全機制。當一個裝置和不同的裝置進行通信的時候,該裝置可以擁有不同的Application Link Key。

裝置可以通過兩種方式擷取Application Link Key:

• 裝置預先設定Application Link Key。

• 向Trust Center發送一個申請 Application Link Key的請求,Trust Center同時将Application Link Key發送給它和另一個裝置。

當請求Application Link Key時,裝置向Trust Center發起一個請求,發送過程中使用 Trust Center Link Key進行加密。對這兩個裝置而言,Trust Center扮演第三方角色,Trust Center收到請求之後,同時給發起者和響應者發送Application Link Key,并分别以各自的Trust Center Link Key對該Key進行加密,之後它們之間就能進行安全的通信。請求建立一個Application Link Key的過程如下圖:

ZigBee Security 基礎知識第一章 ZigBee Security 基礎知識

1.3.3 Unencrypted APS Data

APS層的安全是獨立于網絡層的安全,即兩者之間是單獨的,沒有任何聯系。在協定棧中,當一些特定的安全消息(APS commands)發送或來自于Trust Center時需要APS層的安全。APS安全對于應用層來說是可選擇的。應用層的消息在APS層不會自動加密,當接收者發現消息沒有APS加密時,也不會被忽略。當消息沒有APS層加密時,應用可以選擇接受或拒絕該消息。例如:SE 規範中描述ZigBee簇消息必須要有APS層安全。

1.4 Trust Center Network

Trust Center Network即Centralized security network,它是由ZigBee coordinator形成,且其承擔Trust Center的功能.。每個節點加入到這個網絡需要被Trust Center認證之後才能進行其他的網絡相關的操作。一個安全的網絡中,認證是由Trust Center(Trust center)授權。所有的裝置加入網絡時是臨時的,直到聯系上Trust Center,并Trust Center決定是否允許新的裝置加入到網絡中。新裝置的父節點在Trust Center和新加入節點之間,作為中轉的角色。直到新裝置完全加入并且已經被認證,才意味着成功加入到安全的網絡,之後隻有經認證的消息能發送到該裝置。

在一個新裝置加入網絡時,Trust Center完成以下三件事情:

1) 發送目前Network Key的備份, 由新裝置的父節點轉發給該新裝置。

2)當不允許新裝置加入網絡時,發送一個指令給新裝置的父節點,從網絡中移除該新裝置。

3) 忽略父節點的請求。如果父節點在2秒之内沒有接收到Trust Center發來的Network Key,父節點默默地從網絡中移除該裝置。

一旦新裝置擁有了Network Key,則表明它已經完全加入到網絡,是以能跟網絡中的其它裝置進行通信。當要對新裝置進行認證的時候,需要Trust Center進行操作。而兩個正常的裝置之間發送消息是不需要Trust Center參與。

1.5 Distributed Trust Center Networks

Distributed Trust Center Networks 即Distributed security network,其由ZigBee router建立的網絡,是以網絡中沒有Trust Center。每個新裝置加入到網絡時,是由其父節點認證。在這種網絡中,任何路由可以準許和認證想加入網絡的新裝置。這提供一種簡單的入網機制,但以較少的安全網絡的代價。

• 使用Distributed Trust Center network還是Trust Center network在網絡形成時就已經确定,網絡建立之後,無法進行更換。

1.6 ZigBee Key的思維導圖

ZigBee Security 基礎知識第一章 ZigBee Security 基礎知識

歡迎轉載,請注明作者:石韌

http://blog.csdn.net/stonerme/article/details/53406530

繼續閱讀