TWI729462B - 基於fpga硬體的安全計算方法和裝置 - Google Patents

基於fpga硬體的安全計算方法和裝置 Download PDF

Info

Publication number
TWI729462B
TWI729462B TW108129452A TW108129452A TWI729462B TW I729462 B TWI729462 B TW I729462B TW 108129452 A TW108129452 A TW 108129452A TW 108129452 A TW108129452 A TW 108129452A TW I729462 B TWI729462 B TW I729462B
Authority
TW
Taiwan
Prior art keywords
key
party
keys
configuration file
fpga
Prior art date
Application number
TW108129452A
Other languages
English (en)
Other versions
TW202029046A (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 TW202029046A publication Critical patent/TW202029046A/zh
Application granted granted Critical
Publication of TWI729462B publication Critical patent/TWI729462B/zh

Links

Images

Classifications

    • 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/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
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/06Network architectures or network communication protocols for network security for supporting key management in a packet data network
    • H04L63/062Network architectures or network communication protocols for network security for supporting key management in a packet data network for key distribution, e.g. centrally by trusted party
    • 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/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • 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
    • 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

Abstract

本說明書實施例提供配置FPGA硬體的方法和裝置以及基於FPGA硬體的資料處理方法和裝置,其中,包括初始化FPGA硬體的方法,在該方法中,所述FPGA硬體包括FPGA晶片、和與所述FPGA晶片連接的第一記憶體,所述第一記憶體為非易失性記憶體,所述FPGA晶片基於所述第一記憶體中當前儲存的配置檔案配置,其中,該方法在所述FPGA硬體端執行,包括:獲取被存入所述第一記憶體中的首版配置檔案,其中,所述首版配置檔案中包括至少一個初始密鑰,並且所述首版配置檔案中包括所述至少一個密鑰各自的密鑰所屬方共同確定的預定運行邏輯;以及基於所述首版配置檔案重新配置所述FPGA晶片。

Description

基於FPGA硬體的安全計算方法和裝置
本說明書實施例係關於資料處理方法,更具體地,關於FPGA硬體的初始化方法和裝置、FPGA硬體的更新方法和裝置以及基於FPGA硬體的資料處理方法和裝置。
隨著大數據、人工智慧等新技術的發展,多方資料融合方面的需求越來越多,資料隱私保護變得越來越重要。例如,在一種情況中,第一方資料需要傳到第二方伺服器上以與第二方資料一起訓練計算模型,在該情況中,第一方會擔心他們的資料是否被第二方存檔後用於其它目的。SGX技術就是為了滿足這種需求而開發的一種技術,其將各方的用戶資料圈在CPU中的一塊“飛地(enclave)”中,從硬體層面保證資料不被其它駭客程式盜走,而且提供了完善的認證機制防止使用者的任意一方盜取其他方的資料。但這種機制本身的安全性、可信度需要透過英特爾公司的服務進行保障。 因此,需要一種更有效的安全計算方案,以保障各方資料安全。
本說明書實施例旨在提供一種更有效的安全計算方案,以解決現有技術中的不足。 為實現上述目的,本說明書一個方面提供一種初始化FPGA硬體以用於安全計算的方法,所述FPGA硬體包括FPGA晶片、和與所述FPGA晶片連接的第一記憶體,所述第一記憶體為非易失性記憶體,所述FPGA晶片基於所述第一記憶體中當前儲存的配置檔案配置,所述方法在所述FPGA硬體端執行,包括: 獲取被存入所述第一記憶體中的首版配置檔案,其中,所述首版配置檔案中包括至少一個初始密鑰,並且所述首版配置檔案中包括由所述至少一個密鑰各自的密鑰所屬方共同確定的預定運行邏輯,其中,所述至少一個初始密鑰是所述安全計算的各個參與方各自的初始密鑰,或者所述至少一個初始密鑰是所述安全計算的預定數目的可信管理方各自的初始密鑰;以及 基於所述首版配置檔案重新配置所述FPGA晶片。 在一個實施例中,所述FPGA硬體透過PCIE匯流排與伺服器連接,其中,獲取被存入所述第一記憶體中的首版配置檔案包括,獲取由所述伺服器透過PCIE匯流排寫入所述第一記憶體的首版配置檔案。 在一個實施例中,所述首版配置檔案透過由各個所述密鑰所屬方同時在所述FPGA硬體所在現場共同監督而生成並提供,以使得所述首版配置檔案中包括的任一方的初始密鑰只對該方自身可見,並使得所述首版配置檔案不可篡改。 本說明書另一方面提供一種初始化FPGA硬體以用於安全計算的方法,所述FPGA硬體包括FPGA晶片、和與所述FPGA晶片連接的第一記憶體,所述第一記憶體為非易失性記憶體,所述FPGA晶片基於所述第一記憶體中當前儲存的配置檔案配置,所述FPGA晶片中包括熔絲記憶體,其中,所述熔絲記憶體中預先儲存有至少一個第一密鑰,其中,所述至少一個第一密鑰是所述安全計算的各個參與方各自的第一密鑰,或者所述至少一個第一密鑰是所述安全計算的預定數目的可信管理方各自的第一密鑰,所述方法在所述FPGA硬體端執行,包括: 獲取被存入所述第一記憶體中的首版配置檔案,其中,所述首版配置檔案中包括由所述至少一個第一密鑰各自的密鑰所屬方共同確定的預定運行邏輯;以及 基於所述首版配置檔案重新配置所述FPGA晶片。 在一個實施例中,所述可信管理方為所述安全計算的一個參與方。 本說明書另一方面提供一種更新用於安全計算的FPGA硬體的方法,所述FPGA硬體中儲存有至少一個第一密鑰,其中,所述至少一個第一密鑰是所述安全計算的各個參與方各自的第一密鑰,或者所述至少一個第一密鑰是所述安全計算的預定數目的可信管理方各自的第一密鑰,所述FPGA硬體包括FPGA晶片、和與所述FPGA晶片連接的第一記憶體,所述第一記憶體為非易失性記憶體,所述第一記憶體中儲存有第一配置檔案,所述第一配置檔案包括由所述至少一個第一密鑰各自的密鑰所屬方共同確定的第一運行邏輯,所述FPGA晶片當前基於所述第一配置檔案而配置,所述方法在所述FPGA硬體端執行,包括: 獲取加密檔案,其中,所述加密檔案透過各個所述密鑰所屬方中的至少一方以第一預定順序依次加密而獲取,其中,第一次加密的加密對象包括第二配置檔案,所述第二配置檔案包括由所述至少一個第一密鑰各自的密鑰所屬方共同確定的第二運行邏輯; 使用所述至少一方的各自的工作密鑰以第二預定順序對所述加密檔案依次解密,以獲取所述第二配置檔案,並將其存入所述第一記憶體中,其中,所述第二預定順序與所述第一預定順序相對應,所述工作密鑰基於相應一方的第一密鑰獲取;以及 基於所述第二配置檔案重新配置所述FPGA晶片。 在一個實施例中,所述第一次加密透過由所述至少一個第一密鑰各自的密鑰所屬方共同監督而完成,以保證所述第二配置檔案不被篡改。 在一個實施例中,所述第一次加密的加密對象還包括所述第二配置檔案的代碼雜湊值,其中,使用所述至少一方的各自的工作密鑰以第二預定順序對所述加密檔案依次解密,以獲取所述第二配置檔案包括,使用所述至少一方的各自的工作密鑰以第二預定順序對所述加密檔案依次解密,以獲取所述第二配置檔案及其代碼雜湊值,所述方法還包括,在獲取所述第二配置檔案及其代碼雜湊值之後,透過所述代碼雜湊值對所述第二配置檔案進行校驗。 在一個實施例中,所述工作密鑰為相應的一方的第一密鑰。 在一個實施例中,所述至少一方中包括第一方,所述FPGA硬體基於以下步驟獲取所述第一方的工作密鑰: 獲取所述第一方的加密的工作密鑰;以及 使用所述第一方的第一密鑰對所述加密的工作密鑰解密,以獲取所述第一方的工作密鑰。 在一個實施例中,所述工作密鑰在所述FPGA硬體斷電時被消除。 在一個實施例中,所述工作密鑰定期更新。 在一個實施例中,所述FPGA晶片中還包括熔絲記憶體,其中,各個所述第一密鑰被儲存在所述熔絲記憶體中。 在一個實施例中,各個所述第一密鑰被儲存在所述第一記憶體中。 在一個實施例中,所述加密檔案的加密對象還包括所述至少一個第一密鑰各自的密鑰所屬方各自的第二密鑰,其中,使用所述至少一方的各自的工作密鑰以第二預定順序對所述加密檔案依次解密包括,使用所述至少一個第一密鑰各自的密鑰所屬方各自的工作密鑰以第二預定順序對所述加密檔案依次解密,以獲取第二配置檔案,並在每次解密時獲取相應的密鑰所屬方的第二密鑰,所述方法還包括,在每次解密時獲取相應的密鑰所屬方的第二密鑰之後,將該第二密鑰儲存在所述第一記憶體中,以作為相應的密鑰所屬方的更新的第一密鑰。 在一個實施例中,所述FPGA晶片具有其自身的硬體密鑰,其中,將該第二密鑰儲存在所述第一記憶體中包括,透過所述FPGA晶片使用其自身的硬體密鑰對該第二密鑰加密,以及,將該加密的第二密鑰存入所述第一記憶體。 在一個實施例中,所述第一密鑰為儲存在所述第一記憶體中的第一配置檔案中包括的初始密鑰,其中,所述第一配置檔案為用於初始化所述FPGA硬體以用於安全計算的配置檔案,其中,所述第一密鑰透過所述第一配置檔案被存入所述FPGA晶片的邏輯電路內。 本說明書另一方面提供一種基於FPGA硬體的資料處理方法,所述FPGA硬體用於安全計算,其中,所述FPGA硬體中儲存有至少一個第一密鑰,所述至少一個第一密鑰是所述安全計算的各個參與方各自的第一密鑰,或者所述至少一個第一密鑰是所述安全計算的預定數目的可信管理方各自的第一密鑰,其中,所述FPGA硬體中包括FPGA晶片,所述FPGA晶片基於由所述至少一個第一密鑰各自的密鑰所屬方共同確定的運行邏輯而配置,所述方法在所述FPGA硬體端執行,包括: 獲取所述各個參與方各自的加密資料; 使用所述各個參與方各自的工作密鑰對相應的所述加密資料解密,以獲取各方的明文資料,所述各個參與方各自的工作密鑰分別基於所述至少一個第一密鑰中相應的第一密鑰獲取; 基於所述各方的明文資料進行計算,以獲取計算結果;以及 輸出所述計算結果。 在一個實施例中,所述加密資料透過對稱加密獲取,所述各個參與方包括第一方,其中,輸出所述計算結果包括,使用所述第一方的工作密鑰對所述計算結果加密,以獲取第一加密結果;以及輸出用於發送給所述第一方的第一加密結果。 在一個實施例中,所述加密資料透過非對稱加密獲取,所述工作密鑰是所述非對稱加密的解密密鑰,所述非對稱加密還包括與所述工作密鑰對應的加密密鑰,所述各個參與方包括第一方,其中,所述第一方的加密密鑰基於與所述第一方相應的第一密鑰獲取,其中,輸出所述計算結果包括,使用所述第一方的加密密鑰對所述計算結果加密,以獲取第一加密結果;以及輸出用於發送給所述第一方的第一加密結果。 在一個實施例中,所述至少一個第一密鑰是所述安全計算的各個參與方各自的第一密鑰,所述FPGA硬體中還儲存有所述各個參與方各自的第二密鑰,所述加密資料透過非對稱加密獲取,所述各個參與方包括第一方,其中,所述第一方的工作密鑰為所述第一密鑰,所述第一方的第二密鑰為與所述第一方的第一密鑰對應的用於加密的密鑰,其中,輸出所述計算結果包括,使用所述第一方的第二密鑰對所述計算結果加密,以獲取第一加密結果;以及輸出用於發送給所述第一方的第一加密結果。 在一個實施例中,所述至少一個第一密鑰是所述安全計算的預定數目的可信管理方各自的第一密鑰,所述各個參與方中包括第一方,所述預定數目的可信管理方中包括第一管理方,其中,所述第一管理方與所述第一方相對應,所述FPGA硬體基於如下步驟獲取所述第一方的工作密鑰: 獲取所述第一方的加密的工作密鑰,所述加密的工作密鑰透過由所述第一管理方使用其第一密鑰對第一方的工作密鑰加密而生成,其中,所述第一方的工作密鑰由所述第一管理方從所述第一方接收;以及 使用所述第一管理方的第一密鑰對所述加密的工作密鑰解密,以獲取所述第一方的工作密鑰。 本說明書另一方面提供一種初始化FPGA硬體以用於安全計算的裝置,所述FPGA硬體包括FPGA晶片、和與所述FPGA晶片連接的第一記憶體,所述第一記憶體為非易失性記憶體,所述FPGA晶片基於所述第一記憶體中當前儲存的配置檔案配置,所述裝置部署在所述FPGA硬體端,包括: 獲取單元,配置為,獲取被存入所述第一記憶體中的首版配置檔案,其中,所述首版配置檔案中包括至少一個初始密鑰,並且所述首版配置檔案中包括由所述至少一個密鑰各自的密鑰所屬方共同確定的預定運行邏輯,其中,所述至少一個初始密鑰是所述安全計算的各個參與方各自的初始密鑰,或者所述至少一個初始密鑰是所述安全計算的預定數目的可信管理方各自的初始密鑰;以及 配置單元,配置為,基於所述首版配置檔案重新配置所述FPGA晶片。 在一個實施例中,所述FPGA硬體透過PCIE匯流排與伺服器連接,其中,所述獲取單元還配置為,獲取由所述伺服器透過PCIE匯流排寫入所述第一記憶體的首版配置檔案。 在一個實施例中,所述首版配置檔案透過由各個所述密鑰所屬方同時在所述FPGA硬體所在現場共同監督而生成並提供,以使得所述首版配置檔案中包括的任一方的初始密鑰只對該方自身可見,並使得所述首版配置檔案不可篡改。 本說明書另一方面提供一種初始化FPGA硬體以用於安全計算的裝置,所述FPGA硬體包括FPGA晶片、和與所述FPGA晶片連接的第一記憶體,所述第一記憶體為非易失性記憶體,所述FPGA晶片基於所述第一記憶體中當前儲存的配置檔案配置,所述FPGA晶片中包括熔絲記憶體,其中,所述熔絲記憶體中預先儲存有至少一個第一密鑰,其中,所述至少一個第一密鑰是所述安全計算的各個參與方各自的第一密鑰,或者所述至少一個第一密鑰是所述安全計算的預定數目的可信管理方各自的第一密鑰,所述裝置部署在所述FPGA硬體端,包括: 獲取單元,配置為,獲取被存入所述第一記憶體中的首版配置檔案,其中,所述首版配置檔案中包括由所述至少一個第一密鑰各自的密鑰所屬方共同確定的預定運行邏輯;以及 配置單元,配置為,基於所述首版配置檔案重新配置所述FPGA晶片。 在一個實施例中,所述可信管理方為所述安全計算的一個參與方。 本說明書另一方面提供一種更新用於安全計算的FPGA硬體的裝置,所述FPGA硬體中儲存有至少一個第一密鑰,其中,所述至少一個第一密鑰是所述安全計算的各個參與方各自的第一密鑰,或者所述至少一個第一密鑰是所述安全計算的預定數目的可信管理方各自的第一密鑰,所述FPGA硬體包括FPGA晶片、和與所述FPGA晶片連接的第一記憶體,所述第一記憶體為非易失性記憶體,所述第一記憶體中儲存有第一配置檔案,所述第一配置檔案包括由所述至少一個第一密鑰各自的密鑰所屬方共同確定的第一運行邏輯,所述FPGA晶片當前基於所述第一配置檔案而配置,所述FPGA硬體中儲存有所述各個參與方各自的第一密鑰,所述裝置部署在所述FPGA硬體端,包括: 獲取單元,配置為,獲取加密檔案,其中,所述加密檔案透過各個所述密鑰所屬方中的至少一方以第一預定順序依次加密而獲取,其中,第一次加密的加密對象包括第二配置檔案,所述第二配置檔案包括由所述至少一個第一密鑰各自的密鑰所屬方共同確定的第二運行邏輯; 解密單元,配置為,使用所述至少一方的各自的工作密鑰以第二預定順序對所述加密檔案依次解密,以獲取所述第二配置檔案,並將其存入所述第一記憶體中,其中,所述第二預定順序與所述第一預定順序相對應,所述工作密鑰基於相應一方的第一密鑰獲取;以及 配置單元,配置為,基於所述第二配置檔案重新配置所述FPGA晶片。 在一個實施例中,所述第一次加密透過由所述至少一個第一密鑰各自的密鑰所屬方共同監督而完成,以保證所述第二配置檔案不被篡改。 在一個實施例中,所述第一次加密的加密對象還包括所述第二配置檔案的代碼雜湊值,其中,所述解密單元還配置為,使用所述至少一方的各自的工作密鑰以第二預定順序對所述加密檔案依次解密,以獲取所述第二配置檔案及其代碼雜湊值,所述裝置還包括,校驗單元,配置為,在獲取所述第二配置檔案及其代碼雜湊值之後,透過所述代碼雜湊值對所述第二配置檔案進行校驗。 在一個實施例中,所述工作密鑰為相應的一方的第一密鑰。 在一個實施例中,所述至少一方中包括第一方,所述FPGA硬體基於密鑰協商裝置獲取所述第一方的工作密鑰,所述密鑰協商裝置包括: 獲取單元,配置為,獲取所述第一方的加密的工作密鑰;以及 解密單元,配置為,使用所述第一方的第一密鑰對所述加密的工作密鑰解密,以獲取所述第一方的工作密鑰。 在一個實施例中,所述工作密鑰在所述FPGA硬體斷電時被消除。 在一個實施例中,所述工作密鑰定期更新。 在一個實施例中,所述FPGA晶片中還包括熔絲記憶體,其中,各個所述第一密鑰被儲存在所述熔絲記憶體中。 在一個實施例中,各個所述第一密鑰被儲存在所述第一記憶體中。 在一個實施例中,所述加密檔案的加密對象還包括所述至少一個第一密鑰各自的密鑰所屬方各自的第二密鑰,其中,所述解密單元還配置為,使用所述至少一個第一密鑰各自的密鑰所屬方各自的工作密鑰以第二預定順序對所述加密檔案依次解密,以獲取第二配置檔案,並在每次解密時獲取相應的密鑰所屬方的第二密鑰,所述裝置還包括,儲存單元,配置為,在每次解密時獲取相應的密鑰所屬方的第二密鑰之後,將該第二密鑰儲存在所述第一記憶體中,以作為相應的密鑰所屬方的更新的第一密鑰。 在一個實施例中,所述FPGA晶片具有其自身的硬體密鑰,其中,所述儲存單元包括,加密子單元,配置為,透過所述FPGA晶片使用其自身的硬體密鑰對該第二密鑰加密,以及,儲存子單元,配置為,將該加密的第二密鑰存入所述第一記憶體。 在一個實施例中,所述第一密鑰為儲存在所述第一記憶體中的第一配置檔案中包括的初始密鑰,其中,所述第一配置檔案為用於初始化所述FPGA硬體以用於安全計算的配置檔案,其中,所述第一密鑰透過所述第一配置檔案被存入所述FPGA晶片的邏輯電路內。 本說明書另一方面提供一種基於FPGA硬體的資料處理裝置,所述FPGA硬體用於安全計算,其中,所述FPGA硬體中儲存有至少一個第一密鑰,所述至少一個第一密鑰是所述安全計算的各個參與方各自的第一密鑰,或者所述至少一個第一密鑰是所述安全計算的預定數目的可信管理方各自的第一密鑰,其中,所述FPGA硬體中包括FPGA晶片,所述FPGA晶片基於由所述至少一個第一密鑰各自的密鑰所屬方共同確定的運行邏輯而配置,所述裝置部署在所述FPGA硬體端,包括: 獲取單元,配置為,獲取所述各個參與方各自的加密資料; 解密單元,配置為,使用所述各個參與方各自的工作密鑰對相應的所述加密資料解密,以獲取各方的明文資料,所述各個參與方各自的工作密鑰分別基於所述至少一個第一密鑰中相應的第一密鑰獲取; 計算單元,配置為,基於所述各方的明文資料進行計算,以獲取計算結果;以及 輸出單元,配置為,輸出所述計算結果。 在一個實施例中,所述加密資料透過對稱加密獲取,所述各個參與方包括第一方,其中,所述輸出單元包括,加密子單元,配置為,使用所述第一方的工作密鑰對所述計算結果加密,以獲取第一加密結果;以及輸出子單元,配置為,輸出用於發送給所述第一方的第一加密結果。 在一個實施例中,所述加密資料透過非對稱加密獲取,所述工作密鑰是所述非對稱加密的解密密鑰,所述非對稱加密還包括與所述工作密鑰對應的加密密鑰,所述各個參與方包括第一方,其中,所述第一方的加密密鑰基於與所述第一方相應的第一密鑰獲取,其中,所述輸出單元包括,加密子單元,配置為,使用所述第一方的加密密鑰對所述計算結果加密,以獲取第一加密結果;以及輸出子單元,配置為,輸出用於發送給所述第一方的第一加密結果。 在一個實施例中,所述至少一個第一密鑰是所述安全計算的各個參與方各自的第一密鑰,所述FPGA硬體中還儲存有所述各個參與方各自的第二密鑰,所述加密資料透過非對稱加密獲取,所述各個參與方包括第一方,其中,所述第一方的工作密鑰為所述第一密鑰,所述第一方的第二密鑰為與所述第一方的第一密鑰對應的用於加密的密鑰,其中,所述輸出單元包括,加密子單元,配置為,使用所述第一方的第二密鑰對所述計算結果加密,以獲取第一加密結果;以及輸出子單元,配置為輸出用於發送給所述第一方的第一加密結果。 在一個實施例中,所述至少一個第一密鑰是所述安全計算的預定數目的可信管理方各自的第一密鑰,所述各個參與方中包括第一方,所述預定數目的可信管理方中包括第一管理方,所述FPGA硬體透過密鑰協商裝置獲取所述第一方的工作密鑰,其中,所述第一管理方與所述第一方相對應,所述密鑰協商裝置包括: 獲取單元,配置為,獲取所述第一方的加密的工作密鑰,所述加密的工作密鑰透過由所述第一管理方使用其第一密鑰對第一方的工作密鑰加密而生成,其中,所述第一方的工作密鑰由所述第一管理方從所述第一方接收;以及 解密單元,配置為,使用所述第一管理方的第一密鑰對所述加密的工作密鑰解密,以獲取所述第一方的工作密鑰。 本說明書另一方面提供一種電腦可讀儲存媒體,其上儲存有電腦程式,當所述電腦程式在電腦中執行時,令電腦執行上述任一種方法。 本說明書另一方面提供一種計算設備,包括記憶體和處理器,其特徵在於,所述記憶體中儲存有可執行代碼,所述處理器執行所述可執行代碼時,實現上述任一種方法。 透過根據本說明書實施例的基於FPGA硬體的安全計算方案,提高了安全計算的安全性、更新靈活性,為安全計算的參與方提高了更多的便利性。
下面將結合附圖描述本說明書實施例。 圖1示出了根據本說明書實施例的多方安全計算的場景示意圖。如圖中所示,在該場景中包括FPGA硬體11、伺服器12、以及第一方13和第二方14。其中,FPGA硬體11例如透過PCIE匯流排與伺服器12連接,其中第一方13和第二方14分別為多方安全計算的參與方。FPGA硬體11中包括FPGA晶片、第一記憶體(圖中FLASH)和第二記憶體(圖中DDR),其中,第一記憶體為非易失性記憶體,其例如為Flash,第二記憶體為內部記憶體,其例如為DDR內部記憶體。可以理解,圖中雖然只示出了多方安全計算的兩個參與方,本說明書實施例不限於此,所述多方安全計算中可包括至少一個參與方,例如可包括一個參與方,也可以包括兩個以上的參與方。另外,本文中的“第一”,“第二”等描述,僅僅為了描述的簡單而對相似概念進行區分,並不具有其他限定作用。 第一方13和第二方14透過安全的方式將其各自的密鑰內置到FPGA硬體中,以使得在該過程中各方的密鑰只對其自身可見,而不會洩露給任意其他方。同時,第一方13和第二方14將其共同制定的明文的首版配置檔案(例如bit檔)存入FLASH中,以配置FPGA晶片,並使得在該過程中保證該首版配置檔案不被篡改。在如上所述部署首版bit檔之後,第一方13和第二方14可將加密的新版bit檔遠端傳送給伺服器12,並由伺服器12存入FPGA硬體中的DDR中。所述加密的新版bit檔由所述第一方和所述第二方依次加密,從而保證了該新版bit檔的不可篡改。在獲取新版bit檔之後,FPGA晶片可基於首版bit檔中的運行邏輯,使用預置的各方的密鑰對所述加密的新版bit檔進行解密,以獲取該新版bit檔,並將該新版bit檔存入FLASH中。從而,FPGA晶片可基於該新版bit檔進行配置,從而基於新版bit檔中的運行邏輯進行工作。同時,第一方13和第二方14可在所述加密的新版bit檔中包括其各自的更新的密鑰,從而更新在FPGA硬體中預置的各方的密鑰。 透過在FPGA硬體中預置第一方和第二方各自的密鑰,第一方和第二方可分別基於其密鑰向FPGA硬體傳入各自的工作密鑰。在例如第一方對FPGA輸入資料時,第一方可使用其工作密鑰對其資料進行加密並傳入FPGA硬體,FPGA硬體可利用預先獲取的第一方的工作密鑰對加密的資料進行解密,以獲取明文資料。透過類似地方法,FPGA硬體可獲取第二方的明文資料,並基於第一方和第二方雙方的資料進行計算,而同時保證了第一方和第二方的資料不會被除其自身以外的任意其他方獲取,從而保證了多方計算的資料安全性。 下面具體描述上述的基於FPGA硬體的安全計算方案。 圖2示出根據本說明書實施例的初始化FPGA硬體以用於安全計算的示意過程。所述FPGA硬體例如為如圖1中所示的FPGA硬體,包括FPGA晶片和與FPGA晶片連接的第一記憶體,該第一記憶體為非易失性記憶體,其例如為Flash記憶體。在執行圖2所示過程之前,該第一記憶體中當前儲存有初始配置檔案,例如該FPGA硬體的原廠bit檔,所述FPGA晶片當前基於該初始配置檔案中的運行邏輯配置,即基於該原廠bit檔被編程。可以理解,所述初始配置檔案不限於原廠bit檔,例如,其可以為其它可用於對FPGA晶片進行編程的檔案,例如bin檔,或者,其可以為非原廠bit檔的中間bit檔,只要該配置檔案可以使得該FPGA晶片當前提供特定介面、及透過該介面的儲存功能即可。該FPGA硬體例如如圖1中所示透過PCIE匯流排與伺服器連接,可以理解,所述FPGA硬體不限於透過PCIE匯流排與伺服器連接,還可以透過其它介面,例如網路埠,只要其可透過FPGA晶片的配置檔案進行配置即可。 如圖2所示,在步驟S202,在所述FPGA硬體端獲取首版配置檔案。例如,伺服器透過PCIE匯流排將首版配置檔案寫入第一記憶體中。該首版配置檔案為所述安全計算的各個參與方共同制定的第一版bit檔,由於在原廠bit檔中不包括對新存入檔案進行解密的邏輯,因此,該第一版bit檔只能以明文的形式存入第一記憶體中。從而,在一個實施例中,可由所述安全計算的多個參與方在FPGA所在的現場中共同生成該bit檔,並共同將該bit檔寫入第一記憶體,以確保該第一版bit檔的安全性。具體是,可首先由所述多個參與方中的任一方基於預定運行邏輯生成第一版bit檔的編程程式(如HDL代碼),並將該編程程式帶到FPGA所在的現場,其中,所述預定運行邏輯由所述多個參與方共同制定。在所述現場,所述多個參與方中的其他方在分別核驗該編程程式無誤之後,可分別提供自己的密鑰檔案,以供該編程程式調用,以使得在所述編程程式中包括各個參與方各自的初始密鑰,同時使得該初始密鑰對除密鑰提供方以外的任一方不可見,從而保證各個初始密鑰的安全性。之後,在各個參與方的共同監督下,可透過軟體(例如vivado軟體)將所述包括各方初始密鑰的程式轉換為第一版bit檔,並將該第一版bit檔透過FPGA所在伺服器存入所述FPGA硬體的第一記憶體中,以確保該bit檔不被任何一方修改,同時,確保所述各個初始密鑰不洩露給除密鑰提供方的任一方。 所述初始密鑰可以是用於進行對稱加密的密鑰,即,該密鑰既可以進行解密也可以進行加密。或者,所述初始密鑰可以是非對稱加密的解密密鑰。或者,所述初始密鑰可包括非對稱加密的解密密鑰和加密密鑰。 在一個實施例中,可透過可信權威方執行上述對首版配置檔案的寫入,該權威方例如為伺服器提供者或者平台管理員。具體是,多個參與方可將經過共同確認的編程程式提供給該權威方,並分別將各自的初始密鑰提供給權威方,從而,權威方透過在編程程式中加入各方的初始密鑰之後,將該編程程式轉換為第一版bit檔,並透過伺服器將該第一版bit檔寫入FPGA硬體的第一記憶體中。 在一個實施例中,所述FPGA硬體所連接的伺服器是可信任的伺服器,從而所述多個參與方可在其在現場共同監督下在該伺服器中執行對第一版bit檔的生成,該伺服器在所述多個參與方生成第一版bit檔的過程中提供對其中的程式、資料、密鑰的保護,從而使得將第一版bit檔安全存入第一記憶體中,同時確保該第一版bit檔及其中的密鑰不會被惡意軟體、或惡意他人獲取。 在一個實施例中,所述FPGA硬體所連接的伺服器是不可信任的伺服器,所述多個參與方可到達現場在該多方共同監督下在其共同確定的可信任的電腦上執行對第一版bit檔的生成,並一起將該生成的第一版bit檔透過伺服器寫入第一記憶體中,同時確保該第一版bit檔未被另行保存或另行傳輸等等。 如上文所述,第一版bit檔的編程程式對應於用於所述FPGA晶片的預定運行邏輯,該預定運行邏輯限定了所述FPGA晶片在預定情況下的預定行為。例如,該預定運行邏輯中包括向伺服器提供用於更新bit檔的API和用於進行資料處理的API,透過限定FPGA晶片僅提供例如上述API,從而防止了伺服器透過其它方式對FPGA硬體內部的訪問,保障了FPGA硬體內部資料的安全性。該預定運行邏輯還包括FPGA晶片的介面邏輯,例如透過該介面邏輯將FPGA晶片的介面編程為PCIE匯流排介面。該預定運行邏輯中還包括用於更新bit檔的邏輯,例如,在伺服器調用用於更新bit檔的API、並透過PCIE匯流排向FPGA硬體中寫入加密bit檔之後,根據用於更新bit檔的邏輯,FPGA晶片可根據其中的解密邏輯對該加密bit檔進行解密,以獲取bit檔,並根據預定邏輯進行bit檔的更新。該預定運行邏輯中還包括資料處理邏輯,以在安全計算的各個參與方在透過伺服器調用資料處理API、並向FPGA硬體輸入資料之後,FPGA硬體以預定的資料處理邏輯基於所述資料進行計算,以獲取計算結果。 在步驟S204,在所述FPGA硬體中,基於所述第一記憶體中的首版配置檔案(第一版bit檔),重新配置所述FPGA晶片。也就是說,基於第一版bit檔對應的編程程式,對所述FPGA晶片內部重新編程,從而使得所述FPGA晶片基於所述第一版bit檔對應的運行邏輯工作。其中,由於第一版bit檔中包括各個參與方各自的初始密鑰,在基於第一版bit檔重新配置FPGA晶片之後,第一版bit檔中包括的初始密鑰被寫入FPGA晶片的邏輯電路中,即,被儲存在FPGA晶片中的寄存器或SRAM(靜態隨機存取記憶體)等中。 圖3示出根據本說明書另一實施例的初始化FPGA硬體的示意過程,該FPGA硬體與圖2所示相同的是,其也包括FPGA晶片和與晶片連接的第一記憶體,該第一記憶體為非易失性記憶體,並且第一記憶體中儲存有初始配置檔案,該FPGA硬體在當前(即在實施圖3所示方法之前)基於所述初始配置檔案中的運行邏輯配置。並且,圖3所示的FPGA硬體同樣地透過例如PCIE匯流排與伺服器連接。圖3所示的FPGA硬體與圖2所示不同在於,在FPGA晶片中還包括熔絲記憶體(eFuse),所述熔絲記憶體為一次性可編程記憶體。 如圖3所示,所述eFuse中預存有所述安全計算的各個參與方各自的第一密鑰。在一個實施例中,可透過由安全計算的各個參與方一起到達該FPGA所在地共同生成用於燒寫熔絲記憶體的bit檔,以在該bit檔中分別加入各方的第一密鑰,同時使得該第一密鑰只對其提供方可見,而不會洩露給除密鑰提供方以外的任何一方。在一個實施例中,也可透過可信權威方進行對熔絲記憶體的燒寫,例如,所述可信權威方是伺服器提供方,安全計算的各個參與方透過將各自的第一密鑰提供給該權威方,從而透過該權威方完成對FPGA晶片的內置第一密鑰的過程。由於熔絲記憶體只能進行一次燒寫,因此該第一密鑰在內置在FPGA晶片中之後將不可更改,其可作為各個參與方的根密鑰。在一個實施例中,可透過例如JTAG介面向熔絲記憶體中直接寫入各個第一密鑰,並在寫入之後禁用JTAG介面,以保證FPGA硬體的安全性。 在步驟S302,在FPGA硬體端獲取被存入第一記憶體中的首版配置檔案。例如,由伺服器向第一記憶體中存入首版配置檔案。該首版配置檔案與圖2中所示的首版配置檔案基本相同,所不同的是,該首版配置檔案中僅包括各個參與方共同制定的預定運行邏輯,而不包括各方的密鑰。透過當前FPGA晶片中的上述用於燒寫熔絲記憶體的bit檔中的運行邏輯,可由伺服器向第一記憶體中存入第一版bit檔。同樣地,由於該第一版bit檔非加密檔案,因此,可透過由各個參與方都到達FPGA所在地共同監督,而將該第一版bit檔寫入第一記憶體中,從而保證該第一版bit檔不被篡改。 在步驟S304,在所述FPGA硬體中,基於上述首版配置檔案,重新配置所述FPGA晶片。也即基於該第一版bit檔對FPGA晶片重新編程,以使得FPGA晶片基於該第一版bit檔的運行邏輯工作。其中,該第一版bit檔中的運行邏輯與圖2中的第一版bit檔的運行邏輯類似,例如包括介面邏輯、用於更新bit檔的邏輯、用於進行資料處理的邏輯等等。 圖4示出根據本說明書另一實施例的初始化FPGA硬體以用於安全計算的方法示意圖,所述FPGA硬體包括FPGA晶片、和與所述FPGA晶片連接的第一記憶體,所述第一記憶體為非易失性記憶體,所述FPGA晶片基於所述第一記憶體中當前儲存的配置檔案配置,所述方法在所述FPGA硬體端執行,包括以下步驟。 當安全計算的參與方較多時,圖2和圖3所示的方法將難於操作,或者操作時間過長,在該情況中,可透過與圖2所示類似的初始化方法向FPGA硬體中內置預定數目的可信管理方各自的密鑰。所述可信管理方例如為權威機構,或者為密鑰管理基礎設施(Key Management Infrastruscture)、或者為提供服務的權威平台等等。例如,在所述安全計算的參與方中的包括自身為權威機構的參與方的情況中,則所述可信管理方有可能是所述安全計算的多個參與方中的一個參與方。在置入可信管理方的密鑰的情況中,可由所述預定數目的管理方確定用於初始化的首版bit檔、以及後續的更新bit檔,並可透過管理方的密鑰使得FPGA硬體獲取各個參與方的工作密鑰,以用於後續的資料處理。 參考圖4,在步驟S402,獲取被存入所述第一記憶體中的首版配置檔案,其中,所述首版配置檔案中包括所述安全計算的預定數目的可信管理方各自的初始密鑰,並且所述首版配置檔案中包括所述各個管理方共同確定的預定運行邏輯。 圖4所示方法與圖2所示方法不同在於,在所述首版配置檔案中包括可信管理方的初始密鑰,並且該首版配置檔案中的運行邏輯是由各個管理方共同確定的。所述可信管理方根據對安全性的要求可以預定為一個,也可以為多個,可信管理方的數目越多,安全性越高。所述可信管理方例如可以為權威機構,如銀行、政府部分等。所述預定運行邏輯可以透過第三方提供,由所述可信管理方認可而確定,或者可由安全計算的參與方提供並經可信管理方認可,或者由所述可信管理方自身制定。 與圖2所示方法類似地,所述各個管理方在向首版配置檔案中提供各自的初始密鑰時,可以同時到達FPGA所在現場共同監督,從而使得各個管理方各自的密鑰不被除其自身以外的任何一方獲取,同時使得該首版配置檔案不被篡改。 在步驟S404,基於所述首版配置檔案重新配置所述FPGA晶片。該步驟與圖2和圖3中的配置步驟類似地實施,在此不再贅述。 圖5示出根據本說明書實施例的初始化FPGA硬體以用於安全計算的方法示意圖,所述FPGA硬體包括FPGA晶片、和與所述FPGA晶片連接的第一記憶體,所述第一記憶體為非易失性記憶體,所述FPGA晶片基於所述第一記憶體中當前儲存的配置檔案配置,所述FPGA晶片中包括熔絲記憶體,所述熔絲記憶體中預存有所述安全計算的預定數目的可信管理方各自的第一密鑰,所述方法在所述FPGA硬體端執行,包括: 在步驟S502,獲取被存入所述第一記憶體中的首版配置檔案,其中,所述首版配置檔案中包括所述各個管理方共同確定的預定運行邏輯;以及 在步驟S504,基於所述首版配置檔案重新配置所述FPGA晶片。 在圖5中所示的方法中,除了向eFuse中內置的密鑰是各個管理方的密鑰之外,與圖3中各個步驟的實施基本相同,在此不再贅述。 圖6示出根據本說明書實施例的更新FPGA硬體的示意過程。該過程在FPGA硬體端執行。在執行圖6所示方法之前,所述FPGA硬體包括用於安全計算的FPGA晶片、和與所述FPGA晶片連接的第一記憶體,所述第一記憶體為非易失性記憶體。所述第一記憶體中當前儲存有配置檔案,可將該當前儲存的配置檔案表示為第一配置檔案,所述第一配置檔案包括所述各個參與方共同制定的第一運行邏輯,所述FPGA晶片當前基於所述第一運行邏輯而配置。所述第一配置檔案例如可以為圖2或圖3中所示的第一版bit檔,或者也可以為之前透過圖6所示的該方法更新的bit檔等等,其都包括透過各個參與方共同制定的運行邏輯。第一運行邏輯中例如對伺服器提供用於更新配置檔案的API,伺服器在調用該API之後,FPGA晶片中開始運行用於更新配置檔案的相關邏輯,從而開始執行圖6所示的方法。 另外,所述硬體中儲存有所述安全計算的各個參與方各自的密鑰,可將硬體中當前儲存的各個參與方的密鑰都表示為第一密鑰。在一個實施例中,所述第一配置檔案為圖2中所示的首版bit檔,因此,所述首版bit檔中包括所述第一密鑰,從而透過將首版bit檔燒寫入FPGA晶片中,從而將所述各個第一密鑰寫入FPGA晶片的邏輯電路中,即所述第一密鑰被儲存在所述FPGA晶片的邏輯電路中。在一個實施例中,所述第一配置檔案例如也是透過圖6所示的方法更新的bit檔,在該情況中,所述各個第一密鑰可被儲存在所述第一記憶體中。在一個實施例中,所述第一配置檔案例如為圖3中所示的第一版bit檔,在該情況中,如上文所述,所述各個第一密鑰被儲存在所述FPGA晶片中的熔絲記憶體中。 如圖6所示,在步驟S602,由FPGA硬體端獲取加密檔案,即在FPGA硬體端獲取由伺服器向FPGA硬體存入的加密檔案。所述加密檔案透過所述各個參與方中的至少一方以第一預定順序依次加密而獲取,其中,第一次加密的加密對象包括第二配置檔案,所述第二配置檔案包括所述各個參與方共同制定的第二運行邏輯。 在一個實施例中,全部所述各個參與方透過以預定順序使用其各自的密鑰對第二配置檔案依次加密,從而獲取所述加密檔案,並透過伺服器將該加密檔案存入FPGA硬體中。所述預定順序為預先確定好,並且在第一配置檔案中也包括與該預定順序相對應的解密邏輯。該第二配置檔案與第一配置檔案類似,也是透過各個參與方共同制定的一種運行邏輯,其中的介面邏輯、配置檔案更新邏輯等可與第一配置檔案中相同或類似,其中例如包括更新的資料處理邏輯。例如,所述資料處理邏輯例如對應於一種神經網路模型,各個參與方可能會根據模型訓練結果更新該神經網路模型的參數,從而,可透過在第二配置檔案中包括對應於更新模型的更新的資料處理邏輯,進行對FPGA硬體中的計算模型的更新。在一個實施例中,第二配置檔案中的用於更新配置檔案的邏輯中包括的對加密檔案的解密邏輯可設置為與第一配置檔案中不同。 所述各個參與方可如上文所述同時到達現場執行該過程,也可透過視訊監控而遠端進行該過程。在所述各個參與方中的例如A方對第二配置檔案進行第一次加密時,A方首先使用相應的編程程式生成第二配置檔案,並使用A方的密鑰對第二配置檔案進行加密。由於A方對明文資料進行相關處理,為了防止A方對編程程式或第二配置檔案進行篡改,可由所述安全計算的其他參與方在A方進行上述操作時透過視訊共同監控。例如,在各個參與方共同確定了相應的編程程式之後,每個參與方本地都擁有一份相同的編程程式,每個參與方都可以獲取該編程程式的雜湊代碼值、及該編程程式對應的第二配置檔案、及第二編程程式的雜湊代碼值。A方在轉換編程程式之前,可透過軟體計算該編程程式的代碼雜湊值,並同時由其他參與方共同視訊監控該計算過程,在透過視訊監控共同確定該代碼雜湊值無誤之後,A方將該編程程式轉換為第二配置檔案,並同樣地計算該第二配置檔案的代碼雜湊值,並同樣地由其他參與方共同確定該第二配置檔案無誤。在經過上述確認過程之後,A方在其他參與方的共同視訊監控下,透過加密軟體使用自身的密鑰(如第一密鑰)對該第二配置檔案進行加密,從而獲取第二配置檔案的經第一次加密的檔案。A方然後將該第一次加密的加密檔案發送給所述多個參與方中的例如B方,B方使用其密鑰對經第一次加密的檔案進行第二次加密,以獲取第二配置檔案的經兩次加密的加密檔案。然後B方再將經兩次加密的加密檔案發送給所述參與方中的例如C方,C方進行與B方相同的操作。直到各個參與方都使用自己的密鑰進行一次加密之後,最後獲取最終的加密檔案。所述參與方中的進行最後一次加密的例如E方將加密檔案發送給伺服器,從而由伺服器將加密檔案存入FPGA硬體中。 在一個實施例中,A方在計算了第二配置檔案的雜湊代碼值之後,在其他參與方的視訊監控下,對第二配置檔案及其雜湊代碼值進行打包加密,以用於後續FPGA硬體對第二配置檔案的校驗。 可以理解,上文中,雖然描述了透過全部參與方分別進行加密從而獲取加密檔案,本說明書實施例並不限於此,例如,可僅透過全部參與方中的約定好的一方(例如A方)對第二配置檔案進行加密,以獲取加密檔案,並由該方將經過一次加密的加密檔案發送給伺服器。或者可透過所述參與方中的兩方或三方進行依次加密等等。其中,對第二配置檔案的加密次數越多,該第二配置檔案越不容易被破解,從而安全性越高。 在一個實施例中,所述加密檔案是透過全部參與方依次進行加密獲取的,並且,所述加密檔案中還包括各個參與方的更新的密鑰(下文中稱為第二密鑰)。圖7示意示出包括A方、B方和C方的第二密鑰的加密檔案示意圖。如圖7所示,所述多個參與方中的例如A方可例如使用其第一密鑰(Ak1)或其當前的工作密鑰對第二配置檔案(bit2)和其自身的第二密鑰(Ak2)進行打包加密,並經第一次加密的加密檔案發送給例如B方。B方可例如使用其第一密鑰(Bk1)對第一次加密的加密檔案和B方的第二密鑰(Bk2)進行打包加密,從而獲取經兩次加密的加密檔案,並將該經兩次加密的加密檔案發送給C方,C方類似地使用其第一密鑰(Ck1)對收到的加密檔案和其第二密鑰(Ck2)進行打包加密。各個參與方在類似地都進行加密之後,獲取最終的加密檔案,該最終的加密檔案中包括各方的第二密鑰,從而以用於後續的對各個第一密鑰的更新。在該過程中,A方也可以對第二配置檔案、其雜湊代碼值及A方的第二密鑰進行打包加密併發送給B方。 例如,所示FPGA硬體中包括與所述FPGA晶片連接的第二記憶體,該第二記憶體例如為DDR,則伺服器可例如透過PCIE匯流排將所述加密檔案存入所述DDR中。可以理解,所述加密檔案不限於被存入第二記憶體中,例如其也可以被存入第一記憶體中,另外,所述第二記憶體不限於為DDR,而可以為任何形式的適用的記憶體。 在圖6中的步驟S604,在所述FPGA硬體中,透過所述FPGA晶片中的當前更新邏輯,使用所述至少一方的各自的工作密鑰以第二預定順序對所述加密檔案解密,以獲取所述第二配置檔案,其中,所述第二預定順序與所述第一預定順序相對應,所述工作密鑰基於相應一方的第一密鑰獲取。 所述FPGA晶片中的當前運行邏輯為第一配置檔案中包括的第一運行邏輯,該第一運行邏輯中包括在更新配置檔案時的更新邏輯。在伺服器調用用於更新配置檔案的API之後,FPGA晶片基於該更新邏輯工作。所述更新邏輯中包括對加密檔案進行解密的邏輯,該邏輯例如包括使用所述至少一方各自的工作密鑰,以預定順序對該加密檔案依次解密。該預定順序與所述至少一方對第二配置檔案依次加密時的順序是相對應的,例如,在加密時,透過A方、B方和C方透過其各自的密鑰對第二配置檔案進行依次加密,則該解密邏輯對應於透過C方、B方和A方各自的相應的工作密鑰對加密檔案進行依次解密,從而可獲取第二配置檔案。 在一個實施例中,各方的工作密鑰為所述FPGA硬體中儲存的各方的第一密鑰。所述加密例如為對稱加密,例如,A方使用其第一密鑰首先進行加密,然後B方使用其第一密鑰進行加密,之後C方使用其第一密鑰進行加密。從而,FPGA硬體在獲取該加密檔案之後,基於預定更新邏輯,使用硬體中儲存的C方第一密鑰、B方第一密鑰和A方第一密鑰對加密檔案依次解密,從而可獲取第二配置檔案。可以理解,所述加密也可以為非對稱加密,在該情況中,A方、B方和C方可使用其各自的與其第一密鑰相應的加密密鑰進行加密,從而使得在解密時使用相應的第一密鑰依次解密。 在一個實施例中,各方的工作密鑰基於相應方的第一密鑰另外獲取。圖8示意示出了使得FPGA硬體獲取工作密鑰的密鑰協商過程。如圖8所示,FPGA硬體基於以下步驟獲取所述多個參與方中的例如A方的工作密鑰:在步驟S802,獲取A方的加密的工作密鑰,例如,A方透過其第一密鑰對其工作密鑰進行加密,並透過伺服器將該加密的工作密鑰存入FPGA硬體中,例如存入DDR中,從而使得FPGA硬體獲取A方的加密的工作密鑰。在該情況中,在FPGA晶片的更新邏輯中還包括獲取工作密鑰的邏輯,該邏輯使得在FPGA晶片中,在步驟S804,透過使用A方的第一密鑰對該加密的工作密鑰進行解密,從而獲取A方的工作密鑰。在FPGA晶片獲取各方的工作密鑰之後,可將該工作密鑰儲存在FPGA晶片內部,該工作密鑰在斷電時會被自動清除,從而保證了安全性。另外,該工作密鑰可透過定時執行上述密鑰協商方法而定時更新,從而保證安全性。在所述至少一方都與FPGA硬體協商了工作密鑰之後,所述至少一方可使用其各自的工作密鑰對第二配置檔案進行依次加密,以使得FPGA晶片在後續可透過所述至少一份各自的工作密鑰對加密檔案進行依次解密。可以理解,這裡對第二配置檔案的加密方式也可以為非對稱加密,在該情況中,所述至少一方可使用其各自的與工作密鑰對應的加密密鑰對第二配置檔案進行依次加密。 在步驟S606,將所述第二配置檔案存入第一記憶體中。FPGA晶片在對加密檔案解密獲取第二配置檔案之後,可將該第二配置檔案直接存入第一記憶體中,或者,可如圖6所示,將該第二配置檔案存入DDR中,並從DDR中將該第二配置檔案存入第一記憶體中。 在一個實施例中,所述加密檔案為對第二配置檔案及其雜湊代碼值進行打包加密所獲取的加密檔案,FPGA晶片在如上所述對加密檔案解密之後,獲取第二配置檔案及其代碼雜湊值,FPGA晶片使用該代碼雜湊值對第二配置檔案進行校驗,在校驗透過之後,將第二配置檔案存入第一記憶體中。 在一個實施例中,加密檔案中還包括所述安全計算的各個參與方各自的第二密鑰。例如,加密檔案為如圖7所示的加密檔案,在該情況中,在首先透過C方的工作密鑰對該解密檔案進行第一次解密時,獲取C方的第二密鑰,在透過B方的工作密鑰進行第二次解密時,獲取B方的第二密鑰,在透過A方的工作密鑰進行第三次解密時,獲取A方的第二密鑰和第二配置檔案。之後,FPGA晶片將第二配置檔案存入第一記憶體中,並將A方、B方和C方各自的第二密鑰都存入第一記憶體中,作為更新的第一密鑰。可以理解,第一密鑰不限於透過上述方式進行更新,例如,也可以透過上述獲取工作密鑰的方式,透過A方、B方和C方分別與FPGA晶片進行密鑰協商,從而在FPGA硬體中分別獲取各方的第二密鑰,並由FPGA晶片將各個第二密鑰存入第一記憶體中作為更新的第一密鑰。 在一個實施例中,FPGA硬體中還儲存有其自身的硬體密鑰,例如,在熔絲記憶體中還儲存有硬體密鑰,FPGA晶片將上述獲取的第二密鑰存入第一記憶體之前,還使用其自身的硬體密鑰對該第二密鑰進行加密,並將加密後的第二密鑰存入第一記憶體中,以提高安全性。FPGA晶片在需要使用第二密鑰時,從第一記憶體讀取加密的第二密鑰,並使用自身的硬體密鑰對該加密的第二密鑰進行解密,從而獲取第二密鑰。 在步驟S608,基於所述第二配置檔案重新配置所述FPGA晶片。也即基於該第二配置檔案對FPGA晶片重新編程,以使得FPGA晶片基於該第二配置檔案的運行邏輯工作。其中,該第二配置檔案例如包括介面邏輯、用於更新bit檔的更新的邏輯、用於進行資料處理的更新的邏輯等等,從而實施對FPGA硬體的更新。 圖9示出根據本說明書實施例的一種更新用於安全計算的FPGA硬體的方法示意圖,所述FPGA硬體包括FPGA晶片、和與所述FPGA晶片連接的第一記憶體,所述第一記憶體為非易失性記憶體,所述第一記憶體中儲存有第一配置檔案,所述第一配置檔案包括所述安全計算的預定數目的可信管理方共同確定的第一運行邏輯,所述FPGA晶片當前基於所述第一配置檔案而配置,所述FPGA硬體中儲存有所述預定數目的可信管理方各自的第一密鑰,所述方法在所述FPGA硬體端執行,包括: 在步驟S902,獲取加密檔案,其中,所述加密檔案透過所述預定數目的可信管理方中至少一個管理方以第一預定順序依次加密而獲取,其中,所述加密的加密對象包括第二配置檔案,所述第二配置檔案包括所述預定數目的可信管理方共同確定的第二運行邏輯; 在步驟S904,使用所述至少一個管理方各自的工作密鑰以第二預定順序對所述加密檔案解密,以獲取所述第二配置檔案,其中,所述第二預定順序與所述第一預定順序相對應,其中,所述至少一個管理方各自的工作密鑰基於所述至少一個管理方各自的第一密鑰獲取; 在步驟S906,將所述第二配置檔案存入所述第一記憶體中;以及 在步驟S908,基於所述第二配置檔案重新配置所述FPGA晶片。 圖9所示方法與圖6所示方法中各個步驟的具體實施基本相同,不同在於,所述FPGA硬體中儲存的是各個管理方的第一密鑰,第一配置檔案和第二配置檔案也是由各個管理方共同確定的,在更新配置檔案時,由預定數目的管理方中的至少一個管理方對第二配置檔案進行依次加密。同樣地,在對第二配置檔案進行第一次加密時,可透過由其他管理方共同監督進行。 與圖6所示方法類似地,在所述加密檔案中可包括各個管理方的第二密鑰,從而可在更新配置檔案的同時,更新各個管理方的內置的第一密鑰。除上述不同之處之外,圖6所示的各個步驟的具體實施都可以相應地應用於圖9所示的各個步驟中,在此不一一贅述。 圖10示出了根據本說明書實施例的基於FPGA硬體的資料處理方法示意圖。在圖10中,橢圓框用於表示方法步驟,矩形框用於表示相關的資料。所述FPGA硬體包括用於安全計算的FPGA晶片,所述FPGA晶片基於所述安全計算的各個參與方共同制定的運行邏輯而配置,其中,所述硬體中儲存有所述各個參與方各自的第一密鑰。所述FPGA硬體例如為透過圖2、圖3或圖6中任一方法所獲取的FPGA硬體。透過圖2、圖3或圖6所示的方法,形成的FPGA硬體構成了可信執行環境(TEE),可用於進行安全計算。所述方法在所述FPGA硬體端執行。 如圖10所示,在步驟S1002,獲取所述各個參與方各自的加密資料。圖10中還示意示出了所述各個參與方中的一方(例如A方)伺服器中對輸入資料的處理。例如A方在透過如圖8所示方法利用其第一密鑰與FPGA硬體協商了工作密鑰之後,A方可首先使用該工作密鑰對其輸入資料進行對稱加密,以獲取加密資料,並將該加密資料透過伺服器輸入FPGA硬體,例如將加密資料存入DDR中或FPGA晶片內部。其中,所述工作密鑰可與上文參考圖5所述的工作密鑰相同或者不同,類似地,該工作密鑰可被儲存在所述FPGA晶片內部,從而在FPGA硬體斷電時被消除,或者該工作密鑰可定期更新。在該情況中,伺服器例如透過調用FPGA硬體的資料處理API,而進行對加密資料的輸入,以使得FPGA晶片使用與資料處理相對應的邏輯進行工作。 可以理解,在上文中,A方雖然透過對稱加密的方式對輸入資料進行加密,本說明書實施例不限於此,例如,A方可透過圖8所示的方法與FPGA硬體協商用於非對稱加密的一對密鑰,例如,該對密鑰包括用於解密的工作密鑰和對應的加密密鑰。在該情況中,A方可使用加密密鑰對其輸入資料進行加密,以獲取加密資料,並將加密資料透過伺服器輸入FPGA硬體。 在步驟S1004,使用所述各個參與方各自的工作密鑰對相應的所述加密資料解密,以獲取各方的明文資料。例如,FPGA硬體在獲取A方的加密資料之後,使用A方的工作密鑰對該加密資料進行解密,從而獲取A方的明文資料。類似地,FPGA硬體可獲取各個參與方的明文資料。 在步驟S1006,基於所述各方的明文資料進行計算,以獲取計算結果。如上文所述,在伺服器調用資料處理API之後,所述FPGA晶片中使用與資料處理相對應的邏輯進行工作,其中包括與用於處理資料的計算模型對應的邏輯。因此,在FPGA晶片獲取各方的明文資料之後,將各方的明文資料代入相應的計算模型中進行計算,從而獲取計算結果。 在步驟S1008,輸出計算結果。 在一個實施例中,計算結果不是敏感資料,不需要進行保護,在該情況中,FPGA硬體可向伺服器直接輸出明文的計算結果,並透過伺服器將該計算結果發送給各個參與方。所述FPGA硬體例如可透過PCIE匯流排將計算結果寫入伺服器中的相應地址中,從而向伺服器輸出計算結果。 在一個實施例中,如圖10中所示,在獲取計算結果之後,在FPGA晶片中使用例如A方的工作密鑰對該計算結果加密,以獲取加密結果,並將該加密結果輸出給伺服器,並由伺服器將該加密結果發送給A方。A方在獲取該加密結果之後,可使用其工作密鑰對加密結果進行解密,從而獲取明文的計算結果。所述安全計算的其他參與方可與A方類似地獲取明文的計算結果。 在一個實施例中,對輸入資料的加密方式為非對稱加密方式,例如,在A方中,透過上述加密密鑰對輸入資料進行加密。在該情況中,FPGA硬體可透過圖8所示的密鑰協商方法基於A方的第一密鑰從A方獲取該加密密鑰。從而,在FPGA晶片中,在獲取計算結果之後,使用所述加密密鑰對計算結果進行加密,以獲取加密結果,並將該加密結果透過伺服器發送給A方。A方在接收該加密結果之後,可使用其工作密鑰對加密結果進行解密,從而獲取明文的計算結果。 在一個實施例中,上述工作密鑰為相應方的第一密鑰。在對稱加密的情況中,在FPGA晶片獲取計算結果之後,例如使用A方的第一密鑰對該計算結果進行加密,並將加密結果輸出給伺服器,以使得伺服器將該加密結果發送給A方。A方在獲取加密結果之後,可使用其第一密鑰對加密結果進行解密,從而獲取明文計算結果。其他各方可與A方類似地獲取計算結果。在非對稱加密的情況中,所述各個參與方可在初始化FPGA硬體時就在FPGA硬體中內置入對應的第一密鑰和第二密鑰,並在後續更新配置檔案時更新第一密鑰和第二密鑰,其中第一密鑰為解密密鑰,第二密鑰為加密密鑰。從而,FPGA晶片在獲取計算結果之後,可使用第二密鑰對計算結果進行加密並輸出。 圖11示出一種基於FPGA硬體的資料處理方法示意圖,所述FPGA硬體用於安全計算、並包括FPGA晶片,所述FPGA晶片基於所述安全計算的預定數目的可信管理方共同確定的運行邏輯而配置,其中,所述FPGA硬體中儲存有所述預定數目的可信管理方各自的第一密鑰。該FPGA硬體例如為透過圖4、圖5或圖9所示的方法配置的FPGA硬體,該硬體構成相對於各個可信管理方的可信執行環境(TEE)。所述方法在所述FPGA硬體端執行,包括: 在步驟S1102,獲取所述各個參與方各自的加密資料; 在步驟S1104,使用所述各個參與方各自的工作密鑰對相應的所述加密資料解密,以獲取各方的明文資料,所述各個參與方各自的工作密鑰分別基於相應的所述可信管理方的第一密鑰獲取; 在步驟S1106,基於所述各方的明文資料進行計算,以獲取計算結果;以及 在步驟S1108,輸出所述計算結果。 該方法與圖10所示方法不同在於,FPGA硬體透過與相應的可信管理方協商密鑰而獲取相應的參與方的工作密鑰。例如,所述參與方中包括第一方,所述預定數目的可信管理方中包括第一管理方,第一方可能選擇透過第一管理方與FPGA硬體協商密鑰,即,第一方與第一管理方相對於。因此,第一方將自己的工作密鑰提供給第一管理方,從而使得第一管理方基於下述密鑰協商過程與FPGA硬體協商密鑰,使得FPGA硬體內部獲取第一方的該工作密鑰。另外,在該方法中,可由各個可信管理方共同監督該資料處理過程,以使得各個參與方的資料、及計算結果不被所述可信管理方中的任一方獲取。與圖10所示方法類似地,在輸出計算結果時,可透過參與方的工作密鑰對計算結果進行加密,該加密可以為對稱加密或者非對稱加密。其中,在非對稱加密的情況中,FPGA硬體同樣地透過相應管理方的第一密鑰獲取參與方的加密密鑰。 在一個實施例中,所述各個參與方中包括第一方,所述預定數目的可信管理方中包括第一管理方,其中,第一方與第一管理方相對於,所述FPGA硬體基於與圖8類似的如下步驟獲取所述第一方的工作密鑰: 獲取所述第一方的加密的工作密鑰,所述加密的工作密鑰透過由所述第一管理方使用其第一密鑰對第一方的工作密鑰加密而生成,其中,所述第一方的工作密鑰由所述第一管理方從所述第一方接收;以及 使用所述第一管理方的第一密鑰對所述加密的工作密鑰解密,以獲取所述第一方的工作密鑰。 透過在FPGA硬體中內置可信管理方的密鑰,並由可信管理方向用戶提供安全計算的服務,使得可透過FPGA硬體向多組用戶提供多次安全計算服務,另外,在FPGA硬體的配置過程、及在透過FPGA硬體的資料處理過程中,透過由預定數目的可信管理方共同參與、共同監督,提供了高安全性和可靠性。 在一個實施例中,各個管理方也可以透過圖8所示的密鑰協商方法獲取其各自的工作密鑰,並使用其自身的工作密鑰幫助各個參與方獲取參與方的工作密鑰。 圖12示出根據本說明書實施例的一種初始化FPGA硬體以用於安全計算的裝置1200,所述FPGA硬體包括FPGA晶片、和與所述FPGA晶片連接的第一記憶體,所述第一記憶體為非易失性記憶體,所述FPGA晶片基於所述第一記憶體中當前儲存的配置檔案配置,所述裝置部署在所述FPGA硬體端,包括: 獲取單元121,配置為,獲取被存入所述第一記憶體中的首版配置檔案,其中,所述首版配置檔案中包括所述安全計算的各個參與方各自的初始密鑰,並且所述首版配置檔案中包括所述各個參與方共同制定的預定運行邏輯;以及 配置單元122,配置為,基於所述首版配置檔案重新配置所述FPGA晶片。 在一個實施例中,所述FPGA硬體透過PCIE匯流排與伺服器連接,其中,所述獲取單元121還配置為,獲取由所述伺服器透過PCIE匯流排寫入所述第一記憶體的首版配置檔案。 圖13示出根據本說明書實施例的一種初始化FPGA硬體以用於安全計算的裝置1300,所述FPGA硬體包括FPGA晶片、和與所述FPGA晶片連接的第一記憶體,所述第一記憶體為非易失性記憶體,所述FPGA晶片基於所述第一記憶體中當前儲存的配置檔案配置,所述FPGA晶片中包括熔絲記憶體,所述熔絲記憶體中預存有所述安全計算的各個參與方各自的第一密鑰,所述裝置部署在所述FPGA硬體端,包括: 獲取單元131,配置為,獲取被存入所述第一記憶體中的首版配置檔案,其中,所述首版配置檔案中包括所述各個參與方共同制定的預定運行邏輯;以及 配置單元132,配置為,基於所述首版配置檔案重新配置所述FPGA晶片。 圖14示出根據本說明書實施例的一種初始化FPGA硬體以用於安全計算的裝置1400,所述FPGA硬體包括FPGA晶片、和與所述FPGA晶片連接的第一記憶體,所述第一記憶體為非易失性記憶體,所述FPGA晶片基於所述第一記憶體中當前儲存的配置檔案配置,所述裝置部署在所述FPGA硬體端,包括: 獲取單元141,配置為,獲取被存入所述第一記憶體中的首版配置檔案,其中,所述首版配置檔案中包括所述安全計算的預定數目的可信管理方各自的初始密鑰,並且所述首版配置檔案中包括所述各個管理方共同確定的預定運行邏輯;以及 配置單元142,配置為,基於所述首版配置檔案重新配置所述FPGA晶片。 圖15示出根據本說明書實施例的一種初始化FPGA硬體以用於安全計算的裝置1500,所述FPGA硬體包括FPGA晶片、和與所述FPGA晶片連接的第一記憶體,所述第一記憶體為非易失性記憶體,所述FPGA晶片基於所述第一記憶體中當前儲存的配置檔案配置,所述FPGA晶片中包括熔絲記憶體,所述熔絲記憶體中預存有所述安全計算的預定數目的可信管理方各自的第一密鑰,所述裝置部署在所述FPGA硬體端,包括: 獲取單元151,配置為,獲取被存入所述第一記憶體中的首版配置檔案,其中,所述首版配置檔案中包括所述各個管理方共同確定的預定運行邏輯;以及 配置單元152,配置為,基於所述首版配置檔案重新配置所述FPGA晶片。 圖16示出根據本說明書實施例的一種更新用於安全計算的FPGA硬體的裝置1600,所述FPGA硬體包括FPGA晶片、和與所述FPGA晶片連接的第一記憶體,所述第一記憶體為非易失性記憶體,所述第一記憶體中儲存有第一配置檔案,所述第一配置檔案包括所述安全計算的各個參與方共同制定的第一運行邏輯,所述FPGA晶片當前基於所述第一配置檔案而配置,所述FPGA硬體中儲存有所述各個參與方各自的第一密鑰,所述裝置部署在所述FPGA硬體端,包括: 獲取單元161,配置為,獲取加密檔案,其中,所述加密檔案透過所述各個參與方中至少一方以第一預定順序依次加密而獲取,其中,第一次加密的加密對象包括第二配置檔案,所述第二配置檔案包括所述各個參與方共同制定的第二運行邏輯; 解密單元162,配置為,使用所述至少一方的各自的工作密鑰以第二預定順序對所述加密檔案依次解密,以獲取所述第二配置檔案,並將其存入所述第一記憶體中,其中,所述第二預定順序與所述第一預定順序相對應,所述工作密鑰基於相應一方的第一密鑰獲取;以及 配置單元163,配置為,基於所述第二配置檔案重新配置所述FPGA晶片。 在一個實施例中,所述第一次加密的加密對象還包括所述第二配置檔案的代碼雜湊值,其中,所述解密單元162還配置為,使用所述至少一方的各自的工作密鑰以第二預定順序對所述加密檔案依次解密,以獲取所述第二配置檔案及其代碼雜湊值,所述裝置還包括,校驗單元164,配置為,在獲取所述第二配置檔案及其代碼雜湊值之後,透過所述代碼雜湊值對所述第二配置檔案進行校驗。 在一個實施例中,所述加密檔案的加密對象還包括各個參與方各自的第二密鑰,其中,所述解密單元162還配置為,使用所述各個參與方各自的工作密鑰以第二預定順序對所述加密檔案依次解密,以獲取第二配置檔案,並在每次解密時獲取相應的參與方的第二密鑰,所述裝置還包括,儲存單元165,配置為,在每次解密時獲取相應的參與方的第二密鑰之後,將該第二密鑰儲存在所述第一記憶體中,以作為相應的參與方的更新的第一密鑰。 在一個實施例中,所述FPGA晶片具有其自身的硬體密鑰,其中,所述儲存單元165包括,加密子單元1651,配置為,透過所述FPGA晶片使用其自身的硬體密鑰對該第二密鑰加密,以及,儲存子單元1652,配置為,將該加密的第二密鑰存入所述第一記憶體。 在一個實施例中,所述各個參與方中包括第一方,所述FPGA硬體基於密鑰協商裝置獲取所述第一方的工作密鑰,圖17示出根據本說明書實施例的密鑰協商裝置1700,包括: 獲取單元171,配置為,獲取所述第一方的加密的工作密鑰;以及 解密單元172,配置為,使用所述第一方的第一密鑰對所述加密的工作密鑰解密,以獲取所述第一方的工作密鑰。 圖18示出根據本說明書實施例的一種更新用於安全計算的FPGA硬體的裝置1800,所述FPGA硬體包括FPGA晶片、和與所述FPGA晶片連接的第一記憶體,所述第一記憶體為非易失性記憶體,所述第一記憶體中儲存有第一配置檔案,所述第一配置檔案包括所述安全計算的預定數目的可信管理方共同確定的第一運行邏輯,所述FPGA晶片當前基於所述第一配置檔案而配置,所述FPGA硬體中儲存有所述預定數目的可信管理方各自的第一密鑰,所述裝置部署在所述FPGA硬體端,包括: 獲取單元181,配置為,獲取加密檔案,其中,所述加密檔案透過所述預定數目的可信管理方中至少一個管理方以第一預定順序依次加密而獲取,其中,所述加密的加密對象包括第二配置檔案,所述第二配置檔案包括所述預定數目的可信管理方共同確定的第二運行邏輯; 解密單元182,配置為,使用所述至少一個管理方各自的工作密鑰以第二預定順序對所述加密檔案解密,以獲取所述第二配置檔案,並將其存入所述第一記憶體中,其中,所述第二預定順序與所述第一預定順序相對應,其中,所述至少一個管理方各自的工作密鑰基於所述至少一個管理方各自的第一密鑰獲取;以及 配置單元183,配置為,基於所述第二配置檔案重新配置所述FPGA晶片。 圖19示出根據本說明書實施例的一種基於FPGA硬體的資料處理裝置1900,所述FPGA硬體用於安全計算、並包括FPGA晶片,所述FPGA晶片基於所述安全計算的各個參與方共同制定的運行邏輯而配置,其中,所述FPGA硬體中儲存有所述各個參與方各自的第一密鑰,所述裝置部署在所述FPGA硬體端,包括: 獲取單元191,配置為,獲取所述各個參與方各自的加密資料; 解密單元192,配置為,使用所述各個參與方各自的第一工作密鑰對相應的所述加密資料解密,以獲取各方的明文資料,所述第一工作密鑰基於相應參與方的第一密鑰獲取; 計算單元193,配置為,基於所述各方的明文資料進行計算,以獲取計算結果;以及 輸出單元194,配置為,輸出所述計算結果。 在一個實施例中,所述加密資料透過對稱加密獲取,所述各個參與方包括第一方,其中,所述輸出單元194包括,加密子單元1941,配置為,使用所述第一方的工作密鑰對所述計算結果加密,以獲取第一加密結果;以及輸出子單元1942,配置為,輸出用於發送給所述第一方的第一加密結果。 在一個實施例中,所述加密資料透過非對稱加密獲取,所述工作密鑰是所述非對稱加密的解密密鑰,所述非對稱加密還包括與所述工作密鑰對應的加密密鑰,所述各個參與方包括第一方,其中,所述第一方的加密密鑰基於所述第一方的第一密鑰獲取,其中,所述輸出單元194包括,加密子單元1941,配置為,使用所述第一方的加密密鑰對所述計算結果加密,以獲取第一加密結果;以及輸出子單元1942,配置為,輸出用於發送給所述第一方的第一加密結果。 在一個實施例中,所述FPGA硬體中還儲存有所述各個參與方各自的第二密鑰,所述加密資料透過非對稱加密獲取,所述各個參與方包括第一方,其中,所述第一方的工作密鑰為所述第一密鑰,所述第一方的第二密鑰為與所述第一方的第一密鑰對應的用於加密的密鑰,其中,所述輸出單元194包括,加密子單元1941,配置為,使用所述第一方的第二密鑰對所述計算結果加密,以獲取第一加密結果;以及輸出子單元1942,配置為輸出用於發送給所述第一方的第一加密結果。 圖20示出根據本說明書實施例的一種基於FPGA硬體的資料處理裝置2000,所述FPGA硬體用於安全計算、並包括FPGA晶片,所述FPGA晶片基於所述安全計算的預定數目的可信管理方共同確定的運行邏輯而配置,其中,所述FPGA硬體中儲存有所述預定數目的可信管理方各自的第一密鑰,所述裝置部署在所述FPGA硬體端,包括: 獲取單元201,配置為,獲取所述各個參與方各自的加密資料; 解密單元202,配置為,使用所述各個參與方各自的工作密鑰對相應的所述加密資料解密,以獲取各方的明文資料,所述各個參與方各自的工作密鑰分別基於相應的所述可信管理方的第一密鑰獲取; 計算單元203,配置為,基於所述各方的明文資料進行計算,以獲取計算結果;以及 輸出單元204,配置為,輸出所述計算結果。 在一個實施例中,所述各個參與方中包括第一方,所述預定數目的可信管理方中包括第一管理方,所述FPGA硬體透過與圖17所示類似的密鑰協商裝置獲取所述第一方的工作密鑰,所述密鑰協商裝置包括: 獲取單元,配置為,獲取所述第一方的加密的工作密鑰,所述加密的工作密鑰透過由所述第一管理方使用其第一密鑰對第一方的工作密鑰加密而生成,其中,所述第一方的工作密鑰由所述第一管理方從所述第一方接收;以及 解密單元,配置為,使用所述第一管理方的第一密鑰對所述加密的工作密鑰解密,以獲取所述第一方的工作密鑰。 本說明書另一方面提供一種電腦可讀儲存媒體,其上儲存有電腦程式,當所述電腦程式在電腦中執行時,令電腦執行上述任一種方法。 本說明書另一方面提供一種計算設備,包括記憶體和處理器,其特徵在於,所述記憶體中儲存有可執行代碼,所述處理器執行所述可執行代碼時,實現上述任一種方法。 透過根據本說明書實施例的基於FPGA硬體的安全計算方案,透過採用FPGA硬體構建安全計算環境,杜絕了駭客軟體竊取用戶隱私的可能性;透過採用FPGA硬體,安全計算的各個參與方可自己制定運行代碼,提供了較大的安全性;透過採用FPGA硬體,可靈活地更新運算邏輯可以被重構,從而可支援用戶的各種演算法及演算法更新;透過在FPGA硬體中內置密鑰作為信任根,並且該內置密鑰可更新,提高了安全性;在配置所述PFGA硬體中,除了第一版安全bit檔沒有被加密,後續版本都需要經過各方加密,避免了bit檔被單方面篡改的風險;在配置所述PFGA硬體的過程中,除了第一版安全bit檔需要各方到場部署,其它的加密版本均可遠端進行升級,提高了運維的便利性;在FPGA硬體中,透過內置密鑰來協商工作密鑰,該工作密鑰在斷電後需要重新協商,進一步提高了安全性;另外,透過使用該FPGA硬體進行安全計算,各個參與方分別對其輸入資料加密,加密資料只在FPGA內部被解密用於明文計算,FPGA硬體的輸出結果也可加密輸出,透過硬體保證期間任何伺服器上的軟體都無法獲取用戶資料,充分保護了用戶隱私。 本說明書中的各個實施例均採用遞進的方式描述,各個實施例之間相同相似的部分互相參見即可,每個實施例重點說明的都是與其他實施例的不同之處。尤其,對於系統實施例而言,由於其基本相似於方法實施例,所以描述的比較簡單,相關之處參見方法實施例的部分說明即可。 上述對本說明書特定實施例進行了描述。其它實施例在所附申請專利範圍的範圍內。在一些情況下,在申請專利範圍中記載的動作或步驟可以按照不同於實施例中的順序來執行並且仍然可以實現期望的結果。另外,在附圖中描繪的過程不一定要求示出的特定順序或者連續順序才能實現期望的結果。在某些實施方式中,多工處理和並行處理也是可以的或者可能是有利的。 本領域普通技術人員應該還可以進一步意識到,結合本文中所公開的實施例描述的各示例的單元及演算法步驟,能夠以電子硬體、電腦軟體或者二者的結合來實現,為了清楚地說明硬體和軟體的可互換性,在上述說明中已經按照功能一般性地描述了各示例的組成及步驟。這些功能究竟以硬體還是軟體方式來執軌道,取決於技術方案的特定應用和設計約束條件。本領域普通技術人員可以對每個特定的應用來使用不同方法來實現所描述的功能,但是這種實現不應認為超出本申請的範圍。 結合本文中所公開的實施例描述的方法或演算法的步驟可以用硬體、處理器執軌道的軟體模組,或者二者的結合來實施。軟體模組可以置於隨機記憶體(RAM)、內部記憶體、唯讀記憶體(ROM)、電可編程ROM、電可擦除可編程ROM、暫存器、硬碟、抽取式磁碟、CD-ROM、或技術領域內所公知的任意其它形式的儲存媒體中。 以上所述的具體實施方式,對本發明的目的、技術方案和有益效果進行了進一步詳細說明,所應理解的是,以上所述僅為本發明的具體實施方式而已,並不用於限定本發明的保護範圍,凡在本發明的精神和原則之內,所做的任何修改、等同替換、改進等,均應包含在本發明的保護範圍之內。
11:FPGA硬體 12:伺服器 13:第一方 14:第二方 1200:裝置 121:獲取單元 122:配置單元 1300:裝置 131:獲取單元 132:配置單元 1400:裝置 141:獲取單元 142:配置單元 1500:裝置 151:獲取單元 152:配置單元 1600:裝置 161:獲取單元 162:解密單元 163:配置單元 164:校驗單元 165:儲存單元 1651:加密子單元 1652:儲存子單元 1700:裝置 171:獲取單元 172:解密單元 1800:裝置 181:獲取單元 182:解密單元 183:配置單元 1900:裝置 191:獲取單元 192:解密單元 193:計算單元 194:輸出單元 1941:加密子單元 1942:輸出子單元 2000:裝置 201:獲取單元 202:解密單元 203:計算單元 204:輸出單元
透過結合附圖描述本說明書實施例,可以使得本說明書實施例更加清楚: 圖1示出了根據本說明書實施例的多方安全計算的場景示意圖; 圖2示出根據本說明書實施例的初始化FPGA硬體以用於安全計算的示意過程; 圖3示出根據本說明書另一實施例的初始化FPGA硬體的示意過程; 圖4示出根據本說明書另一實施例的初始化FPGA硬體以用於安全計算的方法示意圖; 圖5示出根據本說明書實施例的初始化FPGA硬體以用於安全計算的方法示意圖; 圖6示出根據本說明書實施例的更新FPGA硬體的示意過程; 圖7示意示出包括A方、B方和C方的第二密鑰的加密檔案示意圖; 圖8示意示出了使得FPGA硬體獲取工作密鑰的密鑰協商過程; 圖9示出根據本說明書實施例的一種更新用於安全計算的FPGA硬體的方法示意圖; 圖10示出了根據本說明書實施例的基於FPGA硬體的資料處理方法示意圖; 圖11示出一種基於FPGA硬體的資料處理方法示意圖; 圖12示出根據本說明書實施例的一種初始化FPGA硬體以用於安全計算的裝置1200; 圖13示出根據本說明書實施例的一種初始化FPGA硬體以用於安全計算的裝置1300; 圖14示出根據本說明書實施例的一種初始化FPGA硬體以用於安全計算的裝置1400; 圖15示出根據本說明書實施例的一種初始化FPGA硬體以用於安全計算的裝置1500; 圖16示出根據本說明書實施例的一種更新用於安全計算的FPGA硬體的裝置1600; 圖17示出根據本說明書實施例的密鑰協商裝置1700; 圖18示出根據本說明書實施例的一種更新用於安全計算的FPGA硬體的裝置1800; 圖19示出根據本說明書實施例的一種基於FPGA硬體的資料處理裝置1900; 圖20示出根據本說明書實施例的一種基於FPGA硬體的資料處理裝置2000。

Claims (42)

  1. 一種初始化FPGA硬體以用於安全計算的方法,該FPGA硬體包括FPGA晶片、和與該FPGA晶片連接的第一記憶體,該第一記憶體為非易失性記憶體,該FPGA晶片基於該第一記憶體中當前儲存的配置檔案配置,該方法在該FPGA硬體端執行,包括:獲取被存入該第一記憶體中的首版配置檔案,其中,該首版配置檔案中包括複數個初始密鑰,並且該首版配置檔案中包括由該複數個密鑰各自的密鑰所屬方共同確定的預定運行邏輯,其中,該複數個初始密鑰是該安全計算的各個參與方各自的初始密鑰,或者該複數個初始密鑰是該安全計算的預定數目的可信管理方各自的初始密鑰,其中,該首版配置檔案透過由各個該密鑰所屬方同時在該FPGA硬體所在現場共同監督而生成並提供,以使得該首版配置檔案中包括的任一方的初始密鑰只對該方自身可見,並使得該首版配置檔案不可篡改;以及基於該首版配置檔案重新配置該FPGA晶片。
  2. 根據請求項1所述的方法,其中,該FPGA硬體透過PCIE匯流排與伺服器連接,其中,獲取被存入該第一記憶體中的首版配置檔案包括,獲取由該伺服器透過PCIE匯流排寫入該第一記憶體的首版配置檔案。
  3. 一種初始化FPGA硬體以用於安全計算的方法,該FPGA硬體包括FPGA晶片、和與該FPGA晶片連接的第一記憶體,該第一記憶體為非易失性記憶體,該FPGA晶片基於該第一記憶體中當前儲存的配置檔案配置,該FPGA晶片中包括熔絲記憶體,其中,該熔絲記憶體中預先儲存有複數個第一密鑰,其中,該複數個第一密鑰是該安全計算的各個參與方各自的第一密鑰,或者該複數個第一密鑰是該安全計算的預定數目的可信管理方各自的第一密鑰,該方法在該FPGA硬體端執行,包括:獲取被存入該第一記憶體中的首版配置檔案,其中,該首版配置檔案中包括由該複數個第一密鑰各自的密鑰所屬方共同確定的預定運行邏輯,其中,該首版配置檔案透過由各個該密鑰所屬方同時在該FPGA硬體所在現場共同監督而生成並提供,以使得該首版配置檔案不可篡改;以及基於該首版配置檔案重新配置該FPGA晶片。
  4. 根據請求項1或3所述的方法,其中,該可信管理方為該安全計算的一個參與方。
  5. 一種更新用於安全計算的FPGA硬體的方法,該FPGA硬體中儲存有複數個第一密鑰,其中,該複數個第一密鑰是該安全計算的各個參與方各自的第一密鑰,或者該複數個第一密鑰是該安全計算的預定數目的可信管理方各自的 第一密鑰,該FPGA硬體包括FPGA晶片、和與該FPGA晶片連接的第一記憶體,該第一記憶體為非易失性記憶體,該第一記憶體中儲存有第一配置檔案,該第一配置檔案包括由該複數個第一密鑰各自的密鑰所屬方共同確定的第一運行邏輯,該FPGA晶片當前基於該第一配置檔案而配置,該方法在該FPGA硬體端執行,包括:獲取加密檔案,其中,該加密檔案透過各個該密鑰所屬方中的至少一方以第一預定順序依次加密而獲取,其中,第一次加密的加密對象包括第二配置檔案,該第二配置檔案包括由該複數個第一密鑰各自的密鑰所屬方共同確定的第二運行邏輯,其中,該第一次加密透過由該複數個第一密鑰各自的密鑰所屬方共同監督而完成,以保證該第二配置檔案不被篡改;使用該複數方的各自的工作密鑰以第二預定順序對該加密檔案依次解密,以獲取該第二配置檔案,並將其存入該第一記憶體中,其中,該第二預定順序與該第一預定順序相對應,該工作密鑰基於相應一方的第一密鑰獲取;以及基於該第二配置檔案重新配置該FPGA晶片。
  6. 根據請求項5所述的方法,其中,該第一次加密的加密對象還包括該第二配置檔案的代碼雜湊值,其中,使用該至少一方的各自的工作密鑰以第二預定順序對該加密檔案依次解密,以獲取該第二配置檔案包括,使用該至少一 方的各自的工作密鑰以第二預定順序對該加密檔案依次解密,以獲取該第二配置檔案及其代碼雜湊值,該方法還包括,在獲取該第二配置檔案及其代碼雜湊值之後,透過該代碼雜湊值對該第二配置檔案進行校驗。
  7. 根據請求項5所述的方法,其中,該工作密鑰為相應的一方的第一密鑰。
  8. 根請求項5所述的方法,其中,該至少一方中包括第一方,該FPGA硬體基於以下步驟獲取該第一方的工作密鑰:獲取該第一方的加密的工作密鑰;以及使用該第一方的第一密鑰對該加密的工作密鑰解密,以獲取該第一方的工作密鑰。
  9. 根據請求項8所述的方法,其中,該工作密鑰在該FPGA硬體斷電時被消除。
  10. 根據請求項8所述的方法,其中,該工作密鑰定期更新。
  11. 根據請求項5所述的方法,其中,該FPGA晶片中還包括熔絲記憶體,其中,各個該第一密鑰被儲存在該熔絲記憶體中。
  12. 根據請求項5所述的方法,其中,各個該第一密鑰被儲存在該第一記憶體中。
  13. 根據請求項12所述的方法,其中,該加密檔案的加密對象還包括該複數個第一密鑰各自的密鑰所屬方各自的第二密鑰,其中,使用該至少一方的各自的工作密鑰以第二預定順序對該加密檔案依次解密包括,使用該複數個第一密鑰各自的密鑰所屬方各自的工作密鑰以第二預定順序對該加密檔案依次解密,以獲取第二配置檔案,並在每次解密時獲取相應的密鑰所屬方的第二密鑰,該方法還包括,在每次解密時獲取相應的密鑰所屬方的第二密鑰之後,將該第二密鑰儲存在該第一記憶體中,以作為相應的密鑰所屬方的更新的第一密鑰。
  14. 根據請求項13所述的方法,其中,該FPGA晶片具有其自身的硬體密鑰,其中,將該第二密鑰儲存在該第一記憶體中包括,透過該FPGA晶片使用其自身的硬體密鑰對該第二密鑰加密,以及,將該加密的第二密鑰存入該第一記憶體。
  15. 根據請求項5所述的方法,其中,該第一密鑰為儲存在該第一記憶體中的第一配置檔案中包括的初始密鑰,其中,該第一配置檔案為用於初始化該FPGA硬體以用於安 全計算的配置檔案,其中,該第一密鑰透過該第一配置檔案被存入該FPGA晶片的邏輯電路內。
  16. 一種基於FPGA硬體的資料處理方法,該FPGA硬體用於安全計算,其中,該FPGA硬體中儲存有複數個第一密鑰,該複數個第一密鑰是該安全計算的各個參與方各自的第一密鑰,其中,該FPGA硬體中包括FPGA晶片,該FPGA晶片基於由該複數個第一密鑰各自的密鑰所屬方共同確定的運行邏輯而配置以防止該FPGA晶片的配置被竄改,其中,該複數個第一密鑰只對其提供方可見,而不會洩露給除其提供方以外的任何一方,該方法在該FPGA硬體端執行,包括:獲取該各個參與方各自的加密資料;使用該各個參與方各自的工作密鑰對相應的該加密資料解密,以獲取各方的明文資料,該各個參與方各自的工作密鑰分別基於該複數個第一密鑰中相應的第一密鑰獲取;基於該各方的明文資料進行計算,以獲取計算結果;以及輸出該計算結果。
  17. 根據請求項16所述的方法,其中,該加密資料透過對稱加密獲取,該各個參與方包括第一方,其中,輸出該計算結果包括,使用該第一方的工作密鑰對該計算結果加 密,以獲取第一加密結果;以及輸出用於發送給該第一方的第一加密結果。
  18. 根據請求項16所述的方法,其中,該加密資料透過非對稱加密獲取,該工作密鑰是該非對稱加密的解密密鑰,該非對稱加密還包括與該工作密鑰對應的加密密鑰,該各個參與方包括第一方,其中,該第一方的加密密鑰基於與該第一方相應的第一密鑰獲取,其中,輸出該計算結果包括,使用該第一方的加密密鑰對該計算結果加密,以獲取第一加密結果;以及輸出用於發送給該第一方的第一加密結果。
  19. 根據請求項16所述的方法,其中,該複數個第一密鑰是該安全計算的各個參與方各自的第一密鑰,該FPGA硬體中還儲存有該各個參與方各自的第二密鑰,該加密資料透過非對稱加密獲取,該各個參與方包括第一方,其中,該第一方的工作密鑰為該第一密鑰,該第一方的第二密鑰為與該第一方的第一密鑰對應的用於加密的密鑰,其中,輸出該計算結果包括,使用該第一方的第二密鑰對該計算結果加密,以獲取第一加密結果;以及輸出用於發送給該第一方的第一加密結果。
  20. 根據請求項16所述的方法,其中,該各個參與方中包括第一方,及其中,該FPGA硬體基於如下步驟獲取該第 一方的工作密鑰:獲取該第一方的加密的工作密鑰,該加密的工作密鑰透過使用該第一方的第一密鑰對該第一方的工作密鑰加密而生成;以及使用該第一方的第一密鑰對該加密的工作密鑰解密,以獲取該第一方的工作密鑰。
  21. 一種初始化FPGA硬體以用於安全計算的裝置,該FPGA硬體包括FPGA晶片、和與該FPGA晶片連接的第一記憶體,該第一記憶體為非易失性記憶體,該FPGA晶片基於該第一記憶體中當前儲存的配置檔案配置,該裝置部署在該FPGA硬體端,包括:獲取單元,配置為,獲取被存入該第一記憶體中的首版配置檔案,其中,該首版配置檔案中包括複數個初始密鑰,並且該首版配置檔案中包括由該複數個密鑰各自的密鑰所屬方共同確定的預定運行邏輯,其中,該複數個初始密鑰是該安全計算的各個參與方各自的初始密鑰,或者該複數個初始密鑰是該安全計算的預定數目的可信管理方各自的初始密鑰,其中,該首版配置檔案透過由各個該密鑰所屬方同時在該FPGA硬體所在現場共同監督而生成並提供,以使得該首版配置檔案中包括的任一方的初始密鑰只對該方自身可見,並使得該首版配置檔案不可篡改;以及配置單元,配置為,基於該首版配置檔案重新配置該FPGA晶片。
  22. 根據請求項23所述的裝置,其中,該FPGA硬體透過PCIE匯流排與伺服器連接,其中,該獲取單元還配置為,獲取由該伺服器透過PCIE匯流排寫入該第一記憶體的首版配置檔案。
  23. 一種初始化FPGA硬體以用於安全計算的裝置,該FPGA硬體包括FPGA晶片、和與該FPGA晶片連接的第一記憶體,該第一記憶體為非易失性記憶體,該FPGA晶片基於該第一記憶體中當前儲存的配置檔案配置,該FPGA晶片中包括熔絲記憶體,其中,該熔絲記憶體中預先儲存有複數個第一密鑰,其中,該複數個第一密鑰是該安全計算的各個參與方各自的第一密鑰,或者該複數個第一密鑰是該安全計算的預定數目的可信管理方各自的第一密鑰,該裝置部署在該FPGA硬體端,包括:獲取單元,配置為,獲取被存入該第一記憶體中的首版配置檔案,其中,該首版配置檔案中包括由該複數個第一密鑰各自的密鑰所屬方共同確定的預定運行邏輯,其中,該首版配置檔案透過由各個該密鑰所屬方同時在該FPGA硬體所在現場共同監督而生成並提供,以使得該首版配置檔案不可篡改;以及配置單元,配置為,基於該首版配置檔案重新配置該FPGA晶片。
  24. 根據請求項21或23所述的裝置,其中,該可信管理方為該安全計算的一個參與方。
  25. 一種更新用於安全計算的FPGA硬體的裝置,該FPGA硬體中儲存有複數個第一密鑰,其中,該複數個第一密鑰是該安全計算的各個參與方各自的第一密鑰,或者該複數個第一密鑰是該安全計算的預定數目的可信管理方各自的第一密鑰,該FPGA硬體包括FPGA晶片、和與該FPGA晶片連接的第一記憶體,該第一記憶體為非易失性記憶體,該第一記憶體中儲存有第一配置檔案,該第一配置檔案包括由該複數個第一密鑰各自的密鑰所屬方共同確定的第一運行邏輯,該FPGA晶片當前基於該第一配置檔案而配置,該FPGA硬體中儲存有該各個參與方各自的第一密鑰,該裝置部署在該FPGA硬體端,包括:獲取單元,配置為,獲取加密檔案,其中,該加密檔案透過各個該密鑰所屬方中的複數方以第一預定順序依次加密而獲取,其中,第一次加密的加密對象包括第二配置檔案,該第二配置檔案包括由該複數個第一密鑰各自的密鑰所屬方共同確定的第二運行邏輯,其中,該第一次加密透過由該複數個第一密鑰各自的密鑰所屬方共同監督而完成,以保證該第二配置檔案不被篡改;解密單元,配置為,使用該複數方的各自的工作密鑰以第二預定順序對該加密檔案依次解密,以獲取該第二配置檔案,並將其存入該第一記憶體中,其中,該第二預定 順序與該第一預定順序相對應,該工作密鑰基於相應一方的第一密鑰獲取;以及配置單元,配置為,基於該第二配置檔案重新配置該FPGA晶片。
  26. 根據請求項25所述的裝置,其中,該第一次加密的加密對象還包括該第二配置檔案的代碼雜湊值,其中,該解密單元還配置為,使用該複數方的各自的工作密鑰以第二預定順序對該加密檔案依次解密,以獲取該第二配置檔案及其代碼雜湊值,該裝置還包括,校驗單元,配置為,在獲取該第二配置檔案及其代碼雜湊值之後,透過該代碼雜湊值對該第二配置檔案進行校驗。
  27. 根據請求項25所述的裝置,其中,該工作密鑰為相應的一方的第一密鑰。
  28. 根請求項25所述的裝置,其中,該複數方中包括第一方,該FPGA硬體基於密鑰協商裝置獲取該第一方的工作密鑰,該密鑰協商裝置包括:獲取單元,配置為,獲取該第一方的加密的工作密鑰;以及解密單元,配置為,使用該第一方的第一密鑰對該加密的工作密鑰解密,以獲取該第一方的工作密鑰。
  29. 根據請求項28所述的裝置,其中,該工作密鑰在該FPGA硬體斷電時被消除。
  30. 根據請求項28所述的裝置,其中,該工作密鑰定期更新。
  31. 根據請求項25所述的裝置,其中,該FPGA晶片中還包括熔絲記憶體,其中,各個該第一密鑰被儲存在該熔絲記憶體中。
  32. 根據請求項25所述的裝置,其中,各個該第一密鑰被儲存在該第一記憶體中。
  33. 根據請求項32所述的裝置,其中,該加密檔案的加密對象還包括該複數個第一密鑰各自的密鑰所屬方各自的第二密鑰,其中,該解密單元還配置為,使用該複數個第一密鑰各自的密鑰所屬方各自的工作密鑰以第二預定順序對該加密檔案依次解密,以獲取第二配置檔案,並在每次解密時獲取相應的密鑰所屬方的第二密鑰,該裝置還包括,儲存單元,配置為,在每次解密時獲取相應的密鑰所屬方的第二密鑰之後,將該第二密鑰儲存在該第一記憶體中,以作為相應的密鑰所屬方的更新的第一密鑰。
  34. 根據請求項33所述的裝置,其中,該FPGA晶片具有 其自身的硬體密鑰,其中,該儲存單元包括,加密子單元,配置為,透過該FPGA晶片使用其自身的硬體密鑰對該第二密鑰加密,以及,儲存子單元,配置為,將該加密的第二密鑰存入該第一記憶體。
  35. 根據請求項25所述的裝置,其中,該第一密鑰為儲存在該第一記憶體中的第一配置檔案中包括的初始密鑰,其中,該第一配置檔案為用於初始化該FPGA硬體以用於安全計算的配置檔案,其中,該第一密鑰透過該第一配置檔案被存入該FPGA晶片的邏輯電路內。
  36. 一種基於FPGA硬體的資料處理裝置,該FPGA硬體用於安全計算,其中,該FPGA硬體中儲存有複數個第一密鑰,該複數個第一密鑰是該安全計算的各個參與方各自的第一密鑰,其中,該FPGA硬體中包括FPGA晶片,該FPGA晶片基於由該複數個第一密鑰各自的密鑰所屬方共同確定的運行邏輯而配置以防止該FPGA晶片的配置被竄改,其中,該複數個第一密鑰只對其提供方可見,而不會洩露給除其提供方以外的任何一方,該裝置部署在該FPGA硬體端,包括:獲取單元,配置為,獲取該各個參與方各自的加密資料;解密單元,配置為,使用該各個參與方各自的工作密鑰對相應的該加密資料解密,以獲取各方的明文資料,該 各個參與方各自的工作密鑰分別基於該複數個第一密鑰中相應的第一密鑰獲取;計算單元,配置為,基於該各方的明文資料進行計算,以獲取計算結果;以及輸出單元,配置為,輸出該計算結果。
  37. 根據請求項36所述的裝置,其中,該加密資料透過對稱加密獲取,該各個參與方包括第一方,其中,該輸出單元包括,加密子單元,配置為,使用該第一方的工作密鑰對該計算結果加密,以獲取第一加密結果;以及輸出子單元,配置為,輸出用於發送給該第一方的第一加密結果。
  38. 根據請求項36所述的裝置,其中,該加密資料透過非對稱加密獲取,該工作密鑰是該非對稱加密的解密密鑰,該非對稱加密還包括與該工作密鑰對應的加密密鑰,該各個參與方包括第一方,其中,該第一方的加密密鑰基於與該第一方相應的第一密鑰獲取,其中,該輸出單元包括,加密子單元,配置為,使用該第一方的加密密鑰對該計算結果加密,以獲取第一加密結果;以及輸出子單元,配置為,輸出用於發送給該第一方的第一加密結果。
  39. 根據請求項36所述的裝置,其中,該複數個第一密鑰是該安全計算的各個參與方各自的第一密鑰,該FPGA硬體中還儲存有該各個參與方各自的第二密鑰,該加密資料 透過非對稱加密獲取,該各個參與方包括第一方,其中,該第一方的工作密鑰為該第一密鑰,該第一方的第二密鑰為與該第一方的第一密鑰對應的用於加密的密鑰,其中,該輸出單元包括,加密子單元,配置為,使用該第一方的第二密鑰對該計算結果加密,以獲取第一加密結果;以及輸出子單元,配置為輸出用於發送給該第一方的第一加密結果。
  40. 根據請求項36所述的裝置,其中,該各個參與方中包括第一方,該FPGA硬體透過密鑰協商裝置獲取該第一方的工作密鑰,該密鑰協商裝置包括:獲取單元,配置為,獲取該第一方的加密的工作密鑰,該加密的工作密鑰透過使用該第一方的第一密鑰對該第一方的工作密鑰加密而生成;以及解密單元,配置為,使用該第一方的第一密鑰對該加密的工作密鑰解密,以獲取該第一方的工作密鑰。
  41. 一種電腦可讀儲存媒體,其上儲存有電腦程式,當該電腦程式在電腦中執行時,令電腦執行請求項1-20中任一項所述的方法。
  42. 一種計算設備,包括記憶體和處理器,其特徵在於,該記憶體中儲存有可執行代碼,該處理器執行該可執行代碼時,實現請求項1-20中任一項所述的方法。
TW108129452A 2019-01-15 2019-08-19 基於fpga硬體的安全計算方法和裝置 TWI729462B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201910037318.XA CN111435394B (zh) 2019-01-15 2019-01-15 基于fpga硬件的安全计算方法和装置
CN201910037318.X 2019-01-15

Publications (2)

Publication Number Publication Date
TW202029046A TW202029046A (zh) 2020-08-01
TWI729462B true TWI729462B (zh) 2021-06-01

Family

ID=69500877

Family Applications (1)

Application Number Title Priority Date Filing Date
TW108129452A TWI729462B (zh) 2019-01-15 2019-08-19 基於fpga硬體的安全計算方法和裝置

Country Status (5)

Country Link
US (2) US10929571B2 (zh)
EP (1) EP3857426B1 (zh)
CN (1) CN111435394B (zh)
TW (1) TWI729462B (zh)
WO (1) WO2020150162A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022140594A1 (en) * 2020-12-23 2022-06-30 Ava Labs, Inc. Secure and trustworthy computing environments for exchanges
CN113726741B (zh) * 2021-07-28 2024-01-19 浪潮电子信息产业股份有限公司 一种加速卡数据下载方法及相关装置
CN115086023B (zh) * 2022-06-14 2024-04-26 杭州安恒信息技术股份有限公司 一种物联网固件保护方法、装置、设备及介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060059574A1 (en) * 2004-09-10 2006-03-16 International Business Machines Corporation System for securely configuring a field programmable gate array or other programmable hardware
CN101106449A (zh) * 2006-07-13 2008-01-16 华为技术有限公司 实现多方通信安全的系统和方法
CN102063593A (zh) * 2011-01-07 2011-05-18 北京工业大学 主动控制功能的可信设备及其认证方法
CN102567671A (zh) * 2011-12-30 2012-07-11 大连捷成实业发展有限公司 一种fpga配置数据的加密系统及其加密方法
US20130145431A1 (en) * 2011-12-02 2013-06-06 Empire Technology Development Llc Integrated circuits as a service
TW201419031A (zh) * 2012-06-20 2014-05-16 Microsoft Corp 用可重新程式設計的密碼操作來管理對現場可程式設計閘陣列的使用

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8516268B2 (en) * 2010-08-23 2013-08-20 Raytheon Company Secure field-programmable gate array (FPGA) architecture
CN103023647B (zh) * 2012-11-28 2015-09-09 四川九洲空管科技有限责任公司 一种增强二次雷达fpga安全性的方法
CN105141593A (zh) * 2015-08-10 2015-12-09 刘澄宇 一种私有云平台安全计算方法
CN105208017B (zh) * 2015-09-07 2019-01-04 四川神琥科技有限公司 一种存储器信息获取方法
US10972277B2 (en) * 2017-03-15 2021-04-06 Intel Corporation Confidential verification of FPGA code
CN108418680B (zh) * 2017-09-05 2021-12-07 矩阵元技术(深圳)有限公司 一种基于安全多方计算技术的区块链密钥恢复方法、介质
CN108768636B (zh) * 2018-05-31 2021-02-19 上海万向区块链股份公司 一种利用多方协同恢复私钥的方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060059574A1 (en) * 2004-09-10 2006-03-16 International Business Machines Corporation System for securely configuring a field programmable gate array or other programmable hardware
CN101106449A (zh) * 2006-07-13 2008-01-16 华为技术有限公司 实现多方通信安全的系统和方法
CN102063593A (zh) * 2011-01-07 2011-05-18 北京工业大学 主动控制功能的可信设备及其认证方法
US20130145431A1 (en) * 2011-12-02 2013-06-06 Empire Technology Development Llc Integrated circuits as a service
CN102567671A (zh) * 2011-12-30 2012-07-11 大连捷成实业发展有限公司 一种fpga配置数据的加密系统及其加密方法
TW201419031A (zh) * 2012-06-20 2014-05-16 Microsoft Corp 用可重新程式設計的密碼操作來管理對現場可程式設計閘陣列的使用

Also Published As

Publication number Publication date
CN111435394A (zh) 2020-07-21
US20210141941A1 (en) 2021-05-13
TW202029046A (zh) 2020-08-01
WO2020150162A1 (en) 2020-07-23
US11113423B2 (en) 2021-09-07
US20200226296A1 (en) 2020-07-16
CN111435394B (zh) 2021-05-14
US10929571B2 (en) 2021-02-23
EP3857426B1 (en) 2022-08-10
EP3857426A1 (en) 2021-08-04

Similar Documents

Publication Publication Date Title
TWI716078B (zh) 可信應用程式的遠端證明方法及裝置、電子設備
CN110603783B (zh) 采用可信硬件的安全动态阈值签名方案
JP6547079B1 (ja) 登録・認可方法、装置及びシステム
US20200153808A1 (en) Method and System for an Efficient Shared-Derived Secret Provisioning Mechanism
JP3999655B2 (ja) レベル化された機密保護があるアクセス制御のための方法及び装置
JP4668619B2 (ja) 装置鍵
TWI299622B (en) Stateless hardware security module
US20140270179A1 (en) Method and system for key generation, backup, and migration based on trusted computing
CN110401615B (zh) 一种身份认证方法、装置、设备、系统及可读存储介质
TWI724683B (zh) 電腦實施的用於管理用戶金鑰對的方法、用於管理用戶金鑰對的系統以及用於管理用戶金鑰對的裝置
TWI729462B (zh) 基於fpga硬體的安全計算方法和裝置
US11831753B2 (en) Secure distributed key management system
US11853438B2 (en) Providing cryptographically secure post-secrets-provisioning services
GB2513265A (en) Provisioning of security certificates
CN106027503A (zh) 一种基于tpm的云存储数据加密方法
JP2007511810A (ja) 乱数関数を利用した実行証明
JP2022501971A (ja) 鍵管理のための方法、ユーザ・デバイス、管理デバイス、記憶媒体及びコンピュータ・プログラム製品
US20180375667A1 (en) Apparatus and method for certificate enrollment
JP7087172B2 (ja) Pqaロック解除
ES2665887T3 (es) Sistema de datos seguro
KR20210015264A (ko) 화이트박스 암호화를 이용한 puf 기반 사물인터넷 디바이스 인증 장치 및 방법
JP2022540653A (ja) データ保護及び回復システム及び方法
KR102364649B1 (ko) Puf 기반 사물인터넷 디바이스 인증 장치 및 방법
TWI644554B (zh) Probabilistic multiple software encryption communication system and method
CN117375910A (zh) 一种基于不可信云fpga的可信通信方法及系统