本發(fā)明涉及互聯(lián)網(wǎng)身份認(rèn)證領(lǐng)域,具體地說是一種基于區(qū)塊鏈的多方信任的身份認(rèn)證方法和系統(tǒng)。
背景技術(shù):
在pki體系中,第三方ca的數(shù)字證書是標(biāo)明用戶實(shí)名信息的一種方式。數(shù)字證書是互聯(lián)網(wǎng)通訊中標(biāo)志通訊各方身份信息的一串?dāng)?shù)字,提供了一種在internet上驗(yàn)證通信實(shí)體身份的方式,數(shù)字證書是一個經(jīng)證書認(rèn)證中心(英文全稱certificateauthority,簡稱ca)數(shù)字簽名的包含公開密鑰擁有者信息以及公開密鑰的文件。人們可以在網(wǎng)上用數(shù)字證書來識別對方的身份。ca認(rèn)證是中心化認(rèn)證模式,所有應(yīng)用系統(tǒng)和用戶都要無條件信任該ca,導(dǎo)致認(rèn)證效率低,認(rèn)證費(fèi)用高。
區(qū)塊鏈?zhǔn)且环N去中心化的分布式數(shù)據(jù)庫,是一串使用密碼學(xué)方法相關(guān)聯(lián)產(chǎn)生的數(shù)據(jù)塊,每一個數(shù)據(jù)塊中包含了一次網(wǎng)絡(luò)交易的信息,用于驗(yàn)證其信息的有效性(防偽)和生成下一個區(qū)塊。區(qū)塊鏈具有去中心化、信息不可篡改等特征,一旦信息經(jīng)過驗(yàn)證并添加至區(qū)塊鏈,就會永久存儲起來。
如何通過區(qū)塊鏈實(shí)現(xiàn)用戶面向多個應(yīng)用系統(tǒng)的身份認(rèn)證,以及在身份認(rèn)證過程中如何通過區(qū)塊鏈安全存儲用戶信息并真實(shí)完整的驗(yàn)證用戶身份,是需要解決的技術(shù)問題。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的技術(shù)任務(wù)是針對以上不足,提供一種基于區(qū)塊鏈的多方信任的身份認(rèn)證方法和系統(tǒng),來解決如何基于區(qū)塊鏈實(shí)現(xiàn)用戶面向多個應(yīng)用系統(tǒng)的身份認(rèn)證、且在身份認(rèn)證過程中通過區(qū)塊鏈安全存儲用戶信息并真實(shí)完整的驗(yàn)證用戶身份的問題。
本發(fā)明的技術(shù)任務(wù)是按以下方式實(shí)現(xiàn)的:
基于區(qū)塊鏈的多方信任的身份認(rèn)證方法,應(yīng)用系統(tǒng)根據(jù)接收的注冊請求生成用戶屬性卡信息后,對用戶屬性卡信息加密并將加密的用戶屬性卡信息發(fā)布至區(qū)塊鏈,應(yīng)用系統(tǒng)共多方,每方應(yīng)用系統(tǒng)對應(yīng)的加密的用戶屬性卡信息均存儲于區(qū)塊鏈;每方應(yīng)用系統(tǒng)接收到認(rèn)證請求后借助區(qū)塊鏈驗(yàn)證用戶身份,并通過區(qū)塊鏈中存儲的多方加密的用戶屬性卡信息進(jìn)行多方信任的身份驗(yàn)證。
進(jìn)一步的,每方應(yīng)用系統(tǒng)的基于區(qū)塊鏈的多方信任的身份認(rèn)證方法,包括如下步驟:
s1、用戶注冊:用戶首次注冊時生成公鑰和私鑰,應(yīng)用系統(tǒng)接收到用戶發(fā)起的注冊請求時,對用戶進(jìn)行實(shí)名認(rèn)證并生成用戶屬性卡信息,并將通過公鑰加密的用戶屬性卡信息發(fā)布至區(qū)塊鏈;
s2、身份認(rèn)證:應(yīng)用系統(tǒng)接收到用戶發(fā)起的認(rèn)證請求后驗(yàn)證私鑰,驗(yàn)證成功后,應(yīng)用系統(tǒng)借助區(qū)塊鏈驗(yàn)證用戶提交的多個解密的用戶屬性卡信息。
進(jìn)一步的,上述多方應(yīng)用系統(tǒng)中用戶首先注冊應(yīng)用系統(tǒng)的為首個應(yīng)用系統(tǒng),上述多方應(yīng)用系統(tǒng)中除首個應(yīng)用系統(tǒng)之外的應(yīng)用系統(tǒng)為剩余應(yīng)用系統(tǒng);每方應(yīng)用系統(tǒng)的基于區(qū)塊鏈的多方信任的身份認(rèn)證方法,包括如下步驟:
s1、用戶注冊:用戶在首個應(yīng)用系統(tǒng)中首次注冊時生成公鑰和私鑰,用戶在剩余應(yīng)用系統(tǒng)中首次注冊時注冊公鑰,上述私鑰能夠用于剩余應(yīng)用系統(tǒng);
應(yīng)用系統(tǒng)接收到用戶發(fā)起的注冊請求時,對用戶進(jìn)行實(shí)名認(rèn)證并生成用戶屬性卡信息,并將通過公鑰加密的用戶屬性卡信息發(fā)布至區(qū)塊鏈;
s2、身份認(rèn)證:應(yīng)用系統(tǒng)接收到用戶發(fā)起的認(rèn)證請求后驗(yàn)證私鑰,驗(yàn)證成功后,應(yīng)用系統(tǒng)借助區(qū)塊鏈驗(yàn)證用戶提交的多個解密的用戶屬性卡信息。
進(jìn)一步的,步驟s1中,應(yīng)用系統(tǒng)接收到用戶發(fā)起的注冊請求時,對用戶進(jìn)行實(shí)名認(rèn)證并生成用戶屬性卡信息,包括如下步驟:
s111、用戶將實(shí)名信息、公鑰、私鑰以及對上述實(shí)名信息、公鑰和私鑰的簽名信息提交至應(yīng)用系統(tǒng);
s112、應(yīng)用系統(tǒng)通過權(quán)威身份認(rèn)證源對用戶進(jìn)行實(shí)名認(rèn)證;
s113、應(yīng)用系統(tǒng)將實(shí)名信息、公鑰以及應(yīng)用系統(tǒng)對上述實(shí)名信息和公鑰的簽名計(jì)算生成用戶屬性卡信息,用戶屬性卡信息包括:用戶id、實(shí)名信息、實(shí)名認(rèn)證來源、公鑰、屬性卡簽發(fā)機(jī)構(gòu)標(biāo)識、屬性卡簽發(fā)機(jī)構(gòu)公鑰以及屬性卡簽發(fā)機(jī)構(gòu)對上述用戶id、實(shí)名信息、實(shí)名認(rèn)證來源、公鑰、屬性卡簽發(fā)機(jī)構(gòu)標(biāo)識和屬性卡簽發(fā)機(jī)構(gòu)公鑰的簽名。
進(jìn)一步的,步驟s1中,應(yīng)用系統(tǒng)將通過公鑰加密的用戶屬性卡信息發(fā)布到區(qū)塊鏈,包括如下步驟:
s121、應(yīng)用系統(tǒng)計(jì)算用戶屬性卡信息的摘要;
s122、應(yīng)用系統(tǒng)使用公鑰加密用戶屬性卡信息;
s123、應(yīng)用系統(tǒng)將加密的用戶屬性卡信息的密文以及用戶屬性卡信息的明文的摘要發(fā)布至區(qū)塊鏈。
進(jìn)一步的,步驟s2中,應(yīng)用系統(tǒng)接收到用戶發(fā)起的認(rèn)證請求后驗(yàn)證私鑰,包括如下步驟:
s211、用戶向應(yīng)用系統(tǒng)發(fā)起認(rèn)證請求,應(yīng)用系統(tǒng)向用戶返回認(rèn)證挑戰(zhàn);
s212、用戶使用私鑰對認(rèn)證挑戰(zhàn)簽名;
s213、應(yīng)用系統(tǒng)使用公鑰驗(yàn)證上述認(rèn)證挑戰(zhàn)簽名,驗(yàn)證成功則表示用戶擁有上述私鑰。
進(jìn)一步的,步驟s2中,應(yīng)用系統(tǒng)借助區(qū)塊鏈驗(yàn)證用戶提交的多個解密的用戶屬性卡信息,包括如下步驟:
s221、用戶解密每個用戶屬性卡信息,并將多個解密的屬性卡信息提交至應(yīng)用系統(tǒng);
s222、應(yīng)用系統(tǒng)計(jì)算用戶屬性卡信息哈希,通過區(qū)塊鏈查詢對比哈希值;
s223、應(yīng)用系統(tǒng)解析實(shí)名信息,驗(yàn)證屬性卡簽發(fā)機(jī)構(gòu)簽名。
進(jìn)一步的,私鑰的載體包括但不限于u盾、手機(jī)盾、密碼卡和加密機(jī)。
進(jìn)一步的,權(quán)威身份認(rèn)證源包括但不限于公安、電信和銀行;實(shí)名信息包括但不限于用戶姓名、用戶身份證和用戶手機(jī)號碼。
基于區(qū)塊鏈的多方信任的身份認(rèn)證系統(tǒng),包括區(qū)塊鏈網(wǎng)絡(luò)、配置于客戶端的客戶端認(rèn)證模塊以及配置與應(yīng)用系統(tǒng)的應(yīng)用服務(wù)器認(rèn)證模塊,客戶端認(rèn)證模塊用于生成私鑰和公鑰、執(zhí)行數(shù)字簽名以及執(zhí)行私鑰解密,應(yīng)用服務(wù)器認(rèn)證模塊用于生成用戶屬性卡信息、執(zhí)行簽名驗(yàn)證以及執(zhí)行用戶屬性卡信息區(qū)塊鏈的存儲、查詢和對比,區(qū)塊鏈存證網(wǎng)絡(luò)用于執(zhí)行用戶屬性卡信息的存儲。
本發(fā)明的基于區(qū)塊鏈的多方信任的身份認(rèn)證方法和系統(tǒng)具有以下優(yōu)點(diǎn):
1、本發(fā)明使用用戶屬性卡信息標(biāo)識用戶身份,并與多方應(yīng)用系統(tǒng)對應(yīng)的多個用戶屬性卡信息均發(fā)布至區(qū)塊鏈上,確保用戶屬性卡信息的真實(shí)完整,通過多個用戶屬性卡信息見證用戶的身份,與通過單個用戶屬性卡信息見證用戶的身份相比,更加可信,且當(dāng)用戶的用戶屬性卡信息越來越多時,其身份會越來越清晰和明確;
2、本發(fā)明以公開密碼技術(shù)為基礎(chǔ)作為身份認(rèn)證的手段,安全性高;
3、本發(fā)明通過公鑰加密用戶屬性卡信息,確保了用戶屬性卡信息的隱私不會泄露。
附圖說明
下面結(jié)合附圖對本發(fā)明進(jìn)一步說明。
附圖1為實(shí)施例1基于區(qū)塊鏈的多方信任的身份認(rèn)證方法的流程框圖;
附圖2為實(shí)施例1基于區(qū)塊鏈的多方信任的身份認(rèn)證方法中用戶注冊的流程框圖;
附圖3為實(shí)施例1基于區(qū)塊鏈的多方信任的身份認(rèn)證方法中應(yīng)用系統(tǒng)對用戶進(jìn)行身份認(rèn)證的流程框圖。
具體實(shí)施方式
參照說明書附圖和具體實(shí)施例對本發(fā)明的基于區(qū)塊鏈的多方信任的身份認(rèn)證方法及系統(tǒng)作以下詳細(xì)地說明。
實(shí)施例1:
如附圖1、附圖2和附圖3所示,本發(fā)明的基于區(qū)塊鏈的多方信任的身份認(rèn)證方法,應(yīng)用系統(tǒng)根據(jù)接收的注冊請求生成用戶屬性卡信息后,對用戶屬性卡信息加密并將加密的用戶屬性卡信息發(fā)布至區(qū)塊鏈,應(yīng)用系統(tǒng)共多方,每方應(yīng)用系統(tǒng)對應(yīng)的加密的用戶屬性卡信息均存儲于區(qū)塊鏈;每方應(yīng)用系統(tǒng)接收到認(rèn)證請求后借助區(qū)塊鏈驗(yàn)證用戶身份,并通過區(qū)塊鏈中存儲的多方加密的用戶屬性卡信息進(jìn)行多方信任的身份驗(yàn)證。其中,每方應(yīng)用系統(tǒng)的基于區(qū)塊鏈的多方信任的身份認(rèn)證方法,包括如下步驟::
(1)、用戶注冊:
(1.1)、用戶首次注冊時生成公鑰和私鑰,并向應(yīng)用系統(tǒng)發(fā)起注冊請求;
(1.2)、用戶將實(shí)名信息、公鑰、私鑰以及對上述實(shí)名信息、公鑰和私鑰的簽名信息提交至應(yīng)用系統(tǒng);
(1.3)、應(yīng)用系統(tǒng)通過權(quán)威身份認(rèn)證源對用戶進(jìn)行實(shí)名認(rèn)證;
(1.4)、應(yīng)用系統(tǒng)將實(shí)名信息、公鑰以及應(yīng)用系統(tǒng)對上述實(shí)名信息和公鑰的簽名計(jì)算生成用戶屬性卡信息,用戶屬性卡信息包括:用戶id、實(shí)名信息、實(shí)名認(rèn)證來源、公鑰、屬性卡簽發(fā)機(jī)構(gòu)標(biāo)識、屬性卡簽發(fā)機(jī)構(gòu)公鑰以及屬性卡簽發(fā)機(jī)構(gòu)對上述用戶id、實(shí)名信息、實(shí)名認(rèn)證來源、公鑰、屬性卡簽發(fā)機(jī)構(gòu)標(biāo)識和屬性卡簽發(fā)機(jī)構(gòu)公鑰的簽名;
(1.5)、應(yīng)用系統(tǒng)計(jì)算用戶屬性卡信息的摘要;
(1.6)、應(yīng)用系統(tǒng)使用公鑰加密用戶屬性卡信息;
(1.7)、應(yīng)用系統(tǒng)將加密的用戶屬性卡信息的密文以及用戶屬性卡信息的明文的摘要發(fā)布至區(qū)塊鏈,確保了用戶屬性卡信息中數(shù)據(jù)真實(shí)完整不可篡改,同時通過加密保護(hù)用戶隱私;
(2)、身份認(rèn)證:
(2.1)用戶向應(yīng)用系統(tǒng)發(fā)起認(rèn)證請求,應(yīng)用系統(tǒng)向用戶返回認(rèn)證挑戰(zhàn),認(rèn)證挑戰(zhàn)為隨機(jī)數(shù);
(2.2)、用戶使用私鑰對認(rèn)證挑戰(zhàn)簽名;
(2.3)、應(yīng)用系統(tǒng)使用公鑰驗(yàn)證上述認(rèn)證挑戰(zhàn)簽名,驗(yàn)證成功則表示用戶擁有上述私鑰;
(2.4)、上述步驟(2.3)中,驗(yàn)證成功后,用戶解密每個用戶屬性卡信息,并將多個解密的用戶屬性卡信息提交至應(yīng)用系統(tǒng);
(2.5)、應(yīng)用系統(tǒng)計(jì)算用戶屬性卡信息哈希,通過區(qū)塊鏈查詢對比哈希值;
(2.6)、應(yīng)用系統(tǒng)解析實(shí)名信息,驗(yàn)證屬性卡簽發(fā)機(jī)構(gòu)簽名。
其中,上述私鑰的載體包括但不限于u盾、手機(jī)盾、密碼卡和加密機(jī);權(quán)威身份認(rèn)證源包括但不限于公安、電信和銀行,通過上述權(quán)威身份認(rèn)證源對用戶進(jìn)行實(shí)名認(rèn)證,以實(shí)現(xiàn)多方可信任的身份認(rèn)證;實(shí)名信息包括但不限于用戶姓名、用戶身份證和用戶手機(jī)號碼。
本發(fā)明中,用戶在首次注冊時生成公鑰和私鑰,每個應(yīng)用系統(tǒng)均通過權(quán)威認(rèn)證機(jī)構(gòu)對用戶進(jìn)行實(shí)名認(rèn)證并生成對應(yīng)的用戶屬性卡信息,并通過公鑰將用戶屬性卡信息加密后存儲在區(qū)塊鏈中,從而,用戶擁有自己的私鑰,同時用戶的實(shí)名信息和公鑰被多方認(rèn)證機(jī)構(gòu)證明后,安全的存儲在區(qū)塊鏈上;當(dāng)有應(yīng)用系統(tǒng)需要用戶完成身份認(rèn)證賬戶登錄時,該應(yīng)用系統(tǒng)驗(yàn)證用戶的私鑰,同時應(yīng)用系統(tǒng)通過區(qū)塊鏈驗(yàn)證用戶持有的多個用戶屬性卡信息的真實(shí)性和完整性,解析用戶的實(shí)名信息,驗(yàn)證屬性卡信息簽發(fā)機(jī)構(gòu)簽名,從而實(shí)現(xiàn)對用戶的實(shí)名認(rèn)證。多個用戶屬性卡信息,相當(dāng)于多方見證了用戶的身份,當(dāng)用戶屬性卡信息越來越多時,用戶的身份會越來越清晰和明確,由多方見證的身份比由單方見證的身份,更加可信。
實(shí)施例2:
本實(shí)施例為在實(shí)施例1基礎(chǔ)上的進(jìn)一步改進(jìn),本實(shí)施例與實(shí)施例1的區(qū)別為:上述多方應(yīng)用系統(tǒng)中用戶首先注冊應(yīng)用系統(tǒng)的為首個應(yīng)用系統(tǒng),上述多方應(yīng)用系統(tǒng)中除首個應(yīng)用系統(tǒng)之外的應(yīng)用系統(tǒng)為剩余應(yīng)用系統(tǒng);在上述所有的應(yīng)用系統(tǒng)中執(zhí)行用戶注冊和身份認(rèn)證流程中,所有應(yīng)用系統(tǒng)共用一個私鑰,無需重生生成。
具體的,在執(zhí)行用戶注冊流程時,步驟(1.1)與實(shí)施例1具有如下區(qū)別:
(1.1)、用戶在首個應(yīng)用系統(tǒng)中首次注冊時生成公鑰和私鑰,用戶在剩余應(yīng)用系統(tǒng)中首次注冊時注冊公鑰,剩余應(yīng)用系統(tǒng)同樣使用該私鑰,并向應(yīng)用系統(tǒng)發(fā)起注冊請求。
本實(shí)施例中其它流程步驟與實(shí)施例1一致。
實(shí)施例3:
本發(fā)明的基于區(qū)塊鏈的多方信任的身份認(rèn)證系統(tǒng),包括區(qū)塊鏈存證網(wǎng)絡(luò)、配置于客戶端上的客戶端認(rèn)證模塊以及配置于每個應(yīng)用系統(tǒng)上的應(yīng)用服務(wù)器認(rèn)證模塊,客戶端認(rèn)證模塊用于生成私鑰和公鑰、執(zhí)行數(shù)字簽名以及執(zhí)行私鑰解密,應(yīng)用服務(wù)器認(rèn)證模塊用于生成用戶屬性卡信息、執(zhí)行簽名驗(yàn)證以及執(zhí)行用戶屬性卡信息區(qū)塊鏈的存儲、查詢和對比,區(qū)塊鏈存證網(wǎng)絡(luò)用于執(zhí)行用戶屬性卡信息的存儲。
其中,客戶端認(rèn)證模塊用于生成私鑰和公鑰,為用戶首次注冊時生成用戶的公鑰和私鑰;客戶端認(rèn)證模塊用于執(zhí)行數(shù)字簽名,為在用戶將公鑰、私鑰和實(shí)名信息提交至應(yīng)用系統(tǒng)之前,為對公鑰、私鑰和實(shí)名信息進(jìn)行數(shù)字簽名;客戶端認(rèn)證模塊用于執(zhí)行私鑰解密,為使用私鑰為應(yīng)用系統(tǒng)返回的挑戰(zhàn)認(rèn)證簽名,該挑戰(zhàn)認(rèn)證為隨機(jī)數(shù),當(dāng)用戶向應(yīng)用系統(tǒng)發(fā)起認(rèn)證請求時,為驗(yàn)證用戶的私鑰,應(yīng)用系統(tǒng)向用戶返回挑戰(zhàn)認(rèn)證。
應(yīng)用服務(wù)器認(rèn)證模塊生成用戶屬性卡信息,為當(dāng)應(yīng)用系統(tǒng)通過權(quán)威身份認(rèn)證源驗(yàn)證用戶提交的實(shí)名信息后,應(yīng)用服務(wù)器認(rèn)證模塊將實(shí)名信息、公鑰以及應(yīng)用系統(tǒng)對上述實(shí)名信息和公鑰的簽名計(jì)算生成用戶屬性卡信息,該用戶屬性卡信息包括:用戶id、實(shí)名信息、實(shí)名認(rèn)證來源、公鑰、屬性卡簽發(fā)機(jī)構(gòu)標(biāo)識、屬性卡簽發(fā)機(jī)構(gòu)公鑰以及屬性卡簽發(fā)機(jī)構(gòu)對上述用戶id、實(shí)名信息、實(shí)名認(rèn)證來源、公鑰、屬性卡簽發(fā)機(jī)構(gòu)標(biāo)識和屬性卡簽發(fā)機(jī)構(gòu)公鑰的簽名;
應(yīng)用服務(wù)器認(rèn)證模塊執(zhí)行簽名驗(yàn)證。
應(yīng)用服務(wù)器認(rèn)證模塊執(zhí)行用戶屬性卡信息區(qū)塊鏈的存儲,為在用戶注冊過程中應(yīng)用服務(wù)器認(rèn)證模塊能夠?qū)崿F(xiàn)如下功能:計(jì)算用戶屬性卡信息的摘要,使用公鑰加密用戶屬性卡信息,并將用戶屬性卡信息的摘要和用戶屬性卡信息的密文發(fā)送至區(qū)塊鏈;應(yīng)用服務(wù)器認(rèn)證模塊執(zhí)行用戶屬性卡信息區(qū)塊鏈的查詢和對比,為在身份認(rèn)證過程中應(yīng)用服務(wù)器認(rèn)證模塊能夠?qū)崿F(xiàn)如下功能:根據(jù)多個由用戶提交的解密的用戶屬性卡信息,計(jì)算用戶屬性卡信息哈希,通過區(qū)塊鏈查詢并對比哈希值,解析實(shí)名信息,并驗(yàn)證屬性卡簽發(fā)機(jī)構(gòu)簽名。
區(qū)塊鏈存證網(wǎng)絡(luò),包括多個區(qū)塊鏈節(jié)點(diǎn),區(qū)塊鏈節(jié)點(diǎn)存儲有用戶屬性卡信息。
本發(fā)明的基于區(qū)塊鏈的多方信任的身份認(rèn)證系統(tǒng),能夠用于實(shí)現(xiàn)實(shí)施例1基于區(qū)塊鏈的多方信任的身份認(rèn)證方法。
通過上面具體實(shí)施方式,所述技術(shù)領(lǐng)域的技術(shù)人員可容易的實(shí)現(xiàn)本發(fā)明。但是應(yīng)當(dāng)理解,本發(fā)明并不限于上述的具體實(shí)施方式。在公開的實(shí)施方式的基礎(chǔ)上,所述技術(shù)領(lǐng)域的技術(shù)人員可任意組合不同的技術(shù)特征,從而實(shí)現(xiàn)不同的技術(shù)方案。除說明書所述的技術(shù)特征外,均為本專業(yè)技術(shù)人員的已知技術(shù)。