TW202036345A - 使用多重金鑰對簽署的程式執行和資料證明方案 - Google Patents
使用多重金鑰對簽署的程式執行和資料證明方案 Download PDFInfo
- Publication number
- TW202036345A TW202036345A TW108145111A TW108145111A TW202036345A TW 202036345 A TW202036345 A TW 202036345A TW 108145111 A TW108145111 A TW 108145111A TW 108145111 A TW108145111 A TW 108145111A TW 202036345 A TW202036345 A TW 202036345A
- Authority
- TW
- Taiwan
- Prior art keywords
- sub
- code
- key
- logic
- node
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/53—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/0819—Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
- H04L9/083—Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) involving central third party, e.g. key distribution center [KDC] or trusted third party [TTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
- G06F21/72—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/006—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols involving public key infrastructure [PKI] trust models
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0861—Generation of secret information including derivation or calculation of cryptographic keys or passwords
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/14—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
- H04L9/3239—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3247—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/50—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Health & Medical Sciences (AREA)
- Mathematical Physics (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
- Storage Device Security (AREA)
Abstract
用於程式執行和資料證明方案的方法、系統和裝置,包括編碼在電腦儲存媒體上的電腦程式,以證實預期在TEE中執行的子邏輯代碼確實已執行並且所得到的資料是可信的。在一些實施方式中,多個子邏輯代碼中的每個子邏輯代碼被註冊並儲存在TEE內,並且生成對應於所述子邏輯代碼的金鑰對(私密金鑰,公開金鑰)。客戶端接收並儲存公開金鑰,將包含有要執行的子邏輯代碼的標識的請求發送到TEE。對應於標識的子邏輯代碼在TEE內執行,TEE使用透過使用子邏輯代碼的私密金鑰生成的數位簽署對所述結果進行簽署。客戶端根據所述數位簽署和所述子邏輯代碼的公開金鑰驗證所述結果。
Description
本文涉及用於在可信執行環境(TEE)中執行的程式的程式執行和資料證明。
分散式帳本系統(DLS),也可稱為共識網路和/或區塊鏈網路,使得參與的實體能夠安全且不可篡改地儲存資料。在不引用任何特定用例的情況下,DLS通常被稱為區塊鏈網路。區塊鏈網路的類型範例可以包括為選定的實體組群提供的聯盟區塊鏈網路,所述實體組群控制共識程序,並且所述聯盟區塊鏈網路包括存取控制層。
所謂可信執行環境(TEE)是硬體(一個或多個處理器,儲存器)中與硬體的操作環境隔離的可信環境。TEE是處理器的單獨的安全區域,可確保在主處理器中執行的代碼和載入主處理器或從主處理器提供的資料的機密性和完整性。但是,在執行代碼之前,首先執行認證處理,以驗證(證明)TEE是否按預期運行且TEE是否正在執行預期在其中執行的代碼。
在某些情況下,在TEE中執行的代碼執行狀態子邏輯。即,可以根據各個狀態在TEE內執行不同的子邏輯。因此,當客戶端呼叫在TEE內執行的程式時,該呼叫包括請求參數、子邏輯代碼和子邏輯代碼的狀態資料。在TEE中執行的程式載入子邏輯代碼和狀態資料,並根據請求參數執行子邏輯以將結果提供給客戶端。但是,在所述認證處理中,只有程式的靜態代碼和靜態資料經測定和遠端驗證。因此,在TEE中執行的程式需要提供證明,以證實預期的子邏輯已執行,且傳回的結果是可信的。
儘管已提出用於在TEE中執行的程式的程式執行和資料證明的技術,但是解決安全性和資源消耗問題的更有效的解決方案將是有利的。
本文描述了用於在可信執行環境(TEE)中執行的程式的程式執行和資料證明的技術。
總體而言,本文所描述的主題的創新態樣關於程式執行和資料證明方案,以證實預期在TEE中執行的子邏輯代碼確實已執行,並且所得到的資料是可信的。在一些實施方式中,多個子邏輯代碼中的每個子邏輯代碼被註冊並儲存在TEE內,並且生成對應於所述子邏輯代碼的金鑰對(私密金鑰,公開金鑰)。客戶端接收並儲存公開金鑰。當客戶端向在TEE內執行的程式發送請求時,所述請求包括將被執行的子邏輯的標識。TEE檢索與所述標識對應的已儲存子邏輯,執行子邏輯代碼並提供結果。TEE使用透過使用所述子邏輯代碼的私密金鑰生成的數位簽署對所述結果進行簽署。客戶端接收所述結果,並根據所述數位簽署和所述子邏輯代碼的公開金鑰驗證所述結果。
本文中描述的主題可以在特定實施方式實現以下技術優點中的一個或多個。例如,在客戶端發送的請求中,僅發送要執行的子邏輯代碼的標識,而不是子邏輯代碼本身。這顯著減小了請求的大小,從而節省計算資源(例如,處理器、儲存器、網路頻寬),並減輕網路瓶頸。此外,回應於接收到所述請求,可信程式無需解析並載入所述請求中攜帶的子邏輯代碼,從而避免了更多的處理。作為另一個範例,在處理每個請求之後,可信程式僅對結果簽署,而不對整個子邏輯代碼簽署,且客戶端僅檢查經簽署的結果。與傳統方法相比,這兩種活動都導致處理量減少。此外,本文的實施方式改善了可信程式使用子邏輯代碼及其變體的可擴展性。
本文還提供了耦接到一個或多個處理器並且其上儲存有指令的一個或多個非暫態電腦可讀儲存媒體,當所述指令由所述一個或多個處理器執行時,所述指令促使所述一個或多個處理器按照本文提供的方法的實施方式執行操作。
本文還提供了用於實施本文提供的所述方法的系統。該系統包括一個或多個處理器,以及其上儲存有指令的、耦接到所述一個或多個處理器的電腦可讀儲存媒體,當所述指令由所述一個或多個處理器執行時,所述指令促使所述一個或多個處理器按照本文提供的方法的實施方式執行操作。
應瞭解,依據本文的方法可以包括本文描述的態樣和特徵的任意組合。也就是說,根據本文的方法不限於本文具體描述的態樣和特徵的組合,還包括所提供的態樣和特徵的任意組合。
本文的一個或多個實施方式的細節在圖式和以下的描述中闡述。根據本文和圖式以及請求項,本文的其他特徵和優點將顯現。
本文描述了用於在可信執行環境(TEE)中執行的程式的程式執行和資料證明的技術。更具體地,且如本文所詳述的,本文的實施方式關於程式執行和資料證明方案,以證實預期在TEE中執行的子邏輯代碼確實已執行,並且所得到的資料是可信的。在一些實施方式中,多個子邏輯代碼中的每個子邏輯代碼被註冊並儲存在TEE內,並且生成對應於所述子邏輯代碼的金鑰對(私密金鑰,公開金鑰)。客戶端接收並儲存公開金鑰。當客戶端向在TEE內執行的程式發送請求時,所述請求包括將被執行的子邏輯的標識。TEE檢索與所述標識對應的已儲存子邏輯,執行子邏輯代碼並提供結果。TEE使用透過使用所述子邏輯代碼的私密金鑰生成的數位簽署對所述結果進行簽署。客戶端接收所述結果,並根據所述數位簽署和所述子邏輯代碼的公開金鑰驗證所述結果。根據本公開的實施方式,在客戶端發送的請求中,僅發送要執行的子邏輯代碼的標識,而不是子邏輯代碼本身。這顯著減小了請求的大小,從而節省計算資源(例如,處理器、儲存器、網路頻寬),並減輕網路瓶頸。
為本文的實施方式提供進一步的背景,如上所述,分散式帳本系統(DLS),也可以稱為共識網路(例如,由點對點(Peer-to-Peer)節點組成)和區塊鏈網路,使參與實體能夠安全且不可篡改地進行交易並儲存資料。儘管術語“區塊鏈”通常與特定網路和/或用例相關,但本文所使用的區塊鏈一般指在不參考任何特定用例的情況下的DLS。
區塊鏈是以交易是不可篡改的方式儲存交易的資料結構。因此,記錄在區塊鏈上的交易是可靠和值得信賴的。區塊鏈包括一個或多個區塊。鏈中的每個區塊透過包括緊鄰其之前的前一區塊的加密雜湊值(cryptographic hash)鏈接到該前一區塊。每個區塊還包括時間戳記、自身的加密雜湊值以及一個或多個交易。已經由區塊鏈網路的節點驗證的交易經雜湊處理並編碼成默克爾(Merkle)樹。Merkle樹是資料結構,其中樹的葉節點處的資料是經雜湊處理的,並且在該樹的每個分支中的所有雜湊值在該分支的根處連接。此程序沿著樹持續一直到整個樹的根,在整個樹的根處儲存了代表樹中所有資料的雜湊值。聲稱是儲存在樹中的交易的雜湊值可以透過確定其是否與樹的結構一致而被快速驗證。
區塊鏈是用於儲存交易的去中心化或至少部分去中心化的資料結構,而區塊鏈網路是透過廣播、驗證和確認交易等來管理、更新和維護一個或多個區塊鏈的計算節點的網路。如上所述,區塊鏈網路可提供為公有區塊鏈網路、私有區塊鏈網路或聯盟區塊鏈網路。在本文中參考聯盟區塊鏈網路進一步詳細描述本文的實施方式。然而,可以預期,可以在任何適當類型的區塊鏈網路中實現本文的實施方式。
通常,聯盟區塊鏈網路在參與的實體中是私有的。在聯盟區塊鏈網路中,共識程序由授權的節點集控制,該節點集可以被稱為共識節點,一個或多個共識節點由相應實體(例如,金融機構、保險公司)操作。例如,由十(10)個實體(例如,金融機構、保險公司)組成的聯盟可以操作聯盟區塊鏈網路,每個實體可以操作聯盟區塊鏈網路中的至少一個節點。
在一些範例中,在聯盟區塊鏈網路內,提供全域區塊鏈作為跨所有節點複製的區塊鏈。也就是說,所有的共識節點相對於全域區塊鏈處於完全共識狀態。為了達成共識(例如,同意將區塊添加到區塊鏈),在聯盟區塊鏈網路內實施共識協定。例如,聯盟區塊鏈網路可以實施實用拜占庭容錯(PBFT)共識,下面將進一步詳細描述。
圖1是顯示可用於執行本文的實施方式的環境100的範例的示意圖。在一些範例中,範例性環境100使得實體能夠參與到聯盟區塊鏈網路102中。範例性環境100包括計算系統106、108以及網路110。在一些範例中,網路110包括區域網(LAN)、廣域網(WAN)、網際網路或其組合,並且連接網路站點、用戶設備(例如,計算設備)和後臺系統。在一些範例中,可以透過有線和/或無線通訊鏈路來存取網路110。
在所描述的範例中,計算系統106、108可以各自包括能夠作為節點參與至聯盟區塊鏈網路102中的任何適當計算系統。範例性計算設備包括但不限於伺服器、桌上型電腦、膝上型電腦、平板計算設備和智慧型電話。在一些範例中,計算系統106、108承載一個或多個由電腦實施的服務,用於與聯盟區塊鏈網路102互動。例如,計算系統106可以承載第一實體(例如,用戶A)的由電腦實施的、例如交易管理系統的服務,第一實體使用該交易管理系統管理其與一個或多個其他實體(例如,其他用戶)的交易。計算系統108可以承載第二實體(例如,用戶B)的由電腦實施的、例如交易管理系統的服務,第二實體使用該交易管理系統管理其與一個或多個其他實體(例如,其他用戶)的交易。在圖1的範例中,聯盟區塊鏈網路102被表示為節點的點對點網路(Peer-to-Peer network),並且計算系統106、108分別提供參與聯盟區塊鏈網路102的第一實體和第二實體的節點。
圖2描繪了根據本文實施方式的概念性架構200的範例。所述概念性架構200包括實體層202、承載服務層204和區塊鏈網路層206。在所描繪的範例中,實體層202包括三個參與者,參與者A、參與者B和參與者C,每個參與者具有各自的交易管理系統208。
在所繪示的範例中,承載服務層204包括用於每個交易管理系統208的介面210。在一些範例中,相應的交易管理系統208使用協定(例如,超文字傳輸協定安全(HTTPS))透過網路(例如,圖1的網路110)與相應的介面210通訊。在一些範例中,每個介面210提供相應交易管理系統208與區塊鏈網路層206之間的通訊連接。更具體地說,介面210與區塊鏈網路層206的區塊鏈網路212通訊。在一些範例中,介面210與區塊鏈網路層206之間的通訊是使用遠端程序呼叫(RPC)進行的。在一些範例中,介面210“承載”用於各自的交易管理系統208的區塊鏈網路節點。例如,介面210提供用於存取區塊鏈網路212的應用程式化介面(API)。
如本文所述,提供作為點對點網路的區塊鏈網路212,包括將資訊不可篡改地記錄在區塊鏈216中的多個節點214。儘管示意性地描述了單一區塊鏈216,但在區塊鏈網路212上提供並維護了區塊鏈216的多個副本。例如,每個節點214儲存區塊鏈的副本。在一些實施例中,區塊鏈216儲存與在參與聯盟區塊鏈網路的兩個或更多個實體之間執行的交易相關聯的資訊。
區塊鏈(例如,圖2的區塊鏈216)由一系列區塊組成,每個區塊儲存資料。範例性資料包括表示兩個或更多個參與者之間的交易的交易資料。儘管本文透過非限制性範例使用了“交易”,但是可以預期,任何適當的資料可以儲存在區塊鏈中(例如,檔案、圖像、視訊、音訊)。範例性交易可以包括但不限於有價物的交換(例如,資產、產品、服務、貨幣)。交易資料不可篡改地儲存在區塊鏈中。也就是說,交易資料不能改變。
在將交易資料儲存在區塊中之前,對交易資料進行雜湊處理。雜湊處理是將交易資料(作為字元串資料提供)轉換為固定長度雜湊值(也作為字元串資料提供)的程序。不可能對雜湊值進行去雜湊處理(un-hash)以獲取交易資料。雜湊處理可確保即使交易資料輕微改變也會導致完全不同的雜湊值。此外,如上所述,雜湊值具有固定長度。也就是說,無論交易資料的大小如何,雜湊值的長度都是固定的。雜湊處理包括透過雜湊函數處理交易資料以生成雜湊值。範例性雜湊函數包括但不限於輸出256位元雜湊值的安全雜湊演算法(SHA)-256。
多個交易的交易資料被雜湊處理並儲存在區塊中。例如,提供兩個交易的雜湊值,並對它們本身進行雜湊處理以提供另一個雜湊值。重複此程序,直到針對所有要儲存在區塊中的交易提供單一雜湊值為止。該雜湊值被稱為Merkle根雜湊值,並儲存在區塊的頭中。任何交易中的更改都會導致其雜湊值發生變化,並最終導致Merkle根雜湊值發生變化。
透過共識協定將區塊添加到區塊鏈。區塊鏈網路中的多個節點參與共識協定,並競相將區塊添加到區塊鏈中。這種節點稱為共識節點。上面介紹的PBFT用作共識協定的非限制性範例。共識節點執行共識協定以將交易添加到區塊鏈,並更新區塊鏈網路的整體狀態。
更詳細地,共識節點生成區塊頭,對區塊中的所有交易進行雜湊處理,並將所得的雜湊值成對地組合以生成進一步的雜湊值,直到為區塊中的所有交易提供單一雜湊值(Merkle根雜湊值)。將此雜湊值添加到區塊頭中。共識節點還確定區塊鏈中最新區塊(即,添加到區塊鏈中的最後一個區塊)的雜湊值。共識節點還向區塊頭添加隨機數(nonce)和時間戳記。
通常,PBFT提供容忍拜占庭故障(例如,故障節點、惡意節點)的實用拜占庭狀態機複製。這透過假設將發生故障(例如,假設存在獨立節點故障和/或由共識節點發送的經操縱的訊息)在PBFT中實現。在PBFT中,以包括主共識節點和備共識節點的順序提供共識節點。主共識節點被週期性地改變。交易由區塊鏈網路內的對區塊鏈網路的全域狀態達成一致的共識節點添加到區塊鏈中。在該程序中,在共識節點之間傳輸訊息,並且每個共識節點證明所述訊息是從指定的對等節點(peer node)接收的,並驗證在傳輸期間所述訊息未被篡改。
在PBFT中,共識協定是在所有共識節點以相同的狀態開始的情況下分多個階段提供的。首先,客戶端向主共識節點發送呼叫服務操作(例如,在區塊鏈網路內執行交易)的請求。回應於接收到所述請求,主共識節點將所述請求多點傳播到備共識節點。所述備共識節點執行所述請求,並且各自向客戶端發送回覆。客戶端等待直到接收到臨界值數量的回覆。在一些範例中,客戶端等待直到接收到f+1個回覆,其中f是區塊鏈網路內可以容忍的故障共識節點的最大數量。最終結果是,足夠數量的共識節點就將記錄添加到區塊鏈的順序達成一致,並且該記錄或被接受或被拒絕。
在一些區塊鏈網路中,用密碼學來維護交易的隱私。例如,如果兩個節點想要保持交易隱私,以使得區塊鏈網路中的其他節點不能看出交易的細節,則這兩個節點可以對交易資料進行加密處理。範例性加密處理包括但不限於對稱加密和非對稱加密。對稱加密是指使用單一金鑰既進行加密(從明文生成密文)又進行解密(從密文生成明文)的加密程序。在對稱加密中,同一金鑰可用於多個節點,因此每個節點都可以對交易資料進行加密/解密。
非對稱加密使用金鑰對,每個金鑰對包括私密金鑰和公開金鑰,私密金鑰僅對於相應節點是已知的,而公開金鑰對於區塊鏈網路中的任何或所有其他節點是已知的。節點可以使用另一個節點的公開金鑰來加密資料,並且該加密的資料可以使用其他節點的私密金鑰被解密。例如,再次參考圖2,參與者A可以使用參與者B的公開金鑰來加密資料,並將加密資料發送給參與者B。參與者B可以使用其私密金鑰來解密該加密資料(密文)並提取原始資料(明文)。使用節點的公開金鑰加密的訊息只能使用該節點的私密金鑰解密。
非對稱加密用於提供數位簽署,這使得交易中的參與者能夠確認交易中的其他參與者以及交易的有效性。例如,節點可以對訊息進行數位簽署,而另一個節點可以根據參與者A的該數位簽署來確認該訊息是由該節點發送的。數位簽署也可以用於確保訊息在傳輸程序中不被篡改。例如,再次參考圖2,參與者A將向參與者B發送訊息。參與者A生成該訊息的雜湊值,接著使用其私密金鑰加密該雜湊值以提供為加密雜湊值的數位簽署。參與者A將該數位簽署附加到該訊息上,並將該具有數位簽署的訊息發送給參與者B。參與者B使用參與者A的公開金鑰解密該數位簽署,並提取雜湊值。參與者B對該訊息進行雜湊處理並比較雜湊值。如果雜湊值相同,參與者B可以確認該訊息確實來自參與者A,且未被篡改。
在一些實施方式中,區塊鏈網路的節點和/或與區塊鏈網路通訊的節點可以使用TEE(可信執行環境)來操作。在較高層面上,TEE是硬體(一個或多個處理器、儲存器)內與硬體的操作環境(例如,作業系統(OS)、基本輸入/輸出系統(BIOS))隔離的可信環境。更詳細地,TEE是確保主處理器中執行的代碼和載入的資料的機密性和完整性的處理器的獨立安全區域。在處理器內,TEE與OS並行運行。至少部分所謂的可信應用(TA)在TEE內執行,並且可以存取處理器和儲存器。透過TEE,TA被保護免受主OS中運行的其他應用的影響。此外,TEE以密碼學方式將TEE內的TA彼此隔離。
TEE的範例包括由美國加利福尼亞州聖克拉拉的英特爾公司提供的軟體保護擴展(Software Guard Extensions, SGX)。儘管本文以範例的方式討論了SGX,但可以預期本文的實施方式可以使用任何適當的TEE來實現。
SGX提供基於硬體的TEE。在SGX中,可信硬體是中央處理器(CPU)的核心,實體儲存器的一部分被隔離以保護選擇的代碼和資料。儲存器的隔離部分被稱為指定位址空間(enclave)。更具體地,指定位址空間被提供為儲存器中的指定位址空間頁面快取(EPC),並被映射到應用位址空間。儲存器(例如,DRAM)包括用於SGX的保留隨機儲存器(PRM)。PRM是最低BIOS層級的連續儲存空間,並且不能被任何軟體存取。每個EPC都是儲存器集(例如4KB),其由OS分配以在PRM中載入應用資料和代碼。EPC元資料(EPCM)是各個EPC的入口位址,並且確保每個EPC只能由一個指定位址空間共享。也就是說,單一指定位址空間可以使用多個EPC,而一個EPC專用於單一指定位址空間。
在執行TA期間,處理器在存取儲存在指定位址空間中的資料時以所謂的指定位址空間模式操作。指定位址空間模式下的操作對每個儲存器存取強制執行額外的硬體檢查。在SGX中,TA被編譯為可信部分和不可信部分。可信部分不可被例如OS、BIOS、特權系統代碼、虛擬機管理器(VMM)、系統管理模式(SMM)等存取。在操作中,TA在儲存器的PRM內運行並創建指定位址空間。指定位址空間內的可信部分執行的可信函數被不可信部分呼叫,在指定位址空間內執行的代碼將資料視為明文資料(未加密),並且對資料的外部存取被拒絕。可信部分對所述呼叫提供加密回應,TA繼續執行。
可執行認證處理以驗證預期代碼(例如,TA的可信部分)是否在SGX提供的TEE內安全執行。通常,認證處理包括TA接收來自質詢者(例如,區塊鏈網路中的另一個節點、區塊鏈網路的金鑰管理系統(KMS))的認證請求。作為回應,TA要求其指定位址空間提供遠端認證,也稱為報價(quote)。提供遠端認證包括將本地認證從指定位址空間發送到所謂的報價指定位址空間,該報價指定位址空間驗證本地認證並透過使用非對稱認證金鑰對所述本地認證簽署,從而將所述本地認證轉換為遠端認證。該遠端認證(報價)被提供給質詢者(例如,客戶端或區塊鏈網路的KMS)。
質詢者使用認證驗證服務來驗證遠端認證。對於SGX,英特爾提供英特爾認證服務(IAS),其接收來自質詢者的遠端認證並驗證該遠端認證。更具體地,IAS處理該遠端認證並提供報告(例如,認證驗證報告(AVR)),該報告指示該遠端認證是否通過驗證。如果未通過驗證,則可以指示錯誤。如果通過驗證(預期代碼在TEE中安全地執行),質詢者可以發起或繼續與TA互動。例如,回應於所述驗證,KMS(作為質詢者)可以對執行TEE的節點(例如,透過金鑰交換處理,諸如橢圓曲線Diffie-Hellman(ECDH))發佈非對稱加密金鑰(例如,公開金鑰和私密金鑰對),以使這些節點能夠與其他節點和/或客戶端安全通訊。
如上所述,在使用SGX提供的TEE中,至少一部分代碼(例如TA的可信部分)在指定位址空間內執行,該代碼可被稱為指定位址空間程式。同樣如上所述,在執行指定位址空間程式之前執行認證處理(遠端認證)。即,對指定位址空間和代碼進行測量以提供報價,該報價在遠端認證中用於驗證代碼是否在指定位址空間內按預期執行。通常,在認證中只測量指定位址空間程式本身的代碼和資料,而測量值的雜湊值則在報價中攜帶,並由遠端認證服務(例如IAS)進行認證。
更詳細地,遠端認證處理(也稱為遠端認證)使用非對稱加密和專門為遠端認證而設置的報價指定位址空間(QE)。QE使用特定於設備的私有非對稱金鑰(隨硬體提供)對報價進行數位簽署。為了進一步增強安全性,該認證使用了直接匿名認證(DAA)方案的擴展,該方案被稱為增強隱私ID(EPID)。EPID可以被描述為組簽署方案,該方案使平臺能夠對資料物件(例如,報價)進行數位簽署,而無需唯一地標識平臺或鏈接不同的簽署。QE生成用於對平臺認證進行簽署的EPID金鑰。EPID金鑰由EPID後端基礎架構認證,並且代表平臺,也代表底層硬體的可信賴性。只有QE能夠存取與處理器韌體版本綁定的EPID金鑰。因此,可以將使用EPID金鑰簽署的報價視為由處理器本身發出的。
為了開始認證處理,客戶端向TA發出質詢,以證明TA正在指定位址空間內執行預期代碼。該QE的指定位址空間身份(QEID)被提供給TA。QEID和客戶端的質詢被發送至指定位址空間。指定位址空間生成包含對質詢的回應的清單以及可被客戶端用來與指定位址空間安全通訊的公開金鑰。公開金鑰是作為認證處理的一部分暫時生成的。指定位址空間生成該清單的雜湊值,且指定位址空間中包括用於生成將該清單綁定到指定位址空間的報告的雜湊值。指定位址空間將報告發送到應用,該應用將報告提供給QE進行簽署。QE創建報價,用其EPID金鑰對報價簽署,接著將簽署後的報價傳回給TA。TA將報價發送給發起質詢的客戶端。
客戶端將報價提供給遠端認證服務以進行認證。例如,IAS公開認證應用程式化介面(API),從而對SGX使能的指定位址空間的認證證據(例如,報價)進行驗證。認證API是表述性狀態轉移(REST)API,認證API使用JavaScript物件表示法(JSON)作為資料序列化格式。客戶端透過認證API向IAS提交請求,該請求包括認證證據有效負載(AEP)。AEP包含報價,該報價被提供在isvEnclaveQuote欄位中。IAS處理報價,從而驗證指定位址空間的身份及執行指定位址空間所在平臺的有效性。更具體地,IAS提供AVR作為驗證指定位址空間和平臺的可信計算庫(TCB)的身份的經加密簽署的報告。AVR包括提供在isvEnclaveQuoteStatus欄位中的報價狀態值。如果指定位址空間和平臺通過驗證,則報價狀態被提供為OK,這表示報價的EPID簽署已經驗證,且平臺的TCB層級為當前。
遠端認證服務使用報告簽署金鑰(例如,使用RSA-SHA256)對AVR進行加密簽署,且報告簽署憑證鏈(RSCC)也隨AVR一併提供。客戶端解碼並驗證RSCC,並且驗證RSCC源於可信的認證報告簽署CA憑證,從而對AVR上的簽署進行驗證。在客戶端註冊到認證服務後,認證報告簽署CA憑證即可被下載到客戶端,這發生於客戶端發起質詢之前。客戶端使用認證報告簽署憑證(例如,以x.509數位憑證的形式分發的報告金鑰的公共部分)驗證AVR上的簽署。
回應於成功驗證,客戶端導出多個會話金鑰,所述會話金鑰用於後續與指定位址空間的安全通訊。會話金鑰包括簽署金鑰(SK)和主金鑰(MK)。會話金鑰可以被稱為包括私密金鑰和公開金鑰的金鑰對。會話金鑰是使用金鑰導出金鑰(KDK)導出的,該金鑰導出金鑰提供為客戶端和指定位址空間之間的Diffie-Hellman金鑰交換(DHKE)的一部分。客戶端可以使用從該交換中獲得的共享金鑰來加密要提供給指定位址空間的資料,該指定位址空間能夠導出相同的金鑰並使用該金鑰來解密資料。因此,在執行認證後,在透過金鑰交換提供的共享金鑰中提供信任錨。
在一些實例中,在指定位址空間內執行的代碼和/或指定位址空間內的資料是動態的。也就是說,例如,指定位址空間程式能夠運行狀態子邏輯代碼,而狀態隨時間而變化。其範例可以包括但不限於使用特定註冊憑證連接到外部服務(例如,基於Web的服務)的子邏輯代碼(例如,智慧合約代碼、客戶端代碼)。在這種情況下,每次呼叫指定位址空間程式時,都會在請求中提供註冊憑證。除了攜帶請求參數外,子邏輯代碼及其狀態資料也是必需的。指定位址空間程式載入子邏輯代碼和狀態資料後,子邏輯將在指定位址空間內執行,且請求參數將被處理以獲得結果。由於指定位址空間程式僅具有自己的透過原始認證處理測量和驗證的靜態代碼和靜態資料,因此指定位址空間程式需要向客戶端提供證明,以證實子邏輯提供了結果且該結果是可信的。
向客戶端證明子邏輯提供了結果的傳統方法包括隨每個請求一同提供完整的子邏輯代碼。例如,當要執行特定的子邏輯代碼時,客戶端將包含完整子邏輯代碼和請求參數(例如,將要透過子邏輯代碼處理的資料)的請求發送至指定位址空間程式。指定位址空間程式執行子邏輯代碼以提供結果。使用TEE的私密金鑰(例如,上文也稱為主金鑰)對子邏輯代碼或子邏輯代碼的雜湊值以及該結果進行簽署。當客戶端接收到從指定位址空間程式傳回的用於驗證的結果時,客戶端使用原始的子邏輯代碼(或重新計算雜湊值)來驗證該結果並證明特定的子邏輯代碼已由指定位址空間程式執行以提供該結果。
這種向客戶端證明子邏輯代碼提供了結果的方法是有缺點的。例如,每次客戶端向指定位址空間程式發送請求時,都需要將子邏輯代碼的完整表達攜帶在請求中,從而導致增大請求大小,加重網路傳輸的負擔。作為另一個範例,為了處理每個請求,指定位址空間程式需要解析並載入請求中攜帶的子邏輯代碼,這導致處理量增加。作為另一個範例,在處理每個請求之後,指定位址空間程式需要對子邏輯代碼簽署,而客戶端需要對結果中提供的子邏輯代碼重複檢查。這兩種活動都會導致處理量增加。作為又一個範例,由於不同的子邏輯代碼的複雜性、多樣性和不相容性,難以直接以通用格式直接表達子邏輯代碼。因此,子邏輯代碼耦接在指定位址空間程式查詢介面中,可擴展性較差。
如本文所使用的,子邏輯代碼可以指認證指定位址空間程式後被提供以由指定位址空間程式執行的電腦可執行代碼。在一些範例中,子邏輯代碼包括指定位址空間程式所或缺的一個或多個函數。以這種方式,指定位址空間程式可執行子邏輯代碼,以擴展指定位址空間程式的功能。
鑒於上述背景,本文的實施方式針對一種高效且簡化的指定位址空間程式子邏輯證明方案。更具體地,且如本文所詳述的,本文的實施方式使用TEE機制將指定位址空間程式的邏輯表達的證明轉換為基於多個獨立簽署的證明。更詳細地,本文的實施方式將指定位址空間程式執行子邏輯任務劃分為多個階段。第一階段包括遠端驗證(認證)。第二階段包括子邏輯代碼註冊。第三階段包括子邏輯查詢。如本文所述,本文的實施方式減少了網路傳輸和處理,並實現了更高的性能效率和更佳的可擴展性。
關於第一階段,遠端認證,客戶端向指定位址空間程式發起遠端認證質詢。作為回應,指定位址空間程式生成金鑰對(例如,公開金鑰、私密金鑰),如本文所述,該金鑰對包括在傳回給客戶端的認證資訊中。客戶端將認證資訊發送到遠端認證服務(例如,IAS)。遠端認證服務處理認證資訊以提供驗證結果(例如,AVR),並將驗證結果傳回給客戶端。遠端認證通過後,客戶端使用指定位址空間程式的公開金鑰,來驗證指定位址空間程式傳回的、經指定位址空間程式以其私密金鑰簽署的回應。
圖3是顯示根據本文的實施方式的系統300的範例的示意圖。如圖所示,系統300包括客戶端308、節點310和認證服務312。在所描繪的範例中,節點310使用TEE技術(例如,英特爾SGX)來實現。例如,且如本文所述,指定位址空間程式在節點310的TEE內執行。通常,認證服務312為客戶端308驗證節點310的合法性。認證服務的範例包括如上所述的IAS。在認證處理中,客戶端308將指示節點310具有合法性的認證證據320從節點310中繼到認證服務312。在一些實施方式中,認證證據320包括節點310的測量值322和節點310的簽署326。節點310的測量值322可以包括基於在節點310的TEE內執行的指定位址空間程式的靜態代碼的雜湊值。包括在認證證據320中的節點310的簽署326可以包括使用節點310的認證金鑰簽署的節點310的測量值322。
在一些實施方式中,節點310的認證金鑰包括EPID私密金鑰。如上所述,EPID是英特爾(Intel)提供的一種用於認證可信系統同時保護隱私的演算法。通常,網路的每個成員(例如,電腦或伺服器)均被分配有用於對認證證據進行簽署的EPID私密金鑰,且網路中認證證據的驗證者儲存與網路中其他成員的EPID私密金鑰配對的EPID公開金鑰。每個成員都可以使用自己的EPID私密金鑰生成認證證據的簽署,驗證者可以使用EPID公開金鑰來驗證其他成員的簽署。這樣,EPID金鑰可用於證明設備(例如電腦或伺服器)是真實設備。
認證證據320還可以包括由節點310生成的公開金鑰324。如果認證證據320包括由節點310生成的公開金鑰324,則節點310的簽署326包括測量值322以及使用節點310的認證金鑰簽署的公開金鑰324。
節點310包括任何合適的伺服器、電腦、模組或計算元件,以提取並滿足來自客戶端308的請求。例如,且根據本公開的實施方式,節點310可以接收並處理來自諸如客戶端308的各客戶端的請求,以處理子邏輯代碼並提供相應的結果。在處理來自客戶端308的請求之前,客戶端308質詢節點310。作為回應,節點310生成認證證據320,並且將認證證據320發送到客戶端308,客戶端308將認證證據320提供給認證服務312以驗證節點310的合法性。在一些實施方式中,節點310生成包括公開金鑰324和私密金鑰的金鑰對,並將公開金鑰324包括在認證證據320中。如本文所述,公開金鑰324用於客戶端308與節點310之間的未來通訊。例如,節點310可以使用私密金鑰來簽署請求結果,且客戶端308可以使用公開金鑰324來驗證簽署後的請求結果。
認證服務312包括任何合適的伺服器、電腦、模組或計算元件,以驗證由客戶端308從節點310轉發的認證證據320的合法性。如上所述,認證證據320包括節點310的測量值322、節點310的簽署326和(可選地)節點310生成的公開金鑰324。在接收到認證證據320時,認證服務312驗證認證證據320中的節點310的簽署326,並生成認證驗證報告(AVR)330。
認證服務312使用認證服務312的認證金鑰來驗證認證證據320中的簽署326。在一些實施方式中,認證服務312的認證金鑰包括與節點310用來對認證證據320進行簽署的EPID私密金鑰配對的EPID公開金鑰。在驗證認證證據320中的簽署之後,認證服務312生成AVR 330以包括認證證據320、表示認證證據320中的簽署326是否有效的驗證結果334以及認證服務312的簽署336。
在一些實施方式中,AVR 330包括除中繼系統節點310的簽署326之外的認證證據320。例如,AVR 330可以包括中繼系統節點310的測量值322、中繼系統節點310生成的公開金鑰324、驗證結果334以及認證服務312的簽署336。在一些實施方式中,認證服務312的簽署336包括使用認證服務312的報告簽署金鑰(例如,認證服務312用來對認證驗證報告進行簽署的私密金鑰)進行簽署的認證證據320和驗證結果334。注意,報告簽署金鑰可以與認證服務312的認證金鑰不同。
圖4描繪了根據本文的實施方式的訊號流400的範例。訊號流400表示認證驗證程序。為方便起見,該程序被描述為由位於一個或多個位置並根據本文被適當地程式化的一個或多個電腦的系統執行。例如,被適當程式化的分散式系統(例如,圖1的區塊鏈系統100;圖3的系統300)可以執行該程序。
通常,在操作中,客戶端308從節點310接收認證證據,並且將該認證證據發送到認證服務312以驗證該認證證據。客戶端308基於對認證證據中的節點310的簽署的驗證,從認證服務312接收指示節點310的合法性的AVR。
在圖4的範例中,客戶端308向節點310發送(410)認證請求(例如,質詢)。認證請求被發送到節點310,以請求可指示節點310具有合法性或有效性的認證證據,以及在節點310的TEE中執行的指定位址空間程式。在一些實施方式中,認證證據包括節點310和指定位址空間程式的測量值以及節點310的簽署。節點310的測量值可以包括節點310的初始狀態的雜湊值。例如,節點310的測量值可以包括在節點310上實現的處理代碼(指定位址空間程式)的雜湊值。
回應於所述認證請求,節點310生成(412)認證證據。如上所述,認證證據指示節點310的合法性或有效性,並且可以包括節點310和指定位址空間程式的測量值以及節點310的簽署。在一些實施方式中,認證證據還包括由節點310生成的公開金鑰。例如,節點310可以使用預定的金鑰生成演算法(例如,Rivest-Shamir-Adleman(RSA)演算法)來生成包括私密金鑰和公開金鑰的隨機加密金鑰對。在一些範例中,公開金鑰提供在認證證據中,並且可以用於客戶端308和節點310之間的未來通訊。例如,節點310可以使用私密金鑰來對請求結果簽署,且客戶端308可以使用公開金鑰來驗證簽署後的請求結果。
在一些實施方式中,節點310的測量值包括節點310的初始狀態的雜湊值。認證證據中的節點310的簽署包括節點310生成的、使用節點310的認證金鑰簽署的測量值和公開金鑰。在一些實施方式中,節點310的認證金鑰包括EPID私密金鑰。驗證者可以使用與EPID私密金鑰配對的EPID公開金鑰來驗證使用EPID私密金鑰簽署的認證證據,以證明生成認證證據的設備的真實性。
節點310將認證證據發送(414)到客戶端308。客戶端308將從節點310發送的認證證據轉發(416)到認證服務312。在一些實施方式中,客戶端308將認證驗證請求發送到認證服務312。認證驗證請求包括從節點310發送的認證證據及補充資訊,例如指示節點310是否使用SGX平臺服務的描述符。
回應於接收到客戶端308轉發的認證證據,認證服務312驗證(418)認證證據。如上所述,認證證據包括節點310的測量值、節點310生成的公開金鑰以及節點310的簽署。認證服務312可使用認證服務312的認證金鑰來驗證認證證據中的節點310的簽署,從而驗證認證證據。例如,認證服務312可以使用認證驗證伺服器的EPID公開金鑰來驗證節點310的簽署,該EPID公開金鑰與節點310用來對認證證據簽署的EPID私密金鑰配對。
如果認證服務312確定認證證據中的節點310的簽署是有效的,則認證服務312可以確定節點310是真實設備或合法設備。如果認證服務312確定認證證據中的節點310的簽署是無效的,則認證服務312可以確定節點310不是真實設備或者是非法設備,並且拒絕來自節點310的任何後續資料和請求。
認證服務312基於對認證證據的驗證來生成(420)AVR。在一些實施方式中,AVR可以包括節點310的認證證據、認證驗證結果以及認證服務312的數位簽署。在一些實施方式中,AVR可以包括除節點310的簽署之外的節點310的認證證據。例如,AVR可以包括節點310的測量值、節點310生成的公開金鑰、認證驗證結果以及認證服務312的簽署。AVR中的認證驗證結果指示節點310的簽署是否有效。例如,認證驗證結果可以包括指示節點310的簽署有效的值“valid”或“OK”,或指示簽署無效的值“invalid”。
在一些實施方式中,認證服務312的簽署包括使用報告簽署金鑰進行簽署的認證證據和認證驗證結果。報告簽署金鑰可以是認證服務312用來對AVR進行簽署的私密金鑰。在一些實施方式中,報告簽署金鑰由認證服務312使用預定的金鑰生成演算法來生成。例如,可以使用RSA安全雜湊演算法(SHA)256生成報告簽署金鑰。注意,報告簽署金鑰與認證服務312用來驗證認證證據的認證金鑰(例如,EPID公開金鑰)不同。
在一些實施方式中,認證服務312將AVR發送(422)到客戶端308。如上所述,AVR包括對節點310的身份進行驗證的經加密簽署的報告,並且可以包括節點310的認證證據、認證驗證結果以及認證服務312的數位簽署。客戶端308驗證(424)AVR。例如,客戶端308可以驗證AVR中的認證服務312的簽署。在一些實施方式中,客戶端308使用報告簽署憑證來驗證認證服務312的簽署。報告簽署憑證可以是X.509數位憑證。報告簽署憑證可以包括由認證服務312生成且與認證服務312用來對AVR進行簽署的報告簽署金鑰配對的公開金鑰。
如果客戶端308驗證AVR中的認證服務312的簽署是有效的,則客戶端308確定該AVR確實是由認證服務312發送的。如果客戶端308確定AVR中的認證服務312的簽署是無效的,則客戶端308確定認證驗證報告不是真實的,並且將拒絕該AVR。客戶端308可以進一步檢查AVR中的認證驗證結果,以確定節點310的認證證據是否有效。在一些實施方式中,客戶端308將認證證據中的測量值與客戶端308儲存的測量值進行比較,以確定認證證據是否有效。
回應於確定AVR是真實的且節點310的認證證據是有效的,客戶端308將節點310註冊(426)為有效或合法設備。客戶端308還儲存有由節點310生成的、包含在認證證據中的公開金鑰。如本文所述,公開金鑰將被客戶端308用於客戶端308與節點310之間的未來通訊。
關於第二階段,子邏輯代碼註冊,且根據本文的實施方式,客戶端308向節點310註冊子邏輯代碼以用於執行。在一些範例中,子邏輯代碼是可由節點310內的指定位址空間程式執行的電腦可執行代碼。子邏輯代碼可被描述為擴展了指定位址空間程式功能的模組。在一些實施方式中,客戶端308向節點310註冊多個子邏輯代碼。在一些範例中,每個子邏輯代碼可以包括一個或多個版本(例如,v1、v1.1、v2)。
根據本公開的實施方式,子邏輯代碼的註冊包括客戶端308向指定位址空間程式發送註冊請求,以及指定位址空間程式提供註冊結果。在一些範例中,對於每個待註冊的子邏輯代碼,註冊請求包括唯一地標識子邏輯代碼的標識以及子邏輯代碼本身。在一些範例中,對於每個待註冊的子邏輯代碼,註冊請求包括唯一地標識子邏輯代碼的標識、版本號和子邏輯代碼本身。在一些範例中,可以針對每個子邏輯代碼發送註冊請求(例如,針對單一子邏輯代碼的單一註冊請求)。在一些範例中,可以針對多個子邏輯代碼發送註冊請求(例如,針對兩個或更多個子邏輯代碼的單一註冊請求)。
在一些實施方式中,回應於接收到註冊請求,指定位址空間程式儲存子邏輯代碼,並提供將所儲存的子邏輯代碼與相應標識相關聯的索引。在一些實施方式中,對於每個子邏輯代碼,指定位址空間程式生成包括私密代碼金鑰和公開代碼金鑰的代碼金鑰對。以這種方式,每個子邏輯代碼均有相應的代碼金鑰對。在一些範例中,如上所述,指定位址空間程式使用基於KDK的金鑰推導函數(KDF)生成代碼金鑰對。
在一些範例中,為同一子邏輯代碼的多個版本提供單一代碼金鑰對。例如,如果子邏輯代碼包括第一版本和第二版本,則同一代碼金鑰對應對子邏輯代碼的第一版本和第二版本。在一些範例中,為同一子邏輯代碼的每個版本各提供了代碼金鑰對。例如,如果子邏輯代碼包括第一版本和第二版本,則為第一版本提供第一代碼金鑰對,為第二版本提供第二代碼金鑰對。
在一些實施方式中,在子邏輯代碼由指定位址空間程式註冊並儲存之後,指定位址空間程式將註冊結果提供給客戶端308。在一些範例中,註冊結果包括註冊指示符(例如,指示子邏輯代碼成功註冊)、子邏輯代碼的公開代碼金鑰和數位簽署。在某些範例中,指定位址空間程式使用其私密金鑰生成數位簽署,該私密金鑰作為上述認證處理的一部分被提供。例如,透過雜湊函數處理註冊指示符和/或公開代碼金鑰,以提供第一雜湊值。雜湊函數的範例包括但不限於SHA-256。指定位址空間程式基於第一雜湊值和私密金鑰生成數位簽署。例如,透過提供數位簽署的簽署演算法來處理第一雜湊值和私密金鑰。
在一些實施方式中,客戶端308接收註冊結果,並使用指定位址空間程式的公開金鑰來驗證註冊結果,該公開金鑰是作為上述認證處理的一部分被提供的。例如,客戶端308透過雜湊函數處理註冊指示符和/或公開代碼金鑰以提供第二雜湊值,並使用指定位址空間程式的公開金鑰從數位簽署中確定第一雜湊值。客戶端308比較第一雜湊值和第二雜湊值。如果第一雜湊值和第二雜湊值相同,則註冊結果有效,且客戶端308儲存了公開代碼金鑰。如果第一雜湊值和第二雜湊值不同,則註冊結果無效。
圖5描繪了子邏輯註冊階段的訊號流500的範例。訊號流500表示子邏輯註冊程序。為方便起見,該程序將被描述為由位於一個或多個位置並根據本文被適當地程式化的一個或多個電腦的系統執行。例如,被適當程式化的分散式系統(例如,圖1的區塊鏈系統100;圖3的系統300)可以執行該程序。
在圖5的範例中,客戶端308向節點310內執行的指定位址空間程式發送(502)註冊請求。在一些範例中,對於每個待註冊的子邏輯代碼,註冊請求包括唯一地標識子邏輯代碼的標識以及子邏輯代碼本身。在一些範例中,對於每個待註冊的子邏輯代碼,註冊請求包括唯一地標識子邏輯代碼的標識、版本號和子邏輯代碼本身。
在一些實施方式中,回應於接收到註冊請求,指定位址空間程式儲存(504)子邏輯代碼,並提供(506)將所儲存的子邏輯代碼與相應的標識相關聯的索引。該指定位址空間程式生成(508)代碼金鑰對,該代碼金鑰對包括用於被儲存的子邏輯代碼的私密代碼金鑰和公開代碼金鑰。指定位址空間程式創建(510)註冊結果。在一些範例中,註冊結果包括註冊指示符(例如,指示子邏輯代碼成功註冊)、子邏輯代碼的公開代碼金鑰、以及數位簽署。數位簽署是基於指定位址空間程式的私密金鑰生成的,該私密金鑰生成於認證處理中。指定位址空間程式將註冊結果發送(512)到客戶端308。在一些實施方式中,客戶端308接收註冊結果,並使用上述指定位址空間程式的公開金鑰來驗證(514)註冊結果。如果註冊結果有效,則客戶端308儲存(516)公開代碼金鑰。
關於第三階段,子邏輯查詢,且根據本文的實施方式,客戶端308向在節點310內執行的指定位址空間程式發送請求,以呼叫特定的子邏輯代碼來提供結果。在一些實施方式中,該請求包括待執行的子邏輯的標識以及一個或多個請求參數。在一些實施方式中,該請求包括待執行的子邏輯的標識、待執行的子邏輯代碼的版本、以及一個或多個請求參數。在一些範例中,一個或多個請求參數包括將使用子邏輯代碼進行處理以提供結果的資料。
回應於接收到該請求,指定位址空間程式檢索所請求的子邏輯代碼(以及版本,如果請求中包括版本的話),並執行該子邏輯代碼以提供結果。例如,指定位址空間程式透過子邏輯代碼處理一個或多個請求參數。在一些範例中,基於透過子邏輯代碼以及指定位址空間程式的一個或多個函數來處理請求參數,以生成結果。在一些範例中,指定位址空間程式透過子邏輯代碼處理一個或多個請求參數和附加資料。範例性附加資料可以包括從指定位址空間程式提供的資料(例如,儲存在節點310中的資料)。
指定位址空間程式提供包括結果和數位簽署的回應。在一些範例中,指定位址空間程式使用子邏輯代碼的私密代碼金鑰來生成數位簽署,該私密代碼金鑰作為上述註冊程序的一部分被提供。例如,透過雜湊函數處理結果以提供第一雜湊值。雜湊函數的範例包括但不限於SHA-256。指定位址空間程式基於第一雜湊值和子邏輯代碼的私密代碼金鑰生成數位簽署。例如,透過提供數位簽署的簽署演算法來處理第一雜湊值和私密代碼金鑰。
在一些實施方式中,客戶端308接收回應,並使用子邏輯代碼的公開代碼金鑰來驗證結果,該公開代碼金鑰是作為上述註冊程序的一部分被提供的。例如,客戶端308透過雜湊函數處理結果以提供第二雜湊值,並使用子邏輯代碼的公開代碼金鑰從數位簽署中確定第一雜湊值。客戶端308比較第一雜湊值和第二雜湊值。如果第一雜湊值和第二雜湊值相同,則結果有效,且客戶端308能夠基於結果執行進一步的操作。如果第一雜湊值和第二雜湊值不同,則結果無效。
圖6描繪了子邏輯查詢階段的訊號流600的範例。訊號流600表示子邏輯查詢程序。為方便起見,該程序將被描述為由位於一個或多個位置並根據本文被適當地程式化的一個或多個電腦的系統執行。例如,被適當程式化的分散式系統(例如,圖1的區塊鏈系統100;圖3的系統300)可以執行該程序。
在圖6的範例中,客戶端308向節點310內執行的指定位址空間程式發送(602)請求,以呼叫特定的子邏輯代碼來提供結果。在一些實施方式中,該請求包括待執行的子邏輯的標識以及一個或多個請求參數。回應於接收到該請求,指定位址空間程式檢索(604)所請求的子邏輯代碼(以及版本,如果請求中包括版本的話),並執行(606)該子邏輯代碼以提供結果。指定位址空間程式使用子邏輯代碼的私密代碼金鑰提供(608)包括結果和數位簽署的回應。指定位址空間程式將回應發送(610)到客戶端308。客戶端308接收回應,並使用子邏輯代碼的公開代碼金鑰來驗證(612)結果。
圖7A描繪了根據本文的實施方式可執行的程序700的範例。在一些實施方式中,範例性程序700可使用一個或多個計算設備執行的一個或多個電腦可執行程式來執行。在一些範例中,範例性程序700可以由執行TEE的客戶端和節點執行以註冊用於在TEE內執行的子邏輯。
發送註冊請求(702)。例如,客戶端308向節點310內執行的指定位址空間程式發送註冊請求。在一些範例中,對於每個待註冊的子邏輯代碼,註冊請求包括唯一地標識子邏輯代碼的標識以及子邏輯代碼本身(例如,電腦可執行指令)。接收註冊請求(704)。例如,註冊請求由節點310內的指定位址空間程式接收。在一些範例中,指定位址空間程式解析請求以確定標識和子邏輯代碼。
提供代碼金鑰對(706)。例如,指定位址空間程式儲存子邏輯代碼,並提供將所儲存的子邏輯代碼與對應的標識相關聯的索引。該指定位址空間程式生成代碼金鑰對,該代碼金鑰對包括用於被儲存的子邏輯代碼的私密代碼金鑰和公開代碼金鑰。生成數位簽署(708)。例如,指定位址空間程式使用指定位址空間程式的私密金鑰生成數位簽署,該私密金鑰生成於認證處理中。如本文所述,數位簽署是基於子邏輯代碼的公開代碼金鑰和指定位址空間程式的私密金鑰來提供的。
發送註冊結果(710)。例如,指定位址空間程式將註冊結果發送到客戶端308。在一些範例中,註冊結果包括子邏輯代碼的公開代碼金鑰和數位簽署。接收註冊結果(712)。例如,客戶端308接收註冊結果。確定註冊結果是否通過驗證(714)。例如,如本文所述,客戶端308使用指定位址空間程式的公開金鑰來執行雜湊值比較。如果註冊結果未通過驗證,則指示錯誤(716)。如果註冊結果通過驗證,則儲存公開代碼金鑰(718)。例如,客戶端308儲存子邏輯代碼的公開代碼金鑰,並用子邏輯代碼的標識索引公開代碼金鑰。
圖7B描繪了根據本文的實施方式可執行的程序750的範例。在一些實施方式中,範例性程序750可使用一個或多個計算設備執行的一個或多個電腦可執行程式來執行。在一些範例中,範例性程序750可以由執行TEE的客戶端和節點執行,以在TEE內執行子邏輯,並為子邏輯的執行提供程式執行和資料證明。
發送請求(752)。例如,客戶端308向在節點310內執行的指定位址空間程式發送請求,以呼叫特定的子邏輯代碼以提供結果。在一些實施方式中,該請求包括待執行的子邏輯的標識以及一個或多個請求參數。接收該請求(754)。例如,該請求由節點310內的指定位址空間程式接收。解析該請求(756)。例如,指定位址空間程式解析該請求以確定標識以及一個或多個請求參數。
檢索並執行子邏輯代碼(758)。例如,指定位址空間程式基於標識從電腦可讀儲存器中檢索所請求的子邏輯代碼(以及版本,如果請求中包含版本的話)。指定位址空間程式執行子邏輯代碼來處理一個或多個請求參數以提供結果資料。準備並發送回應(760)。例如,指定位址空間程式使用子邏輯代碼的私密代碼金鑰提供包含結果和數位簽署的回應。指定位址空間程式將回應發送到客戶端308。
接收到回應(762)。例如,客戶端308接收回應。確定回應是否通過驗證(764)。例如,如本文所述,客戶端308使用子邏輯代碼的公開代碼金鑰來執行雜湊值比較。如果回應未通過驗證,則指示錯誤(766),且結果資料不被客戶端308使用。如果回應通過驗證,則使用結果資料(768)。例如,客戶端308將結果資料用於進一步處理。
圖8描繪了根據本文的實施方式的範例性裝置800的模組。裝置800可以是客戶端的一種範例實施方式,例如圖3中用於呼叫要在TEE內執行的子邏輯代碼並在TEE內註冊子邏輯代碼的客戶端308。裝置800可以對應於上述實施方式,並且裝置800包括:
發送模組802,將請求發送到節點。例如,且如本文所述,節點在TEE內執行可信程式。在一些範例中,該請求包括標識和一個或多個請求參數,該標識用於標識子邏輯代碼。接收模組804,接收對該請求的回應。例如,且如本文所述,回應包括結果資料和數位簽署,該結果資料透過使用TEE內的子邏輯代碼處理一個或多個請求參數來生成。使用子邏輯代碼的私密代碼金鑰生成數位簽署。驗證模組806,使用數位簽署和子邏輯代碼的公開代碼金鑰來驗證結果資料。傳輸模組808,傳輸註冊請求以向TEE中的可信程式註冊子邏輯代碼。在一些範例中,註冊請求包括標識和子邏輯代碼。接收模組810,從可信程式接收註冊結果。在一些範例中,註冊結果包括子邏輯代碼的公開代碼金鑰。
通常,本說明書中描述的主題的創新態樣可以體現為以下動作:客戶端設備向節點發送請求,該節點執行在TEE中的可信程式,該請求包括標識和一個或多個請求參數,該標識用於標識子邏輯代碼;客戶端設備接收對該請求的回應,該回應包括結果資料和數位簽署,該結果資料是透過使用TEE中的子邏輯代碼處理一個或多個請求參數生成的,該數位簽署是使用子邏輯代碼的私密代碼金鑰生成的;並且客戶端設備使用數位簽署和子邏輯代碼的公開代碼金鑰來驗證結果資料。該態樣的其他實施方式包括相應的電腦系統、裝置和記錄在一個或多個電腦儲存設備上的電腦程式,每個系統、裝置和程式均被配置為執行所述方法的動作。
可選地,前述實施方式和其他實施方式可以各自獨立地或相互組合地包括以下特徵中的一個或多個:動作還包括客戶端設備發送註冊請求,以向TEE內的可信程式註冊子邏輯代碼,該註冊請求包括所述標識和所述子邏輯代碼;且客戶端設備從可信程式接收註冊結果,該註冊結果包括所述子邏輯代碼的公開代碼金鑰。動作還包括使用可信程式的數位簽署和可信程式的公開金鑰來驗證註冊結果,該可信程式的數位簽署使用可信程式的私密金鑰生成,可信程式的公開金鑰和私密金鑰在可信應用的認證期間作為金鑰對生成;子邏輯代碼是基於標識從電腦可讀儲存器中檢索而來的,並在TEE中執行以生成結果;子邏輯代碼是儲存在節點中的多個子邏輯代碼之一;公開代碼金鑰和私密代碼金鑰是在TEE內註冊所述子邏輯代碼期間作為代碼金鑰對生成的;該請求還包括版本號,該版本號指示將被執行以提供結果的子邏輯代碼的版本;客戶端設備包括區塊鏈網路內的節點。
如本文所述,本文的實施方式實現了優於傳統系統的一個或多個技術效果。在一些實施方式中,在客戶端發送的請求中,僅發送要執行的子邏輯代碼的標識,而不是子邏輯代碼本身。這顯著減小了請求的大小,從而節省計算資源(例如,處理器、儲存器、網路頻寬),並減輕網路瓶頸。在一些實施方式中,回應於接收到請求,指定位址空間程式無需解析並載入請求中攜帶的子邏輯代碼,從而避免了更多的處理。在一些實施方式中,在處理每個請求之後,指定位址空間程式僅對結果簽署,而不對整個子邏輯代碼簽署,且客戶端僅檢查經簽署的結果。與傳統方法相比,這兩種活動都導致處理量減少。在一些實施方式中,子邏輯代碼使用的可擴展性得到提升,且子邏輯代碼的變體(例如,版本)得到支援。
本文中描述的主題和動作以及操作的實施可以在數位電子電路中、在有形體現的電腦軟體或韌體中和電腦硬體中實現,包括本文中公開的結構及其結構等同物,或者它們中的一個或多個的組合。本文中描述的主題的實施可以實現為一個或多個電腦程式,例如,一個或多個電腦程式指令模組,編碼在電腦程式載體上,用於由資料處理裝置執行或控制資料處理裝置的操作。載體可以是有形的非暫態電腦儲存媒體。可選地或附加地,載體可以是人工生成的傳播訊號,例如,機器生成的電、光或電磁訊號,其被生成來編碼資訊用於傳輸到合適的接收器裝置以供資料處理裝置執行。電腦儲存媒體可以是或可以部分是機器可讀儲存設備、機器可讀儲存基板、隨機或串列存取儲存器設備或它們中的一個或多個的組合。電腦儲存媒體不是傳播訊號。
術語“資料處理裝置”包括用於處理資料的所有類型的裝置、設備和機器,包括例如可程式化處理器、電腦或者多處理器或電腦。資料處理裝置可以包括專用邏輯電路,例如FPGA(現場可程式化閘陣列)、ASIC(特殊應用積體電路)或GPU(圖形處理單元)。除了硬體,該裝置還可以包括為電腦程式創建執行環境的代碼,例如,構成處理器韌體、協定疊、資料庫管理系統、作業系統、或者它們一個或多個的組合的代碼。
電腦程式也可以被稱為或描述為程式、軟體、軟體應用程式、app、模組、軟體模組、引擎、腳本或代碼,可以以任何形式的程式化語言編寫,包括編譯或演繹性語言、說明或程式性語言;它可以被配置為任何形式,包括作為獨立程式,或者作為模組、組件、引擎、子程式或適合在計算環境中執行的其他單元,該環境可包括由通訊資料網路互聯的在一個或多個位置的一台或多台電腦。
電腦程式可以但非必須對應於檔案系統中的檔案。電腦程式可以儲存在:保存其他程式或資料的檔案的一部分中,例如,儲存在標記語言檔案中的一個或多個腳本;專用於所討論的程式的單一檔案;或者多個協調檔案,例如,儲存一個或多個模組、子程式或代碼部分的多個檔案。
本文中描述的程序和邏輯流程可由一台或多台電腦執行一個或多個電腦程式進行,以進行透過對輸入資料進行運算並生成輸出的操作。程序和邏輯流程也可以由例如FPGA、ASIC、GPU等的專用邏輯電路或專用邏輯電路與一個或多個程式化電腦的組合來執行。
適合於執行電腦程式的電腦可以基於通用和/或專用微處理器,或任何其他種類的中央處理單元。通常,中央處理單元將從唯讀儲存器和/或隨機存取儲存器接收指令和資料。電腦的元件可包括用於執行指令的中央處理單元和用於儲存指令和資料的一個或多個儲存設備。中央處理單元和儲存器可以補充有專用邏輯電路或整合在專用邏輯電路中。
通常,電腦還將包括或可操作地耦接至一個或多個大容量儲存設備,以從一個或多個大容量儲存設備接收資料或將資料傳輸到一個或多個大容量儲存設備。大容量儲存設備可以是例如,磁碟、磁光碟或光碟或固態硬碟。然而,電腦不需要具有這樣的設備。此外,電腦可以嵌入在另一個設備中,例如行動電話、個人數位助理(PDA)、行動音訊或視訊播放器、遊戲控制台、全球定位系統(GPS)接收器或例如通用串列匯流排(USB)快閃記憶體驅動器的可攜式儲存設備,僅舉幾例。
為了提供與用戶的互動,本文中描述的主題的實施例可以在電腦上實現或配置為與該電腦通訊,該電腦具有:顯示設備,例如,LCD(液晶顯示器)監視器,用於向用戶顯示資訊;以及輸入設備,用戶可以透過該輸入設備向該電腦提供輸入,例如鍵盤和例如滑鼠、軌跡球或觸控板等的指針設備。其他類型的設備也可用於提供與用戶的互動;例如,提供給用戶的反饋可以是任何形式的感官反饋,例如視覺反饋、聽覺反饋或觸覺反饋;並且可以接收來自用戶的任何形式的輸入,包括聲音、語音或觸覺輸入。此外,電腦可以透過向用戶使用的設備發送檔案和從用戶使用的設備接收檔案來與用戶互動;例如,透過向用戶設備上的web瀏覽器發送web頁面以回應從web瀏覽器收到的請求,或者透過與例如智慧型電話或電子平板電腦等的用戶設備上運行的應用程式(app)進行互動。此外,電腦可以透過向個人設備(例如,運行訊息應用的智慧型手機)輪流發送文字訊息或其他形式的訊息來並接收來自用戶的回應訊息來與用戶互動。
本文使用與系統,裝置和電腦程式組件有關的術語“配置為”。對於被配置為執行特定操作或動作的一個或多個電腦的系統,意味著系統已經在其上安裝了在運行中促使該系統執行所述操作或動作的軟體、韌體、硬體或它們的組合。對於被配置為執行特定操作或動作的一個或多個電腦程式,意味著一個或多個程式包括當被資料處理裝置執行時促使該裝置執行所述操作或動作的指令。對於被配置為執行特定操作或動作的專用邏輯電路,意味著該電路具有執行所述操作或動作的電子邏輯。
雖然本文包含許多具體實施細節,但是這些不應被解釋為由請求項本身限定的對要求保護的範圍的限制,而是作為對特定實施例的具體特徵的描述。在本文多個單獨實施例的上下文中描述的多個特定特徵也可以在單一實施例中的組合實現。相反,在單一實施例的上下文中描述的各種特徵也可以單獨地或以任何合適的子組合在多個實施例中實現。此外,儘管上面的特徵可以描述為以某些組合起作用並且甚至最初如此要求保護,但是在一些情況下,可以從要求保護的組合中刪除來自該組合的一個或多個特徵,並且可以要求保護指向子組合或子組合的變體。
類似地,雖然以特定順序在圖式中描繪了操作並且在請求項中敘述了操作,但是這不應該被理解為:為了達到期望的結果,要求以所示的特定順序或依次執行這些操作,或者要求執行所有顯示的操作。在某些情況下,多任務並行處理可能是有利的。此外,上述實施例中的各種系統模組和組件的劃分不應被理解為所有實施方式中都要求如此劃分,而應當理解,所描述的程式組件和系統通常可以一起整合在單一軟體產品或者打包成多個軟體產品。
已經描述了主題的特定實施例。其他實施例在以下請求項的範圍內。例如,請求項中記載的動作可以以不同的順序執行並且仍然實現期望的結果。作為一個範例,圖式中描繪的程序無需要求所示的特定順序或次序來實現期望的結果。在一些情況下,多任務並行處理可能是有利的。
100:環境
102:網路
106:計算系統
108:計算系統
110:網路
200:概念性架構
202:實體層
204:承載服務層
206:區塊鏈網路層
208:交易管理系統
214:節點
216:區塊鏈
300:系統
308:客戶端
310:節點
312:認證服務
320:認證證據
322:測量值
324:公開金鑰
326:簽署
330:認證驗證報告(AVR)
334:驗證結果
336:簽署
400:訊號流
410~426:步驟
500:訊號流
502~516:步驟
600:訊號流
602~612:步驟
700:程序
702~718:步驟
750:程序
752~768:步驟
800:裝置
802:發送模組
804:接收模組
806:驗證模組
808:傳輸模組
810:接收模組
[圖1]是顯示可用於執行本文的實施方式的環境的範例的示意圖。
[圖2]是顯示根據本文的實施方式的概念性架構的範例的示意圖。
[圖3]是顯示根據本文的實施方式的系統的範例的示意圖。
[圖4]描繪了根據本文的實施方式的訊號流的範例。
[圖5]描繪了根據本文的實施方式的訊號流的範例。
[圖6]描繪了根據本文的實施方式的訊號流的範例。
[圖7A和7B]描繪了根據本文實施方式可執行的程序的範例。
[圖8]描繪了根據本文實施方式的裝置的模組的範例。
在各個圖式中,相同的圖式標記和名稱表示相同的元件。
300:系統
308:客戶端
310:節點
312:認證服務
320:認證證據
322:測量值
324:公開金鑰
326:簽署
330:認證驗證報告(AVR)
334:驗證結果
336:簽署
Claims (10)
- 一種電腦實現的用於在可信執行環境TEE中執行子邏輯代碼的程式執行和資料證明的方法,所述方法包括: 客戶端設備向節點發送請求,所述節點在TEE中執行可信程式,所述請求包括標識和一個或多個請求參數,所述標識用於標識所述子邏輯代碼; 所述客戶端設備接收對所述請求的回應,所述回應包括結果資料和數位簽署,所述結果資料是透過使用所述TEE中的所述子邏輯代碼處理所述一個或多個請求參數而生成的,所述數位簽署是使用所述子邏輯代碼的私密代碼金鑰生成的;並且 所述客戶端設備使用所述數位簽署和所述子邏輯代碼的公開代碼金鑰來驗證所述結果資料。
- 根據請求項1所述的方法,進一步包括: 所述客戶端設備發送註冊請求,以向所述TEE內的所述可信程式註冊所述子邏輯代碼,所述註冊請求包括所述標識和所述子邏輯代碼;並且 所述客戶端設備從所述可信程式接收註冊結果,所述註冊結果包括所述子邏輯代碼的所述公開代碼金鑰。
- 根據請求項2所述的方法,進一步包括: 使用所述可信程式的數位簽署和所述可信程式的公開金鑰來驗證所述註冊結果,所述可信程式的所述數位簽署是使用所述可信程式的私密金鑰來生成的,所述可信程式的所述公開金鑰和所述私密金鑰是在所述可信程式的認證期間作為金鑰對生成的。
- 根據前述任一請求項所述的方法,其中,所述子邏輯代碼是基於所述標識從電腦可讀儲存器中檢索得到的,且在所述TEE內執行以生成所述結果。
- 根據前述任一請求項所述的方法,其中,所述子邏輯代碼是儲存在所述節點中的多個子邏輯代碼之一。
- 根據前述任一請求項所述的方法,其中,所述公開代碼金鑰和所述私密代碼金鑰是在所述TEE內註冊所述子邏輯代碼期間作為代碼金鑰對生成的。
- 根據前述任一請求項所述的方法,其中,所述請求還包括指示將被執行以提供所述結果資料的所述子邏輯代碼的版本的版本號。
- 根據前述任一請求項所述的方法,其中,所述客戶端設備包括區塊鏈網路內的客戶端節點。
- 一種用於在可信執行環境TEE中執行子邏輯代碼的程式執行和資料證明的設備,所述設備包括用於執行請求項1至8中的任一項所述的方法的多個模組。
- 一種系統,包括: 一個或多個電腦;和 耦接到所述一個或多個電腦且其上儲存有指令的一個或多個電腦可讀儲存器,所述指令能由所述一個或多個電腦執行以執行請求項1至8中任一項所述的方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2019/079715 WO2019120317A2 (en) | 2019-03-26 | 2019-03-26 | Program execution and data proof scheme using multiple key pair signatures |
WOPCT/CN2019/079715 | 2019-03-26 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202036345A true TW202036345A (zh) | 2020-10-01 |
TWI725655B TWI725655B (zh) | 2021-04-21 |
Family
ID=66994285
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW108145111A TWI725655B (zh) | 2019-03-26 | 2019-12-10 | 用於在可信執行環境中執行子邏輯代碼的程式執行和資料證明的方法、設備和系統 |
Country Status (10)
Country | Link |
---|---|
US (2) | US10762197B1 (zh) |
EP (1) | EP3610405B1 (zh) |
JP (1) | JP2020522034A (zh) |
KR (1) | KR102392420B1 (zh) |
CN (1) | CN110998581B (zh) |
AU (1) | AU2019204707B2 (zh) |
CA (1) | CA3058499C (zh) |
SG (1) | SG11201908946PA (zh) |
TW (1) | TWI725655B (zh) |
WO (1) | WO2019120317A2 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI800769B (zh) * | 2019-10-18 | 2023-05-01 | 美商鏈通科技股份有限公司 | 使用驗證需求文件驗證擁有者憑證之方法及網路 |
US11809607B2 (en) | 2021-08-05 | 2023-11-07 | International Business Machines Corporation | Customization of multi-part metadata of a secure guest |
US11829495B2 (en) | 2021-08-05 | 2023-11-28 | International Business Machines Corporation | Confidential data provided to a secure guest via metadata |
Families Citing this family (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2020522034A (ja) | 2019-03-26 | 2020-07-27 | アリババ・グループ・ホールディング・リミテッドAlibaba Group Holding Limited | 複数の鍵ペア署名を使用したプログラム実行およびデータ証明スキーム |
US11537523B2 (en) * | 2019-07-31 | 2022-12-27 | Red Hat, Inc. | Command result caching for building application container images |
US20220292174A1 (en) * | 2019-08-19 | 2022-09-15 | Nokia Technologies Oy | Verifiability for execution in trusted execution environment |
CN110633328B (zh) * | 2019-09-25 | 2024-03-22 | 腾讯云计算(北京)有限责任公司 | 一种信息处理方法、装置及计算机可读存储介质 |
EP4049406A1 (en) * | 2019-10-23 | 2022-08-31 | "Enkri Holding", Limited Liability Company | Method and system for anonymous identification of a user |
CN111090865B (zh) * | 2019-12-17 | 2022-01-25 | 支付宝(杭州)信息技术有限公司 | 一种密钥授权方法和系统 |
CN110890962B (zh) * | 2019-12-20 | 2021-04-13 | 支付宝(杭州)信息技术有限公司 | 认证密钥协商方法、装置、存储介质及设备 |
US20210200858A1 (en) * | 2019-12-28 | 2021-07-01 | Intel Corporation | Executing code in protected memory containers by trust domains |
US11244077B2 (en) * | 2020-01-31 | 2022-02-08 | Fortanix, Inc. | Securing data integrity for an application |
JP6830635B1 (ja) * | 2020-02-21 | 2021-02-17 | 株式会社LayerX | データ管理方法 |
JP2023514736A (ja) * | 2020-02-21 | 2023-04-07 | エスディーエスイー ネットワークス インコーポレイテッド | 安全な通信のための方法及びシステム |
US11121864B1 (en) * | 2020-03-13 | 2021-09-14 | International Business Machines Corporation | Secure private key distribution between endpoint instances |
US11080412B1 (en) | 2020-08-20 | 2021-08-03 | Spideroak, Inc. | Efficiently computing validity of a block chain |
CN112422500B (zh) * | 2020-09-25 | 2023-05-16 | 北京熠智科技有限公司 | 跨平台数据传输方法以及装置、存储介质、电子装置 |
US11475140B1 (en) * | 2020-11-24 | 2022-10-18 | Amazon Technologies, Inc. | Enclave-based cryptography services in edge computing environments |
CN112700852A (zh) * | 2021-01-07 | 2021-04-23 | 福州数据技术研究院有限公司 | 一种基于区块链智能合约的医疗数据资产发布管理的方法和存储设备 |
US20220245238A1 (en) * | 2021-01-29 | 2022-08-04 | Securosys SA | Trusted Execution Environment to Provide Attestation of Code Execution Result |
KR102561252B1 (ko) * | 2021-03-18 | 2023-07-28 | 인하대학교 산학협력단 | 자동품질확인이 가능한 블록체인기반 크라우드 소싱방법 |
CN113221166A (zh) * | 2021-05-11 | 2021-08-06 | 支付宝(杭州)信息技术有限公司 | 一种获取区块链数据的方法、装置、电子设备及存储介质 |
CN112948810B (zh) * | 2021-05-12 | 2021-08-31 | 支付宝(杭州)信息技术有限公司 | 一种可信计算程序调用方法、装置、电子设备及存储介质 |
CN112989319B (zh) * | 2021-05-12 | 2021-08-31 | 支付宝(杭州)信息技术有限公司 | 一种实现可信计算的方法、装置、电子设备及存储介质 |
US20230068880A1 (en) * | 2021-08-27 | 2023-03-02 | EMC IP Holding Company LLC | Function-based service framework with trusted execution platform |
EP4145762B1 (en) * | 2021-09-06 | 2023-10-25 | Axis AB | Method and system for enabling secure processing of data using a processing application |
WO2023113573A1 (ko) * | 2021-12-17 | 2023-06-22 | 주식회사 크립토랩 | 전자 장치 및 암호화 방법 |
WO2023186328A1 (en) * | 2022-04-01 | 2023-10-05 | Huawei Technologies Co., Ltd. | Method and apparatus for providing an application-level attestation for trusted applications |
CN116112187B (zh) * | 2023-04-10 | 2023-07-14 | 山东海量信息技术研究院 | 一种远程证明方法、装置、设备及可读存储介质 |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9064109B2 (en) * | 2012-12-20 | 2015-06-23 | Intel Corporation | Privacy enhanced key management for a web service provider using a converged security engine |
US9698989B2 (en) * | 2013-07-23 | 2017-07-04 | Intel Corporation | Feature licensing in a secure processing environment |
US9444627B2 (en) * | 2014-12-24 | 2016-09-13 | Intel Corporation | System and method for providing global platform compliant trusted execution environment |
US9722775B2 (en) * | 2015-02-27 | 2017-08-01 | Verizon Patent And Licensing Inc. | Network services via trusted execution environment |
WO2016154001A1 (en) * | 2015-03-20 | 2016-09-29 | Rivetz Corp. | Automated attestation of device integrity using the block chain |
CN104899506B (zh) | 2015-05-08 | 2018-01-12 | 深圳市雪球科技有限公司 | 基于可信执行环境中虚拟安全元件的安全系统实现方法 |
US9787478B2 (en) * | 2015-06-10 | 2017-10-10 | Qualcomm Incorporated | Service provider certificate management |
US10230529B2 (en) * | 2015-07-31 | 2019-03-12 | Microsft Technology Licensing, LLC | Techniques to secure computation data in a computing environment |
CN106899551B (zh) * | 2015-12-21 | 2020-04-17 | 中国电信股份有限公司 | 认证方法、认证终端以及系统 |
US10419402B2 (en) * | 2017-01-26 | 2019-09-17 | Microsoft Technology Licensing, Llc | Addressing a trusted execution environment using signing key |
US10691793B2 (en) | 2017-02-20 | 2020-06-23 | AlphaPoint | Performance of distributed system functions using a trusted execution environment |
WO2018164955A1 (en) * | 2017-03-06 | 2018-09-13 | Rivetz Corp. | Device enrollment protocol |
US10397005B2 (en) * | 2017-03-31 | 2019-08-27 | Intel Corporation | Using a trusted execution environment as a trusted third party providing privacy for attestation |
US11348095B2 (en) * | 2017-04-11 | 2022-05-31 | Nchain Licensing Ag | Rapid distributed consensus on blockchain |
US10742393B2 (en) | 2017-04-25 | 2020-08-11 | Microsoft Technology Licensing, Llc | Confidentiality in a consortium blockchain network |
CN110366843B (zh) | 2017-07-13 | 2020-12-25 | 华为技术有限公司 | 控制可信应用访问的方法和终端 |
US10567359B2 (en) | 2017-07-18 | 2020-02-18 | International Business Machines Corporation | Cluster of secure execution platforms |
CN107464109B (zh) * | 2017-07-28 | 2020-10-20 | 中国工商银行股份有限公司 | 可信移动支付装置、系统和方法 |
CN107689868B (zh) * | 2017-09-12 | 2021-09-07 | 北京握奇智能科技有限公司 | 客户端应用与可信应用的通信方法、装置以及终端 |
US10887090B2 (en) * | 2017-09-22 | 2021-01-05 | Nec Corporation | Scalable byzantine fault-tolerant protocol with partial tee support |
CN108563953B (zh) * | 2018-03-26 | 2021-12-21 | 南京微可信信息技术有限公司 | 一种安全可扩展的可信应用开发方法 |
JP2020522034A (ja) | 2019-03-26 | 2020-07-27 | アリババ・グループ・ホールディング・リミテッドAlibaba Group Holding Limited | 複数の鍵ペア署名を使用したプログラム実行およびデータ証明スキーム |
-
2019
- 2019-03-26 JP JP2019553389A patent/JP2020522034A/ja active Pending
- 2019-03-26 CN CN201980003885.1A patent/CN110998581B/zh active Active
- 2019-03-26 WO PCT/CN2019/079715 patent/WO2019120317A2/en unknown
- 2019-03-26 AU AU2019204707A patent/AU2019204707B2/en active Active
- 2019-03-26 KR KR1020197028585A patent/KR102392420B1/ko active IP Right Grant
- 2019-03-26 EP EP19732227.4A patent/EP3610405B1/en active Active
- 2019-03-26 SG SG11201908946P patent/SG11201908946PA/en unknown
- 2019-03-26 CA CA3058499A patent/CA3058499C/en active Active
- 2019-09-30 US US16/588,436 patent/US10762197B1/en active Active
- 2019-12-10 TW TW108145111A patent/TWI725655B/zh active
-
2020
- 2020-07-20 US US16/933,629 patent/US10977362B2/en active Active
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI800769B (zh) * | 2019-10-18 | 2023-05-01 | 美商鏈通科技股份有限公司 | 使用驗證需求文件驗證擁有者憑證之方法及網路 |
US11809607B2 (en) | 2021-08-05 | 2023-11-07 | International Business Machines Corporation | Customization of multi-part metadata of a secure guest |
TWI822038B (zh) * | 2021-08-05 | 2023-11-11 | 美商萬國商業機器公司 | 用於安全客戶之多部分元資料之客製化之電腦程式產品、電腦系統及電腦實施方法 |
US11829495B2 (en) | 2021-08-05 | 2023-11-28 | International Business Machines Corporation | Confidential data provided to a secure guest via metadata |
Also Published As
Publication number | Publication date |
---|---|
CN110998581A (zh) | 2020-04-10 |
US20200349252A1 (en) | 2020-11-05 |
TWI725655B (zh) | 2021-04-21 |
CN110998581B (zh) | 2024-05-24 |
US10762197B1 (en) | 2020-09-01 |
SG11201908946PA (en) | 2019-10-30 |
AU2019204707B2 (en) | 2020-10-01 |
JP2020522034A (ja) | 2020-07-27 |
KR102392420B1 (ko) | 2022-05-02 |
EP3610405A4 (en) | 2020-07-08 |
WO2019120317A3 (en) | 2020-02-20 |
CA3058499C (en) | 2021-10-26 |
AU2019204707A1 (en) | 2019-06-27 |
EP3610405B1 (en) | 2021-07-21 |
CA3058499A1 (en) | 2019-06-27 |
EP3610405A2 (en) | 2020-02-19 |
KR20200116012A (ko) | 2020-10-08 |
WO2019120317A2 (en) | 2019-06-27 |
US10977362B2 (en) | 2021-04-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI725655B (zh) | 用於在可信執行環境中執行子邏輯代碼的程式執行和資料證明的方法、設備和系統 | |
AU2019204725B2 (en) | Retrieving access data for blockchain networks using highly available trusted execution environments | |
CN111095899B (zh) | 针对可信执行环境的分布式密钥管理 | |
AU2019204708B2 (en) | Retrieving public data for blockchain networks using highly available trusted execution environments | |
CN111066287B (zh) | 使用可信执行环境检索区块链网络的公开数据 | |
JP2020528224A (ja) | 信頼できる実行環境におけるスマート契約動作のセキュアな実行 |