基于傳感器網(wǎng)絡(luò)的xmpp協(xié)議安全接入方法
【專利摘要】本發(fā)明提出一種基于傳感器網(wǎng)絡(luò)的XMPP協(xié)議安全接入方法,適用于無線傳感器網(wǎng)絡(luò)的認(rèn)證機(jī)制—DIGEST-AES安全機(jī)制,包括:初始化階段,XMPP節(jié)點(diǎn)與XMPP服務(wù)器進(jìn)行密鑰協(xié)商,XMPP節(jié)點(diǎn)接入認(rèn)證和授權(quán)服務(wù)。本發(fā)明在保證XMPP原有協(xié)議結(jié)構(gòu)和通信模式的同時(shí),引入低開銷的安全算法,并精簡(jiǎn)了消息交互流程,使得傳感器網(wǎng)絡(luò)XMPP節(jié)點(diǎn)與服務(wù)器之間能夠安全有效的建立XML流,實(shí)現(xiàn)基于XMPP協(xié)議的設(shè)備注冊(cè)、密鑰協(xié)商、授權(quán)和身份驗(yàn)證等安全功能。與傳統(tǒng)XMPP安全機(jī)制相比,該安全機(jī)制的通信開銷大幅降低。
【專利說明】基于傳感器網(wǎng)絡(luò)的XMPP協(xié)議安全接入方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及無線傳感器網(wǎng)絡(luò)領(lǐng)域,特別涉及一種基于XMPP協(xié)議的傳感器網(wǎng)絡(luò)節(jié)點(diǎn)的安全接入方法。
【背景技術(shù)】
[0002]XMPP (Extensible Messaging and Presence Protocol,前稱 Jabber)是一種以XML為基礎(chǔ)的開放式實(shí)時(shí)通信協(xié)定,是經(jīng)由互聯(lián)網(wǎng)工程工作小組(IETF)通過的互聯(lián)網(wǎng)標(biāo)準(zhǔn)。XMPP協(xié)議具有開放性和擴(kuò)展性等特性,使其在無線傳感器網(wǎng)絡(luò)中的應(yīng)用有著更廣泛的前景。
[0003]XMPP協(xié)議采用了開放式的協(xié)議,使得它更有助于無線傳感器網(wǎng)絡(luò)實(shí)現(xiàn)物到物、人到物的標(biāo)準(zhǔn)化的信息傳輸目標(biāo);作為一個(gè)應(yīng)用層協(xié)議,XMPP協(xié)議的使用,還能滿足無線傳感器網(wǎng)絡(luò)應(yīng)用多樣化的需求,同時(shí)也更利于服務(wù)的擴(kuò)展;此外,XMPP采用統(tǒng)一的可擴(kuò)展標(biāo)記語言(XML)和分布式的網(wǎng)絡(luò)構(gòu)架,能夠解決無線傳感器網(wǎng)絡(luò)中各類不同應(yīng)用數(shù)據(jù)交互時(shí)格式不統(tǒng)一的問題,實(shí)現(xiàn)異構(gòu)無線傳感網(wǎng)的互操作。
[0004]傳統(tǒng)的XMPP協(xié)議安全機(jī)制中,XMPP節(jié)點(diǎn)試圖登陸網(wǎng)絡(luò)時(shí),首先需與服務(wù)器建立TCP鏈接,在建立鏈接后,使用傳輸層安全協(xié)議TLS握手機(jī)制用于實(shí)現(xiàn)傳輸層的認(rèn)證,密鑰協(xié)商和可靠協(xié)商,并使用協(xié)商的密鑰對(duì)傳輸層進(jìn)行安全保護(hù)。同時(shí)XMPP協(xié)議定義了應(yīng)用層認(rèn)證機(jī)制一SASL握手機(jī)制,使服務(wù)器能夠?qū)?jié)點(diǎn)進(jìn)行身份認(rèn)證。其中TLS作為一個(gè)可選機(jī)制,服務(wù)器需先對(duì)節(jié)點(diǎn)身份進(jìn)行認(rèn)證,采用的認(rèn)證機(jī)制基于X.509證書,服務(wù)器需要向節(jié)點(diǎn)出示公鑰證書。同時(shí)密鑰協(xié)商的方式大致分為兩種:RSA公鑰加密方法和Diffie-Hellman密鑰協(xié)商方式,由于無線傳感器節(jié)點(diǎn)能量和存儲(chǔ)空間限制,RSA、ECC等加密算法很難在節(jié)點(diǎn)中實(shí)現(xiàn),TLS的使用受限,SASL握手機(jī)制中所使用的認(rèn)證方法,如PLAIN(RFC4616)、EXTERNAL(RFC2222)的安全性也無法得到保證。此外,TLS握手機(jī)制需要多達(dá)十幾次的消息交互,再加上SASL機(jī)制的,通信開銷太大,適用于能量受限的無線傳感器網(wǎng)絡(luò)。
【發(fā)明內(nèi)容】
[0005]本發(fā)明提出了一種基于無線傳感器網(wǎng)絡(luò)的XMPP協(xié)議安全機(jī)制,即DIGEST-AES安全機(jī)制。
[0006]本發(fā)明是在傳統(tǒng)的XMPP安全框架下實(shí)現(xiàn):節(jié)點(diǎn)初始化,密鑰協(xié)商,節(jié)點(diǎn)登陸和節(jié)點(diǎn)授權(quán)四個(gè)安全功能,如圖1所示,用以保證XMPP節(jié)點(diǎn)的安全登陸和數(shù)據(jù)交互,其具體安全功能如下:
[0007](I)節(jié)點(diǎn)初始化:XMPP節(jié)點(diǎn)向XMPP服務(wù)器提交注冊(cè)信息,XMPP服務(wù)器接收并存儲(chǔ)節(jié)點(diǎn)的相關(guān)信息,該信息可用于協(xié)助完成XMPP服務(wù)器與XMPP節(jié)點(diǎn)的密鑰協(xié)商和身份認(rèn)證。
[0008](2)密鑰協(xié)商:該部分是安全鏈路建立的基礎(chǔ),在發(fā)起會(huì)話之前,通過交互密鑰信息并結(jié)合XMPP節(jié)點(diǎn)的注冊(cè)信息,進(jìn)行密鑰協(xié)商,建立主密鑰,然后利用主密鑰派生出各類會(huì)話密鑰用于保護(hù)鏈路安全。該安全功能是實(shí)現(xiàn)信息保密性與完整性的安全需求的基礎(chǔ),并且對(duì)TLS協(xié)議進(jìn)行了改進(jìn),替換掉了原有TLS協(xié)議中通過交互證書并使用Diffie-Heliman的高開銷的密鑰協(xié)商方法,密鑰協(xié)商效率和能耗開銷得到明顯優(yōu)化。該部分為可選安全功能,在密鑰協(xié)商完成過后,所有的通信數(shù)據(jù)都必須在TCP層使用相應(yīng)的安全密鑰加密。
[0009](3)節(jié)點(diǎn)身份認(rèn)證:通過XMPP服務(wù)器對(duì)XMPP節(jié)點(diǎn)的身份認(rèn)證,保證只有已注冊(cè)的合法節(jié)點(diǎn)才能介入網(wǎng)絡(luò),并為其分發(fā)有效的網(wǎng)絡(luò)資源與安全資源。該方案是保障網(wǎng)絡(luò)安全的基礎(chǔ)。該部分在XMPP協(xié)議的框架下,對(duì)原有的SASL協(xié)議進(jìn)行了改進(jìn),使得XMPP服務(wù)器能夠有效驗(yàn)證用戶身份的同時(shí)認(rèn)證效率和能耗開銷明顯優(yōu)化,更適用于傳感網(wǎng)。
[0010](4)授權(quán):當(dāng)一個(gè)XMPP節(jié)點(diǎn)需要替代其他節(jié)點(diǎn)完成操作時(shí),可通過使用授權(quán)標(biāo)識(shí)符執(zhí)行授權(quán)操作,例如當(dāng)溫度采集節(jié)點(diǎn)A失效時(shí),A附近的節(jié)點(diǎn)B可代替A完成數(shù)據(jù)采集工作。授權(quán)功能為可選功能,且與身份認(rèn)證同步完成,當(dāng)不需要使用授權(quán)時(shí),授權(quán)標(biāo)識(shí)符為缺省。
[0011]鑒于傳統(tǒng)XMPP安全機(jī)制在無線傳感器網(wǎng)絡(luò)中應(yīng)用時(shí)算法的限制以及消息交互次數(shù)過多等問題,本發(fā)明提出的DIGEST-AES安全機(jī)制,在保證XMPP原有協(xié)議框架和通信模式的同時(shí),引入以AES算法為基礎(chǔ)的低開銷安全算法,同時(shí)在保證基本安全功能和安全強(qiáng)度的基礎(chǔ)上,精簡(jiǎn)XMPP節(jié)點(diǎn)與服務(wù)器的消息交互過程,使得傳感器網(wǎng)絡(luò)XMPP節(jié)點(diǎn)與XMPP服務(wù)器之間能夠安全有效的建立XML流,實(shí)現(xiàn)XMPP節(jié)點(diǎn)初始化、節(jié)點(diǎn)與服務(wù)器的密鑰協(xié)商、XMPP節(jié)點(diǎn)入網(wǎng)認(rèn)證和節(jié)點(diǎn)授權(quán)等安全功能。
[0012]本發(fā)明提出的基于無線傳感器網(wǎng)絡(luò)的XMPP安全接入方法包括以下步驟:
[0013]步驟1:XMP傳感網(wǎng)節(jié)點(diǎn)初始化,即帶內(nèi)注冊(cè):節(jié)點(diǎn)使用帶內(nèi)注冊(cè)的方式實(shí)現(xiàn)XMPP節(jié)點(diǎn)初始化,注冊(cè)時(shí)提交的信息為節(jié)點(diǎn)純JID、提交的psaaword、節(jié)點(diǎn)的標(biāo)識(shí)符email ;
[0014]步驟2:使用AES-DIGEST算法,XMPP傳感網(wǎng)節(jié)點(diǎn)與XMPP服務(wù)器進(jìn)行密鑰協(xié)商,密鑰協(xié)商算法使用帶密鑰的哈希算法HMAC_MM0()生成共享主密鑰:
[0015]premaster secret = HMAC_MM0password [Nounceserver | | Nouncenode | | EUIserver | | EUInode]
[0016];
[0017]步驟3:XMPP服務(wù)器對(duì)XMPP節(jié)點(diǎn)進(jìn)行身份認(rèn)證:身份認(rèn)證使用帶密鑰的哈希算法HAMC_MM0(),輸入服務(wù)器生成Nounce以及節(jié)點(diǎn)的ΕΠ地址,生成認(rèn)證碼:
[0018]MAC = HMAC_MM0password [EUInode Snounce];
[0019]步驟4:使用以AES算法為基礎(chǔ)的地開銷通信協(xié)議,XMPP節(jié)點(diǎn)執(zhí)行授權(quán)操作:節(jié)點(diǎn)授權(quán)采用授權(quán)表的方式,服務(wù)器通過身份認(rèn)證,通過授權(quán)表比對(duì)授權(quán)實(shí)體,完成節(jié)點(diǎn)的授權(quán)操作。
[0020]具體地,各步驟的過程如下:
[0021]1.初始化過程如下:
[0022]XMPP節(jié)點(diǎn)向服務(wù)器發(fā)送注冊(cè)請(qǐng)求,為了確定服務(wù)器需要的注冊(cè)字段,XMPP節(jié)點(diǎn)需要首先發(fā)送一個(gè)iq消息進(jìn)行詢問。
[0023]XMPP服務(wù)器返回節(jié)點(diǎn)注冊(cè)需要提交的字段,包括節(jié)點(diǎn)需提交的用戶名,密碼信息和用戶信息標(biāo)識(shí)(如電子郵箱地址)。
[0024]XMPP節(jié)點(diǎn)向服務(wù)器發(fā)送注冊(cè)字段對(duì)應(yīng)的值,XMPP節(jié)點(diǎn)輸入相關(guān)信息后,確認(rèn)發(fā)送給服務(wù)器。
[0025]XMPP服務(wù)器接收到提交的注冊(cè)信息后,判斷所提交的注冊(cè)信息是否完整或服務(wù)器中已有,如果都不符合,則服務(wù)器返回注冊(cè)成功消息,并將用戶信息標(biāo)識(shí)作為節(jié)點(diǎn)的純JID ;否則,返回注冊(cè)失敗響應(yīng),并注明失敗原因。
[0026]2.密鑰協(xié)商方法如下:
[0027]當(dāng)XMPP節(jié)點(diǎn)登陸時(shí),將不再使用傳輸層安全協(xié)議TLS握手機(jī)制,而是在建立TCP鏈接后,初始化個(gè)流,直接在SASL的框架內(nèi)實(shí)現(xiàn)S鑰協(xié)商的功能,并在協(xié)商完成以后,使用協(xié)商的密鑰在應(yīng)用層對(duì)實(shí)體間發(fā)送的XML流進(jìn)行加密和完整性校驗(yàn)。在XMPP節(jié)點(diǎn)與服務(wù)器完成密鑰協(xié)商以后,服務(wù)器對(duì)節(jié)點(diǎn)進(jìn)入身份認(rèn)證。
[0028]XMPP節(jié)點(diǎn)向服務(wù)器發(fā)送一個(gè)初始化流,用以打開一個(gè)XML流。XMPP服務(wù)器回復(fù)一個(gè)流標(biāo)簽作為應(yīng)答,其中包含一個(gè)用于無線傳感器網(wǎng)絡(luò)的DIGEST-AES安全機(jī)制。XMPP節(jié)點(diǎn)選擇DIGEST-AES安全機(jī)制。
[0029]XMPP服務(wù)器向XMPP節(jié)點(diǎn)發(fā)送經(jīng)password加密的密鑰交換信息,加密算法的輸入包括服務(wù)器的純JID,服務(wù)器的ΕΠ地址和服務(wù)器生成的隨機(jī)數(shù)Nounce,其中,password為初始化過程中節(jié)點(diǎn)提交的密鑰,密鑰協(xié)商消息采用常見的[BASE64]編碼。
[0030]XMPP服務(wù)器向XMPP節(jié)點(diǎn)發(fā)送一個(gè)Severjfellc^done空消息,表示密鑰交換信息已經(jīng)發(fā)送完畢。
[0031]XMPP節(jié)點(diǎn)向XMPP服務(wù)器發(fā)送經(jīng)password加密的密鑰交換消息,包括節(jié)點(diǎn)的純JID,64位ΕΠ地址以及節(jié)點(diǎn)生成的隨機(jī)Nounce,為未與資源綁定的XMPP設(shè)備的地址通常稱為純JID,密鑰協(xié)商消息采用常見的[BASE64]編碼。
[0032]XMPP節(jié)點(diǎn)得到服務(wù)器的密鑰消息后進(jìn)行解密,并使用帶密鑰的哈希算法HMAC_ΜΜ0 (),計(jì)算得到共享主密鑰,輸入為服務(wù)器和節(jié)點(diǎn)分別生成的隨機(jī)數(shù),服務(wù)器和節(jié)點(diǎn)的64位EUI地址,生成密鑰為注冊(cè)時(shí)節(jié)點(diǎn)提交的password,并使用premaster加密自己的純JID發(fā)送至服務(wù)器。
[0033]XMPP服務(wù)器使用同樣的方法計(jì)算得到premaster secret,并使用premastersecret加密自己的純JID發(fā)送至XMPP節(jié)點(diǎn)。
[0034]節(jié)點(diǎn)各自使用premaster解密收到的消息,如果解密后的消息與實(shí)體的純JID對(duì)應(yīng),則密鑰協(xié)商成功,并且對(duì)此后應(yīng)用層的流都使用密鑰進(jìn)行加密,否則密鑰協(xié)商失敗。
[0035]3.身份認(rèn)證方法如下:
[0036]在XMPP節(jié)點(diǎn)與XMPP服務(wù)器完成密鑰協(xié)商以后,服務(wù)器對(duì)節(jié)點(diǎn)進(jìn)入身份認(rèn)證。
[0037]XMPP服務(wù)器發(fā)送一個(gè)[BASE64]編碼的挑戰(zhàn)給XMPP節(jié)點(diǎn),chal 1 enge包括域realm,服務(wù)器新生產(chǎn)的隨機(jī)數(shù)snounce, XML流所采用的編碼方式charset以及認(rèn)證算法algorithm。
[0038]XMPP節(jié)點(diǎn)在接收到挑戰(zhàn)后,使用在注冊(cè)過程中提交的password對(duì)挑戰(zhàn)中的nounce、節(jié)點(diǎn)的ΕΠ地址通過HMAC_MM0算法進(jìn)行處理得到MAC,并將構(gòu)造認(rèn)證消息,消息包含用戶名username,域realm,生產(chǎn)的MAC,采用的編碼方式和認(rèn)證算法,將認(rèn)證消息進(jìn)行[BASE64]編碼發(fā)送到服務(wù)器。
[0039]XMPP服務(wù)器接收到認(rèn)證消息后,采用同樣的算法對(duì)消息進(jìn)行認(rèn)證,如果認(rèn)證通過,則回復(fù)消息;否則,回復(fù)入網(wǎng)失敗的響應(yīng)。
[0040]4.授權(quán)服務(wù)方法如下:
[0041]當(dāng)一個(gè)XMPP節(jié)點(diǎn)需要代替另一個(gè)節(jié)點(diǎn)執(zhí)行操作時(shí),該節(jié)點(diǎn)需要在回復(fù)的認(rèn)證消息中加入所授權(quán)節(jié)點(diǎn)的純JID,服務(wù)器在完成對(duì)節(jié)點(diǎn)身份的任何以后將與服務(wù)器中的授權(quán)表進(jìn)行比對(duì),確定該節(jié)點(diǎn)是否允許授權(quán)操作。
[0042]注冊(cè)與密鑰協(xié)商機(jī)制同樣采用與未進(jìn)行授權(quán)服務(wù)的步驟,當(dāng)節(jié)點(diǎn)需要進(jìn)行授權(quán)操作時(shí),授權(quán)操作主體將在構(gòu)造的認(rèn)證報(bào)文中加入被授權(quán)節(jié)點(diǎn)的純JID。
[0043]XMPP節(jié)點(diǎn)在接收到挑戰(zhàn)后,使用在注冊(cè)過程中提交的password對(duì)挑戰(zhàn)中的nounce、節(jié)點(diǎn)的ΕΠ地址通過HMAC_MM0算法,對(duì)節(jié)點(diǎn)的64位ΕΠ地址和服務(wù)器生成的隨機(jī)數(shù)Snounce進(jìn)行處理,得到MAC,并將構(gòu)造認(rèn)證消息,認(rèn)證消息由被授權(quán)節(jié)點(diǎn)純JID,授權(quán)主體的username,域realm,生成的MAC,編碼方式charset以及認(rèn)證算法algoruthm,再將認(rèn)證消息進(jìn)行[BASE64]編碼發(fā)送到服務(wù)器。
[0044]XMPP服務(wù)器接收到認(rèn)證消息后,采用同樣的算法進(jìn)行認(rèn)證,如果認(rèn)證通過,則在授權(quán)表中查找authzid是否允許該節(jié)點(diǎn)對(duì)被授權(quán)節(jié)點(diǎn)進(jìn)行授權(quán),如果允許則返回認(rèn)證和授權(quán)成功的結(jié)果;否則,返回失敗的結(jié)果。
[0045]與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果在于:
[0046]密鑰協(xié)商:該部分是SASL握手機(jī)制框架下,通過密鑰協(xié)商,建立有效的會(huì)話密鑰用于保護(hù)鏈路安全,是實(shí)現(xiàn)信息保密性與完整性的安全需求的基礎(chǔ),相比傳統(tǒng)XMPP協(xié)議中采用TLS握手機(jī)制,本發(fā)明所提出的密鑰協(xié)商機(jī)制在SASL機(jī)制框架下,采用的較少的信息交互次數(shù)完成密鑰協(xié)商,同時(shí)采用帶密鑰的單向哈希算法作為協(xié)商算法,相比原有TLS協(xié)議中通過交互證書并使用Diffie-Hellman的高開銷的密鑰協(xié)商方法,本發(fā)明在節(jié)點(diǎn)開銷上顯著降低。
[0047]接入認(rèn)證:通過XMPP服務(wù)器對(duì)XMPP節(jié)點(diǎn)的身份認(rèn)證,保證合法節(jié)點(diǎn)才能介入網(wǎng)絡(luò),并為其分發(fā)有效的網(wǎng)絡(luò)資源與安全資源。該部分在XMPP協(xié)議的框架下,對(duì)原有的SASL協(xié)議進(jìn)行了改進(jìn),相比原有的SASL常用的DIGEST-MD5和CRAM-MD5認(rèn)證機(jī)制,節(jié)點(diǎn)認(rèn)證的計(jì)算開銷有所降低,同時(shí)在強(qiáng)制執(zhí)行密鑰協(xié)商機(jī)制后,認(rèn)證過程中認(rèn)證消息的完整性和保密性都能夠得到保障,相比原有的認(rèn)證機(jī)制,安全性更高。
[0048]授權(quán)方案:該部分針對(duì)XMPP中定義的純JID地址設(shè)計(jì),使得XMPP服務(wù)器能夠有效驗(yàn)證用戶身份,能夠有效替代XMPP中的SASL協(xié)議。
[0049]綜上所述,本發(fā)明所提出的DIGEST-AES安全機(jī)制能夠滿足傳感器絡(luò)基礎(chǔ)安全需求以及XMPP協(xié)議通信的安全需求,由于上述方案均使用AES加密算法為基礎(chǔ)的低開銷安全算法,能夠有效降低XMPP節(jié)點(diǎn)的開銷,適用于無線傳感器網(wǎng)絡(luò)環(huán)境。
【專利附圖】
【附圖說明】
[0050]為了使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對(duì)本發(fā)明作進(jìn)一步的詳細(xì)描述,其中:
[0051]圖1是本發(fā)明技術(shù)方案整體實(shí)施示意圖;
[0052]圖2是本發(fā)明初始化實(shí)施示意圖;
[0053]圖3是本發(fā)明密鑰協(xié)商過程示意圖;
[0054]圖4是本發(fā)明身份認(rèn)證過程示意圖。
【具體實(shí)施方式】
[0055]以下將結(jié)合附圖,對(duì)本發(fā)明的優(yōu)選實(shí)施例進(jìn)行詳細(xì)的描述;應(yīng)當(dāng)理解,本實(shí)施例的各種數(shù)據(jù)和方法,優(yōu)選實(shí)施例僅是作為說明本發(fā)明的實(shí)施方法的一個(gè)特例,而不是為了限制本發(fā)明的保護(hù)范圍。
[0056]圖1為本發(fā)明實(shí)施例提供的工作控制過程示意圖,如圖所示:本發(fā)明提供的一種適用于傳感器網(wǎng)絡(luò)的XMPP安全機(jī)制一DIGEST-AES安全機(jī)制,包括:初始化階段,XMPP節(jié)點(diǎn)與XMPP服務(wù)器進(jìn)行密鑰協(xié)商,XMPP節(jié)點(diǎn)接入認(rèn)證和授權(quán)服務(wù)。首先,在初始化階段,XMPP節(jié)點(diǎn)向服務(wù)器進(jìn)行注冊(cè),提交注冊(cè)信息;當(dāng)節(jié)點(diǎn)需要接入網(wǎng)絡(luò)時(shí),XMPP節(jié)點(diǎn)與服務(wù)器進(jìn)行建立SASL握手機(jī)制,在SASL的框架內(nèi),節(jié)點(diǎn)選擇DIGEST-AES安全機(jī)制:節(jié)點(diǎn)與服務(wù)器交換密鑰信息用于協(xié)商密鑰,協(xié)商的密鑰用于保護(hù)XML節(jié),實(shí)現(xiàn)加密和完整性校驗(yàn)功能,然后,XMPP服務(wù)器對(duì)XMPP節(jié)點(diǎn)身份進(jìn)行驗(yàn)證,保證只有合法身份的用戶才能建立會(huì)話,同時(shí)本發(fā)明還支持節(jié)點(diǎn)授權(quán)功能,使得XMPP節(jié)點(diǎn)在特定條件下能夠代替其他節(jié)點(diǎn)完成操作。
[0057]1.初始化階段
[0058]在XMPP節(jié)點(diǎn)試圖加入網(wǎng)絡(luò)時(shí),首先需要進(jìn)行初始化,節(jié)點(diǎn)需向服務(wù)器提交注冊(cè)信息,注冊(cè)流程如圖1所示,有該部分為基于XMPP協(xié)議,所以使用XML語言,消息發(fā)送的具體步驟如下:
[0059]步驟1-1:XMPP節(jié)點(diǎn)向服務(wù)器發(fā)送注冊(cè)請(qǐng)求,為了確定服務(wù)器多需要的注冊(cè)字段,XMPP節(jié)點(diǎn)需要首先發(fā)送一個(gè)iq詢問消息。
[0060]步驟1-2:XMPP服務(wù)器返回節(jié)點(diǎn)注冊(cè)需要提交的字段,包括username password | email,其中username為節(jié)點(diǎn)的用戶名,password為節(jié)點(diǎn)的密鑰,email為節(jié)點(diǎn)的標(biāo)識(shí)符。
[0061]步驟1-3:XMPP節(jié)點(diǎn)向服務(wù)器發(fā)送注冊(cè)字段對(duì)應(yīng)的值,XMPP節(jié)點(diǎn)輸入相關(guān)信息后,提交給服務(wù)器。
[0062]步驟1-4:XMPP服務(wù)器接收到提交的注冊(cè)信息后,判斷所提交的注冊(cè)信息是否完整或服務(wù)器中已有,如果都不符合,則服務(wù)器返回注冊(cè)成功消息,并將email作為節(jié)點(diǎn)的純JID,純JID,為未與資源綁定的XMPP設(shè)備的地址通常稱為純JID ;否則,返回注冊(cè)失敗響應(yīng),并注明失敗原因。
[0063]當(dāng)XMPP節(jié)點(diǎn)登陸時(shí),初始化一個(gè)流,直接在SASL的框架內(nèi)實(shí)現(xiàn)密鑰協(xié)商的功能,并在協(xié)商完成以后,使用協(xié)商的密鑰在應(yīng)用層對(duì)實(shí)體間發(fā)送的XML流進(jìn)行加密和完整性校驗(yàn)。在XMPP節(jié)點(diǎn)與服務(wù)器完成密鑰協(xié)商以后,節(jié)點(diǎn)請(qǐng)求服務(wù)器對(duì)節(jié)點(diǎn)進(jìn)入身份認(rèn)證。
[0064]XMPP節(jié)點(diǎn)向服務(wù)器發(fā)送一個(gè)初始化流,用以打開一個(gè)XML流;XMPP服務(wù)器回復(fù)一個(gè)流標(biāo)簽作為應(yīng)答,其中包含一個(gè)用于無線傳感器網(wǎng)絡(luò)的DIGEST-AES安全機(jī)制;XMPP節(jié)點(diǎn)選擇DIGEST-AES安全機(jī)制。
[0065]2.密鑰協(xié)商包括以下步驟:
[0066]步驟2-1:XMPP服務(wù)器向XMPP節(jié)點(diǎn)發(fā)送經(jīng)password加密的密鑰協(xié)商信息,EpasswOTd[JIDserver EUIserver | NounceserveJ ,密鑰協(xié)商消息采用常見的[BASE64]編碼,其中 password為節(jié)點(diǎn)注冊(cè)時(shí)提交的密鑰,JIDserver為服務(wù)器的純JID,EUIserver為服務(wù)器的ΕΠ地址,NounCeSOTVOT為服務(wù)器生成的隨機(jī)數(shù),| |為連接符,E口為AES加密算法。
[0067]步驟2-2:XMPP服務(wù)器向XMPP節(jié)點(diǎn)發(fā)送一個(gè)Sever_Hello_done空消息,表示密鑰交換信息已經(jīng)發(fā)送完畢。
[0068]步驟2-3 =XMPP節(jié)點(diǎn)向XMPP服務(wù)器發(fā)送經(jīng)password加密的密鑰協(xié)商消息,Epassword[JIDnode EUInode |N0unCeMde],密鑰協(xié)商消息采用常見的[BASE64]編碼,其中JIDntjde為節(jié)點(diǎn)的純JID,EUInode為節(jié)點(diǎn)的ΕΠ地址,Nouncenode為節(jié)點(diǎn)生成的隨機(jī)數(shù)。
[0069]步驟2-4 =XMPP節(jié)點(diǎn)得到服務(wù)器的密鑰消息后進(jìn)行解密,并計(jì)算得到共享主密鑰
[0070]premaster secret = HMAC_MM0password [Nounceserver | | Nouncenode | | EUIserver | | EUInodJ,密鑰協(xié)商消息采用常見的[BASE64]編碼,其中HMAC_MM0是密鑰相關(guān)的單向哈希算法,Nounceserver和N0UnCen()de分別為服務(wù)器和節(jié)點(diǎn)通過交換密鑰協(xié)商信息后得到的對(duì)方的隨機(jī)數(shù),并使用premaster master加密自己的純JID發(fā)送至服務(wù)器。
[0071]步驟2-5:XMPP服務(wù)器使用同樣的方法計(jì)算得到premaster secret,并使用premaster secret加密自己的純JID發(fā)送至XMPP節(jié)點(diǎn)。
[0072]步驟2-6:節(jié)點(diǎn)各自使用premaster解密收到的消息,如果解密后的消息與實(shí)體的純JID對(duì)應(yīng),則密鑰協(xié)商成功,并且對(duì)此后應(yīng)用層的流都使用密鑰進(jìn)行加密,否則密鑰協(xié)商失敗。
[0073]3.身份認(rèn)證包括以下步驟:
[0074]步驟3-1:XMPP服務(wù)器發(fā)送一個(gè)[BASE64]編碼的挑戰(zhàn)給XMPP節(jié)點(diǎn),challenge..=[realm Snounce charset | algorithm],其中 realm 為域,Snounce 為服務(wù)器新生成的隨機(jī)數(shù),charset為XML流所采用的編碼方式,algorithm為身份認(rèn)證所采用的認(rèn)證算法。
[0075]步驟3-2:XMPP節(jié)點(diǎn)在接收到挑戰(zhàn)后,提取挑戰(zhàn)中的消息,使用在注冊(cè)過程中提交的password對(duì)挑戰(zhàn)中的Snounce、節(jié)點(diǎn)的EUI地址通過HMAC_MM0算法進(jìn)行處理,得到認(rèn)證材料 MAC, MAC = HMAC_MM0password[EUInode | Snounce],然后節(jié)點(diǎn)構(gòu)造認(rèn)證消息 username | reaim I I MAC I charset | algoruthm,將認(rèn)證消息進(jìn)行[BASE64]編碼發(fā)送到服務(wù)器。
[0076]步驟3-3 =XMPP服務(wù)器接收到認(rèn)證消息后,采用同樣的算法對(duì)進(jìn)行認(rèn)證,如果認(rèn)證通過,則回復(fù)消息;否則,回復(fù)入網(wǎng)失敗的響應(yīng)。
[0077]4.授權(quán)服務(wù)包括以下步驟:
[0078]當(dāng)一個(gè)XMPP節(jié)點(diǎn)需要代替另一個(gè)節(jié)點(diǎn)執(zhí)行操作時(shí),該節(jié)點(diǎn)需要在回復(fù)的認(rèn)證消息中加入所授權(quán)節(jié)點(diǎn)的純JID,服務(wù)器在完成對(duì)節(jié)點(diǎn)身份的任何以后將與服務(wù)器中的授權(quán)表進(jìn)行比對(duì),確定該節(jié)點(diǎn)是否允許授權(quán)操作。
[0079]步驟4-1?4-3與步驟3-1?3-3相同
[0080]步驟4-4:XMPP節(jié)點(diǎn)在接收到挑戰(zhàn)后,使用在注冊(cè)過程中提交的password對(duì)挑戰(zhàn)中的nounce、節(jié)點(diǎn)的EUI地址通過歷(:_麗0算法進(jìn)行處理,得到認(rèn)證材料嫩(:,嫩0 = HMAC_MMOpassword[EUInode I I Snounce],然后節(jié)點(diǎn)構(gòu)造認(rèn)證消息 authzid I username realm MAC charset I algoruthm,其中authzid為被授權(quán)實(shí)體,將認(rèn)證消息進(jìn)行[BASE64]編碼發(fā)送到服務(wù)器。
[0081]XMPP服務(wù)器接收到認(rèn)證消息后,采用同樣的算法對(duì)進(jìn)行認(rèn)證,如果認(rèn)證通過,則在授權(quán)表中查找authzid是否允許該節(jié)點(diǎn)進(jìn)行授權(quán),如果允許則返回認(rèn)證和授權(quán)成功的結(jié)果;否則,返回失敗的結(jié)果。
[0082]本發(fā)明在保證XMPP原有協(xié)議結(jié)構(gòu)和通信模式的同時(shí),引入低開銷的安全算法,并精簡(jiǎn)了消息交互流程,使得傳感器網(wǎng)絡(luò)XMPP節(jié)點(diǎn)與服務(wù)器之間能夠安全有效的建立XML流,實(shí)現(xiàn)基于XMPP協(xié)議的設(shè)備注冊(cè)、密鑰協(xié)商、授權(quán)和身份驗(yàn)證等安全功能。與傳統(tǒng)XMPP安全機(jī)制相比,該安全機(jī)制的通信開銷大幅降低。
【權(quán)利要求】
1.一種基于傳感器網(wǎng)絡(luò)的XI??協(xié)議安全接入方法,其特征在于包括以下步驟: 步驟1 41?傳感網(wǎng)節(jié)點(diǎn)初始化,即帶內(nèi)注冊(cè):節(jié)點(diǎn)使用帶內(nèi)注冊(cè)的方式實(shí)現(xiàn)XI??節(jié)點(diǎn)初始化,注冊(cè)時(shí)提交的信息為節(jié)點(diǎn)純了10、提交的節(jié)點(diǎn)的標(biāo)識(shí)符61112111 ; 步驟2:使用仙3-01(^31算法,XI??傳感網(wǎng)節(jié)點(diǎn)與XI??服務(wù)器進(jìn)行密鑰協(xié)商,密鑰協(xié)商算法使用帶密鑰的哈希算法服生成共享主密鑰:
¢11-6111881:61- 8601~61:=歷賄^ [吣皿。^啦啦 | | 吣皿。6加」| £111 啦啦 | | £111-」; 步驟3 4腿平服務(wù)器對(duì)X腿平節(jié)點(diǎn)進(jìn)行身份認(rèn)證:身份認(rèn)證使用帶密鑰的哈希算法撤1(^110 0,輸入服務(wù)器生成如皿06以及節(jié)點(diǎn)的2瓜地址,生成認(rèn)證碼: 歡0 =剛1 18110111106]; 步驟4:使用以仙3算法為基礎(chǔ)的低開銷通信協(xié)議,XI??節(jié)點(diǎn)執(zhí)行授權(quán)操作:節(jié)點(diǎn)授權(quán)采用授權(quán)表的方式,服務(wù)器通過身份認(rèn)證,通過授權(quán)表比對(duì)授權(quán)實(shí)體,完成節(jié)點(diǎn)的授權(quán)操作。
2.根據(jù)權(quán)利要求1所述的基于傳感器網(wǎng)絡(luò)的XI??協(xié)議安全接入方法,其特征在于:所述步驟1包括: 步驟1-1,XI??節(jié)點(diǎn)向服務(wù)器發(fā)送注冊(cè)請(qǐng)求; 步驟1-2,XI??服務(wù)器返回節(jié)點(diǎn)注冊(cè)需要提交的字段,包括節(jié)點(diǎn)需提交的用戶名,、密碼信息和用戶信息標(biāo)識(shí); 步驟1-3,XI??節(jié)點(diǎn)向服務(wù)器發(fā)送注冊(cè)字段對(duì)應(yīng)的值,XI??節(jié)點(diǎn)輸入相關(guān)信息后,確認(rèn)發(fā)送給服務(wù)器,; 步驟1-4,XI??服務(wù)器接收到提交的注冊(cè)信息后,判斷所提交的注冊(cè)信息是否完整或服務(wù)器中已有,如果都不符合,則服務(wù)器返回注冊(cè)成功消息,并將用戶信息標(biāo)識(shí)作為節(jié)點(diǎn)的純了 10 ;否則,返回注冊(cè)失敗響應(yīng),并注明失敗原因。
3.根據(jù)權(quán)利要求1所述的基于傳感器網(wǎng)絡(luò)的XI??協(xié)議安全接入方法,其特征在于:所述步驟2包括: 當(dāng)XI??節(jié)點(diǎn)登陸時(shí),將不再使用傳輸層安全協(xié)議113握手機(jī)制,而是在建立扣?鏈接后,初始化一個(gè)流,直接在3八31的框架內(nèi)實(shí)現(xiàn)密鑰協(xié)商的功能,并在協(xié)商完成以后,使用協(xié)商的密鑰在應(yīng)用層對(duì)實(shí)體間發(fā)送的XII流進(jìn)行加密和完整性校驗(yàn)。在XI??節(jié)點(diǎn)與服務(wù)器完成密鑰協(xié)商以后,服務(wù)器對(duì)節(jié)點(diǎn)進(jìn)入身份認(rèn)證。 步驟2-1,XI??節(jié)點(diǎn)向服務(wù)器發(fā)送一個(gè)初始化流,用以打開一個(gè)XII流,XI??服務(wù)器回復(fù)一個(gè)流標(biāo)簽作為應(yīng)答,其中包含一個(gè)用于無線傳感器網(wǎng)絡(luò)的八£3安全機(jī)制,XI??節(jié)點(diǎn)選擇01(^31'-八£3安全機(jī)制; 步驟2-, 2,XI??服務(wù)器向X即?節(jié)點(diǎn)發(fā)送經(jīng)1^88*01x1加密的密鑰交換信息,加密算法的輸入包括服務(wù)器的純了 10、服務(wù)器的2瓜地址和服務(wù)器生成的隨機(jī)數(shù)如皿⑶,其中,即8洲為初始化過程中節(jié)點(diǎn)提交的密鑰,密鑰協(xié)商消息采用常見的[8…£64]編碼; 步驟2-3,XI??服務(wù)器向XI??節(jié)點(diǎn)發(fā)送一個(gè)1(^(10116空消息,表示密鑰交換信息已經(jīng)發(fā)送完畢; 步驟2-4,X即?節(jié)點(diǎn)向X即?服務(wù)器發(fā)送經(jīng)加密的密鑰交換消息,包括節(jié)點(diǎn)的純了10,64位2口1地址以及節(jié)點(diǎn)生成的隨機(jī)價(jià))111106,為未與資源綁定的X腿平設(shè)備的地址通常稱為純了 10,密鑰協(xié)商消息采用常見的[8仏£64]編碼; 步驟2-5,XI??節(jié)點(diǎn)得到服務(wù)器的密鑰消息后進(jìn)行解密,并使用帶密鑰的哈希算法歷0,計(jì)算得到共享主密鑰,輸入為服務(wù)器和節(jié)點(diǎn)分別生成的隨機(jī)數(shù),服務(wù)器和節(jié)點(diǎn)的64位£111地址,生成密鑰為注冊(cè)時(shí)節(jié)點(diǎn)提交的并使用加密自己的純了10發(fā)送至服務(wù)器; 步驟2-6,XI??服務(wù)器使用哈希算法腿計(jì)算得到8601-01:,并使用¢11-6111881:61- 86(31*61:加密自己的純了 10發(fā)送至XI??節(jié)點(diǎn)。 步驟2-7,節(jié)點(diǎn)各自使用即61112181:61~解密收到的消息,如果解密后的消息與實(shí)體的純110對(duì)應(yīng),則密鑰協(xié)商成功,并且對(duì)此后應(yīng)用層的流都使用密鑰進(jìn)行加密,否則密鑰協(xié)商失敗。
4.根據(jù)權(quán)利要求1所述的基于傳感器網(wǎng)絡(luò)的XI??協(xié)議安全接入方法,其特征在于:所述步驟3包括: 步驟3-1X1??服務(wù)器發(fā)送一個(gè)[8…£64]編碼的挑戰(zhàn)給XI??節(jié)點(diǎn),。匕116叩6包括域1*681111,服務(wù)器新生產(chǎn)的隨機(jī)數(shù)8110111106,XI[流所采用的編碼方式以及認(rèn)證算法81^01*1^11111 ; 步驟3-2,XI??節(jié)點(diǎn)在接收到挑戰(zhàn)后,使用在注冊(cè)過程中提交的洲0%對(duì)挑戰(zhàn)中的110皿06、節(jié)點(diǎn)的即I地址通過腿八(^110算法進(jìn)行處理得到嫩0,并將構(gòu)造認(rèn)證消息,消息包含用戶名1186111211116、域1*6211111、生產(chǎn)的嫩0,采用的編碼方式和認(rèn)證算法,將認(rèn)證消息進(jìn)行[8八3264]編碼發(fā)送到服務(wù)器; 步驟3-3,XI??服務(wù)器接收到認(rèn)證消息后,采用同樣的算法對(duì)消息進(jìn)行認(rèn)證,如果認(rèn)證通過,則回復(fù)消息;否則,回復(fù)入網(wǎng)失敗的響應(yīng)。
5.根據(jù)權(quán)利要求4所述的基于傳感器網(wǎng)絡(luò)的XI??協(xié)議安全接入方法,其特征在于:所述步驟4包括: 當(dāng)一個(gè)XI??節(jié)點(diǎn)需要代替另一個(gè)節(jié)點(diǎn)執(zhí)行操作時(shí),該節(jié)點(diǎn)需要在回復(fù)的認(rèn)證消息中加入所授權(quán)節(jié)點(diǎn)的純了10,服務(wù)器在完成對(duì)節(jié)點(diǎn)身份的任何以后將與服務(wù)器中的授權(quán)表進(jìn)行比對(duì),確定該節(jié)點(diǎn)是否允許授權(quán)操作; 步驟4-1?4-3與步驟3-1?3-3相同; 步驟4-4,XI??節(jié)點(diǎn)在接收到挑戰(zhàn)后,使用在注冊(cè)過程中提交的對(duì)挑戰(zhàn)中的110皿06、節(jié)點(diǎn)的2瓜地址通過腿八(^110算法,對(duì)節(jié)點(diǎn)的64位2瓜地址和服務(wù)器生成的隨機(jī)數(shù)&10111106進(jìn)行處理,得到嫩并將構(gòu)造認(rèn)證消息,認(rèn)證消息由被授權(quán)節(jié)點(diǎn)純了10,授權(quán)主體的1186111511116、域1*6511111、生成的嫩0、編碼方式011511*861:以及認(rèn)證算法再將認(rèn)證消息進(jìn)行[8…£64]編碼發(fā)送到服務(wù)器; 步驟4-5,XI??服務(wù)器接收到認(rèn)證消息后,采用腿算法進(jìn)行認(rèn)證,如果認(rèn)證通過,則在授權(quán)表中查找31X^121(1是否允許該節(jié)點(diǎn)對(duì)被授權(quán)節(jié)點(diǎn)進(jìn)行授權(quán),如果允許則返回認(rèn)證和授權(quán)成功的結(jié)果;否則,返回失敗的結(jié)果。
【文檔編號(hào)】H04L29/06GK104468618SQ201410826355
【公開日】2015年3月25日 申請(qǐng)日期:2014年12月26日 優(yōu)先權(quán)日:2014年12月26日
【發(fā)明者】王浩, 柳樂, 王平, 魏旻, 王少軍 申請(qǐng)人:重慶郵電大學(xué)