本發(fā)明涉及許可鏈上的用戶身份管理方法,通過在創(chuàng)世塊中預置管理合約和每人一個身份合約的方式,為許可鏈上層業(yè)務制定安全可擴展的用戶協議。
背景技術:
區(qū)塊鏈(Block Chain)按照訪問和管理權限可以分為公有鏈和許可鏈。公有鏈是指沒有準入機制,全世界任何人都可以根據公開協議,生成合法賬戶,參與讀取,發(fā)送交易,交易確認,甚至參與共識的區(qū)塊鏈。公有鏈沒有賬戶準入機制,任何人都可以生成賬戶,再獲得一點代幣,承擔一些交易手續(xù)費就可以發(fā)起轉賬或其他合法交易。同時公鏈上公鑰地址是用戶的唯一標識,對應私鑰丟失即喪失對賬戶數據和資產的控制權。
許可鏈(Permissioned Chain)是指其共識過程受到預選節(jié)點控制的區(qū)塊鏈,由若干個機構組成的共同體,每個機構都運行著一個節(jié)點,而且為了使每個區(qū)塊生效需要獲得其中多數機構的確認。許可鏈上運行著實際的商業(yè)活動,需要嚴格的成員身份管理、方便的身份找回、細致的權限管理,以保證網絡運行的安全高效。所以許可鏈上的用戶身份需經過審核,大多為實名制,與現實世界的身份關系對應。
技術實現要素:
本發(fā)明的目的在于針對現有技術的不足,提供一種基于許可鏈的用戶身份管理方法。
本發(fā)明的目的是通過以下技術方案實現的:一種基于許可鏈的用戶身份管理方法,包括以下步驟:
(1)在創(chuàng)世塊中配置身份管理系統合約,所述身份管理系統合約包含一個結構為map(用戶公鑰=>身份合約)的“白名單”。
所述身份合約的屬性有:合約地址、公鑰地址、歷史公鑰地址列表、用戶信息、創(chuàng)建管理員、狀態(tài)、權限列表。其中狀態(tài)的可選值有:“正?!薄ⅰ巴V埂?、“已刪”,權限列表中的權限的可選值有:“創(chuàng)建身份合約”(表示用戶能否創(chuàng)建下級用戶,生成新的身份合約)、“創(chuàng)建業(yè)務合約”(表示用戶能否創(chuàng)建業(yè)務相關的合約,非身份合約均為業(yè)務合約)。
(2)在創(chuàng)世塊中構造生成“初始管理員”身份合約,所述初始管理員擁有“創(chuàng)建身份合約”的權限。
(3)在創(chuàng)世塊中將“初始管理員”身份合約加入“白名單”中。
(4)鏈從創(chuàng)世塊啟動,并持續(xù)接受交易并出塊,然后由“初始管理員”創(chuàng)建其余下級身份合約。創(chuàng)建方法為:
(4.1)用戶在鏈下生成好自己的公私鑰對,并提交“公鑰地址”和“身份信息”給初始管理員審核,審核通過后,初始管理員通過調用身份合約的構造函數,傳入用戶“公鑰地址”、“用戶信息”,發(fā)起“創(chuàng)建身份合約”交易,創(chuàng)建一級身份合約。構造函數對每個用戶部署生成一個固定的合約地址,作為用戶的唯一標識,并加入“白名單”,新創(chuàng)建的用戶狀態(tài)設置為“正?!保瑫r將發(fā)起交易的管理員設為該用戶的上級“創(chuàng)建管理員”。
所述“創(chuàng)建管理員”的權限包括:修改下屬身份合約的權限列表,為其賦予權限或回收權限;對下屬的身份合約采取凍結操作,如果用戶狀態(tài)是“正常”,則將用戶狀態(tài)設置為“停止”;對下屬的身份合約采取解凍操作,如果用戶狀態(tài)是“停止”,則將用戶狀態(tài)設置為“正?!保粚ο聦俚纳矸莺霞s采取刪除操作,將用戶狀態(tài)設置為“已刪”。
(4.2)一級身份合約中被賦予了“創(chuàng)建身份合約”權限的用戶按照步驟1所述的方法,進一步創(chuàng)建二級身份合約,如此進行不斷創(chuàng)建。
(4.3)用戶如果遇到私鑰丟失,通過鏈下向上級“創(chuàng)建管理員”提交“新公鑰地址”,申請更換公鑰地址。上級“創(chuàng)建管理員”通過審核后,發(fā)起更換公鑰地址交易,傳入“新公鑰地址”,等待上鏈。鏈收到交易后,將“舊公鑰地址”加入用戶“歷史公鑰列表”,將用戶的“公鑰地址”設置為“新公鑰地址”,并將“白名單”中“舊公鑰地址”的索引修改為“新公鑰地址”。
(5)節(jié)點在收到用戶交易請求后,提取出用戶“公鑰地址”,根據“公鑰地址”對該交易進行判斷,若“公鑰地址”滿足合法條件,則為合法交易,否則為非法。對于合法交易,節(jié)點接收請求,廣播并上鏈;對于非法交易,節(jié)點直接拒絕請求,不會廣播,也不會上鏈。所述合法條件包括:
條件1:在“白名單”中存在。
條件2:其對應的身份合約返回的狀態(tài)是“正常”。
條件3:其對應的身份合約需要具有該交易對應的所需權限。
條件4:遞歸向上查找“創(chuàng)建管理員”的狀態(tài)都是“正?!?。
本發(fā)明的有益效果在于:該方法解決了公有鏈沒有身份管理的弊端,通過在創(chuàng)世塊中預置管理合約和初始管理員,實現了不可篡改的初始權限和管理規(guī)則,迎合了現實商業(yè)環(huán)境中的多級用戶管理需求。
附圖說明
圖1為該方法的整體架構圖。
具體實施方式
如圖1所示,一種基于許可鏈的用戶身份管理方法,包括以下步驟:
(1)在創(chuàng)世塊中配置身份管理系統合約,所述身份管理系統合約包含一個結構為map(用戶公鑰=>身份合約)的“白名單”。
所述身份合約的屬性有:合約地址、公鑰地址、歷史公鑰地址列表、用戶信息、創(chuàng)建管理員、狀態(tài)、權限列表。其中狀態(tài)的可選值有:“正常”、“停止”、“已刪”,權限列表中的權限的可選值有:“創(chuàng)建身份合約”(表示用戶能否創(chuàng)建下級用戶,生成新的身份合約)、“創(chuàng)建業(yè)務合約”(表示用戶能否創(chuàng)建業(yè)務相關的合約,非身份合約均為業(yè)務合約)。所述身份合約可以由任意權限者發(fā)起只讀操作,但只能由“創(chuàng)建管理員”發(fā)起寫操作。
(2)在創(chuàng)世塊中構造生成“初始管理員”身份合約,所述初始管理員擁有“創(chuàng)建身份合約”的權限。
(3)在創(chuàng)世塊中將“初始管理員”身份合約加入“白名單”中。
(4)鏈從創(chuàng)世塊啟動,并持續(xù)接受交易并出塊,然后由“初始管理員”創(chuàng)建其余下級身份合約。創(chuàng)建方法為:
(4.1)用戶在鏈下生成好自己的公私鑰對,并提交“公鑰地址”和“身份信息”給初始管理員審核,審核通過后,初始管理員通過調用身份合約的構造函數,傳入用戶“公鑰地址”、“用戶信息”,發(fā)起“創(chuàng)建身份合約”交易,創(chuàng)建一級身份合約。構造函數對每個用戶部署生成一個固定的合約地址,作為用戶的唯一標識,并加入“白名單”,新創(chuàng)建的用戶狀態(tài)設置為“正?!保瑫r將發(fā)起交易的管理員設為該用戶的上級“創(chuàng)建管理員”。
所述“創(chuàng)建管理員”的權限包括:修改下屬身份合約的權限列表,為其賦予權限或回收權限;對下屬的身份合約采取凍結操作,如果用戶狀態(tài)是“正?!?,則將用戶狀態(tài)設置為“停止”;對下屬的身份合約采取解凍操作,如果用戶狀態(tài)是“停止”,則將用戶狀態(tài)設置為“正?!保粚ο聦俚纳矸莺霞s采取刪除操作,將用戶狀態(tài)設置為“已刪”。
(4.2)一級身份合約中被賦予了“創(chuàng)建身份合約”權限的用戶按照步驟1所述的方法,進一步創(chuàng)建二級身份合約,如此進行不斷創(chuàng)建。
(4.3)用戶如果遇到私鑰丟失,通過鏈下向上級“創(chuàng)建管理員”提交“新公鑰地址”,申請更換公鑰地址。上級“創(chuàng)建管理員”通過審核后,發(fā)起更換公鑰地址交易,傳入“新公鑰地址”,等待上鏈。鏈收到交易后,將“舊公鑰地址”加入用戶“歷史公鑰列表”,將用戶的“公鑰地址”設置為“新公鑰地址”,并將“白名單”中“舊公鑰地址”的索引修改為“新公鑰地址”。
(5)節(jié)點在收到用戶交易請求后,提取出用戶“公鑰地址”,根據“公鑰地址”對該交易進行判斷,若“公鑰地址”滿足合法條件,則為合法交易,否則為非法。對于合法交易,節(jié)點接收請求,廣播并上鏈;對于非法交易,節(jié)點直接拒絕請求,不會廣播,也不會上鏈。所述合法條件包括:
條件1:在“白名單”中存在。
條件2:其對應的身份合約返回的狀態(tài)是“正常”。
條件3:其對應的身份合約需要具有該交易對應的所需權限。
條件4:遞歸向上查找“創(chuàng)建管理員”的狀態(tài)都是“正常”。