基於智慧合約的資料授權方法及裝置
本說明書一個或多個實施例涉及區塊鏈技術領域,尤其涉及一種基於智慧合約的資料授權方法及裝置。
區塊鏈技術(也被稱之為,分布式帳本技術)是一種去中性化的分布式資料庫技術,具有去中心化、公開透明、不可篡改、可信任等多種特點,適用於諸多對資料可靠性具有高需求的應用場景中。
有鑑於此,本說明書一個或多個實施例提供一種基於智慧合約的資料授權方法及裝置。
為實現上述目的,本說明書一個或多個實施例提供技術方案如下:
根據本說明書一個或多個實施例的第一方面,提出了一種基於智慧合約的資料授權方法,包括:
區塊鏈節點接收資料使用方提交的資料獲取交易,所述資料獲取交易用於請求獲取資料所有方持有的目標資料;
所述區塊鏈節點執行所述資料獲取交易呼叫的資料授權智慧合約,所述資料授權智慧合約用於在確認所述資料使用方已獲得授權時獲取所述目標資料,使所述資料使用方獲得所述目標資料及/或對所述目標資料執行預設運算後得到的運算結果。
根據本說明書一個或多個實施例的第二方面,提出了一種基於智慧合約的資料授權裝置,包括:
接收單元,使區塊鏈節點接收資料使用方提交的資料獲取交易,所述資料獲取交易用於請求獲取資料所有方持有的目標資料;
執行單元,使所述區塊鏈節點執行所述資料獲取交易呼叫的資料授權智慧合約,所述資料授權智慧合約用於在確認所述資料使用方已獲得授權時獲取所述目標資料,使所述資料使用方獲得所述目標資料及/或對所述目標資料執行預設運算後得到的運算結果。
根據本說明書一個或多個實施例的第三方面,提出了一種電子設備,包括:
處理器;
用於儲存處理器可執行指令的儲存器;
其中,所述處理器透過運行所述可執行指令以實現如第一方面所述的方法。
根據本說明書一個或多個實施例的第四方面,提出了一種電腦可讀儲存媒體,其上儲存有電腦指令,該指令被處理器執行時實現如第一方面所述方法的步驟。
這裡將詳細地對示例性實施例進行說明,其示例表示在圖式中。下面的描述涉及圖式時,除非另有表示,不同圖式中的相同數位表示相同或相似的要素。以下示例性實施例中所描述的實施方式並不代表與本說明書一個或多個實施例相一致的所有實施方式。相反,它們僅是與如所附申請專利範圍中所詳述的、本說明書一個或多個實施例的一些方面相一致的裝置和方法的例子。
需要說明的是:在其他實施例中並不一定按照本說明書示出和描述的順序來執行相應方法的步驟。在一些其他實施例中,其方法所包括的步驟可以比本說明書所描述的更多或更少。此外,本說明書中所描述的單個步驟,在其他實施例中可能被分解為多個步驟進行描述;而本說明書中所描述的多個步驟,在其他實施例中也可能被合併為單個步驟進行描述。
圖1是一示例性實施例提供的一種示例環境的示意圖。如圖1所示,示例環境100允許實體參與區塊鏈網路102。區塊鏈網路102可以為公有類型、私有類型或聯盟類型的區塊鏈網路。示例環境100可以包括計算設備104、106、108、110、112和網路114;在一實施例中,網路114可以包括區域網路(Local Area Network,LAN)、廣域網路(Wide Area Network,WAN)、網際網路或其組合,並連接至網站、用戶設備(例如計算設備)和後端系統。在一實施例中,可以透過有線及/或無線通訊方式存取網路114。
在某些情況下,計算設備106、108可以是雲端計算系統的節點(未顯示),或者每個計算設備106、108可以是單獨的雲端計算系統,包括由網路互連並作為分布式處理系統工作的多台電腦。
在一實施例中,計算設備104~108可以運行任何適當的計算系統,使其能夠作為區塊鏈網路102中的節點;例如,計算設備104~108可以包括但不限於伺服器、臺式電腦、筆記本電腦、平板電腦計算設備和智慧手機。在一實施例中,計算設備104~108可以歸屬於相關實體並用於實現相應的服務,例如該服務可以用於對某一實體或多個實體之間的交易進行管理。
在一實施例中,計算設備104~108分別儲存有區塊鏈網路102對應的區塊鏈帳本。計算設備104可以是(或包含)用於提供瀏覽器功能的網路伺服器,該網路伺服器可基於網路114提供與區塊鏈網路102相關的可視化資訊。在一些情況下,計算設備104可以不參與區塊驗證,而是監控區塊鏈網路102以確定其他節點(譬如可以包括計算設備106-108)何時達成共識,並據此產生相應的區塊鏈可視化用戶界面。
在一實施例中,計算設備104可接收客戶端設備(例如計算設備110或計算設備112)針對區塊鏈可視化用戶界面發起的請求。在一些情況下,區塊鏈網路102的節點也可以作為客戶端設備,比如計算設備108的用戶可以使用運行在計算設備108上的瀏覽器向計算設備104發送上述請求。
響應於上述請求,計算設備104可以基於儲存的區塊鏈帳本產生區塊鏈可視化用戶界面(如網頁),並將產生的區塊鏈可視化用戶界面發送給請求的客戶端設備。如果區塊鏈網路102是私有類型或聯盟類型的區塊鏈網路,對區塊鏈可視化用戶界面的請求可以包括用戶授權資訊,在產生區塊鏈可視化用戶界面併發送給請求的客戶端設備之前,可以由計算設備104對該用戶授權資訊進行驗證,並在驗證通過後返回相應的區塊鏈可視化用戶界面。
區塊鏈可視化用戶界面可以顯示在客戶端設備上(例如可顯示在圖1所示的用戶界面116中)。當區塊鏈帳本發生更新時,用戶界面116的顯示內容也可以隨之發生更新。此外,用戶與用戶界面116的交互可能導致對其他用戶界面的請求,例如顯示區塊列表、區塊詳情、交易列表、交易詳情、帳戶列表、帳戶詳情、合約列表、合約詳情或者用戶對區塊鏈網路實施搜索而產生的搜索結果頁面等。
圖2是一示例性實施例提供的一種概念架構的示意圖。如圖2所示,該概念架構200包括實體層202、託管服務層204和區塊鏈網路層206。例如,實體層202可以包括三個實體:實體1、實體2和實體3,每個實體都有各自的交易管理系統208。
在一實施例中,託管服務層204可以包括每個事務管理系統208對應的介面210。例如,各個事務管理系統208使用協定(例如超文本傳輸協定安全(HTTPS)等)透過網路(例如圖1中的網路114)與各自的介面210通訊。在一些例子中,每個介面210可以提供各自對應的交易管理系統208與區塊鏈網路層206之間的通訊連接;更具體地,介面210可與區塊鏈網路層206的區塊鏈網路212通訊。在一些例子中,介面210和區塊鏈網路層206之間的通訊可以使用遠程程序呼叫(Remote Procedure Calls,RPCs)而實現。在一些例子中,介面210可以向交易管理系統208提供用於存取區塊鏈網路212的API介面。
如本文所述,區塊鏈網路212以對等網路的形式提供,該對等網路包括多個節點214,這些節點214分別用於對塊鏈資料所形成的區塊鏈帳本216進行持久化;其中,圖2中僅示出了一份區塊鏈帳本216,但區塊鏈網路212中可以存在多份區塊鏈帳本216或其副本,比如每一節點214可以分別維護一份區塊鏈帳本216或其副本。
需要指出的是:在本說明書中所描述的交易(transaction),是指用戶透過區塊鏈的客戶端創建,並需要最終發佈至區塊鏈的分布式資料庫中的一筆資料。其中,區塊鏈中的交易,存在狹義的交易以及廣義的交易之分。狹義的交易是指用戶向區塊鏈發佈的一筆價值轉移;例如,在傳統的比特幣區塊鏈網路中,交易可以是用戶在區塊鏈中發起的一筆轉帳。而廣義的交易是指用戶向區塊鏈發佈的一筆具有業務意圖的業務資料;例如,運營方可以基於實際的業務需求搭建一個聯盟鏈,依託於聯盟鏈部署一些與價值轉移無關的其它類型的在線業務(比如,租房業務、車輛調度業務、保險理賠業務、信用服務、醫療服務等),而在這類聯盟鏈中,交易可以是用戶在聯盟鏈中發佈的一筆具有業務意圖的業務訊息或者業務請求。
區塊鏈一般被劃分為三種類型:公有鏈(Public Blockchain),私有鏈(Private Blockchain)和聯盟鏈(Consortium Blockchain)。此外,還有多種類型的結合,比如私有鏈+聯盟鏈、聯盟鏈+公有鏈等不同組合形式。其中去中心化程度最高的是公有鏈。公有鏈以比特幣、以太坊為代表,加入公有鏈的參與者可以讀取鏈上的資料記錄、參與交易以及競爭新區塊的記帳權等。而且,各參與者(即節點)可自由加入以及退出網路,並進行相關操作。私有鏈則相反,該網路的寫入權限由某個組織或者機構控制,資料讀取權限受組織規定。簡單來說,私有鏈可以為一個弱中心化系統,參與節點具有嚴格限制且少。這種類型的區塊鏈更適合於特定機構內部使用。聯盟鏈則是介於公有鏈以及私有鏈之間的區塊鏈,可實現“部分去中心化”。聯盟鏈中各個節點通常有與之相對應的實體機構或者組織;參與者透過授權加入網路並組成利益相關聯盟,共同維護區塊鏈運行。
不論是公有鏈、私有鏈或是聯盟鏈,都可能提供智慧合約的功能。區塊鏈上的智慧合約是在區塊鏈系統上可以被交易觸發執行的合約。智慧合約可以透過代碼的形式定義。
以以太坊為例,支持用戶在以太坊網路中創建並呼叫一些複雜的邏輯,這是以太坊區別於比特幣區塊鏈技術的最大挑戰。以太坊作為一個可程式化區塊鏈的核心是以太坊虛擬機(EVM),每個以太坊節點都可以運行EVM。EVM是一個圖靈完備的虛擬機,這意味著可以透過它實現各種複雜的邏輯。用戶在以太坊中發佈和呼叫智慧合約就是在EVM上運行的。
而在本說明書的技術方案中,透過在區塊鏈節點上發佈和呼叫智慧合約,可以在資料所有方與資料使用方之間實現安全的端到端資料授權。下面結合實施例對本說明書的技術方案進行描述。
圖3是一示例性實施例提供的一種基於智慧合約的資料授權方法的流程圖。如圖3所示,該方法應用於區塊鏈節點,可以包括以下步驟:
步驟302,區塊鏈節點接收資料使用方提交的資料獲取交易,所述資料獲取交易用於請求獲取資料所有方持有的目標資料。
資料使用方可以直接在上述區塊鏈節點上產生資料獲取交易;或者,資料使用方可以在客戶端上產生資料獲取交易,並透過客戶端將該資料獲取交易發送至上述區塊鏈節點;或者,資料使用方可以在客戶端上產生資料獲取交易後,將該資料獲取交易發送至另一區塊鏈節點,並由該另一區塊鏈節點將該資料獲取交易發送至上述區塊鏈節點。當然,在上述資料獲取交易通過共識後,該資料獲取交易會被傳輸至區塊鏈網路中的所有區塊鏈節點,並分別由各個區塊鏈節點執行該資料獲取交易。
一般的,採用工作量證明(Proof of Work, POW)以及股權證明(Proof of Stake,POS)、委任權益證明(Delegated Proof of Stake,DPOS)等共識算法的區塊鏈網路中,爭奪記帳權的節點都可以在接收到區塊鏈交易後執行該區塊鏈交易。爭奪記帳權的節點中可能其中一個在本輪爭奪記帳權的過程中勝出,成為記帳節點。以上述的資料獲取交易為例,記帳節點可以將該資料獲取交易與其它交易一起打包並產生新的區塊,並將產生的新的區塊發送至其它節點進行共識。
對於採用實用拜占庭容錯(Practical Byzantine Fault Tolerance,PBFT)等機制的區塊鏈網路中,具有記帳權的節點在本輪記帳前已經商定好。因此,上述區塊鏈節點接收到資料獲取交易後,如果自身不是本輪的記帳節點,則可以將該資料獲取交易發送至記帳節點。對於本輪的記帳節點(可以是上述的區塊鏈節點),在將該資料獲取交易打包並產生新區塊的過程中或者之前,或在將該資料獲取交易與其它交易一起打包並產生新區塊的過程中或者之前,可以執行該資料獲取交易。所述記帳節點將該資料獲取交易打包(或還包括其它交易一起打包)並產生新的區塊後,將產生的新的區塊或者區塊頭發送至其它節點進行共識。
如上所述,採用POW機制的區塊鏈網路中,或者採用POS、DPOS、PBFT機制的區塊鏈網路中,本輪的記帳節點都可以將資料獲取交易打包並產生新的區塊,並將產生的新的區塊後區塊頭發送至其它節點進行共識。如果其它節點接收到所述區塊後經驗證沒有問題,可以將該新的區塊追加到原有的區塊鏈末尾,從而完成記帳過程,達成共識;其中,若資料獲取交易用於呼叫資料授權智慧合約,則完成了對該資料授權智慧合約的呼叫和執行。其它節點驗證記帳節點發來的新的區塊或區塊頭的過程中,也可以執行所述區塊中的資料獲取交易。
步驟304,所述區塊鏈節點執行所述資料獲取交易呼叫的資料授權智慧合約,所述資料授權智慧合約用於在確認所述資料使用方已獲得授權時獲取所述目標資料,使所述資料使用方獲得所述目標資料及/或對所述目標資料執行預設運算後得到的運算結果。
資料授權智慧合約被創建後,在區塊鏈上形成相應的合約帳戶,該合約帳戶存在特定的合約地址。資料獲取交易可以在諸如該資料獲取交易的to欄位包含上述的合約地址,以呼叫資料授權智慧合約。如前所述,區塊鏈網路中的所有區塊鏈節點之間完成共識後,每個區塊鏈節點分別接收到資料獲取交易、讀取該資料獲取交易的to欄位並呼叫上述的資料授權智慧合約,具體是指將資料授權智慧合約的代碼讀入區塊鏈節點上的EVM中予以執行。
資料獲取交易中可以包含目標資料的資訊,比如該目標資料的雜湊值或其他任意描述資訊,只要能夠指向目標資料即可。例如,該目標資料的資訊可以包含於資料獲取交易的data欄位中;當資料獲取交易呼叫資料授權智慧合約時,data欄位中的內容可以作為該資料授權智慧合約的輸入資訊。
資料授權智慧合約可以包含對應的授權方名單,以用於記錄對資料所有方持有的資料已獲得授權的對象資訊,即授權方的資訊。那麼,如果資料授權智慧合約確認資料使用方位於授權方名單內,則可以確認該資料使用方已獲得授權。基於授權方名單的管理方式,可以對資料所有方所持有的全部資料進行一次性授權,並且即便資料所有方所持有的資料發生增加或減少時,也不會影響授權方名單的內容,即能夠兼容資料所有方所持有資料的更新。
在資料授權智慧合約被創建時,授權方名單的資訊可以被寫入合約代碼中,使得該授權方名單的內容不可更改。那麼,可能需要對資料授權智慧合約進行替換或版本迭代,以實現對授權方名單的更新。或者,資料授權智慧合約可以存在對應的一個或多個狀態,區塊鏈節點上可以維護該一個或多個狀態的取值,當狀態的取值為授權方的資訊時,該一個或多個狀態相當於上述的授權方名單;其中,資料所有方可以透過向區塊鏈網路中提交區塊鏈交易,該區塊鏈交易可以呼叫資料授權智慧合約中定義的授權介面,使得授權方名單的內容可以在資料授權智慧合約被執行後發生更新,而無需對資料授權智慧合約進行替換或版本迭代。或者,資料授權智慧合約可以呼叫另一智慧合約,該另一智慧合約的代碼或狀態可以用於記錄授權方名單;其中,如果授權方名單被不可更改地寫入該另一智慧合約的代碼中,那麼在需要對授權方名單進行更新時,可以創建新的智慧合約、該新的智慧合約的代碼中包含更新後的授權方名單,然後由資料授權智慧合約呼叫新的智慧合約的合約地址即可(被呼叫的合約地址可以作為資料授權智慧合約的一個狀態,該狀態的取值可以發生變化);而如果授權方名單被寫入上述另一智慧合約對應的狀態中,那麼如前所述只需要對狀態的取值進行更新,即可實現授權方名單的更新,而資料授權智慧合約所呼叫的合約地址也無需更新,該合約地址既可以固定寫入資料授權智慧合約的代碼中,也可以寫入資料授權智慧合約的一個狀態中。
資料使用方可以臨時向資料所有方請求獲取授權。例如,資料使用方可以向區塊鏈網路中提交授權請求交易,該授權請求交易呼叫上述資料授權智慧合約中定義的請求介面,使得區塊鏈節點執行該授權請求交易後,可以透過呼叫資料授權智慧合約中定義的請求介面,使資料授權智慧合約在交易日誌中寫入授權請求事件。然後,資料所有方可以透過事件監聽回調機制,在監聽到交易日誌中寫入的上述授權請求事件時做出響應。例如,當確定資料使用方能夠獲得授權時,資料所有方可以向區塊鏈網路提交授權確認交易,該授權確認交易呼叫上述資料授權智慧合約中定義的授權介面,使得區塊鏈節點執行該授權確認交易後,可以透過呼叫資料授權智慧合約中定義的授權介面,使資料授權智慧合約將資料使用方標記為已獲得授權。將資料使用方標記為已獲得授權,一種情況下可以是將資料使用方添加至授權方名單中,其添加過程如前文所述、此處不再贅述,那麼只要資料使用方處於授權方名單內,即可隨時請求獲取資料所有方持有的資料,相當於資料使用方獲得了長期授權;另一種情況下,資料授權智慧合約只是確認資料使用方的本次操作獲得了授權,使得資料授權智慧合約可以在本次對資料使用方的資料獲取請求做出影響,但本次的資料獲取交易完成後,資料使用方將喪失授權,需要重新向資料所有方請求授權。
雖然相比於上述的後一種情況而言,授權方名單屬一種長期授權,但是並不一定意味著永久授權。例如,資料所有方可以透過更新授權方名單,將一個或多個授權方剔除、使其失去授權;再例如,授權方名單中的每一授權方可以存在一定數值的剩餘授權時長及/或剩餘授權次數,當剩餘授權時長或剩餘授權次數清零時,相應的授權方可以被自動從授權方名單中剔除,相當於對授權方名單內的授權方實施的“老化”機制。
資料使用方可以在授權請求交易中包含目標資料的資訊,該目標資料的資訊可以被寫入交易日誌中的授權請求事件內,以使得資料所有方獲知資料使用方所希望請求的授權範圍;如果授權請求交易中並未包含任何資料的資訊,則表明資料使用方請求獲取資料所有方持有的全部資料的授權。相應地,資料所有方可以在授權確認交易中添加目標資料的資訊,以表明針對該目標資料向資料使用方賦予授權;如果資料所有方提交的授權確認交易中並未包含任何資料的資訊,則表明資料所有方向資料使用方開放了所有資料的授權。因此,在一些情況下,資料使用方的資料獲取交易中包含的目標資料的資訊可能與其所獲得的授權範圍(即獲得了針對哪些資料的授權)不一致,此時可能導致資料獲取交易無法正常執行或資料授權智慧合約無法成功獲得資料獲取交易中指明的目標資料。
資料授權智慧合約在獲得目標資料後,該目標資料可以被直接提供至資料使用方。例如,資料授權智慧合約可以將目標資料寫入資料獲取交易的交易日誌中,使得資料使用方可以透過監聽交易日誌來獲得該目標資料;其中,區塊鏈節點可以對目標資料進行加密,使得加密後目標資料被寫入上述的交易日誌中,那麼持有密鑰的資料使用方可以對加密後目標資料進行讀取和解密、得到目標資料,而無關用戶則無法對加密後目標資料進行解密,從而既可以確保資料使用方獲得目標資料,又可以避免目標資料以明文形式記入交易日誌時被無關人員獲得,避免目標資料發生外泄,保障了資料所有方的權益。
資料授權智慧合約在獲得目標資料後,可以對該目標資料執行預設運算,而運算結果被提供至資料使用方。該預設運算可以為資料使用方希望採用的任意運算,本說明書並不對此進行限制。例如,該預設運算的運算規則可以被預定義於資料授權智慧合約中;其中,該資料授權智慧合約中可以定義一種或多種運算規則,尤其是當存在多種運算規則時,可由資料使用方在資料獲取交易中指明所需採用的運算規則(比如在資料獲取交易的data欄位添加該運算規則對應的標識等)。再例如,該預設運算的運算規則可以由資料獲取交易傳入資料授權智慧合約,比如可以將該預設運算的運算規則寫入資料獲取交易的data欄位,進而傳入資料授權智慧合約中。當目標資料經由上述的預設運算得到相應的運算結果時,如果資料使用方無法由運算結果反推出目標資料的取值,就可以在滿足資料使用方的資料獲取需求的情況下,避免資料使用方直接獲得目標資料,防止資料使用方對該目標資料造成外泄而侵犯資料所有方的權益,確保目標資料始終僅由資料所有方持有。
資料所有方持有的各個資料之間,可以存在不同的隱私級別;相應地,不同隱私級別的資料可以具有差異化的處理方式。例如,資料所有方可以分別持有隱私級別相對較低的資料和隱私級別相對較高的資料,即低隱私級別的資料和高隱私級別的資料;相應地,當目標資料屬低隱私級別時,該目標資料可以被提供至資料使用方,即資料所有方不關注低隱私級別的資料是否會發生外泄,而當目標資料屬高隱私級別時,目標資料需要被執行預設運算,以使相應的運算結果被提供至資料使用方,以確保高隱私級別的資料不會發生外泄。如果目標資料同時包含低隱私級別和高隱私級別的資料時,可以將低隱私級別的目標資料直接提供至資料使用方、將高隱私級別的目標資料經由預設運算後將運算結果提供至資料使用方;或者,尤其是在資料使用方已經在資料獲取交易中指明所需採用的預設運算的運算規則的情況下,可以將所有目標資料一併實施預設運算後,將運算結果提供至資料使用方。
目標資料及/或運算結果可以被資料授權智慧合約透過事件機制寫入交易日誌中,譬如在交易日誌中形成交易執行結果事件,使得資料使用方可以對該交易執行結果事件進行監聽,以獲得上述的目標資料及/或運算結果。該監聽過程的原理類似於前述的資料所有方對授權請求事件進行監聽,此處不再贅述。
目標資料可以儲存於區塊鏈節點對應的資料庫中,使得資料授權智慧合約被執行後,可以直接從該資料庫中讀取目標資料,以提供至資料使用方。為了避免目標資料被無關人員獲得,可以對目標資料進行加密,並將相應的加密後目標資料存入上述的資料庫中,使得無關人員至多僅能夠獲得該加密後目標資料,從而避免目標資料發生外泄。
對於目標資料的加密處理,可以結合可信執行環境(Trusted Execution Environment,TEE)來實現;由於目標資料可以為資料使用方所請求、資料所有方持有的任意資料,即資料所有方持有的任意資料均可以採用類似的方式實現加密處理。TEE是基於CPU硬體的安全擴展,且與外部完全隔離的可信執行環境。TEE最早是由Global Platform提出的概念,用於解決移動設備上資源的安全隔離,平行於操作系統為應用程式提供可信安全的執行環境。例如,英特爾的軟體保護擴展(SGX)等TEE技術隔離了代碼執行、遠程證明、安全配置、資料的安全儲存以及用於執行代碼的可信路徑。在TEE中運行的應用程式受到安全保護,幾乎不可能被第三方存取。
以Intel SGX技術為例。區塊鏈節點利用CPU中新增的處理器指令,在內部記憶體中可以分配一部分區域EPC(Enclave Page Cache,圍圈頁面緩存或飛地頁面緩存),將EVM加載至EPC中,並透過遠程證明確認所加載EVM的代碼與密鑰管理伺服器處EVM的代碼一致(例如比較hash值)。在遠程證明通過後,區塊鏈節點透過CPU內的加密引擎MEE(Memory Encryption Engine)對上述目標資料進行加密存入所述EPC中。EPC中加密的內容只有進入CPU後才能夠被解密成明文。在CPU中,對明文的目標資料進行加密,得到加密後目標資料,以儲存於區塊鏈節點對應的資料庫中。而響應於資料使用方提交的資料獲取交易,區塊鏈節點可以在可信執行環境中執行資料授權智慧合約,以將加密後目標資料讀入可信執行環境中進行解密後,由資料授權智慧合約執行預設運算。例如,在遠程證明通過後,區塊鏈節點透過CPU內的加密引擎MEE對獲得的加密後目標資料、資料授權智慧合約的代碼分別進行加密存入所述EPC中。EPC中加密的內容只有進入CPU後才能夠被解密。在CPU中,可以將加密後目標資料解密為明文的目標資料,並透過執行資料授權智慧合約的代碼,對目標資料執行預設運算。因此,透過在TEE中對目標資料進行加解密以及執行資料授權智慧合約的代碼,可以確保提供安全可靠的環境,避免受到外界因素的干擾。
區塊鏈節點在針對目標資料進行加密時,可以採用對稱加密的密鑰,比如該密鑰可以由密鑰管理伺服器發送至區塊鏈節點,再比如該密鑰可以由各個區塊鏈節點之間協商得到。上述密鑰也可以是非對稱加密的密鑰,本說明書並不對此進行限制。密鑰可以儲存於區塊鏈節點上創建的安全圍圈中,比如該安全圍圈可以為QE(Quoting Enclave)圍圈,而非AE(Application Enclave)圍圈。
資料所有方可以透過向區塊鏈網路提交隱私存證交易的方式,將目標資料存證於區塊鏈上。其中,隱私存證交易的交易內容中包含明文的目標資料,但該隱私存證交易的交易內容本身可以透過密鑰加密,使得該隱私存證交易所在的區塊被添加至區塊鏈後,無法透過查看該隱私存證交易的交易內容而獲得目標資料。相應地,區塊鏈節點的可信執行環境內可以維護有密鑰,使得區塊鏈節點在收到資料所有方提交的隱私存證交易後,可以在可信執行環境中對隱私存證交易進行解密,以得到交易內容中包含的目標資料。資料所有方可以採用對稱加密方式或非對稱加密方式對交易內容進行加密,本說明書並不對此進行限制。其中,密鑰可由區塊鏈節點與資料所有方協商產生;或者,可由密鑰管理伺服器產生後分別下發至資料所有方和區塊鏈節點。
資料所有方可以透過向區塊鏈網路提交存證交易的方式,將目標資料存證於區塊鏈上。存證交易的交易內容可以包括創建及/或呼叫智慧合約,使得區塊鏈節點在收到資料所有方提交的存證交易後,可以在可信執行環境中執行相應的交易內容,比如執行上述所需創建及/或呼叫的智慧合約的代碼,以產生上述的目標資料。進一步地,區塊鏈節點可以將該目標資料加密後儲存至資料庫中。由於目標資料僅在可信執行環境中以明文形式出現,而在可信執行環境之外均以密文形式出現,因而不必擔心明文的目標資料發生外泄。
除了存證於區塊鏈節點的資料庫之外,目標資料可由資料所有方儲存於鏈下渠道,而區塊鏈節點僅儲存目標資料的數位摘要,譬如該數位摘要可以為目標資料的雜湊值。那麼,可以透過跨鏈技術使得資料授權智慧合約可以從鏈下渠道獲得目標資料,並將目標資料及/或運算結果提供至資料使用方。以基於預言機的跨鏈技術為例:資料授權智慧合約可以透過呼叫預言機智慧合約,使預言機智慧合約從鏈下渠道獲取目標資料,然後資料授權智慧合約可以將獲得的目標資料以事件機制寫入資料獲取交易的交易日誌,及/或對目標資料執行預設運算後,將運算結果以事件機制寫入資料獲取交易的交易日誌,使得資料使用方可以監聽交易日誌以獲得目標資料及/或運算結果。
需要指出的是:本說明書中的由資料所有方持有、資料使用方請求的“資料”應當理解為一種廣義概念,比如數值、文字、圖像、音訊、視訊、代碼、程式、模型(如人工智慧模型)等,本說明書並不對此進行限制。
圖4是一示例性實施例提供的一種基於區塊鏈網路實現的端到端資料授權的示意圖。如圖4所示,假定在區塊鏈網路中存在N1、N2、N3、N4和N5等節點,該區塊鏈網路可以為服務平臺與若干合作方組成的聯盟鏈。例如,在供應鏈金融場景下,節點N1、N2、N4和N5等分別直接或間接對應於若干供應鏈金融企業,節點N3對應於服務平臺,而用戶可以基於該服務平臺獲取各個供應鏈金融企業的目標資料或基於目標資料得到的運算結果;再例如,在***場景下,節點N1、N2、N4和N5等分別直接或間接對應於若干商家,節點N3對應於服務平臺,而用戶可以基於該服務平臺獲取各個商家開具的***、***中的部分資訊或者基於***資訊得到的運算結果;當然,本說明書的技術方案還可以應用於其他場景,本說明書並不對此進行限制。為了便於理解,下面以供應鏈金融場景為例進行描述。
假定用戶Ua希望獲知供應鏈金融企業C1、C2的平均資產額,以用於相關用途。但是,資產額對於企業C1、C2而言均為需要保密的資料,不能夠由企業C1、C2分別將自身的資產額提供至用戶Ua,由用戶Ua進而計算出平均資產額。因此,可以透過本說明書的技術方案,在滿足用戶Ua的資料獲取需求的情況下,避免暴露企業C1、C2的資料隱私,兼顧資料使用方(如用戶Ua)和資料所有方(如企業C1、C2)的權益。例如,圖5是一示例性實施例提供的一種基於區塊鏈網路實現的端到端資料授權的交互流程圖。如圖5所示,用戶Ua、區塊鏈節點和企業C1-C2之間的交互流程可以包括以下步驟:
步驟501,用戶Ua產生授權請求交易,並提交至區塊鏈網路。
用戶Ua使用的計算設備上可以運行客戶端,並基於該客戶端產生授權請求交易,以及提交至區塊鏈網路。或者,用戶Ua可以在客戶端上產生授權請求交易後,將該授權請求交易上傳至服務平臺40,由該服務平臺40將授權請求交易提交至區塊鏈網路。或者,用戶Ua可以向服務平臺40發起授權請求,使得服務平臺40產生授權請求交易,以及提交至區塊鏈網路。
向區塊鏈網路提交授權請求交易的目的,在於請求企業C1、C2向該用戶Ua賦予相關授權,使得用戶Ua可以最終獲得上述的平均資產額。授權請求交易中可以包含資料描述資訊,以描述用戶Ua希望分別向企業C1、C2請求授權的資料,比如該資料描述資訊可以分別描述企業C1的資產額、企業C2的資產額;相應地,用戶Ua可以據此獲得企業C1的資產額的授權、企業C2的資產額的授權,但不會獲得其他資料的授權。或者,授權請求交易可以不包含資料描述資訊,表明該用戶Ua希望分別向企業C1、C2請求獲得對所有資料的授權,使得用戶Ua對企業C1、C2持有的所有資料均獲得了授權,包括上述的資產額。下面以授權請求交易中包含資料描述資訊為例,對後續步驟進行描述。
授權請求交易最初被提交至區塊鏈網路中的某個節點。譬如,當服務平臺40在區塊鏈網路中存在對應的節點N3時,該授權請求交易通常可以被服務平臺40提交至該節點N3,當然也不排除可以提交至其他節點。類似地,用戶Ua使用的計算設備也可以將授權請求交易提交至某一節點。授權請求交易被提交至區塊鏈網路後,可以在各個節點之間進行共識,而經過共識的授權請求交易可以在每個節點上分別執行。共識過程可以採用相關技術中的工作量證明(Proof of Work, POW)、股權證明(Proof of Stake,POS)、委任權益證明(Delegated Proof of Stake,DPOS)、實用拜占庭容錯(Practical Byzantine Fault Tolerance,PBFT)或其他共識機制,本說明書並不對此進行限制。
步驟502,區塊鏈節點透過呼叫智慧合約T1的請求介面,協助用戶Ua獲得資料授權,並在交易日誌中寫入授權請求事件。
經過共識後,區塊鏈網路中的每個節點均需要執行上述的授權請求交易。區塊鏈節點在執行授權請求交易時,透過讀取該授權請求交易在to欄位中填寫的帳戶地址,呼叫智慧合約T1。其中,智慧合約T1的代碼可以在邏輯上形成多個介面,以分別實現不同的功能,而授權請求交易中可以具體指明所需呼叫的介面。譬如,當授權請求交易呼叫了智慧合約T1的請求介面時,可以據此請求獲取相關授權。
例如,授權請求交易中可以包含前述的資料描述資訊,以及用戶Ua的資訊(如用戶Ua的簽名)、企業C1-C2的資訊(如企業C1、C2的公鑰)等,使得智慧合約T1的請求介面被呼叫後,可以在授權請求交易的交易日誌中寫入授權請求事件,該授權請求事件的內容可以包含上述的資料描述資訊、用戶Ua的資訊、企業C1-C2的資訊等,表明用戶Ua希望從企業C1、C2處獲得資料描述資訊對應的目標資料。
步驟503,企業C1、C2監聽授權請求事件。
由於所有區塊鏈節點的操作一致,因而企業C1、C2可以透過存取對應的任意區塊鏈節點,即可基於事件監聽回調機制獲知上述的授權請求事件,以確定用戶Ua希望從自身處獲取的目標資料。
步驟504,企業C1、C2分別產生授權確認交易,並提交至區塊鏈網路。
當企業C1、C2同意用戶Ua獲取相關目標資料時,可以分別產生並提交授權確認交易,以表明自身同意向用戶Ua提供諸如資產額等目標資料。以企業C1為例:在企業C1產生的授權確認交易中,可以包含其自身同意向用戶Ua提供的目標資料對應的資料描述資訊、用戶Ua的公鑰、企業C1的簽名等;或者,授權確認交易中可以包含上述授權請求交易的交易編號等資訊,以表明其同意該授權請求交易的相關請求。
步驟505,區塊鏈節點呼叫智慧合約T1的授權介面,更新用戶Ua的授權狀態,並在交易日誌中寫入授權狀態更新事件。
如前所述,智慧合約T1包含預定義的若干介面。在企業C1提交的授權確認交易1、企業C2提交的授權確認交易2中,to欄位可以分別包含智慧合約T1的合約地址,並且可以指明希望呼叫授權介面。而智慧合約T1可以透過運行授權介面對應的代碼,確認企業C1、C2分別同意向用戶Ua賦予對諸如資產額等目標資料的授權,從而將用戶Ua的授權狀態更新為已授權狀態。如前所述,用戶Ua的已授權狀態可能採用多種形式進行記錄,這取決於智慧合約T1中定義的規則,此處不再贅述。
針對用戶Ua的授權狀態的更新情況,智慧合約T1可以在交易日誌中寫入相應的授權狀態更新事件,以表明用戶Ua已經獲得對於企業C1、C2的資產額的授權。
步驟506,用戶Ua監聽授權狀態更新事件。
與步驟503相類似的,用戶Ua可以基於事件監聽回調機制對區塊鏈節點中對應於授權確認交易的交易日誌進行監聽,並基於監聽到的授權狀態更新事件,確定自身已經獲得對於企業C1、C2的資產額的授權。
步驟507,用戶Ua產生資料獲取交易,並提交至區塊鏈網路。
與前述的授權請求交易相類似的,用戶Ua可以透過多種方式產生並提交資料獲取交易,比如獨立產生並提交、獨立產生後由服務平臺提交、由服務平臺產生並提交等,此處不再贅述。
資料獲取交易中可以包含資料描述資訊,以描述用戶Ua希望獲得企業C1、C2的平均資產額(具體可以包含企業C1、C2的資產額的資料描述資訊,以及採用的運算規則為求均值);或者,資料獲取交易中可以包含前述的授權請求交易的交易編號或者前述的授權確認交易的交易編號,同樣可以間接表明希望獲取企業C1、C2的平均資產額。
步驟508,區塊鏈節點呼叫智慧合約T1的資料介面,並在交易日誌中寫入交易執行結果事件。
透過呼叫智慧合約T1的資料介面,可以向智慧合約T1表明:用戶Ua希望獲取企業C1、C2的平均資產額。那麼,智慧合約T1可以查詢用戶Ua的授權狀態。
如果用戶Ua並未獲得授權,可以終止交易;或者,智慧合約T1可以向交易日誌中寫入授權請求事件,從而透過類似於步驟502~505的過程,臨時向企業C1、C2請求授權,此時資料獲取交易相當於同時實現了授權請求和資料獲取的功能,可以省去前述授權請求交易的相關操作和步驟。
如果用戶Ua已獲得授權,智慧合約T1可以獲取企業C1、C2的資產額。例如,當資產額的取值存證於區塊鏈時,比如資產額的取值以密文形式存證於區塊鏈上,智慧合約T1可以讀取加密後資產額、在區塊鏈節點處的可信執行環境中解密得到明文的資產額。再例如,當資產額的取值存證於企業C1、C2分別維護的鏈下渠道時,智慧合約T1可以透過跨鏈技術獲取資產額的取值,比如智慧合約T1可以呼叫預言機智慧合約T2,使得預言機智慧合約T2可以從鏈下渠道分別讀取企業C1、C2的資產額,並返回至智慧合約T1。
智慧合約T1在獲得企業C1、C2的資產額後,可以按照預定義的運算規則計算出相應的平均資產額。例如,當企業C1的資產額為m1、企業C2的資產額為m2時,可以計算得到平均資產額M=(m1+m2)/2。相應地,智慧合約T1可以將該平均資產額M的取值添加至交易執行結果事件中,並寫入資料獲取交易的交易日誌。
步驟509,用戶Ua監聽交易執行結果事件。
如前所述,用戶Ua可以基於事件監聽回調機制對資料獲取交易的交易日誌進行監聽,以監聽到交易執行結果事件。如果資料獲取交易順利實施,那麼用戶Ua可以從該交易執行結果事件中獲得企業C1、C2的平均資產額M,使得既可以滿足用戶Ua對該平均資產額的需求,又可以避免暴露企業C1、企業C2各自資產額的取值。
圖6是一示例性實施例提供的一種設備的示意結構圖。請參考圖6,在硬體層面,該設備包括處理器602、內部匯流排604、網路介面606、內部記憶體608以及非易失性儲存器610,當然還可能包括其他業務所需要的硬體。處理器602從非易失性儲存器610中讀取對應的電腦程式到內部記憶體608中然後運行,在邏輯層面上形成基於智慧合約的資料授權裝置。當然,除了軟體實現方式之外,本說明書一個或多個實施例並不排除其他實現方式,比如邏輯器件抑或軟硬體結合的方式等等,也就是說以下處理流程的執行主體並不限定於各個邏輯單元,也可以是硬體或邏輯器件。
請參考圖7,在軟體實施方式中,該基於智慧合約的資料授權裝置可以包括:
接收單元701,使區塊鏈節點接收資料使用方提交的資料獲取交易,所述資料獲取交易用於請求獲取資料所有方持有的目標資料;
執行單元702,使所述區塊鏈節點執行所述資料獲取交易呼叫的資料授權智慧合約,所述資料授權智慧合約用於在確認所述資料使用方已獲得授權時獲取所述目標資料,使所述資料使用方獲得所述目標資料及/或對所述目標資料執行預設運算後得到的運算結果。
可選的,所述資料授權智慧合約存在對應的授權方名單;其中,所述資料授權智慧合約在確認所述資料使用方位於所述授權方名單內時,確認所述資料使用方已獲得授權。
可選的,還包括:
授權請求單元703,使所述區塊鏈節點根據所述資料使用方提交的授權請求交易,呼叫所述資料授權智慧合約中定義的請求介面,使所述資料授權智慧合約在交易日誌中寫入授權請求事件,以由所述資料所有方進行監聽;
授權確認單元704,使所述區塊鏈節點根據所述資料所有方提交的授權確認交易,呼叫所述資料授權智慧合約中定義的授權介面,使所述資料授權智慧合約將所述資料使用方標記為已獲得授權。
可選的,當所述目標資料屬低隱私級別時,所述目標資料被提供至所述資料使用方;當所述目標資料屬高隱私級別時,所述目標資料被執行所述預設運算,以使相應的運算結果被提供至所述資料使用方。
可選的,所述預設運算的運算規則被預定義於所述資料授權智慧合約中;或者,所述預設運算的運算規則由所述資料獲取交易傳入所述資料授權智慧合約。
可選的,所述目標資料及/或所述運算結果被所述資料授權智慧合約寫入交易日誌的交易執行結果事件中,以由所述資料使用方進行監聽並獲取。
可選的,還包括:
資料加密單元705,使所述區塊鏈節點在可信執行環境中對所述目標資料進行加密,得到加密後目標資料,以儲存於所述區塊鏈節點對應的資料庫中;
資料運算單元706,使所述區塊鏈節點在所述可信執行環境中執行所述資料授權智慧合約,以將所述加密後目標資料讀入所述可信執行環境中進行解密後,由所述資料授權智慧合約執行所述預設運算。
可選的,還包括:
交易解密單元707,使所述區塊鏈節點在收到所述資料所有方提交的隱私存證交易後,在所述可信執行環境中對所述隱私存證交易進行解密,以得到交易內容中包含的所述目標資料;
或者,資料產生單元708,使所述區塊鏈節點在收到所述資料所有方提交的存證交易後,在所述可信執行環境中執行相應的交易內容,以產生所述目標資料。
可選的,所述區塊鏈節點儲存了所述目標資料的數位摘要,所述目標資料由所述資料所有方儲存於鏈下渠道;其中,所述資料授權智慧合約透過呼叫預言機智慧合約,使所述預言機智慧合約從所述鏈下渠道獲取所述目標資料,以由所述資料授權智慧合約執行所述預設運算。
上述實施例闡明的系統、裝置、模組或單元,具體可以由電腦晶片或實體實現,或者由具有某種功能的產品來實現。一種典型的實現設備為電腦,電腦的具體形式可以是個人電腦、膝上型電腦、行動電話、相機電話、智慧電話、個人數位助理、媒體播放器、導航設備、電子郵件收發設備、遊戲控制台、平板電腦、可穿戴設備或者這些設備中的任意幾種設備的組合。
在一個典型的配置中,電腦包括一個或多個處理器(CPU)、輸入/輸出介面、網路介面和內部記憶體。
內部記憶體可能包括電腦可讀媒體中的非永久性儲存器,隨機存取記憶體(RAM)及/或非易失性內部記憶體等形式,如唯讀記憶體(ROM)或快閃記憶體(flash RAM)。內部記憶體是電腦可讀媒體的示例。
電腦可讀媒體包括永久性和非永久性、可移動和非可移動媒體可以由任何方法或技術來實現資訊儲存。資訊可以是電腦可讀指令、資料結構、程式的模組或其他資料。電腦的儲存媒體的例子包括,但不限於相變內部記憶體(PRAM)、靜態隨機存取記憶體(SRAM)、動態隨機存取記憶體(DRAM)、其他類型的隨機存取記憶體(RAM)、唯讀記憶體(ROM)、電可擦除可程式化唯讀記憶體(EEPROM)、快閃記憶體或其他內部記憶體技術、唯讀光碟唯讀儲存器(CD-ROM)、數位多功能光碟(DVD)或其他光學儲存、磁盒式磁帶、磁盤儲存、量子記憶體、基於石墨烯的儲存媒體或其他磁性儲存設備或任何其他非傳輸媒體,可用於儲存可以被計算設備存取的資訊。按照本文中的界定,電腦可讀媒體不包括暫存電腦可讀媒體(transitory media),如調變的資料信號和載波。
還需要說明的是,術語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、商品或者設備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、商品或者設備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,並不排除在包括所述要素的過程、方法、商品或者設備中還存在另外的相同要素。
上述對本說明書特定實施例進行了描述。其它實施例在所附申請專利範圍的範圍內。在一些情況下,在申請專利範圍中記載的動作或步驟可以按照不同於實施例中的順序來執行並且仍然可以實現期望的結果。另外,在圖式中描繪的過程不一定要求示出的特定順序或者連續順序才能實現期望的結果。在某些實施方式中,多任務處理和並行處理也是可以的或者可能是有利的。
在本說明書一個或多個實施例使用的術語是僅僅出於描述特定實施例的目的,而非旨在限制本說明書一個或多個實施例。在本說明書一個或多個實施例和所附申請專利範圍中所使用的單數形式的“一種”、“所述”和“該”也旨在包括多數形式,除非上下文清楚地表示其他含義。還應當理解,本文中使用的術語“及/或”是指並包含一個或多個相關聯的列出項目的任何或所有可能組合。
應當理解,儘管在本說明書一個或多個實施例可能採用術語第一、第二、第三等來描述各種資訊,但這些資訊不應限於這些術語。這些術語僅用來將同一類型的資訊彼此區分開。例如,在不脫離本說明書一個或多個實施例範圍的情況下,第一資訊也可以被稱為第二資訊,類似地,第二資訊也可以被稱為第一資訊。取決於語境,如在此所使用的詞語“如果”可以被解釋成為“在……時”或“當……時”或“響應於確定”。
以上所述僅為本說明書一個或多個實施例的較佳實施例而已,並不用以限制本說明書一個或多個實施例,凡在本說明書一個或多個實施例的精神和原則之內,所做的任何修改、等同替換、改進等,均應包含在本說明書一個或多個實施例保護的範圍之內。
100:示例環境
102:區塊鏈網路
104:計算設備
106:計算設備
108:計算設備
110:計算設備
112:計算設備
114:網路
116:用戶界面
200:概念架構
202:實體層
204:託管服務層
206:區塊鏈網路層
208:管理系統
210:介面
212:區塊鏈網路
214:節點
216:區塊鏈帳本
302:步驟
304:步驟
N1:節點
N2:節點
N3:節點
N4:節點
N5:節點
Ua:用戶
40:服務平臺
501:步驟
502:步驟
503:步驟
504:步驟
505:步驟
506:步驟
507:步驟
508:步驟
509:步驟
602:處理器
604:內部匯流排
606:網路介面
608:內部記憶體
610:非易失性儲存器
701:接收單元
702:執行單元
703:授權請求單元
704:授權確認單元
705:資料加密單元
706:資料運算單元
707:交易解密單元
708:資料產生單元
[圖1]是一示例性實施例提供的一種示例環境的示意圖。
[圖2]是一示例性實施例提供的一種概念架構的示意圖。
[圖3]是一示例性實施例提供的一種基於智慧合約的資料授權方法的流程圖。
[圖4]是一示例性實施例提供的一種基於區塊鏈網路實現的端到端資料授權的示意圖。
[圖5]是一示例性實施例提供的一種基於區塊鏈網路實現的端到端資料授權的交互流程圖。
[圖6]是一示例性實施例提供的一種設備的結構示意圖。
[圖7]是一示例性實施例提供的一種基於智慧合約的資料授權裝置的方塊圖。