CN110716724B - 基于fpga实现隐私区块链的方法及装置 - Google Patents
基于fpga实现隐私区块链的方法及装置 Download PDFInfo
- Publication number
- CN110716724B CN110716724B CN201910913460.6A CN201910913460A CN110716724B CN 110716724 B CN110716724 B CN 110716724B CN 201910913460 A CN201910913460 A CN 201910913460A CN 110716724 B CN110716724 B CN 110716724B
- Authority
- CN
- China
- Prior art keywords
- key
- configuration file
- client
- fpga structure
- fpga
- Prior art date
- Legal status (The legal status 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 status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
- G06F8/63—Image based installation; Cloning; Build to order
-
- 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
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Storage Device Security (AREA)
Abstract
本说明书一个或多个实施例提供一种基于FPGA实现隐私区块链的方法及装置,该方法可以包括:客户端向区块链节点处的FPGA结构部署电路逻辑配置文件,所述电路逻辑配置文件用于使所述FPGA结构实现为所述区块链节点的可信执行环境;所述客户端接收所述FPGA结构返回的认证结果,所述认证结果由所述FPGA结构内部署的认证根密钥进行签名,且所述认证根密钥对应的公钥被公开;所述客户端在所述认证结果通过签名验证且所述认证结果包含与所述电路逻辑配置文件相关的内容的情况下,确认所述电路逻辑配置文件在所述FPGA结构上部署成功。
Description
技术领域
本说明书一个或多个实施例涉及区块链技术领域,尤其涉及一种基于FPGA实现隐私区块链的方法及装置。
背景技术
区块链技术构建在传输网络(例如点对点网络)之上。传输网络中的网络节点利用链式数据结构来验证与存储数据,并采用分布式节点共识算法来生成和更新数据。
目前企业级的区块链平台技术上最大的两个挑战就是隐私和性能,往往这两个挑战很难同时解决。大多解决方案都是通过损失性能换取隐私,或者不大考虑隐私去追求性能。常见的解决隐私问题的加密技术,如同态加密(Homomorphic encryption)和零知识证明(Zero-knowledge proof)等复杂度高,通用性差,而且还可能带来严重的性能损失。
可信执行环境(Trusted Execution Environment,TEE)是另一种解决隐私问题的方式。TEE可以起到硬件中的黑箱作用,在TEE中执行的代码和数据操作***层都无法偷窥,只有代码中预先定义的接口才能对其进行操作。在效率方面,由于TEE的黑箱性质,在TEE中进行运算的是明文数据,而不是同态加密中的复杂密码学运算,计算过程效率没有损失,因此与TEE相结合可以在性能损失较小的前提下很大程度上提升区块链的安全性和隐私性。目前工业界十分关注TEE的方案,几乎所有主流的芯片和软件联盟都有自己的TEE解决方案,包括软件方面的TPM(Trusted Platform Module,可信赖平台模块)以及硬件方面的Intel SGX(Software Guard Extensions,软件保护扩展)、ARM Trustzone(信任区)和AMDPSP(Platform Security Processor,平台安全处理器)。
发明内容
有鉴于此,本说明书一个或多个实施例提供一种基于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实现隐私区块链的方法的流程图。
图2是一示例性实施例提供的另一种基于FPGA实现隐私区块链的方法的流程图。
图3是一示例性实施例提供的一种客户端与FPGA结构之间的交互过程的示意流程图。
图4是一示例性实施例提供的一种区块链节点对交易进行处理的示意图。
图5是一示例性实施例提供的一种设备的结构示意图。
图6是一示例性实施例提供的一种基于FPGA实现隐私区块链的装置的框图。
图7是一示例性实施例提供的另一种设备的结构示意图。
图8是一示例性实施例提供的另一种基于FPGA实现隐私区块链的装置的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书一个或多个实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书一个或多个实施例的一些方面相一致的装置和方法的例子。
需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。
区块链一般被划分为三种类型:公有链(Public Blockchain),私有链(PrivateBlockchain)和联盟链(Consortium Blockchain)。此外,还有多种类型的结合,比如私有链+联盟链、联盟链+公有链等不同组合形式。其中去中心化程度最高的是公有链。公有链以比特币、以太坊为代表,加入公有链的参与者可以读取链上的数据记录、参与交易以及竞争新区块的记账权等。而且,各参与者(即节点)可自由加入以及退出网络,并进行相关操作。私有链则相反,该网络的写入权限由某个组织或者机构控制,数据读取权限受组织规定。简单来说,私有链可以为一个弱中心化***,参与节点具有严格限制且少。这种类型的区块链更适合于特定机构内部使用。联盟链则是介于公有链以及私有链之间的区块链,可实现“部分去中心化”。联盟链中各个节点通常有与之相对应的实体机构或者组织;参与者通过授权加入网络并组成利益相关联盟,共同维护区块链运行。
不论是公有链、私有链还是联盟链,区块链网络中的节点出于隐私保护的目的,均可能通过区块链与TEE(Trusted Execution Environment,可信执行环境)相结合的解决方案,在TEE内执行收到的交易。TEE是基于CPU硬件的安全扩展,且与外部完全隔离的可信执行环境。TEE最早是由Global Platform提出的概念,用于解决移动设备上资源的安全隔离,平行于操作***为应用程序提供可信安全的执行环境。ARM的Trust Zone技术最早实现了真正商用的TEE技术。伴随着互联网的高速发展,安全的需求越来越高,不仅限于移动设备,云端设备,数据中心都对TEE提出了更多的需求。TEE的概念也得到了高速的发展和扩充。现在所说的TEE相比与最初提出的概念已经是更加广义的TEE。例如,服务器芯片厂商Intel,AMD等都先后推出了硬件辅助的TEE并丰富了TEE的概念和特性,在工业界得到了广泛的认可。现在提起的TEE通常更多指这类硬件辅助的TEE技术。
以Intel SGX技术为例,SGX提供了围圈(enclave,也称为飞地),即内存中一个加密的可信执行区域,由CPU保护数据不被窃取。以第一区块链节点采用支持SGX的CPU为例,利用新增的处理器指令,在内存中可以分配一部分区域EPC(Enclave Page Cache,围圈页面缓存或飞地页面缓存),通过CPU内的加密引擎MEE(Memory Encryption Engine)对其中的数据进行加密。EPC中加密的内容只有进入CPU后才会被解密成明文。因此,在SGX中,用户可以不信任操作***、VMM(Virtual Machine Monitor,虚拟机监控器)、甚至BIOS(BasicInput Output System,基本输入输出***),只需要信任CPU便能确保隐私数据不会泄漏。因此,围圈就相当于SGX技术下产生的TEE。
不同于移动端,云端访问需要远程访问,终端用户对硬件平台不可见,因此使用TEE的第一步就是要确认TEE的真实可信。在相关技术中,采用远程证明机制对TEE是否真实可信进行确认。以Intel SGX技术为例,当某一挑战方希望验证目标设备中的某一围圈时,该待验证围圈首先将自身部署的配置文件生成为Report,比如该Report可以包含该待验证围圈所部署的配置文件的哈希值等;然后,待验证围圈利用本地认证机制获取远程可验证的Quote,具体可以由目标设备上称作Quoting Enclave(QE)的特殊围圈利用目标设备CPU内部署的非对称密钥对上述的Report进行签名,从而生成上述可远程验证的Quote,并由目标设备将该Quote发送至挑战方。上述的非对称密钥是在生产过程中被烧入CPU内,不同CPU内烧入的非对称密钥完全不同,且各个非对称密钥对应的公钥被统一维护于IAS(IntelAttestation Server)处。因此,挑战方需要将目标设备提供的Quote进一步发送至IAS,由IAS对Quote所含的签名进行验证,从而判断目标设备上SGX平台的有效性,并将判断结果反馈至挑战方。如果判断结果表明目标设备上的SGX平台有效,那么挑战方可以进一步验证Quote所含的Report,比如将Report所含的哈希值与挑战方所持有的标准配置文件对应的哈希值进行比较:如果哈希值一致,挑战方可以确定该标准配置文件被正确地配置于目标设备的待验证围圈内,即上述的待验证围圈通过了远程证明。
然而,相关技术中的远程证明机制虽然可以证明在TEE内部署了正确的配置文件,但TEE本身所依托的运行环境并不能够被验证;比如,在需要实现隐私功能的区块链节点上,TEE内需要配置用于执行智能合约的虚拟机,该虚拟机所执行的指令并非直接执行,而是实际上执行了对应的若干条X86指令(假定目标设备采用X86架构),从而造成了一定程度上的安全性风险。
以下结合实施例说明本说明书提供的一种基于FPGA实现隐私区块链的方法,以提升安全性。
图1是一示例性实施例提供的一种基于FPGA实现隐私区块链的方法的流程图。如图1所示,该方法应用于客户端,可以包括以下步骤:
步骤102,客户端向区块链节点处的FPGA结构部署电路逻辑配置文件,所述电路逻辑配置文件用于使所述FPGA结构实现为所述区块链节点的可信执行环境。
客户端可以包括需要向FPGA结构实施部署操作的任意对象,使得FPGA结构可以基于所部属的电路逻辑配置文件而实现相应的服务或功能。例如,客户端可以包括密钥管理服务器,即KMS(Key Management Service)服务器,该KMS服务器在确定FPGA结构上部署了正确的电路逻辑配置文件后,可以将FPGA结构分配相应的业务密钥,使得FPGA结构可以实现为区块链节点上的TEE,从而实现具有隐私功能的区块链节点。
因此,客户端通过向FPGA结构部署恰当的电路逻辑配置文件,使得FPGA结构在正确地配置了该电路逻辑配置文件后,即可实现为区块链节点上的TEE。例如,该电路逻辑配置文件可以包括用于实现虚拟机(以前述的以太坊区块链为例,该虚拟机可以为以太坊虚拟机(Ethereum Virtual Machine,简称EVM);在其他区块链中也可以为其他类型的虚拟机)、加解密等功能的配置信息,这些配置信息具体可以表征为比特流的形式以便于烧录至FPGA结构,当然本说明书并不限制电路逻辑配置文件所采用的形式。
FPGA结构上可以预先部署有认证根密钥(Attestation Key),该认证根密钥可以被预置于FPGA结构中,或者该认证根密钥可由客户端或其他对象在离线安全环境下部署至FPGA结构中。其中,该认证根密钥属于非对称密钥,且该认证根密钥对应的公钥被公开,使得即便该认证根密钥并非由客户端所部署(预置或其他对象所部署),客户端也可以基于被公开的公钥对该认证根密钥生成的签名进行验证。
客户端可以与FPGA结构之间实现密钥协商。假定采用SM2(或其他算法)算法实现协商,客户端与FPGA结构需要在协商过程中实施至少一次信息交互:当FPGA结构向客户端发送协商信息时,可以采用上述的认证根密钥对该协商信息进行签名,使得客户端在收到签名后的协商信息后,可以利用被公开的公钥进行签名验证,从而确定该协商信息确实由FPGA结构发出,并信任该协商信息;而当签名未通过验证时,客户端可以选择不信任收到的协商信息。基于上述过程,客户端与FPGA结构可以完成密钥协商,使得客户端与FPGA结构可以分别获得相同的配置文件部署密钥。其中,该配置文件部署密钥可以由客户端与FPGA结构通过密钥协商过程直接得到,即该配置文件部署密钥可以为秘密值(或称,主密钥);或者,该配置文件部署密钥可由客户端与FPGA结构分别通过密钥导出函数(Key DerivationFunction,简称KDF)从上述的秘密值导出得到。基于协商得到的配置文件部署密钥,客户端可以对上述的电路逻辑配置文件进行加密,并将加密后电路逻辑配置文件发送至FPGA结构;相应地,FPGA结构在收到加密后电路逻辑配置文件后,可以根据配置文件部署密钥进行解密得到相应的电路逻辑配置文件,并部署该电路逻辑配置文件。
FPGA结构可以包括FPGA芯片,而FPGA结构在部署电路逻辑配置文件时,可以将电路逻辑配置文件直接读入FPGA芯片内。但是,FPGA芯片具有易失性,断电后部署的电路逻辑配置文件就会丢失,使得重新上电后需要客户端重新部署电路逻辑配置文件。因此,为了减少客户端的部署次数,FPGA结构可以进一步包含存储器,该存储器与FPGA芯片相连,使得电路逻辑配置文件被部署于存储器中,且FPGA芯片从存储器中读取电路逻辑配置文件以实现相关功能;其中,存储器具有非易失性,即便断电仍然可以保存电路逻辑配置文件,而重新上电后只需重新从存储器读入FPGA芯片即可,无需客户端重新部署。存储器可以具有多种形式,比如闪存(flash)等可重复擦写的非易失性存储器,再比如熔丝存储器等不可重复擦写的存储器等,本说明书并不对此进行限制。
FPGA结构可以包括密钥管理芯片,前述的认证根密钥可以被存储于该密钥管理芯片中,以具备高安全性和高可靠度。当然,认证根密钥也可以存储于诸如前述的FPGA芯片或存储器中,本说明书并不对此进行限制。
步骤104,所述客户端接收所述FPGA结构返回的认证结果,所述认证结果由所述FPGA结构内部署的认证根密钥进行签名,且所述认证根密钥对应的公钥被公开。
步骤106,所述客户端在所述认证结果通过签名验证且所述认证结果包含与所述电路逻辑配置文件相关的内容的情况下,确认所述电路逻辑配置文件在所述FPGA结构上部署成功。
如前所述,由于FPGA结构内部署的认证根密钥为非对称密钥,且该认证根密钥对应的公钥被公开,因而客户端可以提前获得该公钥,并据此针对FPGA结构返回的认证结果进行签名验证,并在签名验证通过的情况下确定该认证结果由FPGA结构提供且认证结果未被篡改。上述验证过程可由客户端在本地完成,而无需借助于第三方实现,一方面可以减少交互次数、提升验证效率,另一方面可以避免第三方的介入及交互次数的增加而造成额外的安全风险,确保验证结果的可靠性不依赖于第三方的自制力与可信度。
客户端可以对认证结果所含的与电路逻辑配置文件相关的内容进行验证,从而确定该内容与客户端向FPGA结构部署的电路逻辑配置文件是否一致。譬如上述与电路逻辑配置文件相关的内容可以为该电路逻辑配置文件的哈希值,或者采用预设算法(例如sm3算法等)对该电路逻辑配置文件的哈希值进行计算后的数值,使得客户端在已有上述电路逻辑配置文件、已知上述预设算法的情况下,可以在本地计算电路逻辑配置文件的哈希值或者采用上述预设算法对该哈希值进一步计算,并与认证结果包含的上述哈希值或数值进行比较:若一致,则表明FPGA结构正确地部署了客户端提供的电路逻辑配置文件,否则表明电路逻辑配置文件未配置成功。
进一步地,上述的认证结果中还可以包含与配置文件部署密钥相关的内容。相应地,客户端可以根据自身导出的配置文件部署密钥对上述的认证结果进行验证。例如,认证结果中可以包含配置文件部署密钥的哈希值,或者采用预设算法对配置文件部署密钥或其哈希值进行计算得到的数值,那么与上述电路逻辑配置文件相类似的,客户端可以根据自身导出的配置文件部署密钥计算哈希值或与上述预设算法相关的数值:如果认证结果包含的与电路逻辑配置文件相关的内容、与配置文件部署密钥相关的内容均通过验证,则表明FPGA结构与客户端之间成功协商了配置文件部署密钥,并且FPGA结构正确地部署了客户端提供的电路逻辑配置文件,否则表明密钥协商失败或电路逻辑配置文件部署失败。再例如,认证结果中与电路逻辑配置文件相关的内容、与配置文件部署密钥相关的内容可以被生成为同一内容,即认证结果中可以包含一同时与电路逻辑配置文件、配置文件部署密钥相关的内容;比如,FPGA结构可以采用预设算法对所部署的电路逻辑配置文件(或其哈希值)、协商得到的配置文件部署密钥(或其哈希值)进行计算并得到一数值,以作为上述认证结果中同时与电路逻辑配置文件、配置文件部署密钥相关的内容,而客户端根据自身维护的电路逻辑配置文件、配置文件部署密钥和已知的上述预设算法,即可对认证结果所含的数值进行验证。
与上述配置文件部署密钥相类似的,客户端可与FPGA结构之间进行密钥协商,使得客户端与FPGA结构可以分别导出相同的业务秘密部署密钥,以用于将客户端提供的业务密钥或其他业务秘密部署至FPGA结构。其中,在密钥协商过程中,客户端与FPGA结构需要相互发送协商信息,而FPGA结构在生成协商信息后,可以通过前述的认证根密钥进行签名,并将签名后的协商信息发送至客户端,而客户端可以根据已公开的公钥进行签名验证:在签名通过验证后,客户端确定协商信息来自FPGA结构,并进一步基于该协商信息完成协商过程,否则客户端可以终止密钥协商。最终,客户端与FPGA结构经过协商后,可以分别获得相同的业务秘密部署密钥。其中,该业务秘密部署密钥可以由客户端与FPGA结构通过密钥协商过程直接得到,即该业务秘密部署密钥可以为秘密值(或称,主密钥);或者,该业务秘密部署密钥可由客户端与FPGA结构分别通过密钥导出函数从上述的秘密值导出得到。
基于协商得到的业务秘密部署密钥,客户端可以对需要部署的业务密钥进行加密,并将加密后业务密钥发送至FPGA结构;相应地,FPGA结构在收到加密后业务密钥后,可以根据业务秘密部署密钥进行解密得到相应的业务密钥,并部署该业务密钥。
例如,业务密钥可以包括:节点私钥,该节点私钥对应的节点公钥被公开;其中,该节点公钥被用于对交易进行加密,或者该节点公钥与交易提交方提供的对称密钥被共同用于通过数字信封方式对交易进行加密。以区块链场景下的隐私交易为例,假定交易提交方希望对提交的交易内容保密,交易提交方可以通过上述的节点公钥对交易进行加密后提交至区块链节点,而区块链节点可以在FPGA结构中利用节点私钥进行解密,从而得到明文的交易内容;或者,交易提交方可以采用随机生成(或通过其他方式得到)的对称密钥对交易进行加密,在通过上述的节点公钥对该对称密钥进行加密,并将加密后交易和加密后对称密钥提交至区块链节点,而区块链节点可以在FPGA结构中利用节点私钥对加密后对称密钥进行解密,并通过解密得到的对称密钥对加密后交易进行解密,从而得到明文的交易内容。
再例如,业务密钥可以包括:业务根密钥,该业务根密钥或该业务根密钥的衍生密钥用于对可信执行环境内产生的隐私数据进行加密后存储至区块链节点维护的数据库中。例如,区块链节点在FPGA结构所形成的TEE内执行交易后,可能产生存在加密需求的上述隐私数据,比如该隐私数据可以包括执行智能合约所产生的合约状态的取值,那么FPGA结构可以通过上述的业务根密钥或其衍生密钥对隐私数据进行加密,并将加密后的隐私数据存储至区块链节点维护的数据库中。相应地,在需要读取该隐私数据时,通过将加密后的隐私数据读入FPGA结构中,使得FPGA结构可以基于上述的业务根密钥或其衍生密钥进行解密,即可得到相应明文的隐私数据,以便于读取或更新该隐私数据的数值,或将该隐私数据的数值用于参与其他计算过程等。
客户端与FPGA结构可以通过两次协商过程,分别协商得到上述的配置文件部署密钥和业务秘密部署密钥。或者,客户端与FPGA结构可以通过一次协商过程,同时协商得到上述的配置文件部署密钥和业务秘密部署密钥;例如,客户端与FPGA结构可以协商得到相同的秘密值,然后通过上述的密钥导出函数导出配置文件部署密钥和业务秘密部署密钥,譬如密钥导出函数可以一次性导出32字节随机数,其中前16字节可作为配置文件部署密钥、后16字节可作为业务秘密部署密钥。
图2是一示例性实施例提供的另一种基于FPGA实现隐私区块链的方法的流程图。如图2所示,该方法应用于FPGA结构,可以包括以下步骤:
步骤202,FPGA结构对来自客户端的电路逻辑配置文件进行部署,所述电路逻辑配置文件用于使所述FPGA结构实现为所属的区块链节点上的可信执行环境。
客户端可以包括需要向FPGA结构实施部署操作的任意对象,使得FPGA结构可以基于所部属的电路逻辑配置文件而实现相应的服务或功能。例如,客户端可以包括密钥管理服务器,即KMS服务器,该KMS服务器在确定FPGA结构上部署了正确的电路逻辑配置文件后,可以将FPGA结构分配相应的业务密钥,使得FPGA结构可以实现为区块链节点上的TEE,从而实现具有隐私功能的区块链节点。
因此,客户端通过向FPGA结构部署恰当的电路逻辑配置文件,使得FPGA结构在正确地配置了该电路逻辑配置文件后,即可实现为区块链节点上的TEE。例如,该电路逻辑配置文件可以包括用于实现虚拟机(EVM或其他类型的虚拟机)、加解密等功能的配置信息,这些配置信息具体可以表征为比特流的形式以便于烧录至FPGA结构,当然本说明书并不限制电路逻辑配置文件所采用的形式。
FPGA结构上可以预先部署有认证根密钥,该认证根密钥可以被预置于FPGA结构中,或者该认证根密钥可由客户端或其他对象在离线安全环境下部署至FPGA结构中。其中,该认证根密钥属于非对称密钥,且该认证根密钥对应的公钥被公开,使得即便该认证根密钥并非由客户端所部署(预置或其他对象所部署),客户端也可以基于被公开的公钥对该认证根密钥生成的签名进行验证。
客户端可以与FPGA结构之间实现密钥协商。假定采用SM2(或其他算法)算法实现协商,客户端与FPGA结构需要在协商过程中实施至少一次信息交互:当FPGA结构向客户端发送协商信息时,可以采用上述的认证根密钥对该协商信息进行签名,使得客户端在收到签名后的协商信息后,可以利用被公开的公钥进行签名验证,从而确定该协商信息确实由FPGA结构发出,并信任该协商信息;而当签名未通过验证时,客户端可以选择不信任收到的协商信息。基于上述过程,客户端与FPGA结构可以完成密钥协商,使得客户端与FPGA结构可以分别获得相同的配置文件部署密钥。其中,该配置文件部署密钥可以由客户端与FPGA结构通过密钥协商过程直接得到,即该配置文件部署密钥可以为秘密值(或称,主密钥);或者,该配置文件部署密钥可由客户端与FPGA结构分别通过密钥导出函数从上述的秘密值导出得到。基于协商得到的配置文件部署密钥,客户端可以对上述的电路逻辑配置文件进行加密,并将加密后电路逻辑配置文件发送至FPGA结构;相应地,FPGA结构在收到加密后电路逻辑配置文件后,可以根据配置文件部署密钥进行解密得到相应的电路逻辑配置文件,并部署该电路逻辑配置文件。
FPGA结构可以包括FPGA芯片,而FPGA结构在部署电路逻辑配置文件时,可以将电路逻辑配置文件直接读入FPGA芯片内。但是,FPGA芯片具有易失性,断电后部署的电路逻辑配置文件就会丢失,使得重新上电后需要客户端重新部署电路逻辑配置文件。因此,为了减少客户端的部署次数,FPGA结构可以进一步包含存储器,该存储器与FPGA芯片相连,使得电路逻辑配置文件被部署于存储器中,且FPGA芯片从存储器中读取电路逻辑配置文件以实现相关功能;其中,存储器具有非易失性,即便断电仍然可以保存电路逻辑配置文件,而重新上电后只需重新从存储器读入FPGA芯片即可,无需客户端重新部署。存储器可以具有多种形式,比如闪存等可重复擦写的非易失性存储器,再比如熔丝存储器等不可重复擦写的存储器等,本说明书并不对此进行限制。
FPGA结构可以包括密钥管理芯片,前述的认证根密钥可以被存储于该密钥管理芯片中,以具备高安全性和高可靠度。当然,认证根密钥也可以存储于诸如前述的FPGA芯片或存储器中,本说明书并不对此进行限制。
步骤204,所述FPGA结构通过已部署的认证根密钥对认证结果进行签名,所述认证结果包含与所述电路逻辑配置文件相关的内容,其中所述认证根密钥对应的公钥被公开。
步骤206,所述FPGA结构将签名后的所述认证结果返回至所述客户端,以使所述客户端在所述认证结果通过签名验证且所述认证结果包含与所述电路逻辑配置文件相关的内容的情况下,确认所述电路逻辑配置文件在所述FPGA结构上部署成功。
如前所述,由于FPGA结构内部署的认证根密钥为非对称密钥,且该认证根密钥对应的公钥被公开,因而客户端可以提前获得该公钥,并据此针对FPGA结构返回的认证结果进行签名验证,并在签名验证通过的情况下确定该认证结果由FPGA结构提供且认证结果未被篡改。上述验证过程可由客户端在本地完成,而无需借助于第三方实现,一方面可以减少交互次数、提升验证效率,另一方面可以避免第三方的介入及交互次数的增加而造成额外的安全风险,确保验证结果的可靠性不依赖于第三方的自制力与可信度。
客户端可以对认证结果所含的与电路逻辑配置文件相关的内容进行验证,从而确定该内容与客户端向FPGA结构部署的电路逻辑配置文件是否一致。譬如上述与电路逻辑配置文件相关的内容可以为该电路逻辑配置文件的哈希值,或者采用预设算法(例如sm3算法等)对该电路逻辑配置文件的哈希值进行计算后的数值,使得客户端在已有上述电路逻辑配置文件、已知上述预设算法的情况下,可以在本地计算电路逻辑配置文件的哈希值或者采用上述预设算法对该哈希值进一步计算,并与认证结果包含的上述哈希值或数值进行比较:若一致,则表明FPGA结构正确地部署了客户端提供的电路逻辑配置文件,否则表明电路逻辑配置文件未配置成功。
进一步地,上述的认证结果中还可以包含与配置文件部署密钥相关的内容。相应地,客户端可以根据自身导出的配置文件部署密钥对上述的认证结果进行验证。例如,认证结果中可以包含配置文件部署密钥的哈希值,或者采用预设算法对配置文件部署密钥或其哈希值进行计算得到的数值,那么与上述电路逻辑配置文件相类似的,客户端可以根据自身导出的配置文件部署密钥计算哈希值或与上述预设算法相关的数值:如果认证结果包含的与电路逻辑配置文件相关的内容、与配置文件部署密钥相关的内容均通过验证,则表明FPGA结构与客户端之间成功协商了配置文件部署密钥,并且FPGA结构正确地部署了客户端提供的电路逻辑配置文件,否则表明密钥协商失败或电路逻辑配置文件部署失败。再例如,认证结果中与电路逻辑配置文件相关的内容、与配置文件部署密钥相关的内容可以被生成为同一内容,即认证结果中可以包含一同时与电路逻辑配置文件、配置文件部署密钥相关的内容;比如,FPGA结构可以采用预设算法对所部署的电路逻辑配置文件(或其哈希值)、协商得到的配置文件部署密钥(或其哈希值)进行计算并得到一数值,以作为上述认证结果中同时与电路逻辑配置文件、配置文件部署密钥相关的内容,而客户端根据自身维护的电路逻辑配置文件、配置文件部署密钥和已知的上述预设算法,即可对认证结果所含的数值进行验证。
与上述配置文件部署密钥相类似的,客户端可与FPGA结构之间进行密钥协商,使得客户端与FPGA结构可以分别导出相同的业务秘密部署密钥,以用于将客户端提供的业务密钥或其他业务秘密部署至FPGA结构。其中,在密钥协商过程中,客户端与FPGA结构需要相互发送协商信息,而FPGA结构在生成协商信息后,可以通过前述的认证根密钥进行签名,并将签名后的协商信息发送至客户端,而客户端可以根据已公开的公钥进行签名验证:在签名通过验证后,客户端确定协商信息来自FPGA结构,并进一步基于该协商信息完成协商过程,否则客户端可以终止密钥协商。最终,客户端与FPGA结构经过协商后,可以分别获得相同的业务秘密部署密钥。其中,该业务秘密部署密钥可以由客户端与FPGA结构通过密钥协商过程直接得到,即该业务秘密部署密钥可以为秘密值(或称,主密钥);或者,该业务秘密部署密钥可由客户端与FPGA结构分别通过密钥导出函数从上述的秘密值导出得到。
基于协商得到的业务秘密部署密钥,客户端可以对需要部署的业务密钥进行加密,并将加密后业务密钥发送至FPGA结构;相应地,FPGA结构在收到加密后业务密钥后,可以根据业务秘密部署密钥进行解密得到相应的业务密钥,并部署该业务密钥。
例如,业务密钥可以包括:节点私钥,该节点私钥对应的节点公钥被公开;其中,该节点公钥被用于对交易进行加密,或者该节点公钥与交易提交方提供的对称密钥被共同用于通过数字信封方式对交易进行加密。以区块链场景下的隐私交易为例,假定交易提交方希望对提交的交易内容保密,交易提交方可以通过上述的节点公钥对交易进行加密后提交至区块链节点,而区块链节点可以在FPGA结构中利用节点私钥进行解密,从而得到明文的交易内容;或者,交易提交方可以采用随机生成(或通过其他方式得到)的对称密钥对交易进行加密,在通过上述的节点公钥对该对称密钥进行加密,并将加密后交易和加密后对称密钥提交至区块链节点,而区块链节点可以在FPGA结构中利用节点私钥对加密后对称密钥进行解密,并通过解密得到的对称密钥对加密后交易进行解密,从而得到明文的交易内容。
再例如,业务密钥可以包括:业务根密钥,该业务根密钥或该业务根密钥的衍生密钥用于对可信执行环境内产生的隐私数据进行加密后存储至区块链节点维护的数据库中。例如,区块链节点在FPGA结构所形成的TEE内执行交易后,可能产生存在加密需求的上述隐私数据,比如该隐私数据可以包括执行智能合约所产生的合约状态的取值,那么FPGA结构可以通过上述的业务根密钥或其衍生密钥对隐私数据进行加密,并将加密后的隐私数据存储至区块链节点维护的数据库中。相应地,在需要读取该隐私数据时,通过将加密后的隐私数据读入FPGA结构中,使得FPGA结构可以基于上述的业务根密钥或其衍生密钥进行解密,即可得到相应明文的隐私数据,以便于读取或更新该隐私数据的数值,或将该隐私数据的数值用于参与其他计算过程等。
客户端与FPGA结构可以通过两次协商过程,分别协商得到上述的配置文件部署密钥和业务秘密部署密钥。或者,客户端与FPGA结构可以通过一次协商过程,同时协商得到上述的配置文件部署密钥和业务秘密部署密钥;例如,客户端与FPGA结构可以协商得到相同的秘密值,然后通过上述的密钥导出函数导出配置文件部署密钥和业务秘密部署密钥,譬如密钥导出函数可以一次性导出32字节随机数,其中前16字节可作为配置文件部署密钥、后16字节可作为业务秘密部署密钥。
图3是一示例性实施例提供的一种客户端与FPGA结构之间的交互过程的示意流程图。假定客户端可以为KMS服务器,FPGA结构被配置于区块链节点上,KMS服务器通过对该FPGA结构进行认证,从而在该FPGA结构通过认证的情况下,向FPGA结构部署区块链节点所需的业务密钥,以将该区块链节点配置为具备隐私功能,从而实现具备隐私功能的区块链网络。如图3所示,该方法可以包括以下步骤:
步骤301,FPGA结构部署认证根密钥。
认证根密钥可由生产方在生产制造FPGA结构的过程中完成部署,即生产方将认证根密钥部署至FPGA结构,譬如部署至FPGA结构所含的密钥管理芯片内。
当然,认证根密钥也可以由客户端进行部署。例如,客户端对应的用户可以在离线状态下的物理安全环境中,将认证根密钥部署至FPGA结构中,譬如部署至上述的密钥管理芯片内。
不论采用何种部署方式,FPGA结构中部署的认证根密钥均为非对称密钥,即该认证根密钥存在对应的认证公钥,而该认证公钥处于被公开状态。例如,可以提供某一网站,使得客户端可以对上述的认证公钥进行下载。
步骤302,客户端与FPGA结构远程协商密钥。
假定客户端与FPGA结构可以采用诸如SM2算法实现密钥协商。在协商过程中,客户端与FPGA结构需要分别生成协商信息,并对各自生成的协商信息进行远程交换,从而完成协商过程。其中,FPGA结构在生成协商信息后,可以通过上述的认证根密钥对该协商信息进行签名,然后将签名后的协商信息发送至客户端。相应地,客户端从远端收到协商信息后,可以通过预先获得的认证公钥对该协商信息进行签名验证:如果验证成功,表明该协商信息确实来自于FPGA结构,即该协商信息可信,从而基于该协商信息完成后续的协商过程,否则终止密钥协商。可见,由于FPGA结构内置认证根密钥,且该认证根密钥对应的认证公钥处于公开状态,使得客户端与FPGA结构可以据此实现远程的密钥协商,并且客户端可以在本地完成签名验证,而无需借助于第三方,可以避免客户端与第三方之间的交互而导致验证效率降低,并且避免验证结果的可靠性依赖于第三方的可信度,有助于提升安全性。
步骤303,客户端、FPGA结构分别导出配置文件部署密钥、业务秘密部署密钥。
基于密钥协商操作,客户端与FPGA结构可以分别生成相同的秘密值,并进一步通过KDF函数对该秘密值进行处理,可以导出上述的配置文件部署密钥和业务秘密部署密钥。例如,KDF函数可以导出一组32字节的随机数,可以将前16字节随机数作为配置文件部署密钥、后16字节随机数作为业务秘密部署密钥;当然,KDF函数可以导出其他长度的随机数,并且每个密钥可以分别采用其他长度,本说明书并不对此进行限制。KDF函数导出的随机数也并不一定都用于生成业务密钥,比如KDF函数可以导出64字节的随机数,可以选取前16字节随机数作为配置文件部署密钥、后16字节随机数作为业务秘密部署密钥,剩余32字节随机数丢弃。
客户端和FPGA结构分别对导出的配置文件部署密钥、业务秘密部署密钥进行维护。其中,FPGA结构可以包括FPGA芯片和密钥管理芯片,其中配置文件部署密钥和业务秘密部署密钥可以被维护于密钥管理芯片中,以确保其安全性。
步骤304,客户端生成电路逻辑配置文件并加密,然后将加密后电路逻辑配置文件发送至FPGA结构。
客户端根据步骤303导出的配置文件部署密钥对电路逻辑配置文件进行加密,使得加密后电路逻辑配置文件被远程传输至FPGA结构的过程中,即便发生数据泄露也不会造成损失。
步骤305,FPGA结构解密得到电路逻辑配置文件并部署。
FPGA结构收到客户端发送的加密后电路逻辑配置文件后,可以利用步骤303中导出的配置文件部署密钥进行解密,得到明文的电路逻辑配置文件;然后,FPGA结构可以对明文的电路逻辑配置文件实施部署。
FPGA结构可以包括FPGA芯片和flash芯片,电路逻辑配置文件可以被部署于flash芯片中,这样FPGA芯片在每次上电后可以从flash芯片中读取和加载上述电路逻辑配置文件,并且断电后flash芯片内部署的电路逻辑配置文件不会丢失,无需客户端反复部署。
步骤306,FPGA结构生成认证结果并签名,然后将签名后的认证结果返回客户端。
在完成对电路逻辑配置文件的部署后,FPGA结构可以生成认证结果。例如,FPGA结构可以生成电路逻辑配置文件对应的哈希值,比如采用user_bitstream_hash表示;同时,FPGA结构可以为前述的配置文件部署密钥生成对应的哈希值,比如采用userbitkey_hash表示;然后,FPGA结构可以采用诸如sm3算法进行计算,譬如得到的计算结果为msg,且msg=sm3(user_bitstream_hash||userbitkey_hash),并将该msg信息添加至认证结果中。
FPGA结构还进一步根据前述的认证根密钥对生成的认证结果进行签名,从而将签名后的认证结果发送至客户端。
步骤307,客户端收到签名后的认证结果后,验证签名和认证内容。
如前所述,客户端可以预先获得认证根密钥对应的认证公钥,使得客户端在收到签名后的认证结果后,可以基于该认证公钥进行签名验证。
在签名通过验证后,客户端可以进一步对该认证结果所含的认证内容进行验证,该认证内容可以包括上述的msg信息。客户端可以利用sm3算法计算msg’=sm3(user_bitstream_hash’||userbitkey_hash’),其中:user_bitstream_hash’表示客户端本地维护的电路逻辑配置文件、userbitkey_hash’表示客户端本地维护的配置文件部署密钥。那么,如果计算得到msg=msg’,表明客户端与FPGA结构在步骤303中成功协商了配置文件部署密钥,并且表明FPGA结构对客户端提供的电路逻辑配置文件实施了成功部署;其中,由于配置文件部署密钥与业务秘密部署密钥是基于同一秘密值导出,因而同样表明两者成功协商了业务秘密部署密钥。
因此,客户端可以在本地完成对认证结果的验证,而无需依赖于第三方,可以减少交互、提升安全性。
步骤308,客户端确定节点私钥、业务根密钥并加密,然后将加密后的节点私钥和业务根密钥发送至FPGA结构。
步骤309,FPGA结构解密得到节点私钥和业务根密钥。
客户端采用步骤303得到的业务秘密部署密钥对节点私钥、业务根密钥等业务密钥进行加密后,使得客户端可以将节点私钥和业务根密钥安全地远程传输至FPGA结构;相应的,FPGA结构可以基于步骤303得到的业务秘密部署密钥进行解密,即可获得节点私钥和业务根密钥,并针对节点私钥和业务根密钥进行部署。
基于FPGA结构上部署的节点私钥和业务根密钥,区块链节点可以基于FPGA结构实现隐私交易功能。例如,图4是一示例性实施例提供的一种区块链节点对交易进行处理的示意图。如图4所示,区块链节点包括左侧的常规执行环境和右侧由FPGA结构形成的TEE,用户提交的交易首先进入常规执行环境中的“交易调度”接口进行类型识别,将识别出的明文交易留在常规执行环境中进行处理(对应于左侧的“交易执行”环节),而将识别出的隐私交易传递至TEE中进行处理(对应于右侧的“交易执行”环节)。
隐私交易由用户加密后提交至区块链节点。例如,用户可以随机产生对称密钥,而FPGA结构上部署的节点私钥存在已公开的节点公钥,使得用户可以基于该对称密钥和节点公钥对交易内容实施数字信封加密:用户采用对称密钥对明文的交易内容进行加密、生成加密后交易内容,并采用节点公钥对该对称密钥进行加密、生成加密后对称密钥,然后将加密后交易内容和加密后对称密钥作为隐私交易同时提交至区块链节点。相应地,区块链节点将隐私交易读入FPGA结构中,通过FPGA结构中部署的节点私钥对加密后对称密钥进行解密、得到对称密钥,并进一步基于该对称密钥对加密后交易内容进行解密、得到明文的交易内容,然后在FPGA结构上处理该交易内容。
其中,隐私交易可以理解为存在隐私需求的交易;除了隐私交易之外,区块链节点可能接收到明文交易,明文交易为不存在隐私需求的交易。隐私需求可以通过多种方式予以表达,本说明书并不对此进行限制。例如,每笔交易可以包含类型字段,该类型字段用于标注相应的交易属于隐私交易还是明文交易。如前所述,区块链节点可以在如图1所示的常规执行环境中的“交易调度”接口识别交易类型。在相关技术中,例如在以太坊网络中,交易通常包含to、value、data等字段;而本实施例在相关技术的基础上,在交易中增加一类型字段,比如表征为type字段,并基于该类型字段的取值,表明相关交易的类型:例如,当类型字段为第一取值时,表明相关交易为明文交易,当类型字段为第二取值时,表明相关交易为隐私交易。再例如,用户可以在创建交易的过程中在交易内添加加密标识,以表达上述的隐私需求。那么,当检查到交易中包含加密标识时,区块链节点可以判定该交易为隐私交易,否则判定该交易为明文交易。又例如,区块链节点可以识别交易所需调用的智能合约的类型,当被调用的智能合约属于隐私类型(比如智能合约包含隐私标识,或者智能合约的代码中包括隐私标识标注的合约状态等)时,可以判定该交易属于隐私交易,否则判定该交易为明文交易。
本说明书中的交易可以用于实现相对简单的处理逻辑,比如类似于相关技术中的转账逻辑。此时无论是上述的明文交易或隐私交易,均可与智能合约无关。
本说明书中的交易还可以用于实现相对复杂的处理逻辑,这里可以借助于上述的智能合约来实现。以以太坊为例,支持用户在以太坊网络中创建和/或调用一些复杂的逻辑,这是以太坊区别于比特币区块链技术的最大挑战。以太坊作为一个可编程区块链的核心是以太坊虚拟机(EVM),每个以太坊节点都可以运行EVM。EVM是一个图灵完备的虚拟机,这意味着可以通过它实现各种复杂的逻辑。用户在以太坊中发布和调用智能合约就是在EVM上运行的。如图4所示,通过在常规执行环境中部署EVM,可以通过该EVM执行明文交易发布或调用的智能合约,以实现常规执行环境中的“交易执行”环节;以及,通过在TEE中部署EVM(FPGA结构基于部署的电路逻辑配置文件,可以实现EVM或其他虚拟机的功能),可以通过该EVM执行隐私交易发布或调用的智能合约,以实现TEE中的“交易执行”环节。
隐私交易在FPGA结构中完成处理后,可能导致相关账户的账户余额或者智能合约相关的合约状态的取值发生变化,而FPGA结构可以基于前述的业务根密钥或其衍生密钥对这些取值进行加密,并将加密后的取值存入区块链节点维护的数据库中。
因此,只有在FPGA结构内的数据可以呈现为明文状态,以实现高效的数据处理,而FPGA结构之外的数据均处于加密状态,以确保数据安全性,从而能够实现区块链上的隐私保护功能。
图5是一示例性实施例提供的一种设备的示意结构图。请参考图5,在硬件层面,该设备包括处理器502、内部总线504、网络接口506、内存508以及非易失性存储器510,当然还可能包括其他业务所需要的硬件。处理器502从非易失性存储器510中读取对应的计算机程序到内存508中然后运行,在逻辑层面上形成基于FPGA实现隐私区块链的装置。当然,除了软件实现方式之外,本说明书一个或多个实施例并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
请参考图6,在软件实施方式中,该基于FPGA实现隐私区块链的装置可以包括:
配置文件部署单元61,使客户端向区块链节点处的FPGA结构部署电路逻辑配置文件,所述电路逻辑配置文件用于使所述FPGA结构实现为所述区块链节点的可信执行环境;
认证结果接收单元62,使所述客户端接收所述FPGA结构返回的认证结果,所述认证结果由所述FPGA结构内部署的认证根密钥进行签名,且所述认证根密钥对应的公钥被公开;
部署确认单元63,使所述客户端在所述认证结果通过签名验证且所述认证结果包含与所述电路逻辑配置文件相关的内容的情况下,确认所述电路逻辑配置文件在所述FPGA结构上部署成功。
可选的,所述认证根密钥被预置于所述FPGA结构中;或者,所述认证根密钥由所述客户端或其他对象在离线安全环境下部署至所述FPGA结构中。
可选的,配置文件部署单元61具体用于:
使所述客户端根据所述FPGA结构发送的协商信息,与所述FPGA结构协商配置文件部署密钥,使所述客户端与所述FPGA结构分别确定出所述配置文件部署密钥;其中,所述协商信息由所述认证根密钥进行签名;
使所述客户端通过所述配置文件部署密钥对所述电路逻辑配置文件进行加密,并将加密后电路逻辑配置文件发送至所述FPGA结构,使所述FPGA结构根据所述配置文件部署密钥进行解密并部署所述电路逻辑配置文件。
可选的,所述认证结果中还包含与所述配置文件部署密钥相关的内容。
可选的,还包括:
业务密钥协商单元64,使所述客户端根据所述FPGA结构发送的协商信息,与所述FPGA结构协商业务秘密部署密钥,使所述客户端与所述FPGA结构分别确定出所述业务秘密部署密钥;其中,所述协商信息由所述认证根密钥进行签名;
业务密钥部署单元65,使所述客户端通过所述业务秘密部署密钥对业务密钥进行加密,并将加密后业务密钥发送至所述FPGA结构,使所述FPGA结构根据所述业务秘密部署密钥进行解密并部署所述业务密钥。
可选的,所述业务密钥包括:节点私钥,所述节点私钥对应的节点公钥被公开;
其中,所述节点公钥被用于对交易进行加密;或者,所述节点公钥与交易提交方提供的对称密钥被共同用于通过数字信封方式对交易进行加密。
可选的所述业务密钥包括:业务根密钥,所述业务根密钥或所述业务根密钥的衍生密钥用于对所述可信执行环境内产生的隐私数据进行加密后存储至所述区块链节点维护的数据库中。
可选的,所述客户端包括密钥管理服务器。
图7是一示例性实施例提供的一种设备的示意结构图。请参考图7,在硬件层面,该设备包括处理器702、内部总线704、网络接口706、内存708以及非易失性存储器710,当然还可能包括其他业务所需要的硬件。处理器702从非易失性存储器710中读取对应的计算机程序到内存708中然后运行,在逻辑层面上形成基于FPGA实现隐私区块链的装置。当然,除了软件实现方式之外,本说明书一个或多个实施例并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
请参考图8,在软件实施方式中,该基于FPGA实现隐私区块链的装置可以包括:
配置文件部署单元81,使FPGA结构对来自客户端的电路逻辑配置文件进行部署,所述电路逻辑配置文件用于使所述FPGA结构实现为所属的区块链节点上的可信执行环境;
认证结果签名单元82,使所述FPGA结构通过已部署的认证根密钥对认证结果进行签名,所述认证结果包含与所述电路逻辑配置文件相关的内容,其中所述认证根密钥对应的公钥被公开;
认证结果返回单元83,使所述FPGA结构将签名后的所述认证结果返回至所述客户端,以使所述客户端在所述认证结果通过签名验证且所述认证结果包含与所述电路逻辑配置文件相关的内容的情况下,确认所述电路逻辑配置文件在所述FPGA结构上部署成功。
可选的,所述认证根密钥被预置于所述FPGA结构中;或者,所述认证根密钥由所述客户端或其他对象在离线安全环境下部署至所述FPGA结构中。
可选的,所述FPGA结构包括密钥管理芯片,所述认证根密钥被存储于所述密钥管理芯片中。
可选的,所述FPGA结构包括FPGA芯片和存储器;其中,所述电路逻辑配置文件被部署于所述存储器中,且所述FPGA芯片从所述存储器中读取所述电路逻辑配置文件以实现相关功能。
可选的,所述存储器包括非易失性存储器或熔丝存储器。
可选的,配置文件部署单元81具体用于:
使所述FPGA结构通过向所述客户端发送协商信息,与所述客户端协商配置文件部署密钥,使所述客户端与所述FPGA结构分别确定出所述配置文件部署密钥;其中,所述协商信息由所述认证根密钥进行签名;
使所述FPGA结构接收所述客户端发送的加密后电路逻辑配置文件,所述加密后电路逻辑配置文件由所述配置文件部署密钥对所述电路逻辑配置文件进行加密得到;
使所述FPGA结构根据所述文件部署密钥对所述加密后电路逻辑配置文件进行解密,并对解密得到的电路逻辑配置文件进行部署。
可选的,所述认证结果中还包含与所述配置文件部署密钥相关的内容。
可选的,还包括:
协商单元84,使所述FPGA结构通过向所述客户端发送协商信息,与所述客户端协商配置业务秘密部署密钥,使所述客户端与所述FPGA结构分别确定出所述业务秘密部署密钥;其中,所述协商信息由所述认证根密钥进行签名;
接收单元85,使所述FPGA结构接收所述客户端发送的加密后业务密钥,所述加密后业务密钥由所述业务秘密部署密钥对所述业务密钥进行加密得到;
解密单元86,使所述FPGA结构根据所述业务秘密部署密钥对所述加密后业务密钥进行解密,并对解密得到的业务密钥进行部署。
可选的,所述业务密钥包括:节点私钥,所述节点私钥对应的节点公钥被公开;
其中,所述节点公钥被用于对交易进行加密;或者,所述节点公钥与交易提交方提供的对称密钥被共同用于通过数字信封方式对交易进行加密。
可选的,所述业务密钥包括:业务根密钥,所述业务根密钥或所述业务根密钥的衍生密钥用于对所述可信执行环境内产生的隐私数据进行加密后存储至所述区块链节点维护的数据库中。
可选的,所述客户端包括密钥管理服务器。
上述实施例阐明的***、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
在一个典型的配置中,计算机包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带、磁盘存储、量子存储器、基于石墨烯的存储介质或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
在本说明书一个或多个实施例使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书一个或多个实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
以上所述仅为本说明书一个或多个实施例的较佳实施例而已,并不用以限制本说明书一个或多个实施例,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例保护的范围之内。
Claims (23)
1.一种基于FPGA实现隐私区块链的方法,包括:
客户端向区块链节点处的FPGA结构部署电路逻辑配置文件,所述电路逻辑配置文件用于使所述FPGA结构实现为所述区块链节点的可信执行环境;
所述客户端接收所述FPGA结构返回的认证结果,所述认证结果由所述FPGA结构内部署的认证根密钥进行签名,且所述认证根密钥对应的公钥被公开,所述认证根密钥被预置于所述FPGA结构中;或者,所述认证根密钥由所述客户端或其他对象在离线安全环境下部署至所述FPGA结构中;
所述客户端在所述认证结果通过签名验证且所述认证结果包含与所述电路逻辑配置文件相关的内容的情况下,确认所述电路逻辑配置文件在所述FPGA结构上部署成功。
2.根据权利要求1所述的方法,所述客户端向区块链节点处的FPGA结构部署电路逻辑配置文件,包括:
所述客户端根据所述FPGA结构发送的协商信息,与所述FPGA结构协商配置文件部署密钥,使所述客户端与所述FPGA结构分别确定出所述配置文件部署密钥;其中,所述协商信息由所述认证根密钥进行签名;
所述客户端通过所述配置文件部署密钥对所述电路逻辑配置文件进行加密,并将加密后电路逻辑配置文件发送至所述FPGA结构,使所述FPGA结构根据所述配置文件部署密钥进行解密并部署所述电路逻辑配置文件。
3.根据权利要求2所述的方法,所述认证结果中还包含与所述配置文件部署密钥相关的内容。
4.根据权利要求1所述的方法,还包括:
所述客户端根据所述FPGA结构发送的协商信息,与所述FPGA结构协商业务秘密部署密钥,使所述客户端与所述FPGA结构分别确定出所述业务秘密部署密钥;其中,所述协商信息由所述认证根密钥进行签名;
所述客户端通过所述业务秘密部署密钥对业务密钥进行加密,并将加密后业务密钥发送至所述FPGA结构,使所述FPGA结构根据所述业务秘密部署密钥进行解密并部署所述业务密钥。
5.根据权利要求4所述的方法,所述业务密钥包括:节点私钥,所述节点私钥对应的节点公钥被公开;
其中,所述节点公钥被用于对交易进行加密;或者,所述节点公钥与交易提交方提供的对称密钥被共同用于通过数字信封方式对交易进行加密。
6.根据权利要求4所述的方法,所述业务密钥包括:业务根密钥,所述业务根密钥或所述业务根密钥的衍生密钥用于对所述可信执行环境内产生的隐私数据进行加密后存储至所述区块链节点维护的数据库中。
7.根据权利要求1所述的方法,所述客户端包括密钥管理服务器。
8.一种基于FPGA实现隐私区块链的方法,包括:
FPGA结构对来自客户端的电路逻辑配置文件进行部署,所述电路逻辑配置文件用于使所述FPGA结构实现为所属的区块链节点上的可信执行环境;
所述FPGA结构通过已部署的认证根密钥对认证结果进行签名,所述认证结果包含与所述电路逻辑配置文件相关的内容,其中所述认证根密钥对应的公钥被公开,所述认证根密钥被预置于所述FPGA结构中;或者,所述认证根密钥由所述客户端或其他对象在离线安全环境下部署至所述FPGA结构中;
所述FPGA结构将签名后的所述认证结果返回至所述客户端,以使所述客户端在所述认证结果通过签名验证且所述认证结果包含与所述电路逻辑配置文件相关的内容的情况下,确认所述电路逻辑配置文件在所述FPGA结构上部署成功。
9.根据权利要求8所述的方法,所述FPGA结构包括密钥管理芯片,所述认证根密钥被存储于所述密钥管理芯片中。
10.根据权利要求8所述的方法,所述FPGA结构包括FPGA芯片和存储器;其中,所述电路逻辑配置文件被部署于所述存储器中,且所述FPGA芯片从所述存储器中读取所述电路逻辑配置文件以实现相关功能。
11.根据权利要求10所述的方法,所述存储器包括非易失性存储器或熔丝存储器。
12.根据权利要求8所述的方法,所述FPGA结构对来自客户端的电路逻辑配置文件进行部署,包括:
所述FPGA结构通过向所述客户端发送协商信息,与所述客户端协商配置文件部署密钥,使所述客户端与所述FPGA结构分别确定出所述配置文件部署密钥;其中,所述协商信息由所述认证根密钥进行签名;
所述FPGA结构接收所述客户端发送的加密后电路逻辑配置文件,所述加密后电路逻辑配置文件由所述配置文件部署密钥对所述电路逻辑配置文件进行加密得到;
所述FPGA结构根据所述文件部署密钥对所述加密后电路逻辑配置文件进行解密,并对解密得到的电路逻辑配置文件进行部署。
13.根据权利要求12所述的方法,所述认证结果中还包含与所述配置文件部署密钥相关的内容。
14.根据权利要求8所述的方法,还包括:
所述FPGA结构通过向所述客户端发送协商信息,与所述客户端协商配置业务秘密部署密钥,使所述客户端与所述FPGA结构分别确定出所述业务秘密部署密钥;其中,所述协商信息由所述认证根密钥进行签名;
所述FPGA结构接收所述客户端发送的加密后业务密钥,所述加密后业务密钥由所述业务秘密部署密钥对所述业务密钥进行加密得到;
所述FPGA结构根据所述业务秘密部署密钥对所述加密后业务密钥进行解密,并对解密得到的业务密钥进行部署。
15.根据权利要求14所述的方法,所述业务密钥包括:节点私钥,所述节点私钥对应的节点公钥被公开;
其中,所述节点公钥被用于对交易进行加密;或者,所述节点公钥与交易提交方提供的对称密钥被共同用于通过数字信封方式对交易进行加密。
16.根据权利要求14所述的方法,所述业务密钥包括:业务根密钥,所述业务根密钥或所述业务根密钥的衍生密钥用于对所述可信执行环境内产生的隐私数据进行加密后存储至所述区块链节点维护的数据库中。
17.根据权利要求8所述的方法,所述客户端包括密钥管理服务器。
18.一种基于FPGA实现隐私区块链的装置,包括:
配置文件部署单元,使客户端向区块链节点处的FPGA结构部署电路逻辑配置文件,所述电路逻辑配置文件用于使所述FPGA结构实现为所述区块链节点的可信执行环境;
认证结果接收单元,使所述客户端接收所述FPGA结构返回的认证结果,所述认证结果由所述FPGA结构内部署的认证根密钥进行签名,且所述认证根密钥对应的公钥被公开,所述认证根密钥被预置于所述FPGA结构中;或者,所述认证根密钥由所述客户端或其他对象在离线安全环境下部署至所述FPGA结构中;
部署确认单元,使所述客户端在所述认证结果通过签名验证且所述认证结果包含与所述电路逻辑配置文件相关的内容的情况下,确认所述电路逻辑配置文件在所述FPGA结构上部署成功。
19.一种基于FPGA实现隐私区块链的装置,包括:
配置文件部署单元,使FPGA结构对来自客户端的电路逻辑配置文件进行部署,所述电路逻辑配置文件用于使所述FPGA结构实现为所属的区块链节点上的可信执行环境;
认证结果签名单元,使所述FPGA结构通过已部署的认证根密钥对认证结果进行签名,所述认证结果包含与所述电路逻辑配置文件相关的内容,其中所述认证根密钥对应的公钥被公开,所述认证根密钥被预置于所述FPGA结构中;或者,所述认证根密钥由所述客户端或其他对象在离线安全环境下部署至所述FPGA结构中;
认证结果返回单元,使所述FPGA结构将签名后的所述认证结果返回至所述客户端,以使所述客户端在所述认证结果通过签名验证且所述认证结果包含与所述电路逻辑配置文件相关的内容的情况下,确认所述电路逻辑配置文件在所述FPGA结构上部署成功。
20.一种电子设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器通过运行所述可执行指令以实现如权利要求1-8中任一项所述的方法。
21.一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如权利要求1-7中任一项所述方法的步骤。
22.一种电子设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器通过运行所述可执行指令以实现如权利要求8-17中任一项所述的方法。
23.一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如权利要求8-17中任一项所述方法的步骤。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910913460.6A CN110716724B (zh) | 2019-09-25 | 2019-09-25 | 基于fpga实现隐私区块链的方法及装置 |
PCT/CN2020/097358 WO2021057124A1 (zh) | 2019-09-25 | 2020-06-22 | 基于fpga实现隐私区块链的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910913460.6A CN110716724B (zh) | 2019-09-25 | 2019-09-25 | 基于fpga实现隐私区块链的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110716724A CN110716724A (zh) | 2020-01-21 |
CN110716724B true CN110716724B (zh) | 2021-01-08 |
Family
ID=69210883
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910913460.6A Active CN110716724B (zh) | 2019-09-25 | 2019-09-25 | 基于fpga实现隐私区块链的方法及装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN110716724B (zh) |
WO (1) | WO2021057124A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110716724B (zh) * | 2019-09-25 | 2021-01-08 | 支付宝(杭州)信息技术有限公司 | 基于fpga实现隐私区块链的方法及装置 |
CN112231652B (zh) * | 2020-10-28 | 2022-02-22 | 百度在线网络技术(北京)有限公司 | 可信环境远程验证方法、装置、设备、***及介质 |
CN113255263B (zh) * | 2021-06-07 | 2021-10-01 | 上海国微思尔芯技术股份有限公司 | 颗粒带分割方法、装置、计算机设备和存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101272240A (zh) * | 2007-03-21 | 2008-09-24 | 华为技术有限公司 | 一种会话密钥的生成方法、***和通信设备 |
CN103488958A (zh) * | 2012-06-20 | 2014-01-01 | 微软公司 | 管理具有隔离组件的现场可编程门阵列的使用 |
CN109792386A (zh) * | 2016-09-29 | 2019-05-21 | 诺基亚技术有限公司 | 用于可信计算的方法和装置 |
WO2019120315A2 (en) * | 2019-03-26 | 2019-06-27 | Alibaba Group Holding Limited | Field-programmable gate array based trusted execution environment for use in a blockchain network |
CN110086659A (zh) * | 2019-04-12 | 2019-08-02 | 苏州浪潮智能科技有限公司 | 一种fpga配置文件的安全更新***与方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10528765B2 (en) * | 2016-09-16 | 2020-01-07 | Intel Corporation | Technologies for secure boot provisioning and management of field-programmable gate array images |
US10880071B2 (en) * | 2018-02-23 | 2020-12-29 | Samsung Electronics Co., Ltd. | Programmable blockchain solid state drive and switch |
CN110417558B (zh) * | 2018-06-28 | 2022-12-09 | 腾讯科技(深圳)有限公司 | 签名的验证方法和装置、存储介质及电子装置 |
CN110716724B (zh) * | 2019-09-25 | 2021-01-08 | 支付宝(杭州)信息技术有限公司 | 基于fpga实现隐私区块链的方法及装置 |
-
2019
- 2019-09-25 CN CN201910913460.6A patent/CN110716724B/zh active Active
-
2020
- 2020-06-22 WO PCT/CN2020/097358 patent/WO2021057124A1/zh active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101272240A (zh) * | 2007-03-21 | 2008-09-24 | 华为技术有限公司 | 一种会话密钥的生成方法、***和通信设备 |
CN103488958A (zh) * | 2012-06-20 | 2014-01-01 | 微软公司 | 管理具有隔离组件的现场可编程门阵列的使用 |
CN109792386A (zh) * | 2016-09-29 | 2019-05-21 | 诺基亚技术有限公司 | 用于可信计算的方法和装置 |
WO2019120315A2 (en) * | 2019-03-26 | 2019-06-27 | Alibaba Group Holding Limited | Field-programmable gate array based trusted execution environment for use in a blockchain network |
CN110086659A (zh) * | 2019-04-12 | 2019-08-02 | 苏州浪潮智能科技有限公司 | 一种fpga配置文件的安全更新***与方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2021057124A1 (zh) | 2021-04-01 |
CN110716724A (zh) | 2020-01-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111181720B (zh) | 基于可信执行环境的业务处理方法及装置 | |
CN110992027B (zh) | 在区块链中实现隐私保护的高效交易方法及装置 | |
US10341106B2 (en) | Location aware cryptography | |
EP3859647A1 (en) | Blockchain transaction generation method and device | |
TWI715537B (zh) | 基於雲環境的加密機金鑰注入系統、方法及裝置 | |
CN111541724B (zh) | 区块链一体机及其节点自动加入方法、装置 | |
CN110580412B (zh) | 基于链代码的权限查询配置方法及装置 | |
CN111541725B (zh) | 区块链一体机及其密码加速卡、密钥管理方法和装置 | |
CN109510818B (zh) | 区块链的数据传输***、方法、装置、设备及存储介质 | |
CN110289968B (zh) | 私钥恢复、协同地址的创建、签名方法及装置、存储介质 | |
CN110690963B (zh) | 基于fpga的密钥协商方法及装置 | |
CN110580245B (zh) | 隐私数据的共享方法及装置 | |
CN110716724B (zh) | 基于fpga实现隐私区块链的方法及装置 | |
CN110716728B (zh) | Fpga逻辑的可信更新方法及装置 | |
CN110717203B (zh) | 基于fpga实现隐私区块链的方法及装置 | |
CN110601855B (zh) | 一种根证书管理方法、装置及电子设备、存储介质 | |
US20200344075A1 (en) | Secure provisioning of keys | |
CN109861956B (zh) | 基于状态通道的数据验证***、方法、装置及设备 | |
CN111342963A (zh) | 数据上链方法、数据存储方法及装置 | |
CN110750329A (zh) | 基于fpga实现虚拟机运算的方法及装置 | |
CN117155549A (zh) | 密钥分发方法、装置、计算机设备和存储介质 | |
CN112927077B (zh) | 基于fpga实现合约调用的方法及装置 | |
CN110363528B (zh) | 协同地址的生成、交易签名方法及装置、存储介质 | |
CN110688651A (zh) | 基于fpga实现状态更新的方法及装置 | |
CN110750303B (zh) | 基于fpga的流水线式指令读取方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40021473 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |