本發(fā)明涉及加解密、身份認(rèn)證及分布式數(shù)據(jù)庫技術(shù),特別是一種適用于leo衛(wèi)星網(wǎng)絡(luò)中可以實(shí)現(xiàn)安全認(rèn)證、快速切換以及分布式記錄和存儲注冊、注銷、登入、登出和切換等信息的方法。
背景技術(shù):
基于身份標(biāo)識的密碼體制(ibc)最早是在1984年由shamir提出,其最大的優(yōu)點(diǎn)是每個節(jié)點(diǎn)可以使用其自身的身份標(biāo)識生成公鑰,并可以相應(yīng)由密鑰生成中心(kgc)計算出私鑰,當(dāng)一位用戶需要向另一位用戶安全發(fā)送信息時,只需要利用接收方的身份標(biāo)識計算其公鑰并用來加密,接收方利用kgc計算并返回給自己的私鑰進(jìn)行解密即可,避免了傳統(tǒng)pki體系中關(guān)于密鑰管理和數(shù)字證書頒發(fā)/吊銷的開銷。另一方面,傳統(tǒng)的衛(wèi)星網(wǎng)絡(luò)中使用的認(rèn)證方法,其計算及通信開銷一般都較大,同時也十分不適合于具備動態(tài)拓?fù)洹⑼ㄐ沛溌奉l繁切換等特點(diǎn)的leo衛(wèi)星網(wǎng)絡(luò),以美國摩托羅拉公司的iridium銥系統(tǒng)為例,用戶可以看到一顆衛(wèi)星的時間大約為10分鐘,因此需要研究出一種可以快速進(jìn)行認(rèn)證,同時在頻繁發(fā)生鏈路切換時,可以實(shí)現(xiàn)用戶節(jié)點(diǎn)在不同衛(wèi)星之間快速切換的安全認(rèn)證方法。同時衛(wèi)星網(wǎng)絡(luò)內(nèi)相關(guān)的分布式數(shù)據(jù)存儲技術(shù)較為落后,需要在滿足安全性的前提下進(jìn)行改進(jìn)。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的在于提供一種能夠在leo衛(wèi)星網(wǎng)絡(luò)體系內(nèi)實(shí)現(xiàn)用戶快速認(rèn)證及快速切換功能且同時分布式記錄用戶與衛(wèi)星相關(guān)信息的方法。本方法將基于身份標(biāo)識的密碼體制(ibc)應(yīng)用于leo衛(wèi)星網(wǎng)絡(luò)接入認(rèn)證場景中,利用密鑰生成中心(kgc)的私鑰快速生成用戶及衛(wèi)星節(jié)點(diǎn)的公私鑰對,并在標(biāo)識字段中約定角色信息來實(shí)現(xiàn)系統(tǒng)內(nèi)角色區(qū)分。同時利用ibc機(jī)制,構(gòu)建以kgc和衛(wèi)星為信任主體的可信鏈,采用區(qū)塊鏈的鏈?zhǔn)椒植际綌?shù)據(jù)結(jié)構(gòu)存儲用戶及衛(wèi)星相關(guān)信息,實(shí)現(xiàn)用戶快速接入認(rèn)證以及星間快速切換的身份驗(yàn)證功能,適應(yīng)leo衛(wèi)星網(wǎng)絡(luò)內(nèi)動態(tài)拓?fù)?、星地鏈路頻繁切換的特點(diǎn)。另一方面,本方法利用ibc體制及區(qū)塊鏈技術(shù)的優(yōu)勢,以kgc及衛(wèi)星的私鑰簽名作為共識機(jī)制,記錄系統(tǒng)內(nèi)產(chǎn)生的注冊、注銷、登入、登出及切換等相關(guān)信息并打包進(jìn)相應(yīng)區(qū)塊進(jìn)行存儲,提供了健壯高效的日志功能。
實(shí)現(xiàn)本發(fā)明目的的技術(shù)解決方案為:一種leo衛(wèi)星網(wǎng)絡(luò)內(nèi)分布式的接入認(rèn)證管理方法,應(yīng)用場景為近地衛(wèi)星網(wǎng)絡(luò),以類銥星星座為例,劃分系統(tǒng)內(nèi)所有節(jié)點(diǎn)為樹形邏輯結(jié)構(gòu)并以此來約定用戶信息塊歸并以及分發(fā)的流向,具體包括以下步驟:
步驟1:新用戶憑借身份證明,提供自身的身份標(biāo)識,密鑰生成中心kgc核實(shí)后,利用自身系統(tǒng)私鑰及相關(guān)參數(shù)計算用戶公私鑰對,構(gòu)造權(quán)限令牌并簽名,然后返回給用戶;接著kgc將用戶注冊信息打包進(jìn)區(qū)塊,并存儲在本地區(qū)塊鏈中;如若是已注冊用戶,則直接與衛(wèi)星進(jìn)行接入認(rèn)證過程;
步驟2:認(rèn)證階段,用戶驗(yàn)證欲接入衛(wèi)星的標(biāo)識并計算對應(yīng)公鑰,接著利用此公鑰與當(dāng)前衛(wèi)星進(jìn)行挑戰(zhàn)應(yīng)答,衛(wèi)星利用挑戰(zhàn)應(yīng)答過程中用戶發(fā)來的身份標(biāo)識計算其公鑰,并加密返回衛(wèi)星自己選擇的隨機(jī)數(shù)及會話密鑰,用戶收到后利用自身私鑰解密,獲取會話密鑰;
步驟3:用戶利用會話密鑰加密發(fā)送衛(wèi)星選擇的隨機(jī)數(shù)、自身信息和權(quán)限令牌給當(dāng)前衛(wèi)星,當(dāng)前衛(wèi)星收到后,解密并驗(yàn)證隨機(jī)數(shù)及權(quán)限令牌的簽名和時限,搜索包含最新注銷信息的區(qū)塊,查看有無當(dāng)前用戶,如果有則拒絕連接,接著比對權(quán)限令牌中的用戶標(biāo)識與步驟2中用戶發(fā)送的標(biāo)識是否一致,核實(shí)申請服務(wù)是否在權(quán)限內(nèi),如果有誤則拒絕連接;
步驟4:衛(wèi)星檢查無誤后,返回認(rèn)證成功信息,并利用會話密鑰正式同用戶間建立安全會話,同時衛(wèi)星將用戶的登入信息打包進(jìn)區(qū)塊,存儲在本地區(qū)塊鏈中;
步驟5:用戶獲取衛(wèi)星的返回消息,如果是成功則利用與衛(wèi)星間的安全會話開始使用衛(wèi)星提供的服務(wù);
步驟6:切換階段,用戶向切換前的衛(wèi)星發(fā)送欲進(jìn)行切換的信息,衛(wèi)星返回確認(rèn),同時將用戶切換登出信息打包進(jìn)區(qū)塊,存儲在本地區(qū)塊鏈中;接著此衛(wèi)星將用戶的切換登出信息區(qū)塊轉(zhuǎn)發(fā)給用戶下一刻欲切換登入的那顆相鄰衛(wèi)星,切換后的那顆衛(wèi)星相應(yīng)的將此切換登出信息塊存儲進(jìn)本地區(qū)塊鏈中;
步驟7:用戶收到切換前的衛(wèi)星的確認(rèn)后,斷開與其的連接,向欲切換登入的衛(wèi)星發(fā)送切換信息;當(dāng)前衛(wèi)星收到后,搜索本地區(qū)塊鏈,查找有無相符用戶切換登出區(qū)塊,沒有則詢問用戶切換前所連衛(wèi)星,若仍沒有,則拒絕連接;若當(dāng)前衛(wèi)星查找到,則搜索本地區(qū)塊鏈中包含最新注銷信息的區(qū)塊,查找有無當(dāng)前用戶,如果沒有,則計算用戶公鑰并加密返回隨機(jī)數(shù)以及新會話密鑰;
步驟8:用戶利用自身私鑰解密獲得會話密鑰,計算當(dāng)前衛(wèi)星的公鑰,并利用此公鑰加密返回隨機(jī)數(shù);衛(wèi)星收到后驗(yàn)證隨機(jī)數(shù),無誤則憑新會話密鑰正式建立與用戶間的安全會話,并將用戶的切換登入信息打包進(jìn)區(qū)塊,存儲在本地區(qū)塊鏈中,同時返回切換認(rèn)證成功消息;用戶驗(yàn)證消息,利用衛(wèi)星與自身的安全會話使用衛(wèi)星提供的服務(wù)。
本方法采用基于以kgc及每顆衛(wèi)星為信任主體的信任鏈共識機(jī)制實(shí)現(xiàn)合法區(qū)塊的共識。當(dāng)用戶登入、切換或登出時衛(wèi)星會將用戶對應(yīng)的信息打包進(jìn)區(qū)塊并在區(qū)塊鏈內(nèi)進(jìn)行存儲,同時定期按照邏輯結(jié)構(gòu)向鄰接節(jié)點(diǎn)發(fā)送這些新的區(qū)塊,鄰接節(jié)點(diǎn)收到后進(jìn)行歸并,并繼續(xù)向除來源外的鄰接節(jié)點(diǎn)發(fā)送這些區(qū)塊,最終完成在系統(tǒng)內(nèi)所有節(jié)點(diǎn)處的更新。
本發(fā)明與現(xiàn)有技術(shù)相比,其顯著優(yōu)點(diǎn):
(1)借助引用基于身份標(biāo)識的密碼機(jī)制(ibc)省去了證書頒發(fā)/注銷及管理的開銷,用戶及衛(wèi)星可以方便的提交自身的身份標(biāo)識由kgc快速生成對應(yīng)公私鑰。同時,得益于以身份標(biāo)識來生成公鑰,所以可以利用在身份標(biāo)識中的固定字段來進(jìn)行角色區(qū)分,提供了高可擴(kuò)展性。
(2)借鑒ibc機(jī)制和區(qū)塊鏈思想,依賴于以衛(wèi)星與kgc為信任主體的信任鏈,實(shí)現(xiàn)了去中心化的用戶接入認(rèn)證以及星間快速切換的功能。同時用戶接入認(rèn)證與切換的過程完全離線,即整個認(rèn)證或切換過程只需要衛(wèi)星和用戶本身,不需要kgc的參與,避免了集中式認(rèn)證帶來的性能瓶頸。
(3)本方法中接入認(rèn)證及切換認(rèn)證的計算開銷十分小,接入認(rèn)證過程只需要兩次哈希、兩次對稱加解密、兩次公私鑰加解密以及一次驗(yàn)證簽名的計算,切換認(rèn)證過程只需要兩次公私鑰加解密的計算,因而是十分高效的。
(4)基于對私鑰簽名的信任共識機(jī)制,采用區(qū)塊鏈技術(shù)存儲用戶及衛(wèi)星的相關(guān)信息,保證區(qū)塊內(nèi)信息的準(zhǔn)確性、完整性、一致性、可回溯性及不可篡改性,避免了比特幣所采用的區(qū)塊鏈中基于算力的共識機(jī)制帶來的過大計算開銷及算力浪費(fèi)問題,以及確保了只有有效用戶在有效衛(wèi)星處才可接入。
(5)借鑒區(qū)塊鏈思想實(shí)現(xiàn)的分布式存儲結(jié)構(gòu),可以在不影響業(yè)務(wù)的同時有效減少衛(wèi)星端存儲和數(shù)據(jù)交換的開銷。
附圖說明
圖1是本發(fā)明方法的協(xié)議流程。
圖2是存儲注冊、登入、登出、切換及注銷這五種記錄的區(qū)塊結(jié)構(gòu)。
圖3是用戶注銷及重新注冊的流程。
圖4是本系統(tǒng)的邏輯結(jié)構(gòu),用于指明區(qū)塊的流向。
圖5是用戶切換認(rèn)證流程。
圖6是用戶接入認(rèn)證流程。
具體實(shí)施方式
本發(fā)明leo衛(wèi)星網(wǎng)絡(luò)內(nèi)分布式的接入認(rèn)證管理方法,主要有以下步驟:為方便說明,指定本方法中涉及到的利用公私鑰加解密的方法全部采用的是ibc加解密方法,且協(xié)議涉及到的所有消息包都會包含時間戳,當(dāng)系統(tǒng)內(nèi)任一節(jié)點(diǎn)收到消息包后都會進(jìn)行時間戳檢驗(yàn),在接下來敘述原理及流程時關(guān)于時間戳將不再贅述。
為方便具體闡述,首先指明以下符號含義:
其中kgc是用來負(fù)責(zé)計算用戶公私鑰對及簽發(fā)權(quán)限令牌(authorizationtoken)的可信中心。如果用戶已經(jīng)注冊并獲得了自身的公私鑰對及權(quán)限令牌,則可在權(quán)限令牌有效期內(nèi)隨時同衛(wèi)星進(jìn)行接入認(rèn)證的過程,否則用戶前往kgc處,證實(shí)自身身份,提交自身身份標(biāo)識ida并經(jīng)過kgc審核合法后,由kgc計算其公私鑰。計算過程如下:用戶提供kgc審核后的身份標(biāo)識ida(如user:alice@gmail.com),kgc利用雜湊函數(shù)及其公鑰pkgc,計算用戶a的公鑰pa,接著利用其私鑰dkgc計算用戶a的私鑰da,衛(wèi)星在升空之前內(nèi)置公私鑰的過程與之近似。
與此同時,kgc構(gòu)造用戶a的權(quán)限令牌,并利用自身私鑰dkgc進(jìn)行簽名,權(quán)限令牌的格式為:ida||ii_authority||start_time||stap_time||kgc_sign,其中kgc_sign為kgc對權(quán)限令牌中前四個字段的簽名。kgc隨后將用戶a的公私鑰對及權(quán)限令牌返回給用戶,并將用戶的注冊信息打包進(jìn)區(qū)塊保存在本地區(qū)塊鏈中。至此,用戶a便已完成了認(rèn)證前所需要的準(zhǔn)備過程。
當(dāng)用戶a想要同當(dāng)前上空所處的衛(wèi)星進(jìn)行認(rèn)證以便合法接入獲取服務(wù)的時候,此時,用戶a先驗(yàn)證欲接入衛(wèi)星的身份標(biāo)識,接著利用雜湊函數(shù)計算得到此衛(wèi)星的公鑰ps,并利用ps加密自身身份標(biāo)識ida發(fā)送給衛(wèi)星。
當(dāng)此衛(wèi)星收到后,便利用自身私鑰ds進(jìn)行解密,然后根據(jù)用戶的身份標(biāo)識ida計算得到用戶的公鑰pa,并隨機(jī)生成隨機(jī)數(shù)r以及會話密鑰k。接著此衛(wèi)星利用用戶的公鑰pa加密返回給用戶a隨機(jī)數(shù)r和會話密鑰k。用戶a收到此消息包后,利用自身私鑰da進(jìn)行解密,保存返回的隨機(jī)數(shù)r以及會話密鑰k。接著,用戶a利用此會話密鑰加密發(fā)送給此衛(wèi)星隨機(jī)數(shù)r、kgc給用戶a簽發(fā)的權(quán)限令牌、用戶a申請的服務(wù)以及用戶a的相關(guān)信息。其結(jié)構(gòu)如下:r||token||service||userinfo,其中userinfo包含用戶當(dāng)前接入時的地點(diǎn)、時刻、申請的服務(wù)以及用戶的標(biāo)識,衛(wèi)星收到后,利用會話密鑰k進(jìn)行解密,驗(yàn)證隨機(jī)數(shù)r的正確性并搜索本地區(qū)塊鏈中包含最新注銷信息的區(qū)塊,查看有無當(dāng)前用戶,接著利用kgc的公鑰驗(yàn)證權(quán)限令牌的簽名。會話密鑰k采用的加解密方式為對稱加解密算法,如sm4算法。然后利用權(quán)限令牌中的用戶a的身份標(biāo)識ida核對最開始時用戶a發(fā)送的其身份標(biāo)識,一致則說明沒有問題。隨后衛(wèi)星判斷用戶申請使用的服務(wù)是否在其權(quán)限內(nèi),且其權(quán)限令牌未過期,則衛(wèi)星利用會話密鑰k加密返回成功認(rèn)證的信息給用戶a,此時衛(wèi)星正式分配相關(guān)資源,利用此會話密鑰與用戶a之間建立安全通信連接,同時相應(yīng)的將此用戶的登入信息打包進(jìn)區(qū)塊,記錄的具體內(nèi)容以userinfo為主,也可以根據(jù)業(yè)務(wù)需要進(jìn)行相應(yīng)的擴(kuò)展,然后存儲進(jìn)衛(wèi)星本地的區(qū)塊鏈。否則,衛(wèi)星返回登入認(rèn)證失敗,然后拒絕連接。
用戶a收到衛(wèi)星返回的消息后,利用會話密鑰k解密,如果得到的是登入認(rèn)證成功的信息,則通過與衛(wèi)星間的安全連接取得衛(wèi)星的服務(wù),完成認(rèn)證。
當(dāng)用戶a欲進(jìn)行鏈路切換時,用戶a向切換登出前的衛(wèi)星發(fā)送欲進(jìn)行切換的信息,包括用戶a的標(biāo)識以及切換后欲登入的衛(wèi)星標(biāo)識。切換登出前的衛(wèi)星收到后,驗(yàn)證標(biāo)識的有效性以及審核用戶切換后欲登入的衛(wèi)星是否為自身相鄰的衛(wèi)星,如果不是,則拒絕,否則將用戶的切換登出信息打包進(jìn)區(qū)塊并存儲在本地區(qū)塊鏈中,其中記錄的用戶切換登出信息,具體包括用戶切換的時間、地點(diǎn)、切換前使用的服務(wù)、切換后欲登入的衛(wèi)星標(biāo)識、切換登出前的衛(wèi)星標(biāo)識以及用戶的標(biāo)識,當(dāng)然也可以根據(jù)業(yè)務(wù)需要記錄相關(guān)的其他信息。然后將包含此信息的區(qū)塊轉(zhuǎn)發(fā)給指定的切換后欲登入的衛(wèi)星,同時向用戶返回確認(rèn)信息。
隨后,用戶a收到此確認(rèn)消息后,則斷開與切換登出前的衛(wèi)星的連接,向切換后欲登入的衛(wèi)星明文發(fā)送切換登入信息,包括自身的標(biāo)識及切換登出前的衛(wèi)星的標(biāo)識。此衛(wèi)星收到后,驗(yàn)證用戶發(fā)送的切換登出前的衛(wèi)星標(biāo)識是否為自己相鄰衛(wèi)星,不是則拒絕,否則根據(jù)用戶標(biāo)識在本地區(qū)塊鏈中的一段處于切換合理時間范圍內(nèi)(即用戶維持切換狀態(tài)的最長時間)的區(qū)塊中查找有無符合的最新切換登出信息,是否符合,主要依據(jù)于所查找的信息內(nèi),用戶切換時間與當(dāng)前時間差值是否合理、切換后欲登入的衛(wèi)星標(biāo)識與此衛(wèi)星標(biāo)識是否一致以及切換登出前的衛(wèi)星標(biāo)識與用戶發(fā)來的是否一致。如果本地區(qū)塊鏈中沒有查找到,則此衛(wèi)星會向用戶切換登出前的衛(wèi)星詢問,用戶切換登出前的衛(wèi)星會進(jìn)行查找,如果找到則發(fā)送給此衛(wèi)星,否則告知此衛(wèi)星沒有查找到。如果詢問之后依舊沒有符合的包含用戶切換登出信息的區(qū)塊,則此衛(wèi)星拒絕連接。如果成功查找或詢問到,則此衛(wèi)星搜索本地包含最新注銷信息的區(qū)塊,查看有無此用戶,如果有,則拒絕,否則,計算此用戶的公鑰,并利用此公鑰加密返回新的會話密鑰k′給用戶,同時利用此會話密鑰正式建立與用戶間的安全連接并提供與切換前一樣的服務(wù)。另外,此衛(wèi)星會將用戶的切換登入信息打包為區(qū)塊,并存儲在本地區(qū)塊鏈中,其中切換登入信息具體包括,用戶切換登出前的衛(wèi)星標(biāo)識、用戶切換登入的時間及地點(diǎn)、用戶切換后登入的衛(wèi)星標(biāo)識、用戶切換后使用的服務(wù)以及用戶標(biāo)識。
隨后用戶a收到當(dāng)前衛(wèi)星的返回消息后,利用自身私鑰da解密,如果是切換認(rèn)證成功,則可以得到新的會話密鑰k′,并通過衛(wèi)星與自身間的安全連接繼續(xù)獲得服務(wù),從而完成快速切換的過程。如果切換流程中任一步驟出現(xiàn)問題,則衛(wèi)星主動拒絕連接。
如上所述,當(dāng)用戶登入、登出或者在星間發(fā)生切換的時候,衛(wèi)星都要相應(yīng)保存此用戶的相關(guān)信息(userinfo),并打包進(jìn)對應(yīng)的一個用戶信息區(qū)塊中,其結(jié)構(gòu)參見附圖圖2。當(dāng)用戶注冊或者注銷時,則kgc要相應(yīng)的保存此用戶的相關(guān)信息,并打包進(jìn)對應(yīng)的用戶信息區(qū)塊中。所以用戶相關(guān)信息包含注冊、注銷、登入、登出以及切換五種類型的記錄,衛(wèi)星的相關(guān)信息則會包含注冊及注銷這兩種類型的記錄。其中區(qū)塊內(nèi)建立merkle樹的時候需采用雜湊函數(shù),如sha1算法、sm3算法。
每到達(dá)更新周期時,每顆衛(wèi)星按照劃定好的邏輯結(jié)構(gòu)向鄰接節(jié)點(diǎn)發(fā)送自身最新的區(qū)塊信息(即那些未向鄰接節(jié)點(diǎn)發(fā)送過的區(qū)塊),收到的衛(wèi)星或kgc將此信息以時間戳為序與自己本地的區(qū)塊鏈內(nèi)信息進(jìn)行歸并,從而完成新的區(qū)塊在系統(tǒng)內(nèi)的更新。最終在衛(wèi)星端的數(shù)據(jù)量達(dá)到閾值時,每顆衛(wèi)星各自移除本地滿足約定條件的所有區(qū)塊(如當(dāng)前所處日期所在日之前的所有區(qū)塊),但必須保證移除的區(qū)塊中的每個區(qū)塊都至少發(fā)出去過一次。
當(dāng)用戶或者衛(wèi)星注銷并通知了kgc之后,kgc相應(yīng)的將用戶或衛(wèi)星的注銷信息打包進(jìn)區(qū)塊并存儲進(jìn)本地的區(qū)塊鏈中。且kgc需要固定周期(也可主動)推送包含最新注銷信息的區(qū)塊給每個軌道的邏輯頭結(jié)點(diǎn),再由每個軌道的邏輯頭節(jié)點(diǎn)依據(jù)附圖圖4的結(jié)構(gòu)分發(fā)給鄰接的節(jié)點(diǎn)并逐層分發(fā)下去,從而完成注銷信息塊在衛(wèi)星端的更新。
無論是歸并或分發(fā),節(jié)點(diǎn)收到區(qū)塊后,需驗(yàn)證區(qū)塊簽名的正確性,無誤后再與本地區(qū)塊鏈進(jìn)行整合。
本協(xié)議劃分的邏輯結(jié)構(gòu)是應(yīng)用層角度上的,在實(shí)際物理連接中,kgc可能只同少數(shù)軌道上的衛(wèi)星可以直接進(jìn)行連接,因而本協(xié)議涉及到的區(qū)塊在整個系統(tǒng)內(nèi)的歸并及分發(fā),會涉及到星間的路由。
在重新注冊方面,用戶掛失后,其需要以新的身份標(biāo)識進(jìn)行注冊,流程同新用戶注冊一致。