TW202036351A - 用於區塊鏈網路的基於現場可程式化閘陣列的可信執行環境 - Google Patents

用於區塊鏈網路的基於現場可程式化閘陣列的可信執行環境 Download PDF

Info

Publication number
TW202036351A
TW202036351A TW108144880A TW108144880A TW202036351A TW 202036351 A TW202036351 A TW 202036351A TW 108144880 A TW108144880 A TW 108144880A TW 108144880 A TW108144880 A TW 108144880A TW 202036351 A TW202036351 A TW 202036351A
Authority
TW
Taiwan
Prior art keywords
fpga
key
blockchain
random number
encrypted
Prior art date
Application number
TW108144880A
Other languages
English (en)
Other versions
TWI715338B (zh
Inventor
魏長征
潘國振
閆鶯
杜華兵
趙博然
宋旭陽
涂依晨
周妮
徐建國
Original Assignee
香港商阿里巴巴集團服務有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 香港商阿里巴巴集團服務有限公司 filed Critical 香港商阿里巴巴集團服務有限公司
Publication of TW202036351A publication Critical patent/TW202036351A/zh
Application granted granted Critical
Publication of TWI715338B publication Critical patent/TWI715338B/zh

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0866Generation of secret information including derivation or calculation of cryptographic keys or passwords involving user or device identifiers, e.g. serial number, physical or biometrical information, DNA, hand-signature or measurable physical characteristics
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting 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/72Protecting 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting 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/76Protecting 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 application-specific integrated circuits [ASIC] or field-programmable devices, e.g. field-programmable gate arrays [FPGA] or programmable logic devices [PLD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q40/00Finance; Insurance; Tax strategies; Processing of corporate or income taxes
    • G06Q40/04Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09CCIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
    • G09C1/00Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key 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)
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0869Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0894Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
    • H04L9/0897Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage involving additional devices, e.g. trusted platform module [TPM], smartcard or USB
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic 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/3236Cryptographic 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/3239Cryptographic 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees

Abstract

本文公開了用於配置用於區塊鏈網路的基於現場可程式化閘陣列(FPGA)的可信執行環境(TEE)的方法、系統和裝置,包括編碼在電腦儲存媒體上的電腦程式。所述方法之一包括將設備標識符(ID)、第一隨機數和第一金鑰儲存在現場可程式化閘陣列(FPGA)設備中;將加密位元流發送到FPGA設備,其中,加密位元流可以通過第一金鑰解密成包括第二隨機數的解密位元流;從FPGA設備接收加密訊息;使用第三金鑰對來自FPGA設備的加密訊息進行解密以產生解密訊息;回應於對所述加密訊息進行瞭解密:確定所述解密訊息中的第三隨機數;使用所述第三隨機數對金鑰進行加密;以及將所述金鑰發送到FPGA設備。

Description

用於區塊鏈網路的基於現場可程式化閘陣列的可信執行環境
本文涉及配置基於現場可程式化閘陣列(FPGA)的可信執行環境(TEE)以執行區塊鏈合約虛擬機。
分散式帳本(DLS),也可稱為共識網路和/或區塊鏈網路,使參與的實體能夠安全地且不可篡改地儲存資料。在不引用任何特定用例的情況下,DLS通常被稱為區塊鏈網路。區塊鏈網路的範例類型可以包括公有區塊鏈網路、私有區塊鏈網路和聯盟區塊鏈網路。聯盟區塊鏈網路針對選擇的實體組群提供,該實體組群控制共識處理,並包括存取控制層。 區塊鏈網路中的節點運行一個或多個程式,例如區塊鏈虛擬機,用於執行與區塊鏈相關的任務。與區塊鏈相關的任務的範例包括查詢帳戶餘額、部署智慧合約、驗證新區塊鏈交易等。 現場可程式化閘陣列(FPGA)是能夠配置為執行不同邏輯功能的積體電路。FPGA包含可程式化邏輯塊陣列和可用於線連接不同配置中的邏輯塊的互連。FPGA位元流是包含用於FPGA的程式化資訊的檔案。 一些現代處理器包括可信執行環境(Trusted Execution Environment,TEE)功能。TEE是一種安全的硬體環境,其可保護處理器上執行的軟體代碼免受未經授權的修改。TEE提供隔離的指定位址空間(enclave)以防止外部處理(例如,作業系統、外部參與者等)改變在指定位址空間內執行的任何資料或軟體代碼。TEE通常還包括用於驗證處理器上執行的軟體代碼,或者在某些情況下,與執行軟體相關聯的資料未被修改的機制。TEE實施方式的一個範例是英特爾的基於CPU的SGX®技術,所述技術依賴於由英特爾營運的集中式信任機構。 期望允許開發人員在不涉及外部實體的情況下實現他們自己的信任機制。
本文描述了用於增強區塊鏈節點上的資料和代碼安全性的技術。這些技術總體上涉及配置基於FPGA的TEE,以在區塊鏈節點上運行與區塊鏈相關的程式。 本文還提供了耦接到一個或多個處理器並且其上儲存有指令的一個或多個非暫態電腦可讀儲存媒體,當所述指令由所述一個或多個處理器執行時,所述指令將促使所述一個或多個處理器按照本文提供的方法的實施方式執行操作。 本文還提供了用於實施本文提供的所述方法的系統。所述系統包括一個或多個處理器以及耦接到所述一個或多個處理器並且其上儲存有指令的電腦可讀儲存媒體,當所述指令由所述一個或多個處理器執行時,所述指令將導致所述一個或多個處理器按照本文提供的方法的實施方式執行操作。 應瞭解,依據本文的方法可以包括本文描述的態樣和特徵的任意組合。也就是說,根據本文的方法不限於本文具體描述的態樣和特徵的組合,而還包括所提供的態樣和特徵的任意組合。 以下在圖式和描述中闡述了本文的一個或多個實施方式的細節。根據說明書和圖式以及請求項,本文的其他特徵和優點將顯而易見。
本文描述了用於增強區塊鏈節點上的資料和代碼安全性的技術。這些技術通常涉及配置基於FPGA的TEE,以在區塊鏈節點上運行與區塊鏈相關的程式。 為本文的實施例提供進一步的上下文,並且如上所述,分散式帳本系統(DLS),其也可以稱為共識網路(例如,由點對點節點組成)和區塊鏈網路,使參與的實體安全地、不可篡改地交易和儲存資料。儘管術語“區塊鏈”通常與特定網路和/或用例相關聯,但是在不參考任何特定用例情況下,本文使用“區塊鏈”來一般地指代DLS。 區塊鏈是以交易不可篡改的方式儲存交易的資料結構。因此,區塊鏈上記錄的交易是可靠且可信的。區塊鏈包括一個或多個區塊。鏈中的每個區塊通過包含在鏈中緊鄰其之前的前一區塊的加密雜湊值(cryptographic hash)鏈接到該前一區塊。每個區塊還包括時間戳記、自身的加密雜湊值以及一個或多個交易。已經被區塊鏈網路中的節點驗證的交易經雜湊處理並編入默克爾(Merkle)樹中。Merkle樹是一種資料結構,在該樹的葉節點處的資料經雜湊處理,並且在該樹的每個分支中的所有雜湊值在該分支的根處級聯。沿著該樹持續該處理一直到整個樹的根,在整個樹的根處儲存了代表樹中所有資料的雜湊值。通過確定雜湊值是否與樹的結構一致而可快速驗證該雜湊值是否為儲存在該樹中的交易的雜湊值。 區塊鏈是用於儲存交易的去中心化或至少部分去中心化的資料結構,而區塊鏈網路是通過廣播、驗證和確認交易等來管理、更新和維護一個或多個區塊鏈的計算節點的網路。如上所述,區塊鏈網路可作為公有區塊鏈網路、私有區塊鏈網路或聯盟區塊鏈網路被提供。這裡參考聯盟區塊鏈網路進一步詳細描述了本文的實施例。然而,預期本文的實施例可以在任何適當類型的區塊鏈網路中實現。 通常,聯盟區塊鏈網路在參與實體之間是私有的。在聯盟區塊鏈網路中,共識處理由可以被稱為共識節點的授權的節點集控制,一個或多個共識節點由相應的實體(例如,金融機構、保險公司)操作。例如,由十(10)個實體(例如,金融機構、保險公司)組成的聯盟可以操作聯盟區塊鏈網路,每個實體操作聯盟區塊鏈網路中的至少一個節點。 在一些範例中,在聯盟區塊鏈網路內,提供全域區塊鏈作為跨所有節點複製的區塊鏈。也就是說,所有共識節點相對於全域區塊鏈處於完全共識狀態。為了達成共識(例如,同意向區塊鏈添加區塊),在聯盟區塊鏈網路內實施共識協定。例如,聯盟區塊鏈網路可以實施實用拜占庭容錯(Practical Byzantine Fault Tolerance,PBFT)共識,下面將進一步詳細描述。 圖1是顯示了可用於執行本文實施例的環境100的範例的圖。在一些範例中,環境100使得實體能夠參與聯盟區塊鏈網路102。環境100包括計算系統106、108和網路110。在一些範例中,網路110包括區域網路(LAN)、廣域網路(WAN)、網際網路或其組合,並且連接網站、用戶設備(例如,計算設備)和後端系統。在一些範例中,可以通過有線和/或無線通訊鏈路來存取網路110。在一些範例中,網路110使得能夠與聯盟區塊鏈網路102通訊或在聯盟區塊鏈網路102內部通訊成為可能。通常,網路110表示一個或多個通訊網路。在一些情況下,計算系統106、108可以是雲計算系統(未顯示)的節點,或者每個計算系統106、108可以是單獨的雲計算系統,其包括通過網路互連並且用作分散式處理系統的多個電腦。 在所描繪的範例中,計算系統106、108可以各自包括能夠作為節點參與至聯盟區塊鏈網路102中的任何適當的計算設備120。計算設備的範例包括(但不限於)伺服器、桌上型電腦、筆記型電腦、平板電腦和智慧型手機。在一些範例中,計算系統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通過網路(例如,圖1的網路110)使用協定(例如,超文字傳輸安全協定(HTTPS))與各自的介面210通訊。在一些範例中,每個介面210提供各自的交易管理系統208與區塊鏈網路層206之間的通訊連接。更具體地,介面210與區塊鏈網路層206的區塊鏈網路212通訊。在一些範例中,使用遠端程序呼叫(RPC)進行介面210與區塊鏈網路層206之間的通訊。在一些範例中,介面210“承載”用於各自的交易管理系統208的區塊鏈網路節點。例如,介面210提供用於存取區塊鏈網路212的應用程式介面(API)。 如本文所述,提供作為點對點網路的區塊鏈網路212,所述區塊鏈網路212包括在區塊鏈216中不可篡改地記錄資訊的多個節點214。儘管示意性地描繪了單一區塊鏈216,但是提供了區塊鏈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,並且未被篡改。 圖3描繪了根據本文的實施方式的具有基於FPGA的可信執行環境(TEE)的區塊鏈節點300的範例。區塊鏈節點300是例如圖2的區塊鏈網路212的區塊鏈網路的多個節點之一。在一些情況下,區塊鏈節點300能夠儲存區塊鏈資訊並執行與區塊鏈相關的任務,例如智慧合約。 在一些實施方式中,區塊鏈節點300包括可通訊地耦接到外圍組件互連快速(Peripheral Component Interconnect Express,PCI-e)設備303的平臺301。平臺301能夠執行通用計算任務,並且包括電腦硬體,諸如DRAM 301a、CPU 301b和硬碟驅動器301c。在一個範例中,平臺301可以是伺服器、個人電腦、平板電腦等。 在一些實施方式中,為了增強資料和代碼的安全性,區塊鏈節點300在TEE中執行與區塊鏈相關的任務。結果,禁止未授權的程式和設備(例如平臺301的作業系統)存取和更改區塊鏈節點300上的與區塊鏈相關的資訊以及在TEE中執行的軟體代碼。 在一些實施方式中,為了在區塊鏈節點300上實現基於FPGA的TEE,平臺301可通訊地耦接到PCI-e設備303。PCI-e設備303包括FPGA 304和用於實現TEE所需的附加硬體資源306。FPGA 304是能夠配置為執行特定邏輯功能的可程式化積體電路。FPGA 304包括可程式化區域319、eFUSE 320和ASIC區域322。可程式化區域319包括可以被線連接在一起以執行複雜的組合功能的可程式化塊陣列。可以通過將FPGA位元流載入到可程式化區域319中來程式化FPGA 304。例如,FPGA位元流可以包括用於在可程式化區域319中創建TEE的指令。eFUSE 320是包括一系列熔斷鏈(fuse link)的一次性可程式化區域,其中每個熔斷鏈可以被燒錄以儲存位元。結果,與可程式化區域319不同,eFUSE 320一旦被寫入就不能被重新程式化。例如,eFUSE 320可以儲存FPGA 304特有的資訊,例如唯一設備ID。ASIC區域322是不能由FPGA位元流重新程式化的固定邏輯區域。ASIC區域322可以儲存支援FPGA 304的功能的程式。在一個範例中,ASIC區域322可以儲存認證新載入的FPGA位元流的位元流認證模組324。 在一些實施方式中,FPGA 304耦接到PCI-e設備上的附加硬體資源306。例如,FPGA 304可以與可信平臺模組(Trusted Platform Module,TPM)332、快閃記憶體334和DRAM 336進行介面連接。 在一些實施方式中,為了提供TEE的“執行”態樣,FPGA 304被程式化為至少運行K-V(鍵值對)表319a、查詢服務319b和區塊鏈虛擬機319c。K-V表319a是在FPGA 304上本地儲存區塊鏈資訊的高速快取。查詢服務319b是負責答覆提交給區塊鏈的查詢的程式。區塊鏈查詢的範例包括查詢過去的交易、帳戶餘額等。區塊鏈虛擬機319c是負責在區塊鏈節點300上執行與區塊鏈相關的任務的程式。例如,區塊鏈虛擬機319c可以執行部署在區塊鏈網路上的智慧合約。 在一些實施方式中,為了提供TEE的“可信”態樣,FPGA 304被程式化為至少運行儲存器加密服務319d、金鑰服務319e和認證服務319f。儲存器加密服務319d對FPGA 304上的關鍵資訊進行編碼。金鑰服務319e負責管理金鑰並使用金鑰與區塊鏈進行通訊。認證服務319f允許FPGA 304,例如通過提供位元流測量報告,向遠端設備或用戶證明FPGA 304可以被信任。針對圖4和下面的相關描述對將FPGA 304程式化為TEE的步驟和方法進行描述。 圖4描繪了根據本文的實施方式的基於FPGA的TEE設置400的範例。在TEE設置400期間,設置伺服器402與FPGA 304交換資訊以創建基於FPGA的TEE。TEE設置400的目標有兩個:(1)FPGA 304被程式化為對來自設置伺服器402的加密位元流408a進行解碼、認證和安裝;(2)設置伺服器402被程式化為利用FPGA 304進行認證,並將要部署的私密金鑰(404a)發送到FPGA 304。一旦接收到所部署的私密金鑰404b,FPGA 304的金鑰服務319e(圖3)管理這些金鑰並使用它們與外部處理和設備進行通訊。阻止未經授權的處理和設備(例如,沒有正確金鑰資訊的處理和設備)與FPGA 304交換資訊。可程式化區域319還包括用於執行與區塊鏈相關的任務的一個或多個程式,例如圖3的程式319a-319c。這些程式構成了TEE的“執行”態樣。 在一些實施方式中,在TEE設置400的開始,設置伺服器402儲存用於將FPGA 304程式化為TEE的所有必要資訊。例如,設置伺服器402可以儲存用於FPGA 304的設備資訊,包括設備ID 410a、設備私密金鑰熵412a和位元流認證金鑰414a。設備ID 410a是唯一標識FPGA 304的字元串,設備私密金鑰熵412a是隨機生成的或偽隨機生成的用於FPGA 304的字元串,以及位元流認證金鑰414a是用於認證加密位元流408a的字元串。區塊鏈網路中的不同FPGA設備將具有不同的設備資訊設置。設置伺服器402可以將設備資訊的集合儲存在任何合適的資料結構例如鍵值表中。 設置伺服器402將設備資訊程式化到eFUSE 320中(401)。例如,可以使用JTAG標準將設備資訊寫入eFUSE 320。結果,eFUSE 320儲存相應的設備ID 410b、設備私密金鑰熵412b和位元流認證金鑰414b。由於eFUSE 320僅是一次性可程式化的,因此設備資訊在FPGA 304中不能被改變。 接下來,設置伺服器402使加密位元流408a被發送到FPGA 304。加密位元流408a是意於配置可程式化區域319以實現TEE功能的檔案。可以使用任何合適的加密方案諸如高階加密標準(AES)對加密位元流408a進行編碼。加密位元流408a可以被部署到區塊鏈網路中的不同FPGA設備。 在接收到加密位元流408a時,FPGA 304使用儲存在eFUSE 320中的位元流認證金鑰414b來認證加密位元流408a(403)。例如,FPGA 304可以被程式化為使用儲存在ASIC區域322中的專用位元流認證模組324來執行認證。如果加密位元流408a是用於FPGA 304的正確位元流,則認證將成功。結果,FPGA 304對加密位元流408a進行解碼,並將解碼的位元流載入到可程式化區域319(405)。 在一些實施方式中,解碼的位元流包括金鑰生成模組418和根私密金鑰熵416。根私密金鑰熵416是隨機生成的或偽隨機生成的加密位元流408特有的字元串,並且金鑰生成模組418是被設計為生成根私密金鑰的程式。 金鑰生成模組418將根私密金鑰熵416、設備ID 410b和設備私密金鑰熵412b作為輸入,並將生成的根私密金鑰406b作為輸出。儘管不同的FPGA設備具有相同的根私密金鑰熵,但是所生成的根私密金鑰406b是FPGA 304特有的,這是因為設備ID 410b和設備私密金鑰熵412b是FPGA 304特有的。以這種方式,FPGA位元流可以由社區開源並審計,但仍然可以用於在FPGA 304上創建TEE。 接下來,FPGA 304用生成的根私密金鑰406b對訊息進行加密,並將所述訊息發送到設置伺服器402(407)。例如,所述訊息可以是唯一設備ID 410b和隨機數的級聯。FPGA 304可以使用任何合適的加密方案例如AES或GCM對訊息進行編碼。 在從FPGA 304接收到加密訊息時,設置伺服器402對所述訊息進行解密並確定所生成的根私密金鑰406b與根私密金鑰406a是否相同(407)。如果相同,則設置伺服器402利用隨機數對要部署的私密金鑰404a進行加密並將加密金鑰發送到FPGA 304(409)。FPGA 304接收並儲存所部署的私密金鑰404b。所部署的私密金鑰404b是負責在基於FPGA的TEE和外部環境之間交換資訊的金鑰。例如,所部署的私密金鑰404b可以包括解封私密金鑰、簽署私密金鑰等。 在一些實施方式中,遠端用戶發起驗證TEE環境的認證請求。作為回應,FPGA 304準備位元流認證報告,並用所部署的私密金鑰404b對位元流認證報告進行加密後將其發送給遠端用戶。例如,FPGA 304可以使用認證服務319f(圖3)來回應所述請求。 圖5是用於實現基於FPGA的TEE的處理500的範例的流程圖。為方便起見,處理500將被描述為由位於一個或多個位置的一個或多個電腦的系統執行,並根據本文被適當地程式化。例如,被適當地程式化的區塊鏈節點(例如,圖1的計算系統106)可以執行處理500。 作為第一步,伺服器將設備標識符(ID)、第一隨機數和第一金鑰儲存在現場可程式化閘陣列(FPGA)設備中(502)。例如,伺服器可以將資訊儲存在FPGA設備的一次性可程式化區域例如eFUSE中。FPGA設備可通訊地耦接到伺服器,並且設備ID是FPGA設備特有的。 接下來,伺服器將加密位元流發送到FPGA設備(504)。如果被正確解密,加密位元流將FPGA設備程式化為執行預定義的功能。伺服器可以通過一個或多個通訊通道諸如外圍組件互連快速(PCI-E)通道將加密位元流發送到FPGA設備。 作為回應,FPGA設備使用位元流認證模組和先前接收的第一金鑰對加密位元流進行解密。在成功解密後,FPGA設備載入解密的位元流。位元流中的金鑰生成模組被程式化為使用(1)設備ID、(2)第一隨機數以及(3)位元流中包括的第二隨機數生成第二金鑰。 接著,FPGA設備使用第二金鑰加密訊息。例如,所述訊息可以是使用高階加密標準-伽羅瓦/計數器模式(AES-GCM)的設備ID和第三隨機數的級聯(設備ID||第三隨機數)。 伺服器從FPGA設備接收加密訊息(506)。 伺服器使用第三金鑰對來自FPGA設備的加密訊息進行解密以產生解密的訊息(508)。第三金鑰先前被儲存在伺服器中,並且應該與FPGA設備生成的第二金鑰相同。 回應於成功解密,伺服器確定解密的訊息中包含的第三隨機數(510)。伺服器可以確定第三隨機數,因為伺服器已經儲存了設備ID。 接下來,伺服器使用第三隨機數對一個或多個金鑰進行加密(512)。例如,FPGA設備可以使用金鑰來執行各種功能,例如認證服務。接著,伺服器將加密金鑰發送到FPGA設備(514)。 圖6是根據本文的實施例的裝置600的模組的範例的示圖。 裝置600可以是被配置為同步區塊鏈網路中的資料的區塊鏈節點的實施例的範例,其中所述區塊鏈網路是聯盟區塊鏈網路。裝置600可以對應於上述實施例,並且裝置600包括以下:儲存模組610,將設備標識符(ID)、第一隨機數和第一金鑰儲存在現場可程式化閘陣列(FPGA)設備中;第一發送模組620,將加密位元流發送到FPGA設備,其中,可以通過第一金鑰將所述加密位元流解密成包括第二隨機數的解密的位元流;接收模組630,從FPGA設備接收加密訊息,其中所述加密訊息是由FPGA設備使用第二金鑰進行加密的,並且其中由FPGA設備使用設備ID、第一隨機數和第二隨機數生成第二金鑰;解密模組640,使用第三金鑰對來自FPGA設備的加密訊息進行解密,以產生解密的訊息,其中所述第三金鑰被儲存在伺服器中;確定模組650,確定嵌入在解密的訊息中的第三隨機數;加密模組660,使用第三隨機數對一個或多個金鑰進行加密;第二發送模組670,將一個或多個金鑰發送給FPGA設備。 本文中描述的技術產生一個或多個技術效果。例如,在一些實施例中,所述技術使計算設備能夠與FPGA建立信任關係,以使其能夠用作可信執行環境(TEE)。在一些實施例中,所述技術使得能夠在不涉及FPGA的製造商的認證的情況下建立該信任關係。這可以提高安全性,因為它可以消除在驗證期間與外部實體的互動,而與外部實體的互動可能會受到攻擊者的攔截或篡改。 所描述的主題的實施例可以包括單獨或組合的一個或多個特徵。例如,在第一實施例中,電腦實現的用於配置用於區塊鏈網路的可信執行環境的方法,包括:由區塊鏈節點將設備標識符(ID)、第一隨機數和第一金鑰儲存在與所述區塊鏈節點相關聯的現場可程式化閘陣列(FPGA)設備中;由所述區塊鏈節點將加密位元流發送到FPGA設備,其中,所述加密位元流可以通過所述第一金鑰被解密為包括第二隨機數的解密的位元流;由所述區塊鏈節點從FPGA設備接收加密訊息,其中所述加密訊息是由所述FPGA設備使用第二金鑰進行加密的,並且由FPGA設備使用設備ID、第一隨機數和第二隨機數生成所述第二金鑰;由所述區塊鏈節點使用第三金鑰對來自FPGA設備的加密訊息進行解密以產生解密的訊息,其中所述第三金鑰被儲存在伺服器中;回應於使用第三金鑰對所述加密訊息進行解密:由所述區塊鏈節點確定嵌入在所述解密訊息中的第三隨機數;由所述區塊鏈節點使用第三隨機數對一個或多個金鑰進行加密;以及由所述區塊鏈節點將所述一個或多個金鑰發送到所述FPGA設備。 前述和其他描述的實施例可以各自可選地包括以下特徵中的一個或多個: 第一特徵,可與以下任何特徵組合,指定所述設備ID、所述第一隨機數和所述第一金鑰被儲存在所述FPGA設備的一次性可程式化區域中。 第二特徵,可與先前或以下特徵中的任何特徵組合,指定所述解密的位元流和所述第二隨機數被儲存在所述FPGA設備的可重新程式化區域中。 第三特徵,可與先前或以下特徵中的任何特徵組合,指定所述設備ID和所述第一隨機數是所述FPGA設備特有的。 第四特徵,可與先前或以下特徵中的任何特徵組合,指定所述解密的訊息包括設備ID。 第五特徵,可與先前或以下特徵中的任何特徵組合,指定所述第三金鑰與所述第二金鑰是相同的。 第六特徵,可與先前或以下特徵中的任何特徵組合,指定所述FPGA設備使用位元流認證模組和第一金鑰對加密位元流進行解密和認證。 本文中描述的主題、動作和操作的實施例可以在數位電子電路、有形體現的電腦軟體或韌體、電腦硬體中實現,包括本文中公開的結構及其結構等同物,或者它們中的一個或多個的組合。本文中描述的主題的實施可以實現為一個或多個電腦程式,例如,編碼在電腦程式載體上的一個或多個電腦程式指令模組,用於由資料處理執行或控制資料處理裝置的操作。例如,電腦程式載體可以包括一個或多個電腦可讀儲存媒體,其具有編碼或儲存在其上的指令。載體可以是有形的非暫態電腦可讀媒體,例如磁碟、磁光碟或光碟、固態硬碟、隨機存取記憶體(RAM)、唯讀記憶體(ROM)或其他媒體類型。替代地或另外地,載體可以是人工生成的傳播訊號,例如,機器生成的電、光或電磁訊號,其被生成以編碼資訊以便傳輸到合適的接收器裝置以供資料處理裝置執行。電腦儲存媒體可以是或部分是機器可讀儲存設備、機器可讀儲存基板、隨機或串列存取儲存器設備或它們中的一個或多個的組合。電腦儲存媒體不是傳播訊號。 電腦程式,也可以被稱為或描述為程式、軟體、軟體應用程式、app、模組、軟體模組、引擎、腳本或代碼,可以以任何形式的程式化語言編寫,包括編譯或解釋性語言、說明或程式性語言;它可以配置為任何形式,包括作為獨立程式,或者作為模組、組件、引擎、子程式或適合在計算環境中執行的其他單元,該環境可包括由通訊資料網路互聯的在一個或多個位置上的一台或多台電腦。 電腦程式可以但非必須對應於檔案系統中的檔案。電腦程式可以儲存在:檔案保存其他程式或資料的檔案的一部分中,例如,儲存在標記語言檔案中的一個或多個腳本;專用於所討論的程式的單一檔案;或者多個協調檔案,例如,儲存一個或多個模組、子程式或代碼部分的多個檔案。 舉例來說,用於執行電腦程式的處理器包括通用和專用微處理器,以及任何類型的數位電腦的任何一個或多個處理器。通常,處理器將從耦接到處理器的非暫態電腦可讀媒體接收用於執行的電腦程式的指令以及資料。 術語“資料處理裝置”包括用於處理資料的所有類型的裝置、設備和機器,包括例如可程式化處理器、電腦或者多處理器或電腦。資料處理裝置可以包括專用邏輯電路,例如FPGA(現場可程式化閘陣列)、ASIC(特殊應用積體電路)或GPU(圖形處理單元)。除了硬體,該裝置還可以包括為電腦程式創建執行環境的代碼,例如,構成處理器韌體、協定棧、資料庫管理系統、作業系統或者它們中的一個或多個的組合的代碼。 本文中描述的處理和邏輯流程可以由執行一個或多個電腦程式的一個或多個電腦或處理器執行,以通過對輸入資料進行運算並生成輸出來執行操作。處理和邏輯流程也可以由例如FPGA、ASIC或GPU的專用邏輯電路或專用邏輯電路與一個或多個程式化電腦的組合來執行。 適合於執行電腦程式的電腦可以基於通用和/或專用微處理器,或任何其他種類的中央處理單元。通常,中央處理單元將從唯讀儲存器和/或隨機存取儲存器接收指令和資料。電腦的元件可包括用於執行指令的中央處理單元以及用於儲存指令和資料的一個或多個儲存器設備。中央處理單元和儲存器可以補充有專用邏輯電路或集成在專用邏輯電路中。 通常,電腦還將包括或可操作地耦接至一個或多個大容量儲存設備,以從一個或多個儲存設備接收資料或將資料傳輸到一個或多個大容量儲存設備。儲存設備可以是,例如,磁碟、磁光碟或光碟,固態硬碟或任何其他類型的非暫態電腦可讀媒體。但是,電腦不需要具有這樣的設備。因此,電腦可以耦接到例如本地和/或遠端的一個或多個儲存器的一個或多個儲存器設備。例如,電腦可以包括作為電腦的整體部件的一個或多個本地儲存器,或者電腦可以耦接到雲網路中的一個或多個遠端儲存器。此外,電腦可以嵌入到另一個設備中,例如行動電話、個人數位助理(PDA)、移動音訊或視訊播放器、遊戲控制台、全球定位系統(GPS)接收器或例如通用串列匯流排(USB)快閃記憶體驅動器的可攜式儲存設備,僅舉幾例。 組件可以通過例如直接地或經由一個或多個中間組件彼此電連接或光連接而可交換地彼此“耦接”。如果其中一個組件集成到另一個組件中,則組件也可以彼此“耦接”。例如,集成到處理器中的儲存組件(例如,L2高速快取組件)被“耦接到”處理器。 為了提供與用戶的互動,本文中描述的主題的實施例可以在電腦上實現或配置為與該電腦通訊,該電腦具有:顯示設備(例如,LCD(液晶顯示器)監視器),用於向用戶顯示資訊;以及輸入設備,用戶可以通過該輸入設備向該電腦提供輸入,例如鍵盤和例如滑鼠、軌跡球或觸控板等的指針設備。其他類型的設備也可用於提供與用戶的互動;例如,提供給用戶的反饋可以是任何形式的感覺反饋,例如視覺反饋、聽覺反饋或觸覺反饋;並且可以接收來自用戶的任何形式的輸入,包括聲音、語音或觸覺輸入。另外,電腦可以通過向用戶使用的設備發送檔案和從用戶使用的設備接收檔案來與用戶互動;例如,通過回應於從用戶設備上的web瀏覽器接收的請求將網頁發送到用戶設備上的web瀏覽器,或者通過與在例如智慧型電話或電子平板電腦等的用戶設備上運行的應用程式(app)互動。此外,電腦可以通過向個人設備(例如,運行訊息應用的智慧型手機)輪流發送文字訊息或其他形式的訊息來並接收來自用戶的回應訊息來與用戶互動。 本文使用與系統、裝置和電腦程式組件有關的術語“配置為”。對於被配置為執行特定操作或動作的一個或多個電腦的系統,意味著系統已經在其上安裝了在運行中促使該系統執行所述操作或動作的軟體、韌體、硬體或它們的組合。對於被配置為執行特定操作或動作的一個或多個電腦程式,意味著一個或多個程式包括當被資料處理裝置執行時促使該裝置執行所述操作或動作的指令。對於被配置為執行特定操作或動作的專用邏輯電路,意味著該電路具有執行所述操作或動作的電子邏輯。 儘管本文包含許多具體實施細節,但這些不應被解釋為由請求項本身限定的對要求保護的範圍的限制,而是作為對特定實施例的具體特徵的描述。在本文單獨實施例的上下文中描述的某些特徵也可以在單一實施例中組合實現。相反,在單一實施例的上下文中描述的各種特徵也可以單獨地或以任何合適的子組合在多個實施例中實現。此外,儘管上面的特徵可以描述為以某些組合起作用並且甚至最初如此要求保護,但是在一些情況下,可以從要求保護的組合中刪除來自該組合的一個或多個特徵,並且可以要求保護指向子組合或子組合的變體。 類似地,雖然以特定順序在圖式中描繪了操作並且在請求項中敘述了操作,但是這不應該被理解為:為了達到期望的效果,要求以所示的特定順序或依次執行這些操作,或者要求執行所有顯示的操作。在某些情況下,多任務和並行處理可能是有利的。此外,上述實施例中的各種系統模組和組件的劃分不應被理解為所有實施例中都要求如此劃分,而應當理解,所描述的程式組件和系統通常可以一起集成在單一軟體產品中或打包成多個軟體產品。 已經描述了主題的特定實施例。其他實施例在以下請求項的範圍內。例如,請求項中記載的動作可以以不同的順序執行並且仍然實現期望的結果。作為一個範例,圖式中描繪的處理無需要求所示的特定順序或次序來實現期望的結果。在某些情況下,多任務和並行處理可能是有利的。
100:環境 102:聯盟區塊鏈網路 106:計算系統 108:計算系統 110:網路 120:計算設備 200:架構 202:實體層 204:承載服務層 206:區塊鏈網路層 208:交易管理系統 210:介面 212:區塊鏈網路 214:節點 216:區塊鏈 300:區塊鏈節點 301:平臺 301a:DRAM 301b:CPU 301c:硬碟驅動器 303:PCI-e設備 304:FPGA 306:附加硬體資源 319:可程式化區域 319a:K-V(鍵值對)表 319b:查詢服務 319c:區塊鏈虛擬機 319d:儲存器加密服務 319e:金鑰服務 319f:認證服務 320:eFUSE 322:ASIC區域 324:位元流認證模組 332:可信平臺模組(Trusted Platform Module,TPM) 334:快閃記憶體 336:DRAM 400:TEE設置 401:步驟 402:設置伺服器 403:步驟 404a:私密金鑰 404b:私密金鑰 405:步驟 406a:根私密金鑰 406b:根私密金鑰 407:步驟 408a:加密位元流 409:步驟 410a,410b:設備ID 412a:設備私密金鑰熵 412b:設備私密金鑰熵 414a:位元流認證金鑰 414b:位元流認證金鑰 416:根私密金鑰熵 418:金鑰生成模組 500:處理 502~514:步驟 600:裝置 610:儲存模組 620:第一發送模組 630:接收模組 640:解密模組 650:確定模組 660:加密模組 670:第二發送模組
[圖1] 是顯示了可用於執行本文的實施方式的環境的範例的示圖。 [圖2] 是顯示根據本文的實施方式的架構的範例的示圖。 [圖3] 描繪了根據本文的實施方式的具有基於FPGA的TEE的區塊鏈節點的範例。 [圖4] 描繪了根據本文的實施方式的基於FPGA的TEE的設置的範例。 [圖5] 是用於實現基於FPGA的TEE的處理500的範例的流程圖。 [圖6] 是根據本文的實施例的裝置600的模組的範例的示圖。 各圖式中的相同圖式標記表示相同元件。
300:區塊鏈節點
301:平臺
301a:DRAMM
301b:CPU
301c:硬碟驅動器
303:PCI-e設備
304:FPGA
306:附加硬體資源
319:可程式化區域
319a:K-V(鍵值對)表
319b:查詢服務
319c:區塊鏈虛擬機
319d:儲存器加密服務
319e:金鑰服務
319f:認證服務
320:eFUSE
322:ASIC區域
324:位元流認證模組
332:可信平臺模組(Trusted Platform Module,TPM)
334:快閃記憶體
336:DRAM

Claims (10)

  1. 一種電腦實現的用於配置用於區塊鏈網路的基於現場可程式化閘陣列(FPGA)的可信執行環境(TEE)的方法,所述方法包括: 由所述區塊鏈網路中的區塊鏈節點將設備標識符(ID)、第一隨機數和第一金鑰儲存在與所述區塊鏈節點相關聯的FPGA設備中; 由所述區塊鏈節點將加密位元流發送到所述FPGA設備,其中,所述加密位元流能夠由所述FPGA設備使用所述第一金鑰解密為包括第二隨機數的解密位元流; 由所述區塊鏈節點從所述FPGA設備接收加密訊息,其中,所述加密訊息是由所述FPGA設備使用第二金鑰進行加密的,並且由所述FPGA設備使用所述設備ID、所述第一隨機數和所述第二隨機數生成所述第二金鑰; 由所述區塊鏈節點使用第三金鑰對來自所述FPGA設備的所述加密訊息進行解密以產生解密訊息,其中,所述第三金鑰被預先儲存在所述伺服器中; 回應於使用所述第三金鑰解密了所述加密訊息: 由所述區塊鏈節點確定嵌入在所述解密訊息中的第三隨機數; 由所述區塊鏈節點使用所述第三隨機數對一個或多個金鑰進行加密;以及 由所述區塊鏈節點將所述加密的一個或多個金鑰發送到所述FPGA設備。
  2. 如請求項1所述的方法,其中,所述設備ID、所述第一隨機數和所述第一金鑰被儲存在所述FPGA設備的一次性可程式化區域中。
  3. 如請求項1所述的方法,其中,所述解密位元流和所述第二隨機數被儲存在所述FPGA設備的可重新程式化區域中。
  4. 如請求項1所述的方法,其中,所述設備ID和所述第一隨機數是所述FPGA設備特有的。
  5. 如請求項1所述的方法,其中,所述解密訊息包括所述設備ID。
  6. 如請求項1所述的方法,其中,所述第三金鑰與所述第二金鑰是相同的。
  7. 如請求項1所述的方法,其中,所述FPGA設備使用位元流認證模組和所述第一金鑰對所述加密位元流進行解密和認證。
  8. 如請求項1所述的方法,還包括: 回應於將所述一個或多個金鑰發送到所述FPGA設備,由所述區塊鏈節點對由所述FPGA設備執行的智慧合約虛擬機進行初始化。
  9. 一種用於配置用於區塊鏈網路的基於現場可程式化閘陣列(FPGA)的可信執行環境(TEE)的系統,所述系統包括: 一個或多個處理器;和 耦接到所述一個或多個處理器並在其上儲存有指令的一個或多個電腦可讀儲存器,所述指令能由所述一個或多個處理器執行以執行請求項1至8中任一項所述的方法。
  10. 一種用於配置用於區塊鏈網路的基於現場可程式化閘陣列(FPGA)的可信執行環境(TEE)的裝置,所述裝置包括用於執行請求項1至8中任一項所述的方法的多個模組。
TW108144880A 2019-03-26 2019-12-09 用於配置用於區塊鏈網路的基於現場可程式化閘陣列的可信執行環境的方法、系統和裝置 TWI715338B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
PCT/CN2019/079705 WO2019120315A2 (en) 2019-03-26 2019-03-26 Field-programmable gate array based trusted execution environment for use in a blockchain network
WOPCT/CN2019/079705 2019-03-26

Publications (2)

Publication Number Publication Date
TW202036351A true TW202036351A (zh) 2020-10-01
TWI715338B TWI715338B (zh) 2021-01-01

Family

ID=66994225

Family Applications (1)

Application Number Title Priority Date Filing Date
TW108144880A TWI715338B (zh) 2019-03-26 2019-12-09 用於配置用於區塊鏈網路的基於現場可程式化閘陣列的可信執行環境的方法、系統和裝置

Country Status (10)

Country Link
US (1) US10657293B1 (zh)
EP (1) EP3628087B1 (zh)
JP (1) JP6840264B2 (zh)
KR (1) KR102151904B1 (zh)
CN (2) CN110392889B (zh)
AU (1) AU2019204735B2 (zh)
CA (1) CA3058239C (zh)
SG (1) SG11201909112PA (zh)
TW (1) TWI715338B (zh)
WO (1) WO2019120315A2 (zh)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110750488B (zh) * 2019-09-25 2021-02-19 支付宝(杭州)信息技术有限公司 在fpga中实现外部调用的方法及装置
CN113285802B (zh) * 2019-09-25 2022-08-19 支付宝(杭州)信息技术有限公司 基于fpga的密钥协商方法及装置
CN110716724B (zh) * 2019-09-25 2021-01-08 支付宝(杭州)信息技术有限公司 基于fpga实现隐私区块链的方法及装置
CN113157635B (zh) * 2019-09-25 2024-01-05 支付宝(杭州)信息技术有限公司 在fpga上实现合约调用的方法及装置
CN110716728B (zh) * 2019-09-25 2020-11-10 支付宝(杭州)信息技术有限公司 Fpga逻辑的可信更新方法及装置
CN110751555B (zh) * 2019-09-25 2021-01-12 支付宝(杭州)信息技术有限公司 基于fpga实现合约调用的方法及装置
CN110717203B (zh) * 2019-09-25 2021-04-27 支付宝(杭州)信息技术有限公司 基于fpga实现隐私区块链的方法及装置
CN110738567B (zh) * 2019-09-25 2021-02-09 支付宝(杭州)信息技术有限公司 基于fpga的安全智能合约处理器的交易处理方法及装置
CN111538782B (zh) * 2020-04-14 2023-08-08 浙江浙燃能源有限公司 基于区块链的能源大数据管理系统
CN111541788B (zh) 2020-07-08 2020-10-16 支付宝(杭州)信息技术有限公司 区块链一体机的哈希更新方法及装置
CN111541553B (zh) 2020-07-08 2021-08-24 支付宝(杭州)信息技术有限公司 区块链一体机的可信启动方法及装置
CN111738859B (zh) * 2020-07-08 2021-07-13 支付宝(杭州)信息技术有限公司 区块链一体机及区块链网络
CN112714117B (zh) * 2020-08-24 2022-11-01 支付宝(杭州)信息技术有限公司 业务处理方法、装置、设备及系统
US11681832B2 (en) * 2020-10-14 2023-06-20 Infineon Technologies Ag Electronic circuit identification (ID) techniques using both a client-side ID and a supplier-side ID
CN112765270B (zh) * 2020-12-31 2022-06-17 杭州趣链科技有限公司 区块链数据处理方法、装置、计算机设备及介质
US11379125B1 (en) 2021-03-31 2022-07-05 International Business Machines Corporation Trusted field programmable gate array
US20220417045A1 (en) * 2021-06-28 2022-12-29 Medellin Applied Research Concepts, LLC Device for implementing gated array blockchain protection codes for iot devices
CN114978626B (zh) * 2022-05-10 2023-03-10 北京百度网讯科技有限公司 基于区块链的可信计算方法、装置、设备及介质
CN116614317B (zh) * 2023-07-20 2023-09-12 中国标准化研究院 一种基于区块链的贸易数据处理方法及系统

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070288765A1 (en) * 1999-12-22 2007-12-13 Kean Thomas A Method and Apparatus for Secure Configuration of a Field Programmable Gate Array
US6904527B1 (en) 2000-03-14 2005-06-07 Xilinx, Inc. Intellectual property protection in a programmable logic device
US8516268B2 (en) * 2010-08-23 2013-08-20 Raytheon Company Secure field-programmable gate array (FPGA) architecture
US8898480B2 (en) * 2012-06-20 2014-11-25 Microsoft Corporation Managing use of a field programmable gate array with reprogammable cryptographic operations
US9118639B2 (en) * 2013-03-14 2015-08-25 Intel Corporation Trusted data processing in the public cloud
US20140344581A1 (en) * 2013-05-16 2014-11-20 Cisco Technology, Inc. Secure Upgrades for Field Programmable Devices
US20160379212A1 (en) * 2015-06-26 2016-12-29 Intel Corporation System, apparatus and method for performing cryptographic operations in a trusted execution environment
US11941588B2 (en) * 2015-11-06 2024-03-26 Cable Television Laboratories, Inc. Systems and methods for blockchain virtualization and scalability
WO2018058441A1 (en) * 2016-09-29 2018-04-05 Nokia Technologies Oy Method and apparatus for trusted computing
US10984081B2 (en) * 2016-09-30 2021-04-20 Cable Television Laboratories, Inc. Systems and methods for secure person to device association
GB2573666A (en) * 2016-12-23 2019-11-13 Walmart Apollo Llc Verifying authenticity of computer readable information using the blockchain
US10382485B2 (en) * 2016-12-23 2019-08-13 Vmware, Inc. Blockchain-assisted public key infrastructure for internet of things applications
CN110050474A (zh) * 2016-12-30 2019-07-23 英特尔公司 用于物联网网络中的复合对象的子对象的类型命名和区块链
US10897459B2 (en) * 2017-01-26 2021-01-19 Microsoft Technology Licensing, Llc Addressing a trusted execution environment using encryption key
CN107046542B (zh) * 2017-04-24 2020-04-14 杭州云象网络技术有限公司 一种在网络级采用硬件实现共识验证的方法
CN107294709A (zh) * 2017-06-27 2017-10-24 阿里巴巴集团控股有限公司 一种区块链数据处理方法、装置及系统
US10476879B2 (en) * 2017-07-26 2019-11-12 International Business Machines Corporation Blockchain authentication via hard/soft token verification
CN108055125B (zh) * 2017-11-23 2020-06-30 阿里巴巴集团控股有限公司 一种产品信息的加密、解密方法及装置
CN109492419B (zh) * 2018-11-27 2022-07-01 众安信息技术服务有限公司 用于获取区块链中的数据的方法、装置及存储介质

Also Published As

Publication number Publication date
TWI715338B (zh) 2021-01-01
CN110392889B (zh) 2020-09-01
JP6840264B2 (ja) 2021-03-10
CA3058239C (en) 2021-01-05
EP3628087A4 (en) 2020-06-24
CA3058239A1 (en) 2019-06-27
AU2019204735A1 (en) 2019-06-27
AU2019204735B2 (en) 2020-08-27
WO2019120315A2 (en) 2019-06-27
US10657293B1 (en) 2020-05-19
SG11201909112PA (en) 2019-10-30
KR102151904B1 (ko) 2020-09-03
WO2019120315A3 (en) 2020-02-20
CN112231708A (zh) 2021-01-15
JP2020521343A (ja) 2020-07-16
CN110392889A (zh) 2019-10-29
EP3628087B1 (en) 2021-09-08
EP3628087A2 (en) 2020-04-01

Similar Documents

Publication Publication Date Title
TWI715338B (zh) 用於配置用於區塊鏈網路的基於現場可程式化閘陣列的可信執行環境的方法、系統和裝置
TWI737240B (zh) 提高區塊鏈網路與外部資料源之間的通信的完整性
TWI707245B (zh) 使用高可用性的可信執行環境檢索區塊鏈網路的存取資料
TWI725655B (zh) 用於在可信執行環境中執行子邏輯代碼的程式執行和資料證明的方法、設備和系統
TWI720727B (zh) 電腦實現的用於管理儲存在區塊鏈網路中的敏感資料元素的方法、用於管理儲存在區塊鏈網路中的敏感資料元素的裝置及系統
JP6811339B2 (ja) 高可用な高信頼実行環境を使用したブロックチェーンネットワークのためのパブリックデータの読み出し
CN110998556B (zh) 区块链网络中的数据隔离
JP2020528224A (ja) 信頼できる実行環境におけるスマート契約動作のセキュアな実行
JP2020524421A (ja) トラステッド実行環境のための分散型鍵管理
TW202040965A (zh) 基於恢復的公開金鑰進行認證
WO2019228559A2 (en) Managing blockchain-based centralized ledger systems