本發(fā)明涉及一種基于區(qū)塊鏈的數(shù)據(jù)共享授權(quán)方法,屬于互聯(lián)網(wǎng)技術(shù)領(lǐng)域。
背景技術(shù):
區(qū)塊鏈(Blockchain)是指通過去中心化和去信任的方式集體維護(hù)一個(gè)可靠數(shù)據(jù)庫的技術(shù)方案。該技術(shù)方案主要讓參與系統(tǒng)中的任意多個(gè)節(jié)點(diǎn),通過一串使用密碼學(xué)方法相關(guān)聯(lián)產(chǎn)生的數(shù)據(jù)塊(block),每個(gè)數(shù)據(jù)塊中包含了一定時(shí)間內(nèi)的系統(tǒng)全部信息交流數(shù)據(jù),并且生成數(shù)據(jù)指紋用于驗(yàn)證其信息的有效性和鏈接(chain)下一個(gè)數(shù)據(jù)庫塊。
傳統(tǒng)的數(shù)據(jù)共享授權(quán)技術(shù)主要有兩類:集中式授權(quán)和分散式授權(quán)。集中式授權(quán)工作過程為:系統(tǒng)中存在若干個(gè)需要授權(quán)用戶,其授權(quán)請求都發(fā)送到一個(gè)授權(quán)中心進(jìn)行審核處理。分散式授權(quán)工作過程為:系統(tǒng)中存在若干個(gè)需要授權(quán)用戶,其授權(quán)請求發(fā)送到若干個(gè)授權(quán)中心進(jìn)行審核處理。集中式授權(quán)采用一個(gè)授權(quán)中心管理,安全性高,但由于授權(quán)中心需要承擔(dān)較大的工作量而容易成為整個(gè)系統(tǒng)的瓶頸。分散式授權(quán)采用多個(gè)授權(quán)中心的方式,將集中式授權(quán)的工作量分散,但也增加了系統(tǒng)管理的復(fù)雜度,降低了安全性。兩種方式都需要至少一個(gè)授權(quán)中心的參與,如果因?yàn)槟撤N原因授權(quán)中心無法連接,便無法通過授權(quán)實(shí)現(xiàn)數(shù)據(jù)共享。
技術(shù)實(shí)現(xiàn)要素:
針對現(xiàn)有技術(shù)的不足,本發(fā)明提供了一種基于區(qū)塊鏈的數(shù)據(jù)共享授權(quán)方法;
本發(fā)明的技術(shù)方案為:
一種基于區(qū)塊鏈的數(shù)據(jù)共享授權(quán)方法,具體步驟包括:
(1)按照授權(quán)關(guān)系,對所有用戶節(jié)點(diǎn)建立區(qū)塊鏈;
(2)在步驟(1)生成的區(qū)塊鏈中,第一級授權(quán)用戶節(jié)點(diǎn)創(chuàng)建本級數(shù)據(jù)共享授權(quán)集合K和本級授權(quán)節(jié)點(diǎn)信息N,具體步驟包括:
A、對系統(tǒng)需要共享的數(shù)據(jù)進(jìn)行編號,按照編號建立索引,該索引的集合為數(shù)據(jù)共享集合D;同時(shí),將系統(tǒng)中的所有用戶節(jié)點(diǎn)依據(jù)編號也建立索引;
B、第一級授權(quán)用戶節(jié)點(diǎn)的可共享的數(shù)據(jù)的索引的集合,即為本級數(shù)據(jù)共享授權(quán)集合K,K={U,D},U為系統(tǒng)中所有可被授權(quán)的用戶節(jié)點(diǎn)集合,K為以U為列、D為行的元素為1(階數(shù)取U和D的最大維數(shù))的矩陣,對本級數(shù)據(jù)共享授權(quán)集合K可被共享的用戶節(jié)點(diǎn)進(jìn)行編號,按照編號建立索引,該索引的集合為本級授權(quán)節(jié)點(diǎn)信息N;在區(qū)塊鏈上增加U、D和N,如圖1所示;
(3)第一級授權(quán)用戶節(jié)點(diǎn)創(chuàng)建下一級所有用戶節(jié)點(diǎn)的數(shù)據(jù)共享授權(quán)集合K1及下一級授權(quán)節(jié)點(diǎn)信息N1:下一級授權(quán)用戶節(jié)點(diǎn)可共享的數(shù)據(jù)的索引的集合即數(shù)據(jù)共享授權(quán)集合K1;對第一級授權(quán)用戶節(jié)點(diǎn)需要共享的數(shù)據(jù)進(jìn)行編號,按照編號建立索引,該索引的集合為數(shù)據(jù)共享集合D1;K1={U1,D1},U1為可被第一級授權(quán)節(jié)點(diǎn)授權(quán)的用戶節(jié)點(diǎn)集合,K1為以U1為列、D1為行的元素為1(階數(shù)為步驟(1)中U和D的最大維數(shù))矩陣;對K1可被下一級共享的用戶節(jié)點(diǎn)進(jìn)行編號,按照編號建立索引,該索引的集合為第一級授權(quán)節(jié)點(diǎn)信息N1,在區(qū)塊鏈上增加U1、D1和N1,如圖1所示;
例如,假設(shè)系統(tǒng)中的所有授權(quán)用戶節(jié)點(diǎn)數(shù)為3個(gè),編號為1,2,3,需要共享的數(shù)據(jù)數(shù)為3組,編號為1,2,3。則在步驟(2)中,建立好的U={1,2,3},D={1,2,3},N={1,3}。在步驟(3)中,U1={1,3},D1=(1,3),N1={3}。
(4)判斷本級授權(quán)用戶節(jié)點(diǎn)能否繼續(xù)授權(quán),能的話,根據(jù)步驟(3)方法,本級授權(quán)用戶節(jié)點(diǎn)分別創(chuàng)建其下一級授權(quán)用戶節(jié)點(diǎn)的數(shù)據(jù)共享授權(quán)集合,在對應(yīng)區(qū)塊上增加當(dāng)前級授權(quán)用戶節(jié)點(diǎn)信息,并更新到區(qū)塊鏈中,對下一級授權(quán)用戶節(jié)點(diǎn)執(zhí)行步驟(4);否則,本級全部或部分授權(quán)用戶節(jié)點(diǎn)根據(jù)其自身的數(shù)據(jù)共享授權(quán)集合進(jìn)行權(quán)值計(jì)算,選出權(quán)值最高的用戶節(jié)點(diǎn)作為新的授權(quán)用戶節(jié)點(diǎn),并更新區(qū)塊鏈對應(yīng)信息。全部或部分授權(quán)用戶節(jié)點(diǎn)由用戶設(shè)定。
根據(jù)本發(fā)明優(yōu)選的,所述步驟(4)中,本級全部或部分授權(quán)用戶節(jié)點(diǎn)根據(jù)其自身的數(shù)據(jù)共享授權(quán)集合進(jìn)行權(quán)值計(jì)算,選出權(quán)值最高的用戶節(jié)點(diǎn)作為新的授權(quán)用戶節(jié)點(diǎn),并更新區(qū)塊鏈對應(yīng)信息,具體步驟包括:第一級授權(quán)用戶節(jié)點(diǎn)無法對其下級中用戶節(jié)點(diǎn)創(chuàng)建數(shù)據(jù)共享授權(quán)集合,下級中用戶節(jié)點(diǎn)個(gè)數(shù)為n,進(jìn)入步驟A;
A、所述n個(gè)用戶節(jié)點(diǎn)依據(jù)其自身的數(shù)據(jù)共享授權(quán)集合創(chuàng)建數(shù)據(jù)共享授權(quán)集合,n個(gè)用戶節(jié)點(diǎn)中的任意用戶節(jié)點(diǎn)i的節(jié)點(diǎn)權(quán)值Ri計(jì)算公式如式(Ⅰ)所示:
式(Ⅰ)中,Ki是指任意用戶節(jié)點(diǎn)i的數(shù)據(jù)共享授權(quán)集合的矩陣,X為與Ki同階的歸一化行向量,Y為與Ki同階的元素歸一化列向量,1≤i≤n;
B、通過式(Ⅰ)中計(jì)算出n個(gè)用戶節(jié)點(diǎn)的節(jié)點(diǎn)權(quán)值,從中取最大值對應(yīng)的授權(quán)用戶節(jié)點(diǎn)作為新的授權(quán)用戶節(jié)點(diǎn),根據(jù)步驟(3)方法,新的授權(quán)用戶節(jié)點(diǎn)分別創(chuàng)建其下一級授權(quán)用戶節(jié)點(diǎn)的數(shù)據(jù)共享授權(quán)集合,在對應(yīng)區(qū)塊上增加新的授權(quán)用戶節(jié)點(diǎn)信息,并更新到區(qū)塊鏈中,對下一級授權(quán)用戶節(jié)點(diǎn)執(zhí)行步驟(4)。
本發(fā)明的有益效果為:
1、本發(fā)明與現(xiàn)有集中式授權(quán)和分散式授權(quán)的方法區(qū)別在于,基于區(qū)塊鏈技術(shù)進(jìn)行授權(quán),利用區(qū)塊鏈的去中心化、記錄信息完整且不可更改的特點(diǎn),在區(qū)塊鏈上記錄所有節(jié)點(diǎn)的完整授權(quán)信息。由于區(qū)塊鏈分布式存放在所有用戶節(jié)點(diǎn)上,確保授權(quán)信息極難被偽造,提高了系統(tǒng)安全性。
2、本發(fā)明在中心授權(quán)節(jié)點(diǎn)缺失的情況下,可以由下級節(jié)點(diǎn)根據(jù)區(qū)塊鏈的信息新增或變更授權(quán)節(jié)點(diǎn),解決了集中式授權(quán)和分散式授權(quán)都至少需要一個(gè)授權(quán)節(jié)點(diǎn)的缺陷,可以解決在無授權(quán)節(jié)點(diǎn)情況下的數(shù)據(jù)共享授權(quán)問題。
附圖說明
圖1為基于區(qū)塊鏈的數(shù)據(jù)共享授權(quán)方法中區(qū)塊鏈中的相關(guān)信息U、D、N結(jié)構(gòu)示意圖;
圖2為實(shí)施例中基于區(qū)塊鏈的數(shù)據(jù)共享授權(quán)方法的流程示意圖。
具體實(shí)施方式
下面結(jié)合說明書附圖和實(shí)施例對本發(fā)明作進(jìn)一步限定,但不限于此。
實(shí)施例
一種基于區(qū)塊鏈的數(shù)據(jù)共享授權(quán)方法,如圖2所示,具體步驟包括:
(1)按照授權(quán)關(guān)系,對所有用戶節(jié)點(diǎn)建立區(qū)塊鏈;
(2)在步驟(1)生成的區(qū)塊鏈中,第一級授權(quán)用戶節(jié)點(diǎn)創(chuàng)建本級數(shù)據(jù)共享授權(quán)集合K和本級授權(quán)節(jié)點(diǎn)信息N,具體步驟包括:
A、對系統(tǒng)需要共享的數(shù)據(jù)進(jìn)行編號,按照編號建立索引,該索引的集合為數(shù)據(jù)共享集合D;同時(shí),將系統(tǒng)中的所有用戶節(jié)點(diǎn)依據(jù)編號也建立索引;
B、第一級授權(quán)用戶節(jié)點(diǎn)的可共享的數(shù)據(jù)的索引的集合,即為本級數(shù)據(jù)共享授權(quán)集合K,K={U,D},U為系統(tǒng)中所有可被授權(quán)的用戶節(jié)點(diǎn)集合,K為以U為列、D為行的元素為1(階數(shù)取U和D的最大維數(shù))的矩陣,對本級數(shù)據(jù)共享授權(quán)集合K可被共享的用戶節(jié)點(diǎn)進(jìn)行編號,按照編號建立索引,該索引的集合為本級授權(quán)節(jié)點(diǎn)信息N;在區(qū)塊鏈上增加U、D和N,如圖1所示;
(3)第一級授權(quán)用戶節(jié)點(diǎn)創(chuàng)建下一級所有用戶節(jié)點(diǎn)的數(shù)據(jù)共享授權(quán)集合K1及下一級授權(quán)節(jié)點(diǎn)信息N1:下一級授權(quán)用戶節(jié)點(diǎn)可共享的數(shù)據(jù)的索引的集合即數(shù)據(jù)共享授權(quán)集合K1;對第一級授權(quán)用戶節(jié)點(diǎn)需要共享的數(shù)據(jù)進(jìn)行編號,按照編號建立索引,該索引的集合為數(shù)據(jù)共享集合D1;K1={U1,D1},U1為可被第一級授權(quán)節(jié)點(diǎn)授權(quán)的用戶節(jié)點(diǎn)集合,K1為以U1為列、D1為行的元素為1(階數(shù)為步驟(1)中U和D的最大維數(shù))矩陣;對K1可被下一級共享的用戶節(jié)點(diǎn)進(jìn)行編號,按照編號建立索引,該索引的集合為第一級授權(quán)節(jié)點(diǎn)信息N1,在區(qū)塊鏈上增加U1、D1和N1,如圖1所示;
例如,假設(shè)系統(tǒng)中的所有授權(quán)用戶節(jié)點(diǎn)數(shù)為3個(gè),編號為1,2,3,需要共享的數(shù)據(jù)數(shù)為3組,編號為1,2,3。則在步驟(2)中,建立好的U={1,2,3},D={1,2,3},N={1,3}。在步驟(3)中,U1={1,3},D1=(1,3),N1={3}。
(4)判斷本級授權(quán)用戶節(jié)點(diǎn)能否繼續(xù)授權(quán),能的話,根據(jù)步驟(3)方法,本級授權(quán)用戶節(jié)點(diǎn)分別創(chuàng)建其下一級授權(quán)用戶節(jié)點(diǎn)的數(shù)據(jù)共享授權(quán)集合,在對應(yīng)區(qū)塊上增加當(dāng)前級授權(quán)用戶節(jié)點(diǎn)信息,并更新到區(qū)塊鏈中,對下一級授權(quán)用戶節(jié)點(diǎn)執(zhí)行步驟(4);否則,本級全部或部分授權(quán)用戶節(jié)點(diǎn)根據(jù)其自身的數(shù)據(jù)共享授權(quán)集合進(jìn)行權(quán)值計(jì)算,選出權(quán)值最高的用戶節(jié)點(diǎn)作為新的授權(quán)用戶節(jié)點(diǎn),并更新區(qū)塊鏈對應(yīng)信息。全部或部分授權(quán)用戶節(jié)點(diǎn)由用戶設(shè)定。
所述步驟(4)中,本級全部或部分授權(quán)用戶節(jié)點(diǎn)根據(jù)其自身的數(shù)據(jù)共享授權(quán)集合進(jìn)行權(quán)值計(jì)算,選出權(quán)值最高的用戶節(jié)點(diǎn)作為新的授權(quán)用戶節(jié)點(diǎn),并更新區(qū)塊鏈對應(yīng)信息,具體步驟包括:第一級授權(quán)用戶節(jié)點(diǎn)無法對其下級中用戶節(jié)點(diǎn)創(chuàng)建數(shù)據(jù)共享授權(quán)集合,下級中用戶節(jié)點(diǎn)個(gè)數(shù)為n,進(jìn)入步驟A;
A、所述n個(gè)用戶節(jié)點(diǎn)依據(jù)其自身的數(shù)據(jù)共享授權(quán)集合創(chuàng)建數(shù)據(jù)共享授權(quán)集合,n個(gè)用戶節(jié)點(diǎn)中的任意用戶節(jié)點(diǎn)i的節(jié)點(diǎn)權(quán)值Ri計(jì)算公式如式(Ⅰ)所示:
式(Ⅰ)中,Ki是指任意用戶節(jié)點(diǎn)i的數(shù)據(jù)共享授權(quán)集合的矩陣,X為與Ki同階的歸一化行向量,Y為與Ki同階的元素歸一化列向量,1≤i≤n;
B、通過式(Ⅰ)中計(jì)算出n個(gè)用戶節(jié)點(diǎn)的節(jié)點(diǎn)權(quán)值,從中取最大值對應(yīng)的授權(quán)用戶節(jié)點(diǎn)作為新的授權(quán)用戶節(jié)點(diǎn),根據(jù)步驟(3)方法,新的授權(quán)用戶節(jié)點(diǎn)分別創(chuàng)建其下一級授權(quán)用戶節(jié)點(diǎn)的數(shù)據(jù)共享授權(quán)集合,在對應(yīng)區(qū)塊上增加新的授權(quán)用戶節(jié)點(diǎn)信息,并更新到區(qū)塊鏈中,對下一級授權(quán)用戶節(jié)點(diǎn)執(zhí)行步驟(4)。