摘要:在無線傳感器網絡中,信息的傳輸需要保證通信雙方的節點是本次通信的節點,而不是網絡中的其他節點或者一些惡意節點,這就需要對通信雙方的身份進行身份鑒別。提出了一種基于共享密鑰的節點鑒別機制,實現了網內節點間在通信前確認彼此身份的合法性和有效性。分析表明,該方案有效抵御了傳感器網絡中一些常見的安全威脅,例如女巫攻擊等。同時,該方案還具有很強的攻擊容忍性。
關鍵詞:
無線傳感器網絡;共享密鑰;Hash算法;節點鑒別
引言
在無線傳感器網絡中,信息的傳輸都是通過點到點的傳輸,因此要特別保證信息在傳輸過程中的安全性以及私密性,防止惡意節點在信息傳送過程中中途攔截或者冒充網絡中的正常節點,與其他節點進行通信,從而非法獲取網絡中的信息,甚至利用丟棄數據,自私性不轉發等手段破壞節點之間的正常通信。因此,在節點進行數據傳輸之前,有必要做好必要的安全措施。一方面需要對節點之間傳送的數據進行保護,不能以明文形式進行傳輸。當節點之間進行信息傳送時,可以使用全網密鑰對信息進行加密,并且使用共享密鑰實現安全通信。另一方面,需要保證通信雙方的節點是本次通信的節點,而不是網絡中的其他節點或者一些惡意節點,這就需要對通信雙方的身份進行鑒別。
針對傳感器網絡的實際需要以及現有的安全技術,本文提出了一種基于共享密鑰的節點鑒別機制,該方案主要利用網絡中節點之間共享的密鑰,實現了節點之間的身份鑒別。
1、方案設計
假設在傳感器網絡中,節點A需要與節點B進行通信,則節點A與節點B首先要對彼此身份進行鑒別,鑒別過程如下:
(1)首先,節點A向節點B發送鑒別請求消息AuthRequest開始與節點B進行鑒別。鑒別請求消息中還包括節點A產生的一個隨機數RA以及節點A的身份標識符IDA和目的節點的身份標識IDB。
(2)節點B收到節點A的請求后,首先通過IDA查找自己的密鑰列表中是否保存了與節點A對應的對偶密鑰,若不存在,則終止鑒別;若存在,則產生隨機數RB,并利用密鑰列表中與節點A預共享的密鑰SAB,根據IDA,IDB,RA,RB計算:
MACAB=HASH(SAB,IDA‖IDB‖RA‖RB)
其中,IDA和IDB分別是節點A和節點B的身份標識;MACAB為節點A與節點B之間的消息鑒別密鑰。然后,節點B利用MACAB在本地計算消息鑒別碼:
MAC1=HASH(MACAB,RA‖RB)
然后構造消息RA‖RB‖MAC1發送給節點A。
(3)節點A收到節點B的消息后,首先檢查消息中的隨機數RA是否與自己在第(1)步中發送的隨機數RA一致,若不一致,終止鑒別;若一致,節點A計算:
MACAB=HASH(SAB,IDA‖IDB‖RA‖RB)
然后利用MACAB在本地計算消息鑒別碼:
MAC2=HASH(SAB,RA‖RB)
如果MAC2≠MAC1,節點A終止鑒別;如果MAC2=MAC1,則節點A對節點B鑒別成功,并計算MAC3=HASH(MACAB,RB),將RB‖MAC3發送給節點B。
(4)節點B收到節點A的消息后,檢查隨機數RB是否與自己在第(2)步中發送給節點A的隨機數RB一致,若不一致,終止鑒別;若一致,節點B本地計算消息鑒別碼:
MAC4=HASH(MACAB,RB)
如果MAC4≠MAC3,節點B終止鑒別;如果MAC4=MAC3,則節點B對節點A鑒別成功。
然后計算:MAC5=HASH(MACAB,RA),并發送確認消息RA‖MAC5給節點A,用于通知節點A可以進行通信。
(5)節點A收到節點B的確認消息,節點A計算MAC6=HASH(MACAB,RA),如果MAC6≠MAC5,鑒別失敗,終止鑒別;如果MAC6=MAC5,節點A開始與節點B進行會話。
具體鑒別流程如圖1所示。
2、算法分析
2.1安全性分析
從安全性角度,對于本方案,節點在數據傳輸前,首先通過發送自己的身份標識ID給目的節點,而不是直接發送共享密鑰,目的節點通過源節點發送的ID,再從自己的密鑰列表中找到與源節點的共享密鑰,這樣就防止了密鑰在傳輸過程中被攻擊者非法截獲的可能,并且也可以通過源節點發送的ID來判斷是否有其他非法節點冒充;同時目的節點再利用節點之間的共享密鑰經過加密以后生成消息校驗碼,再發送給源節點。源節點接收到消息校驗碼以后,也可以通過共享密鑰生成校驗碼,而對于其他節點來說,由于不知道兩個節點間的共享密鑰,因此不能生成相同的校驗碼,源節點就可以驗證目的節點就是自己所要進行通信的節點;而目的節點也同樣可以通過只有兩個節點才知道的共享密鑰生成的校驗碼對源節點進行認證。通信雙方對彼此的身份進行確認以后,兩個節點就可以放心地進行下一步通信。有效抵御了傳感器網絡中一些常見的安全威脅,例如女巫攻擊等。
同時,方案還具有很強的攻擊容忍性,任何節點被破壞或俘獲以后,都不會影響其他未被俘獲節點的通信安全。
2.2性能分析
從性能角度看,在計算效率方面,方案采用了單向Hash算法,相比于非對稱密碼體制下的節點鑒別和密鑰協商協議,該協議的計算量要小得多。而且每個通信節點zui多只需要進行3次Hash運算,Hash算法也可以根據網絡的實際情況進行選擇;在通信負載方面,一次協議運算只需2條消息交互,相比于其他的節點鑒別機制,該協議的通信負載也比較低;從節點存儲方面,節點需要存儲一張密鑰表和目的節點的ID;在方案的擴展性上,新節點在加入網絡時就會從密鑰池中隨機分配到q個密鑰,新節點只需要與網絡節點建立了共享密鑰,就能實現節點的鑒別。
3、結論
本文設計了一種基于共享密鑰的節點鑒別機制。該方案利用節點之間擁有的共享密鑰和節點ID以及生成的隨機數生成一個MAC值,節點之間通過各自生成一個MAC值與對方生成并發送的MAC值進行比較,相等則表示鑒別成功。該方案在信息交互和計算量方面都表現較優,成功實現了節點在正常通信之前的身份鑒別,為節點之間下一步的安全通信工作提供了保障。