本發(fā)明屬于互聯(lián)網(wǎng)技術(shù)領(lǐng)域,尤其涉及一種數(shù)據(jù)訪問控制系統(tǒng)。
背景技術(shù):
隨著共享數(shù)據(jù)時代的到來,越來越多的數(shù)據(jù)被電子化并存儲在云端,通常情況下對數(shù)據(jù)的訪問控制通過鑒別、認證和授權(quán)三步完成。傳統(tǒng)的訪問控制系統(tǒng)除了保證只有合法用戶進入系統(tǒng)外,還可以實現(xiàn)授權(quán)和審計功能,但其中心化的部署方式使其易于成為匿名入侵和竊取用戶資料的目標。區(qū)塊鏈是新興的技術(shù),其在加密貨幣體系中的成功運用,促成了許多新應(yīng)用的開發(fā)。
技術(shù)實現(xiàn)要素:
本發(fā)明的目的在于:提供基于區(qū)塊鏈的數(shù)據(jù)訪問控制系統(tǒng),通過結(jié)合密碼技術(shù)的機密性、完整性和不可抵賴特性,以及區(qū)塊鏈技術(shù)的分布式總賬不可更改特性開發(fā)一個安全可擴展的訪問控制系統(tǒng),以促進敏感數(shù)據(jù)的安全和充分共享,解決了現(xiàn)有技術(shù)中因使用中心化部署方式,導致用戶資料容易被竊取的技術(shù)問題。
本發(fā)明采用的技術(shù)方案如下:
基于區(qū)塊鏈的數(shù)據(jù)訪問控制系統(tǒng),包括
用戶層:用于供用戶向下一級發(fā)送注冊申請或數(shù)據(jù)訪問請求;
系統(tǒng)管理層:用于接收上一級發(fā)送的根據(jù)注冊申請或數(shù)據(jù)訪問請求;
存儲層:用于保存數(shù)據(jù),以及供用戶層的用戶在注冊申請和數(shù)據(jù)訪問請求經(jīng)系統(tǒng)管理層驗證通過后,進行數(shù)據(jù)訪問;
在發(fā)送注冊申請時:系統(tǒng)管理層與用戶層之間進行三次密碼審核和驗證,系統(tǒng)管理層基于最后一次的密碼產(chǎn)生事務(wù)公鑰和事務(wù)私鑰,并將事務(wù)公鑰交由系統(tǒng)管理層保管;
在發(fā)送數(shù)據(jù)訪問請求時:系統(tǒng)管理層取出和驗證經(jīng)上述最后一次的密碼加密并用事務(wù)私鑰進行簽名后的數(shù)據(jù)訪問請求的區(qū)塊,驗證通過后,用戶獲得存儲層所保存數(shù)據(jù)的訪問權(quán)限。
進一步的,用戶在向發(fā)行者發(fā)送注冊申請時:發(fā)行者接收到用戶的注冊申請后,將成員發(fā)行密碼發(fā)送給用戶;用戶通過成員發(fā)行密碼將注冊資料加密,并加上自己申請的時間戳,再發(fā)送給發(fā)行者進行審核確認;發(fā)行者確認通過用戶的注冊申請后,向用戶發(fā)送成員驗證密碼;用戶將成員驗證密碼發(fā)送給校驗者請求成員身份鑒定,待確認用戶的成員驗證密碼后,通過用戶的成員身份驗證;校驗者依據(jù)成員驗證密碼產(chǎn)生成員加密密碼并發(fā)送給用戶;用戶收到成員加密密碼后,基于成員加密密碼產(chǎn)生事務(wù)公鑰和事務(wù)私鑰,并將事務(wù)公鑰交由校驗者保管。
進一步的,用戶在發(fā)送數(shù)據(jù)訪問請求時:使用成員加密密碼對數(shù)據(jù)訪問請求的區(qū)塊加密,并用事務(wù)私鑰進行簽名,然后發(fā)送到未處理請求池中等待處理;共識節(jié)點從未處理請求池中取出區(qū)塊(即前驅(qū)區(qū)塊)并向校驗者請求驗證;在區(qū)塊通過驗證后,用戶獲得存儲層所保存數(shù)據(jù)的訪問權(quán)限,且區(qū)塊被共識節(jié)點廣播,形成區(qū)塊鏈中新的區(qū)塊(即后繼區(qū)塊)。
進一步的,發(fā)行者:依據(jù)一定的準則對申請注冊的用戶進行資格審查,并發(fā)送成員驗證密碼。
進一步的,校驗者:用于安全保存用戶產(chǎn)生的事務(wù)密鑰,為用戶生成用于建立區(qū)塊的成員加密密鑰以及對用戶生成的簽名區(qū)塊進行校驗。
進一步的,共識節(jié)點:按照一定算法從未處理請求池中取出區(qū)塊,聯(lián)合校驗者對區(qū)塊的真實性進行校驗并報告違規(guī)行為,通過驗的區(qū)塊將被廣播到區(qū)塊鏈中。共識節(jié)點是唯一能夠訪問未處理請求池的實體。
進一步的,用戶由需要訪問數(shù)據(jù)的單位和個人組成。
綜上所述,由于采用了上述技術(shù)方案,本發(fā)明的有益效果是:
本發(fā)明所公開的系統(tǒng)只分為三層,即用戶層、系統(tǒng)管理層和存儲層,本系統(tǒng)將密碼技術(shù)的機密性、完整性和不可抵賴特性和區(qū)塊鏈技術(shù)的分布式總賬不可更改特性相結(jié)合,開發(fā)出一個安全可擴展的訪問控制系統(tǒng),以促進敏感數(shù)據(jù)的安全和充分共享。密碼學提供的安全加密技術(shù)可以用來鑒別和認證用戶,結(jié)合區(qū)塊鏈的去中心化存儲的總賬系統(tǒng)可以實現(xiàn)一個安全、可擴展、分布式、不可抵賴的訪問控制系統(tǒng),本系統(tǒng)在發(fā)送注冊申請時:系統(tǒng)管理層與用戶層之間進行三次密碼審核和驗證,系統(tǒng)管理層基于最后一次的密碼產(chǎn)生事務(wù)公鑰和事務(wù)私鑰,并將事務(wù)公鑰交由系統(tǒng)管理層保管;在發(fā)送數(shù)據(jù)訪問請求時:系統(tǒng)管理層取出和驗證經(jīng)上述最后一次的密碼加密并用事務(wù)私鑰進行簽名后的數(shù)據(jù)訪問請求的區(qū)塊,驗證通過后,用戶獲得存儲層所保存數(shù)據(jù)的訪問權(quán)限,解決了現(xiàn)有技術(shù)中因使用中心化部署方式,導致用戶資料容易被竊取的技術(shù)問題。
附圖說明
圖1是本發(fā)明的系統(tǒng)結(jié)構(gòu)組成示意圖;
圖2是系統(tǒng)結(jié)構(gòu)和執(zhí)行過程示意圖;
圖3是區(qū)塊的組成示意圖。
具體實施方式
本說明書中公開的所有特征,除了互相排斥的特征和/或步驟以外,均可以以任何方式組合。
下面結(jié)合圖1~圖3對本發(fā)明作詳細說明。
基于區(qū)塊鏈的數(shù)據(jù)訪問控制系統(tǒng),包括
用戶層:用戶由需要訪問數(shù)據(jù)的單位和個人組成,主要用于數(shù)據(jù)分析和科學研究,例如大學、政府和個人研究者,以及供用戶向下一級發(fā)送注冊申請或數(shù)據(jù)訪問請求;
系統(tǒng)管理層:由相互連接的獨立實體構(gòu)成,主要負責建立安全連接、促進系統(tǒng)的高效運,用于接收上一級發(fā)送的根據(jù)注冊申請或數(shù)據(jù)訪問請求;
存儲層:由基于云端的存儲和處理結(jié)構(gòu)構(gòu)成,主要負責安全的保存數(shù)據(jù)以便于查閱、分析和研究,以及供用戶層的用戶在系統(tǒng)管理層驗證通過注冊申請或數(shù)據(jù)訪問請求后,進行數(shù)據(jù)訪問;
在發(fā)送注冊申請時:系統(tǒng)管理層與用戶層之間進行三次密碼審核和驗證,系統(tǒng)管理層基于最后一次的密碼產(chǎn)生事務(wù)公鑰和事務(wù)私鑰,并將事務(wù)公鑰交由系統(tǒng)管理層保管;
在發(fā)送數(shù)據(jù)訪問請求時:系統(tǒng)管理層取出和驗證經(jīng)上述最后一次的密碼加密并用事務(wù)私鑰進行簽名后的數(shù)據(jù)訪問請求的區(qū)塊,驗證通過后,用戶獲得存儲層所保存數(shù)據(jù)的訪問權(quán)限。
系統(tǒng)管理層由發(fā)行者issuer、校驗者verifer、共識節(jié)點concensusnode、未處理請求池poolofunprocessedrequests以及區(qū)塊鏈網(wǎng)絡(luò)blockchainnetwork組成。
用戶注冊時,使用發(fā)行者提供的成員發(fā)行密鑰將注冊信息進行加密,成員通過注冊后才獲得成員驗證密碼。
成員驗證密碼是校驗者確認用戶是否屬于同組的關(guān)鍵密碼。
用戶和校驗者之間的相互驗證過程中,相互發(fā)送的消息使用成員發(fā)行密碼進行加密,并使用成員驗證密碼進行簽名。
用戶和校驗者通過相互驗證以后,校驗者將依據(jù)成員驗證密碼產(chǎn)生成員加密密碼并發(fā)送給用戶。用戶將基于成員驗證密碼產(chǎn)生事務(wù)私鑰和事務(wù)公鑰并將事務(wù)公鑰發(fā)送給校驗者保存。
成員加密密碼用于加密本組產(chǎn)生的區(qū)塊。事務(wù)私鑰用于給經(jīng)成員加密密碼加密后的區(qū)塊簽名。事務(wù)公鑰用于對特定用戶的區(qū)塊進行校驗。如果任何一個密碼不匹配,相關(guān)區(qū)塊將被丟棄。
用戶在向發(fā)行者發(fā)送注冊申請時:發(fā)行者接收到用戶的注冊申請后,將成員發(fā)行密碼發(fā)送給用戶;用戶通過成員發(fā)行密碼將注冊資料加密,并加上自己申請的時間戳,再發(fā)送給發(fā)行者進行審核確認;發(fā)行者確認通過用戶的注冊申請后,向用戶發(fā)送成員驗證密碼;用戶將成員驗證密碼發(fā)送給校驗者請求成員身份鑒定,待確認用戶的成員驗證密碼后,通過用戶的成員身份驗證;校驗者依據(jù)成員驗證密碼產(chǎn)生成員加密密碼并發(fā)送給用戶;用戶收到成員加密密碼后,基于成員加密密碼產(chǎn)生事務(wù)公鑰和事務(wù)私鑰,并將事務(wù)公鑰交由校驗者保管。
用戶在發(fā)送數(shù)據(jù)訪問請求時:使用成員加密密碼對數(shù)據(jù)訪問請求的區(qū)塊加密,并用事務(wù)私鑰進行簽名,然后發(fā)送到未處理請求池中等待處理;共識節(jié)點從未處理請求池中取出區(qū)塊(即前驅(qū)區(qū)塊)并向校驗者請求驗證;在區(qū)塊通過驗證后,用戶獲得存儲層所保存數(shù)據(jù)的訪問權(quán)限,且區(qū)塊被共識節(jié)點廣播,形成區(qū)塊鏈中新的區(qū)塊(即后繼區(qū)塊)。
發(fā)行者:依據(jù)一定的準則對申請注冊的用戶進行資格審查,并發(fā)送成員驗證密碼。
校驗者:用于安全保存用戶產(chǎn)生的事務(wù)密鑰,為用戶生成用于建立區(qū)塊的成員加密密鑰以及對用戶生成的簽名區(qū)塊進行校驗。
共識節(jié)點:按照一定算法從未處理請求池中取出區(qū)塊,聯(lián)合校驗者對區(qū)塊的真實性進行校驗并報告違規(guī)行為,通過驗的區(qū)塊將被廣播到區(qū)塊鏈中。共識節(jié)點是唯一能夠訪問未處理請求池的實體。
系統(tǒng)執(zhí)行過程
1.用戶注冊
發(fā)行者生成一個成員發(fā)行和成員校驗密碼集合,然后與校驗者共享。用戶向發(fā)行者提出注冊申請,發(fā)行者將成員發(fā)行密碼發(fā)送給用戶用于加密用戶的注冊資料,用戶將該資料加密并加上自己的申請時間戳發(fā)送給發(fā)行者進行確認,發(fā)行者負責對用戶資料進行審核,通過后向用戶發(fā)送成員驗證密碼。
用戶隨后將成員驗證密碼發(fā)送給校驗者請求成員身份鑒定,通過用戶的成員身份驗證后校驗者依據(jù)成員驗證密碼產(chǎn)生成員加密密碼并發(fā)送給用戶,用戶收到后將基于成員加密密碼產(chǎn)生事務(wù)私鑰和事務(wù)公鑰并將事務(wù)公鑰交由校驗者保管。
2.請求數(shù)據(jù)
用戶使用成員加密密鑰加密數(shù)據(jù)訪問請求,并用事務(wù)私鑰進行簽名,然后將該區(qū)塊(區(qū)塊詳細字段定義見文末)發(fā)送到未處理請求池中等待處理。
3.驗證請求
用戶事務(wù)的驗證。共識節(jié)點按照一定算法從未處理請求池中取出區(qū)塊并請求驗證,區(qū)塊頭的timestamp(時間戳)記錄請求驗證時間的哈希值。blockformat(區(qū)塊格式)記錄基于該區(qū)塊成員加密密鑰產(chǎn)生的一個二進制序列。用戶事務(wù)(usertransaction)標準模型滿足后,區(qū)塊的事務(wù)層被激發(fā)。urt、uid和tx共同標明該請求的目的(縮略詞見后)。us保存用戶的簽名信息。ust記錄請求發(fā)送的準確時間的時間戳。
共識節(jié)點選出一個數(shù)據(jù)訪問請求時將觸發(fā)共識事務(wù)(consensustransaction)。共識節(jié)點需要解決一個由目標困難值targetdifficulty和隨機數(shù)nonce更新的數(shù)學問題,正確后才有權(quán)處理該請求。然后共識節(jié)點向校驗者請求驗證用戶,crt記錄共識節(jié)點取出請求的時間,cst記錄節(jié)點發(fā)送簽名的時間,cra記錄校驗開始時間,cpt記錄總處理時間,cn記錄處理節(jié)點的身份。
4.獲得訪問權(quán)限
在請求通過驗證后用戶獲得訪問權(quán)限,區(qū)塊被廣播,cbt記錄廣播時間,cdp記錄區(qū)塊目的,cs記錄共識節(jié)點簽名。在處理過程中,用戶在已產(chǎn)生的區(qū)塊格式blockformat后加上一個序列號用于標明區(qū)塊的當前位置。versionnumber記錄區(qū)塊版本,previousblockhash記錄前驅(qū)區(qū)塊的哈希值,merkleroot記錄和包含當前區(qū)塊在內(nèi)計算的默克爾根值,blocksize記錄區(qū)塊大小,blocklocktime記錄區(qū)塊創(chuàng)建的結(jié)束時間戳,此時當前區(qū)塊成為連續(xù)區(qū)塊鏈的一部分。
在后繼區(qū)塊形成時,前驅(qū)區(qū)塊頭的哈希值被記錄在后繼區(qū)塊中,隨后加入?yún)^(qū)塊鏈。
區(qū)塊詳細字段定義:
一個區(qū)塊由全局唯一的區(qū)塊格式字段blockformat標識,隨后是區(qū)塊大小blocksize,區(qū)塊頭blockheader(由sha256進行哈希處理),區(qū)塊頭保證了整個區(qū)塊鏈的防篡改功能,如果攻擊者想要偽造一個區(qū)塊記錄,他必須從初始區(qū)塊開始逐個更改每個區(qū)塊的區(qū)塊頭,這是不可能的,這種方式極大的保證了區(qū)塊鏈的安全性,區(qū)塊間的不匹配會立刻產(chǎn)生一個警報并引發(fā)數(shù)據(jù)鑒定。
區(qū)塊頭共有6部分組成。版本號versionnumber,它表明了采用的校驗規(guī)則。還含有一個前驅(qū)區(qū)塊的sha256方式的哈希值previousblockhash(作用在于,如果不能修改當前區(qū)塊的的區(qū)塊頭就不能修改前驅(qū)區(qū)塊中的任何數(shù)據(jù))。隨后是默克爾根的哈希值merkleroot(將區(qū)塊鏈中已發(fā)生的所有事件聯(lián)合做sha256哈希運算,然后將得到的結(jié)果存放在當前區(qū)塊中,它的作用在于如果不能改變當前區(qū)塊,區(qū)塊鏈中的任何區(qū)塊數(shù)據(jù)都不能改變)。區(qū)塊頭還包含該區(qū)塊產(chǎn)生時的時間戳timestamp(時間戳)。目標困難值targetdifficulty標識僅限于本系統(tǒng)的共識節(jié)點的處理方式,惡意節(jié)點難以處理但是經(jīng)校驗過的本系統(tǒng)的節(jié)點可以高效的處理。最后是隨機數(shù)nonce,用于修改區(qū)塊頭的哈希值,使它低于目標困難值。
區(qū)塊中的事務(wù)計數(shù)器transactioncounter記錄整個區(qū)塊中所包含的事務(wù)數(shù)量。事務(wù)transactions由共識事務(wù)和用戶事務(wù)組成。共識事務(wù)分為兩類標準模型,時間戳和數(shù)據(jù),時間戳由crt,cst,cpt,cbt組成,數(shù)據(jù)由cn,cra,cdp,cs組成。用戶事務(wù)也分兩類標準模型,時間戳和數(shù)據(jù),時間戳由urt,ust組成,數(shù)據(jù)由uid,tx,us組成。
最后定義的結(jié)構(gòu)是transactionlocktime時間戳,用于記錄最后一條事務(wù)并標志區(qū)塊結(jié)束。這個區(qū)域一旦滿足,區(qū)塊就準備好被廣播到區(qū)塊鏈中,transactionlocktime全局標明了區(qū)塊進入?yún)^(qū)塊鏈的時間。
縮略詞:
crtconsensusretrivetime共識取出時間
craconsensusverificationresult共識校驗時間
cptconsensustimetoprocess共識開始處理時間
cstconsensusreuqestverificationtime共識請求校驗時間
cbtconsensustimetobroadcast共識廣播時間
cdpconsensusdatapurpose共識數(shù)據(jù)目的
cnconsensusprocessingnode共識處理節(jié)點
csconsensussignature共識簽名
urtuserretrievetime用戶取回時間
本發(fā)明未詳細闡述的部分屬于本領(lǐng)域公知技術(shù),本領(lǐng)域技術(shù)人員根據(jù)已有的描述已能夠在不付出創(chuàng)造性勞動的前提下進行實施,因此,不再贅述。