CN113259123A - 一种区块链数据写入、访问方法及装置 - Google Patents
一种区块链数据写入、访问方法及装置 Download PDFInfo
- Publication number
- CN113259123A CN113259123A CN202110634783.9A CN202110634783A CN113259123A CN 113259123 A CN113259123 A CN 113259123A CN 202110634783 A CN202110634783 A CN 202110634783A CN 113259123 A CN113259123 A CN 113259123A
- Authority
- CN
- China
- Prior art keywords
- data
- key
- target
- target ciphertext
- access
- 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.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3247—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
- H04L9/3255—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures using group based signatures, e.g. ring or threshold signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- 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/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
-
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/04—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
- H04L63/0428—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/085—Secret sharing or secret splitting, e.g. threshold schemes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2141—Access rights, e.g. capability lists, access control lists, access tables, access matrices
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/50—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Software Systems (AREA)
- Databases & Information Systems (AREA)
- Bioethics (AREA)
- Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Storage Device Security (AREA)
Abstract
本申请实施例中提供一种区块链数据写入、访问方法及装置,用于提高区块链数据存储和访问的安全性,同时可节约系统带宽。所述方法包括:数据所有方以目标密钥对明文数据进行加密处理,得到对应的目标密文数据;通过秘密共享机制将所述目标密钥拆分为至少两个密钥份额;将所述目标密文数据发送给存储节点,以通过所述存储节点保存所述目标密文数据;生成至少两个数据写入请求,其中,每个数据写入请求中包括彼此不同的密钥份额和该密钥份额与所述目标密文数据之间的对应关系;以及,分别将各数据写入请求对应发送给各个共识节点,以通过所述各个共识节点将接收到的数据写入请求中包括的信息进行保存。
Description
技术领域
本申请涉及区块链技术领域,具体涉及一种区块链数据写入、访问方法及装置。
背景技术
区块链是一种利用密码学方法、计算机网络和分布式存储等技术综合实现的复合型技术,区块链提供一种分布式的数据共享模式,具有去中心化(点对点网络通信)、不可篡改、全程留痕、集体维护、公开透明等特点。基于区块链的这些特性,用户可以将数据存储在区块链上,以通过区块链实现对数据的共享。而用户数据一般涉及到用户自身隐私,所以有必要对区块链上存储的数据进行有效保护,以确保数据的安全。
为确保区块链上数据的安全,需要在数据存储、数据访问等过程中进行安全控制,所以,如何提高区块链上数据存储和访问的安全性是需要考虑的问题。
发明内容
本申请实施例中提供了一种区块链数据写入、访问方法及装置,主要用于提高区块链上数据存储和数据访问的安全性。
根据本申请实施例的第一方面,提供一种区块链数据写入方法,所述方法包括:
数据所有方以目标密钥对明文数据进行加密处理,得到对应的目标密文数据;
所述数据所有方通过秘密共享机制将所述目标密钥拆分为至少两个密钥份额;
所述数据所有方将所述目标密文数据发送给存储节点,以通过所述存储节点保存所述目标密文数据;以及
所述数据所有方分别将各数据写入请求对应发送给各个共识节点,以通过所述各个共识节点将接收到的数据写入请求中包括的信息进行保存,其中,每个数据写入请求中包括彼此不同的密钥份额和该密钥份额与所述目标密文数据之间的对应关系。
在一种可能的实现方式中,每个数据写入请求中还包括密钥份额对应的密钥份额签名,在所述数据所有方分别将各数据写入请求对应发送给各个共识节点之前,所述方法还包括:
所述数据所有方生成各个密钥份额对应的密钥份额签名。
在一种可能的实现方式中,所述方法还包括:
所述数据所有方确定所述目标密文数据对应的访问准入条件信息;
所述数据所有方将所述访问准入条件信息分别发送给所述存储节点和所述各个共识节点。
在一种可能的实现方式中,所述访问准入条件信息中包括允许所述数据所有方访问所述目标密文数据的条件信息。
在一种可能的实现方式中,所述数据所有方将所述目标密文数据发送给存储节点,以通过所述存储节点保存所述目标密文数据,包括:
所述数据所有方确定所述目标密文数据对应的数据认证信息,并将所述目标密文数据和所述数据认证信息发送给所述存储节点,以通过所述存储节点保存所述目标密文数据和所述数据认证信息。
根据本申请实施例的第二方面,提供一种区块链数据写入方法,所述方法包括:
各个共识节点分别获得数据所有方发送的数据写入请求;其中,各个数据写入请求中包括彼此不同的密钥份额和该密钥份额与目标密文数据之间的对应关系,各密钥份额是所述数据所有方通过秘密共享机制将目标密钥进行拆分得到的,所述目标密钥是所述数据所有方将明文数据加密为所述目标密文数据的密钥,所述目标密文数据保存在存储节点中;
所述各个共识节点分别保存获得的密钥份额和该密钥份额与所述目标密文数据之间的对应关系。
在一种可能的实现方式中,各个数据写入请求中还包括密钥份额对应的密钥份额签名,所述各个共识节点分别保存获得的密钥份额和该密钥份额与所述目标密文数据之间的对应关系,包括:
所述各个共识节点分别将获得的密钥份额、密钥份额对应的密钥份额签名、密钥份额与所述目标密文数据之间的对应关系进行保存。
在一种可能的实现方式中,各个数据写入请求中还包所述目标密文数据对应的访问准入条件信息,所述各个共识节点分别保存获得的密钥份额和该密钥份额与所述目标密文数据之间的对应关系,包括:
所述各个共识节点分别将获得的密钥份额、密钥份额与目标密文数据之间的对应关系、访问准入条件信息进行保存。
在一种可能的实现方式中,所述访问准入条件信息中包括允许所述数据所有方访问所述目标密文数据的条件信息。
在一种可能的实现方式中,在所述各个共识节点分别保存获得的密钥份额和该密钥份额与所述目标密文数据之间的对应关系之后,所述方法还包括:
所述各个共识节点分别向所述数据所有方发送成功写入指示信息,以用于所述数据所有方在接收到的成功写入指示信息超过预定数量时,确定所述目标密钥成功写入。
在一种可能的实现方式中,所述各个共识节点分别将获得的密钥份额保存在所述各个共识节点的可信执行环境中。
根据本申请实施例的第三方面,提供了一种区块链数据访问方法,所述方法包括:
各个共识节点获得数据访问方发起的数据访问请求,其中,所述数据访问请求中包括用于指示目标密文数据的目标数据标识,所述各个共识节点本地存储有彼此不同的密钥份额和该密钥份额与所述目标密文数据之间的对应关系,各密钥份额是数据所有方通过秘密共享机制将目标密钥进行拆分得到的,所述目标密钥是所述数据所有方将明文数据加密为所述目标密文数据的密钥;
所述各个共识节点中的目标共识节点根据所述目标数据标识和存储的密钥份额与所述目标密文数据之间的对应关系,从本地存储中确定与所述目标密文数据对应的密钥份额,并将确定出的密钥份额发送给所述数据访问方,以用于所述数据访问方根据预定数量且不同的密钥份额确定所述目标密钥并根据所述目标密钥对所述目标密文数据解密。
在一种可能的实现方式中,从本地存储中确定与所述目标密文数据对应的密钥份额,并将确定出的密钥份额发送给所述数据访问方,包括:
所述目标共识节点从本地存储中确定与所述目标密文数据对应的密钥份额和密钥份额签名,并将确定出的密钥份额和密钥份额签名发送给所述数据访问方。
在一种可能的实现方式中,所述数据访问请求中还包括所述数据访问方的待验证权限信息和权限签名,在将确定出的密钥份额发送给所述数据访问方之前,所述方法还包括:
所述目标共识节点根据所述待验证权限信息和所述权限签名确定所述数据访问方的访问权限验证通过;其中,根据所述权限签名对所述待验证权限信息进行有效性验证,并在所述待验证权限信息的有效性验证通过时,根据所述待验证权限信息确定所述数据访问方的访问权限验证通过。
在一种可能的实现方式中,所述目标共识节点根据所述待验证权限信息确定所述数据访问方的访问权限验证通过,包括:
所述目标共识节点将所述待验证权限信息与存储的访问准入条件信息进行匹配,其中,所述访问准入条件信息是由所述数据所有方确定的;
若匹配结果为设定匹配结果,所述目标共识节点确定所述数据访问方的访问权限验证通过。
在一种可能的实现方式中,所述访问准入条件信息中包括允许所述数据所有方访问所述目标密文数据的条件信息。
在一种可能的实现方式中,在所述目标共识节点将确定出的密钥份额发送给所述数据访问方之后,所述方法还包括:
所述各个共识节点获得所述数据访问方发起的数据重传请求,其中,所述数据重传请求中包括所述目标数据标识,所述数据重传请求是所述数据访问方在确定对所述目标密文数据解密失败时重新发起的数据访问请求;
所述各个共识节点分别将本地存储的与所述目标密文数据对应的密钥份额发送给所述数据访问方。
根据本申请实施例的第四方面,提供了一种区块链数据访问方法,所述方法包括:
数据访问方确定第一数据访问请求和第二数据访问请求,所述第一数据访问请求和所述第二数据访问请求中均包括用于指示目标密文数据的目标数据标识;
所述数据访问方将所述第一数据访问请求分别发送给各个共识节点,以及将所述第二数据访问请求发送给存储节点;其中,所述各个共识节点本地存储有彼此不同的密钥份额和该密钥份额与所述目标密文数据之间的对应关系,各密钥份额是数据所有方通过秘密共享机制将目标密钥进行拆分得到的,所述目标密钥是所述数据所有方将明文数据加密为所述目标密文数据的密钥,所述存储节点中存储有所述目标密文数据;
所述数据访问方获得各个目标共识节点分别发送的密钥份额,并根据获得的密钥份额确定所述目标密钥;以及
所述数据访问方获得所述存储节点发送的所述目标密文数据,并根据所述目标密钥对所述目标密文数据进行解密。
在一种可能的实现方式中,所述数据访问方获得各个目标共识节点分别发送的密钥份额,并根据获得的密钥份额确定所述目标密钥,包括:
所述数据访问方获得各个目标共识节点分别发送的密钥份额和对应的密钥份额签名;
所述数据访问方根据各个目标共识节点发送的密钥份额签名对应的密钥份额进行验证,在验证通过确定为有效密钥份额,并根据预定数量且彼此不同的有效密钥份额确定所述目标密钥。
在一种可能的实现方式中,所述数据访问方获得所述存储节点发送的所述目标密文数据,并根据所述目标密钥对所述目标密文数据进行解密,包括:
所述数据访问方获得所述存储节点发送的所述目标密文数据和数据认证信息,其中,所述数据认证信息是用于对所述目标密文数据进行可靠性认证的信息;
所述数据访问方根据所述数据认证信息对所述目标密文数据进行校验,在校验通过时根据所述目标密钥对所述目标密文数据进行解密。
在一种可能的实现方式中,所述第一数据访问请求和所述第二数据访问请求中均还包括所述数据访问方的待验证权限信息和对应的权限签名。
根据本申请实施例的第五方面,提供了一种区块链系统,包括至少两个共识节点,其中:
各个共识节点分别用于获得数据所有方发送的数据写入请求,其中,各个数据写入请求中包括彼此不同的密钥份额和该密钥份额与目标密文数据之间的对应关系,各密钥份额是所述数据所有方通过秘密共享机制将目标密钥进行拆分得到的,所述目标密钥是所述数据所有方将明文数据加密为所述目标密文数据的密钥,所述目标密文数据保存在存储节点中;以及分别保存获得的密钥份额和该密钥份额与所述目标密文数据之间的对应关系。
在一种可能的实现方式中,所述区块链系统还包括存储节点,所述存储节点用于接收所述数据所有方发送的目标密文数据,并保存所述目标密文数据。
根据本申请实施例的第六方面,提供了一种区块链系统,包括至少两个共识节点,其中:
各个共识节点用于获得数据访问方发起的数据访问请求,其中,所述数据访问请求中包括用于指示目标密文数据的目标数据标识,所述各个共识节点本地存储有彼此不同的密钥份额和该密钥份额与所述目标密文数据之间的对应关系,各密钥份额是数据所有方通过秘密共享机制将目标密钥进行拆分得到的,所述目标密钥是所述数据所有方将明文数据加密为所述目标密文数据的密钥;
所述各个共识节点中的目标共识节点用于根据所述目标数据标识和存储的密钥份额与所述目标密文数据之间的对应关系,从本地存储中确定与所述目标密文数据对应的密钥份额,并将确定出的密钥份额发送给所述数据访问方,以用于所述数据访问方根据预定数量且不同的密钥份额确定所述目标密钥并根据所述目标密钥对所述目标密文数据解密。
根据本申请实施例的第七方面,提供了一种区块链数据写入装置,所述装置包括:
加密模块,用于以目标密钥对明文数据进行加密处理,得到对应的目标密文数据,并通过秘密共享机制将所述目标密钥拆分为至少两个密钥份额;
第一发送模块,用于将所述目标密文数据发送给存储节点,以通过所述存储节点保存所述目标密文数据;
第二发送模块,用于分别将各数据写入请求对应发送给各个共识节点,以通过所述各个共识节点将接收到的数据写入请求中包括的信息进行保存,其中,每个数据写入请求中包括彼此不同的密钥份额和该密钥份额与所述目标密文数据之间的对应关系。
在一种可能的实现方式中,每个数据写入请求中还包括该密钥份额对应的密钥份额签名,所述加密模块还用于:
在所述第二发送模块分别将各数据写入请求对应发送给各个共识节点之前,生成各个密钥份额对应的密钥份额签名。
在一种可能的实现方式中,所述装置还包括确定模块,用于确定所述目标密文数据对应的访问准入条件信息;
所述第一发送模块还用于将所述访问准入条件信息发送给所述存储节点,以及所述第二发送模块还用于将所述访问准入条件信息发送给所述各个共识节点。
在一种可能的实现方式中,所述访问准入条件信息中包括允许所述数据所有方访问所述目标密文数据的条件信息。
在一种可能的实现方式中,所述加密模块还用于:确定所述目标密文数据对应的数据认证信息;
所述第一发送模块用于:将所述目标密文数据和所述数据认证信息发送给所述存储节点,以通过所述存储节点保存所述目标密文数据和所述数据认证信息。
根据本申请实施例的第八方面,提供了一种区块链数据写入装置,所述装置配置于各个共识节点中,所述装置包括:
获得模块,用于获得数据所有方发送的数据写入请求;其中,各个数据写入请求中包括彼此不同的密钥份额和该密钥份额与目标密文数据之间的对应关系,各密钥份额是所述数据所有方通过秘密共享机制将目标密钥进行拆分得到的,所述目标密钥是所述数据所有方将明文数据加密为所述目标密文数据的密钥,所述目标密文数据保存在存储节点中;
存储模块,用于保存获得的密钥份额和该密钥份额与所述目标密文数据之间的对应关系。
在一种可能的实现方式中,各个数据写入请求中还包括密钥份额对应的密钥份额签名,所述存储模块用于:
将获得的密钥份额、密钥份额对应的密钥份额签名、密钥份额与所述目标密文数据之间的对应关系进行保存。
在一种可能的实现方式中,各个数据写入请求中还包所述目标密文数据对应的访问准入条件信息,所述存储模块用于:
将获得的密钥份额、密钥份额与目标密文数据之间的对应关系、访问准入条件信息进行保存。
在一种可能的实现方式中,所述访问准入条件信息中包括允许所述数据所有方访问所述目标密文数据的条件信息。
根据本申请实施例的第九方面,提供了一种区块链数据访问装置,所述装置配置于各个共识节点中,所述装置包括:
获得模块,用于获得数据访问方发起的数据访问请求,其中,所述数据访问请求中包括用于指示目标密文数据的目标数据标识,所述各个共识节点本地存储有彼此不同的密钥份额和该密钥份额与所述目标密文数据之间的对应关系,各密钥份额是数据所有方通过秘密共享机制将目标密钥进行拆分得到的,所述目标密钥是所述数据所有方将明文数据加密为所述目标密文数据的密钥;
处理模块,用于根据所述目标数据标识和存储的密钥份额与所述目标密文数据之间的对应关系,从本地存储中确定与所述目标密文数据对应的密钥份额,并将确定出的密钥份额发送给所述数据访问方,以用于所述数据访问方根据预定数量且不同的密钥份额确定所述目标密钥并根据所述目标密钥对所述目标密文数据解密。
在一种可能的实现方式中,所述处理模块用于:
从本地存储中确定与所述目标密文数据对应的密钥份额和密钥份额签名,并将确定出的密钥份额和密钥份额签名发送给所述数据访问方。
在一种可能的实现方式中,所述数据访问请求中还包括所述数据访问方的待验证权限信息和权限签名,所述装置还包括权限验证模块,用于:
在所述处理模块将确定出的密钥份额发送给所述数据访问方之前,根据所述待验证权限信息和所述权限签名确定所述数据访问方的访问权限验证通过;其中,根据所述权限签名对所述待验证权限信息进行有效性验证,并在所述待验证权限信息的有效性验证通过时,根据所述待验证权限信息确定所述数据访问方的访问权限验证通过。
在一种可能的实现方式中,所述权限验证模块用于:
将所述待验证权限信息与存储的访问准入条件信息进行匹配,其中,所述访问准入条件信息是由所述数据所有方确定的;
若匹配结果为设定匹配结果,则确定所述数据访问方的访问权限验证通过。
在一种可能的实现方式中,所述访问准入条件信息中包括允许所述数据所有方访问所述目标密文数据的条件信息。
在一种可能的实现方式中,所述处理模块还用于:
在所述处理模块将确定出的密钥份额发送给所述数据访问方之后,获得所述数据访问方发起的数据重传请求,并将本地存储的与所述目标密文数据对应的密钥份额发送给所述数据访问方,其中,所述数据重传请求中包括所述目标数据标识,所述数据重传请求是所述数据访问方在确定对所述目标密文数据解密失败时重新发起的数据访问请求。
根据本申请实施例的第十方面,提供了一种区块链数据访问装置,所述装置包括:
确定模块,用于确定第一数据访问请求和第二数据访问请求,所述第一数据访问请求和所述第二数据访问请求中均包括用于指示目标密文数据的目标数据标识;
发送模块,用于将所述第一数据访问请求分别发送给各个共识节点,以及将所述第二数据访问请求发送给存储节点;其中,所述各个共识节点本地存储有彼此不同的密钥份额和该密钥份额与所述目标密文数据之间的对应关系,各密钥份额是数据所有方通过秘密共享机制将目标密钥进行拆分得到的,所述目标密钥是所述数据所有方将明文数据加密为所述目标密文数据的密钥,所述存储节点中存储有所述目标密文数据;
处理模块,用于获得各个目标共识节点分别发送的密钥份额,并根据获得的密钥份额确定所述目标密钥;以及获得所述存储节点发送的所述目标密文数据,并根据所述目标密钥对所述目标密文数据进行解密。
在一种可能的实现方式中,所述处理模块用于:
获得各个目标共识节点分别发送的密钥份额和对应的密钥份额签名;
根据各个目标共识节点发送的密钥份额签名对应的密钥份额进行验证,在验证通过确定为有效密钥份额,并根据预定数量且彼此不同的有效密钥份额确定所述目标密钥。
在一种可能的实现方式中,所述处理模块用于:
获得所述存储节点发送的所述目标密文数据和数据认证信息,其中,所述数据认证信息是用于对所述目标密文数据进行可靠性认证的信息;
根据所述数据认证信息对所述目标密文数据进行校验,在校验通过时根据所述目标密钥对所述目标密文数据进行解密。
在一种可能的实现方式中,所述第一数据访问请求和所述第二数据访问请求中均还包括所述数据访问方的待验证权限信息和对应的权限签名。
根据本申请实施例的第十一方面,提供了一种计算机存储介质,所述计算机存储介质中存储有计算机可读程序,所述计算机可读程序用于执行根据上述的第一方面中描述的方法。
根据本申请实施例的第十二方面,提供了一种计算机存储介质,所述计算机存储介质中存储有计算机可读程序,所述计算机可读程序用于执行根据上述的第二方面中描述的方法。
根据本申请实施例的第十三方面,提供了一种计算机存储介质,所述计算机存储介质中存储有计算机可读程序,所述计算机可读程序用于执行根据上述的第三方面中描述的方法。
根据本申请实施例的第十四方面,提供了一种计算机存储介质,所述计算机存储介质中存储有计算机可读程序,所述计算机可读程序用于执行根据上述的第四方面中描述的方法。
根据本申请实施例的第十五方面,提供了一种计算机程序产品,该计算机程序产品对用于执行一种过程的指令进行编码,该过程包括上述的第一方面中描述的方法。
根据本申请实施例的第十六方面,提供了一种计算机程序产品,该计算机程序产品对用于执行一种过程的指令进行编码,该过程包括上述的第二方面中描的方法。
根据本申请实施例的第十七方面,提供了一种计算机程序产品,该计算机程序产品对用于执行一种过程的指令进行编码,该过程包括上述的第三方面中描的方法。
根据本申请实施例的第十八方面,提供了一种计算机程序产品,该计算机程序产品对用于执行一种过程的指令进行编码,该过程包括上述的第四方面中描的方法。
本申请实施例中,数据访问方将用于加密得到目标密文数据的目标密钥采用秘密共享机制拆分为若干个相互独立的密钥份额,再将密钥份额分布式地存储在区块链系统中的各个共识节点中,这样,即使个别密钥份额被恶意窃取或者篡改,基于秘密共享的特性,由于无法获得足够数量有效的密钥份额所以也无法恢复出目标密钥,提高了目标密钥的安全性,从而也就提升了对目标密文数据的安全保护。同时,将目标密文数据存储在存储节点中,以及将目标密文数据对应的密钥份额存储在区块链系统中,通过将目标密文数据与对应的密钥份额分离存储的方式,解耦了目标密文数据和密钥份额之间的关联存储,这样可尽量分别保证目标密文数据和密钥份额的存储安全,提高两者的安全性。
进而,数据访问方在访问区块链上的密钥份额时,在通过分散的多个密钥份额对目标密文数据进行有效保护的基础上,也可确保数据访问方能够通过一定数量的密钥份额恢复出正确的目标密钥,从而实现对目标密文数据的有效、安全的访问,提高了对区块链上存储数据访问的安全性,同时,数据访问方可另外从存储节点处获得目标密文数据,这样可尽量确保目标密文数据的安全,并且这样无需由区块链系统中的各个共识节点发送目标密文数据本身,可较大程度上降低区块链系统的数据传输量,进而减少系统带宽的占用,提高系统带宽的利用率。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本申请实施例适用的一种应用场景的示意图;
图2为本申请实施例中的区块链数据写入方法的流程示意图;
图3为本申请实施例中的区块链数据访问方法的流程示意图;
图4为本申请实施例中的数据所有方存储数据的过程示意图;
图5为本申请实施例中的数据访问方读取数据的过程示意图;
图6为本申请实施例中的区块链数据写入装置的结构框图;
图7为本申请实施例中的另一区块链数据写入装置的结构框图;
图8为本申请实施例中的区块链数据访问装置的结构框图;
图9为本申请实施例中的另一区块链数据访问装置的结构框图。
具体实施方式
为了使本申请实施例中的技术方案及优点更加清楚明白,以下结合附图对本申请的示例性实施例进行进一步详细的说明,显然,所描述的实施例仅是本申请的一部分实施例,而不是所有实施例的穷举。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
本申请实施例的技术方案可应用于区块链系统中,通过该技术方案,在向区块链系统写入数据以及对区块链上的数据进行访问时可进行一定程度的安全控制,进而可提高区块链上数据的安全性。
为更好地理解本申请实施例提供的技术方案,下面对本申请实施例提供的技术方案适用的应用场景做一些简单介绍,需要说明的是,以下介绍的应用场景仅用于说明本申请实施例而非限定。在具体实施时,可以根据实际需要灵活地应用本申请实施例提供的技术方案。
请参见图1所示,图1为本申请实施例的技术方案适用的一种应用场景,其中包括数据所有方、区块链系统、数据访问方和存储节点,数据所有方和数据访问方可以是客户端、终端设备,也可以是可信认证中心或共识协议上层程序等。数据所有方和数据访问方均可与区块链系统、存储节点处进行通信,数据所有方可预先将加密得到密文数据的密钥采用秘密共享技术拆分为多个密钥份额,再将希望存储的密文数据发送给存储节点以通过存储节点来保存密文数据,以及将密文数据对应的各个密钥份额发送给区块链系统中的各个共识节点以实现密钥的上链存储,如此,可将密文数据和对应的密钥份额通过区块链系统和存储节点分开保存,通过这种分离存储的方式可尽量保证密文数据和密钥份额的安全性。
数据访问方希望获得密文数据对应的明文数据时,可以向存储节点请求密文数据以获得存储节点发送的密文数据,同时向区块链系统请求密文数据对应的密钥份额以获得区块链系统中的各个共识节点分别发送的密钥份额,再根据接收到的密钥份额通过秘密共享技术恢复出密文数据对应的密钥,再利用恢复出的密钥对密文数据进行解密,从而获得对应的明文数据。
图1中的区块链系统可以理解为是区块链网络,该区块链网络是一个对等通信的网络,区块链系统中包括多个可互相通信的区块链节点,区块链节点可以是例如服务器等物理节点,或者可以是逻辑节点,本申请实施例不做限制。区块链系统中的多个区块链节点可以组成共识网络,而构成共识网络的各个区块链节点又可称作共识节点,共识网络可采用特定的共识算法对信息进行共识处理以达成共识。区块链系统具有去中心化、不可篡改、全程留痕、集体维护、公开透明等特点,随着区块链技术的发展,其在各种领域的应用越来越广泛。而在实际应用中,对于涉及一些业务场景的数据需要进行安全保护,以保证用户的利益。
图1中区块链系统中的各个节点可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(ContentDelivery Network,CDN)、以及大数据和人工智能平台等基础云计算服务的云服务器,本申请实施例不做限制。
图1中的存储节点可以是云服务器,或者可以是第三方可信任的存储机构,或者可以是区块链系统中独立于共识系统的其它具备存储功能的区块链节点,等等。
为便于理解,以下先结合图2对数据存储的过程进行说明,图2为本申请实施例提供的区块链数据写入方法的流程示意图,图2中的区块链系统可包括多个区块链节点,这些区块链节点可组成共识网络,故可将这些区块链节点称作共识节点,为简化图示,在图2中只示出了共识节点1和共识节点n这两个共识节点,可理解的是,该区块链系统可包括更多的共识节点,例如包括n个共识节点,n为大于或等于2的整数。图2所示的流程描述如下。
S201:数据所有方以目标密钥对明文数据进行加密处理,得到对应的目标密文数据。
例如,数据所有方需要将某条交易数据上链存储,为了确保该交易数据的安全,在上链之前可对该交易数据进行加密处理,本申请实施例中可采用对称加密算法对该交易数据进行对称加密处理,可以将该交易数据理解为是上述的明文数据,将加密用的密钥理解为上述的目标密钥,以及将加密处理得到的加密数据理理解为上述的目标密文数据。
其中,数据所有方可以是任一经授权客户、可信认证中心或共识协议上层程序,本申请实施例不做限制。
S202:数据所有方通过秘密共享机制将目标密钥拆分为至少两个密钥份额。
也就是说,可以将目标密钥拆分为多个密钥份额,即将目标密钥按照特定的算法进行割裂处理,而拆分得到的各个密钥份额均是不同的。
在本申请实施例中,采用了秘密共享技术来实现对目标密钥的拆分,以下对秘密共享技术进行简单介绍。
秘密共享技术的思想是将秘密以适当的方式拆分,拆分后得到的每一个份额可由不同的参与者管理,单个参与者无法恢复秘密信息,只有若干个参与者一同协作才能恢复秘密信息。更重要的是,当其中任何相应范围内参与者出现问题时,秘密仍可以完整恢复。秘密共享是一种将秘密分割存储的密码技术,目的是阻止秘密过于集中,以达到分散风险和容忍入侵的目的,是信息安全和数据保密中的重要手段。秘密共享中有两个参数,例如以t,n表示这两个参数,则可以称作(t,n)秘密共享,其中的n表示将秘密拆分成的份额的数量,t表示至少要得到t个份额才可恢复出秘密,而任意少于t个份额是无法得到秘密的任何相关信息。具体理解如下:
假设将秘密secret拆分为n 个份额的秘密份额,那么通过任意t(2≤t≤n)个或更多个秘密份额就可以恢复得到秘密secret,而任意少于t个的一个或多个秘密份额是不能得到关于秘密secret的任何有用信息的。
在实际中,根据t和n的选择,可权衡安全性和可靠性。一般来说,t值越大,可提供高安全性和低可靠性;t值越低,可提供低安全性和高可靠性。
根据上面介绍的秘密共享技术,例如将目标密钥拆分为了对应的n(n为大于或等于2的整数)个密钥份额,拆分得到的n个密钥份额例如是:K1、K2、 K3、……、Kn。
本申请实施例中,数据所有方采用秘密共享机制将目标密钥拆成密钥份额的数量可以根据区块链系统中的共识网络中所包括的共识节点的数量来确定,例如,可确定密钥份额的数量与共识节点的数量相同,即有多少个共识节点即得到多少个密钥份额,又例如,可确定密钥份额的数量略多于共识节点的数量,这里所说的“略多于”是指多于共识节点数量的设定值,设定值例如是1或者2或者3等较小的整数,这里的设定值也与秘密共享技术中的t值有关,这样可确保各个共识节点均能获得一个密钥份额且获得的密钥份额彼此之间是不同的,但是又能确保从共识节点中获得足够数量且相互不同的密钥份额以准确地恢复出目标密钥。
举例来说,区块链系统中的共识网络包括20个共识节点,那么数据所有方可将目标密钥拆分成20个密钥份额,这样可以将这20个密钥份额分别对应发送给各个共识节点,后续可尽量从各个共识节点处获得这20个密钥份额,即使其中有个别共识节点失效,也可得到足够多的密钥份额而恢复出目标密钥,以实现对目标密文数据的准确解密。
又例如,区块链系统中的共识网络包括20个共识节点,那么数据所有方可将目标密钥拆分成21个密钥份额,这样可以将得到的密钥份额中的20个密钥分别发送给各个共识节点,后续可从各个共识节点处获得这20个密钥份额,即使未能获得全部密钥(全部密钥是21个),以及即使其中有个别共识节点失效而无法正确获得该共识节点所保管的密钥份额,也可得到足够多的密钥份额而恢复出目标密钥,以实现对目标密文数据的准确解密。
S203:数据所有方对每个密钥份额进行签名处理,得到每个密钥份额对应的密钥份额签名。
对密钥份额进行签名处理的方式可以采用一些通用的签名方式,例如可以先对密钥份额采用哈希算法计算数字摘要,然后采用非对称密钥中的私钥对该数字摘要进行加密,加密后的数字摘要就是该密钥份额的签名,称作密钥份额签名。例如,密钥份额K1、K2、K3、……、Kn对应的密钥份额签名分别以Sig1、Sig2、Sig3、……、Sign表示。
S204:数据所有方确定目标密文数据对应的访问准入条件信息。
其中,访问准入条件信息是用于对目标密文数据进行访问控制的筛选条件信息,在具体实施过程中,访问准入条件信息可以是ACL(Access Control List,访问控制列表),例如可以是数据所有方指定的允许或者不允许访问目标密文数据的用户标识、客户端标识、设备标识等黑名单或白名单,或者,访问准入条件信息也可以是特定的访问控制条件,可以理解为是数据所有方设定的允许或者不允许访问目标密文数据的限制条件,例如:允许35岁~50岁的女性访问目标密文数据,其中的“35岁~50岁的女性”即可理解为是访问控制条件,或者,不允许年龄小于20岁或者年龄大于65岁的人群访问目标密文数据,其中的“年龄小于20岁或者年龄大于65岁的人群”即可理解为是访问控制条件。
在实际中,用户可能会丢失自身加密获得的加密数据或者忘记自己加密数据的加密密钥,例如上述的目标密文数据,数据所有方在本地利用目标密钥对明文数据进行加密得到目标密文数据之后,可能会将目标密文数据丢失(例如误删或者被窃取)或者忘记了目标密钥,例如在丢失了目标密文数据后但又想要再获得对应的明文数据,此时即使知晓目标密钥也无法执行解密操作,又例如在忘记了目标密钥却又想要获得明文数据或者希望为目标密文数据重置密钥时,由于没有加密用的目标密钥所以也就无法执行这些操作,可见,不便于用户对加密数据进行管理。鉴于此,本申请实施例中,数据所有方在设置针对目标密文数据的访问准入条件信息时可以允许数据所有方自身也能够访问,为此,可以在访问准入条件信息中设置允许该数据所有方访问目标密文数据的条件信息,例如可以将数据所有方的用户标识等身份信息添加到访问准入条件信息中,这样,在将目标密钥对应的多个密钥份额上链存储到区块链系统后,数据所有方可作为访问者再向区块链系统请求获得多个密钥份额,以及可向存储节点请求目标密文数据,进而利用根据多个密钥份额恢复出的目标密钥对目标密文数据进行解密以得到对应的明文数据,或者可以根据恢复出的目标密钥对目标密文数据进行密钥重置处理,从而,可方便数据所有方自身对目标密文数据进行链上访问和二次管理等。
S205:数据所有方根据共识节点的数量生成数据写入请求。
具体来说,有多少个共识节点即可生成相同数量的数据写入请求,即数据写入请求的数量与共识节点的数量是相同的。如前介绍的,密钥份额的数量可能是等于或者大于共识节点的总数量的,考虑到实际情形,当密钥份额的数量与共识节点的总数量相同,例如都为20个,那么可使用全部的密钥份额来生成对应相同数量的数据写入请求,这样生成的20个数据写入请求中均包括一个密钥份额,且这20个数据写入请求中分别包括的密钥份额是彼此不同的;当密钥份额的数量大于共识节点的总数量,例如密钥份额是21个且共识节点的总数量是20个,那么可使用部分的密钥份额(即使用其中的随机的20个密钥份额)来对应生成20个数据写入请求,这样生成的20个数据写入请求中均包括一个密钥份额,且这20个数据写入请求中分别包括的密钥份额是彼此不同的。也就是说,数据所有方可生成与共识节点的总数量相同的数据写入请求,且各个数据写入请求中所携带的密钥份额是彼此不同的。
每个数据写入请求中除了上述提到的密钥份额,还包括密钥份额与目标密文数据之间的对应关系,具体来说包括的是该数据写入请求中携带的密钥份额与目标密文数据之间的对应关系,例如某个数据写入请求中携带的是第一密钥份额,那么该数据写入请求中则还携带第一密钥份额与目标密文数据之间的对应关系,又例如另一个数据写入请求中携带的是第二密钥份额,那么该数据写入请求中则还携带第二密钥份额与目标密文数据之间的对应关系。通过密钥份额与目标密文数据之间的对应关系,可确定该密钥份额到底是哪个密文数据对应的密钥份额,进而可明确密钥份额与密文数据之间的关联关系,以便能够准确地知晓各个密钥份额具体是哪个密文数据对应的密钥份额。在具体实施过程中,密钥份额与目标密文数据之间的对应关系,例如可以是密钥份额与目标密文数据的目标数据标识之间的对应关系,其中的目标数据标识是能够用于唯一指示目标密文数据的标识信息。
此外,各个数据写入请求中除了上述的密钥份额和该密钥份额与目标密文数据之间的对应关系之外,还可包括访问准入条件信息和/或密钥份额签名,可理解的是,每个数据写入请求中所包括的密钥份额、密钥份额签名、密钥份额与目标密文数据之间的对应关系是不同的。
另外需要说明的是,上述S203和S204可以是可选的步骤,所以在图2中是以虚线表示的。也就是说,在具体实施过程中可能会执行S203和/或S204,也可能并不会执行S203和/或S204。那么对应的,若未执行S203,那么数据所有方生成的数据写入请求中也就并不包含密钥份额签名,以及,若未执行S204,那么数据所有方生成的数据写入请求中也就并不包含访问准入条件信息,在实施时可灵活选择S203和S204的实施,进而对数据写入请求中所包括的信息进行灵活配置,本申请实施例并不做限制。
S206:数据所有方将各个数据写入请求发送给各个共识节点,对应的,各个共识节点分别获得数据所有方发送的数据写入请求。
如前所述的,数据所有方生成的数据写入请求的数量与共识节点的总数量是相同的,这样,数据所有方可将每个数据写入请求发送给不同的共识节点,如此,每个共识节点获得的是不同的密钥份额,这样可以将目标密钥对应的各个密钥份额分布式地存储在区块链系统中的不同节点中,以实现对密钥份额的分布式存储,这样,即使有个别共识节点已经被敌手控制(例如被恶意者攻击),但是该共识节点由于无法获得足够多的(例如前述的t个)密钥份额也是无法恢复出目标密钥的,所以这样可以较大程度上确保目标密钥的安全性。
继续前述例子,由于有n个密钥份额K1、K2、 K3、……、Kn,如图2中所示的,例如生成的对应的数据写入请求为数据写入请求1、数据写入请求2、数据写入请求3、……、数据写入请求n,并将这n个数据写入请求分别发送给共识节点1、共识节点2、共识节点3、……、共识节点n。需要说明的是,为了简化图示,图2中仅示出了共识节点1和共识节点n,其它的共识节点以“……”替代表示。
继续参见图2所示,数据所有方将各个数据写入请求对应发送给各个共识节点的步骤具体可以包括S206a、S206n等步骤。其中,S206a是数据所有方将携带密钥份额1和密钥份额1与目标密文数据之间的对应关系的数据写入请求1发送给共识节点1,S206n是数据所有方将携带密钥份额n和密钥份额n与目标密文数据之间的对应关系的数据写入请求n发送给共识节点n。需要说明的是,为了简化图示,图2中仅仅是以共识节点1、共识节点n进行举例说明,所以图2中仅示出了共识节点1和共识节点n,其它的共识节点以“……”替代表示,在具体实施过程中,还可以包括其它更多的共识节点,对应的,数据所有方还可以向其它的共识节点发送携带其它密钥份额和该其它密钥份额与目标密文数据之间的对应关系的不同数据写入请求。
S207:各个共识节点分别保存获得的密钥份额和该密钥份额与目标密文数据之间的对应关系。
如前所述的,数据写入请求中还可能包括密钥份额签名和/或目标密文数据对应的访问准入条件信息,所以,当数据写入请求中还包括这些信息时,各个共识节点可以一并将这些信息连同密钥份额、密钥份额和目标密文数据之间的对应关系保存在本地。从而,实现多个密钥份额的上链存储,并且由于各个密钥份额是分别保存在不同的共识节点中的,以此可实现对若干密钥份额的分离存储,这样即使个别(或者少量)的密钥份额泄露,也无法通过泄露的密钥份额恢复出目标密钥,所以这样可以提高目标密钥的安全性。
在一种可能的实施方式中,对于各个数据写入请求中所包括的访问准入条件信息,基于区块链系统去中心化的特性,可先对该访问准入条件信息进行共识处理,以确保各个共识节点最终存储的目访问准入条件信息都是准确、唯一且有效的,即确保各个共识节点最终存储的访问准入条件信息是一份相同的正确数据。进一步地,在对访问准入条件信息达成共识之后,各个共识节点再分别将其保存在本地。
区块链系统中的各个共识节点可以组成一个共识网络,在具体实施过程中,该共识网络可采用预定共识算法对访问准入条件信息进行共识处理以达成对访问准入条件信息的共识,需要说明的是,共识网络对访问准入条件信息进行共识处理,即是各个共识节点联合对访问准入条件信息进行共识处理。其中的预定共识算法可以是目前通用的共识算法,例如工作量证明(Proof of Work,Pow)算法、股权证明(Proof of Stake,PoS)算法、委任权益证明(Delegated Proof of Stake,DPoS)、实用拜占庭容错(Practical ByzantineFault Tolerance,PBFT)算法等。
例如,若数据写入请求中还包括密钥份额签名,则各个共识节点可分别将获得的密钥份额、对应的密钥份额签名、该密钥份额与目标密文数据之间的对应关系保存在各个共识节点本地,即将这些数据本地存储。
又例如,若数据写入请求中还包括访问准入条件信息,则各个共识节点在确定对访问准入条件信息达成共识之后,可分别将获得的密钥份额、该密钥份额与目标密文数据之间的对应关系、访问准入条件信息保存在各个共识节点本地,即将这些数据本地存储。
再例如,若数据写入请求中还同时包括密钥份额签名和访问准入条件信息,则各个共识节点在确定对访问准入条件信息均达成共识之后,可分别将获得的访问准入条件信息、密钥份额、对应的密钥份额签名、密钥份额与目标密文数据之间的对应关系保存在各个共识节点本地,即将这些数据本地存储。
在具体实施过程中,各个共识节点在保存密钥份额时,可将密钥份额保存在各个共识节点的可信执行环境(Trusted Execution Environment,TEE)中,以尽量提高密钥份额的安全性。以及,各个共识节点还可将目标密文数据对应的数据认证信息和密钥份额均保存在各自的TEE中,以尽量提高存储安全性。
具体来说,为了尽量保证密钥份额的安全,为此,各个共识节点在存储密钥份额时可将其保存在该共识节点的可信执行环境中。以一个共识节点(例如是共识节点A)为例,共识节点A可以将密钥份额、该密钥份额对应的密钥份额签名保存在第一存储区域中,而将访问准入条件信息、密钥份额与目标密文数据之间的对应关系保存在第二存储区域中,其中的第二存储区域是常规的内存区域,而第一存储区域是位于TEE中的,这样可以更进一步地保证密钥份额的安全性。
其中,TEE是基于 CPU 硬件的安全扩展,且与外部完全隔离的可信执行环境。TEE最早是由Global Platform提出的概念,用于解决移动设备上资源的安全隔离,平行于操作系统为应用程序提供可信安全的执行环境。而伴随着互联网的高速发展,安全的需求越来越高,不仅限于移动设备,云端设备,数据中心都对TEE提出了更多的需求,TEE的概念为此也得到了高速的发展和扩充。现在所说的TEE相比与最初提出的概念已经是更加广义的TEE,例如,服务器芯片厂商Intel,AMD等都先后推出了硬件辅助的TEE并丰富了TEE的概念和特性,在工业界得到了广泛的认可。
以Intel SGX技术为例,SGX提供了内存中一个加密的可信执行区域,由 CPU 保护数据不被窃取。以上述的共识节点A采用支持SGX的CPU为例,利用新增的处理器指令,在共识节点A的内存中可以分配一部分区域作为围圈页面缓存或飞地页面缓存(Enclave PageCache,EPC),通过 CPU 内的加密引擎 MEE(Memory Encryption Engine)对EPC的数据进行加密,EPC 中加密的内容只有进入 CPU 后才会被解密,所以,可以将密钥份额存储在该区域中。在SGX 中,用户可以不信任操作系统、虚拟机监控器(Virtual Machine Monitor,VMM)、甚至基本输入输出系统(Basic Input Output System,BIOS),只需要信任 CPU 便能确保隐私数据不会泄漏,所以,通过将密钥份额保存在EPC中的方式可确保密钥份额足够的安全性,密钥份额被泄露的可能性很小。
S208:各个共识节点分别向数据所有方发送成功写入指示信息,对应的,数据所有方接收各个共识点发送的成功写入指示信息。
各个共识节点在将数据所有方发送的数据写入请求中的信息保存在本地之后,可以分别向数据所有方发送成功写入指示信息,成功写入指示信息用于指示数据写入请求中对应需写入的数据已经成功存入了各个共识节点。
在实施时,各个共识节点向数据所有方发送的成功写入指示信息可以是相同,即发送的格式和内容均可以是相同的,或者也可以是不同的,在图2中是以发送的相同的成功写入指示信息为例进行图示说明的。
S209:数据所有方确定成功写入指示信息超过预定数量时,则确定目标密钥已成功写入。
在实际中,由于区块链系统中的个别共识节点可能已经被恶意攻击或者发生故障等,那么这些共识节点可能并不能成功地向数据所有方发送成功写入指示信息,但是一般来说,正常运行的共识节点是大多数,也就是说,数据所有方收到的成功写入指示信息的数量可能是等于或者少于共识节点的数量的。为此,数据所有方即使未能收到全部共识节点发送的写入成功指示信息,也可以通过预定数量(例如称作第一预定数量)的成功写入指示信息来确定区块链系统中已经成功保存了第一预定数量的密钥份额,而通过第一预定数量的密钥份额是可以准确的恢复出目标密钥的,所以即可确定目标密钥已成功写入了区块链系统,即当接收到的成功写入指示信息超过第一预定数量时则可认为目标密钥已成功存储到了区块链系统中。这里的第一预定数量与前面介绍的(t,n)秘密共享机制中的t的取值有关,第一预定数量可以是等于或者大于t且小于或等于n的任何整数,这样是确保已经被准确保存的密钥份额的数量是足够后续用来恢复目标密钥的。或者,例如整个共识系统中包括n个共识节点,而假设整个共识系统中已经被敌手控制的节点数最多为f个,那么t的取值可以是f+1≤t≤n-f,即,t的取值可根据共识系统中假定的失效节点的数量确定。
S210:数据所有方将目标密文数据发送给存储节点,对应的,存储节点可以接收数据所有方发送的目标密文数据。
S211:存储节点保存获得的目标密文数据。
本申请实施例中的存储节点可以是可信任的存储中心,例如云服务器,或者是第三方存储机构,或者可以是区块链系统中独立于共识系统(即不同于各个共识节点)的其它具备存储功能的区块链节点,或者是数据所有方授权的存储系统,等等。如此,将目标密文数据存储在存储节点中,以及将目标密文数据对应的密钥份额存储在区块链系统中,通过将目标密文数据与对应的密钥份额分离存储的方式,解耦了目标密文数据和密钥份额之间的关联存储,这样可尽量分别保证目标密文数据和密钥份额的存储安全,提高两者的安全性。
为进一步的提高目标密文数据的安全性,可确定目标密文数据对应的数据认证信息,该数据认证信息是用于对目标密文数据进行可靠性认证的信息,这样后续可通过该数据认证信息对目标密文数据进行可靠性验证,从而可通过该数据认证信息来确定目标密文数据的完整性和有效性。为此,在一种实施方式中,可由数据所有方确定目标密文数据对应的数据认证信息,例如可根据目标密钥和预定的认证加密算法对目标密文数据进行认证加密处理,以得到其对应的数据认证信息,或者直接用散列算法(例如 MD2、MD4、MD5 和 SHA-1)计算得到目标密文数据的摘要信息,可将得到的摘要信息称作该目标密文数据对应的数据认证信息)。进一步地,再将数据认证信息和目标密文数据一并发送给存储节点,而发送的方式可以是将两者封装为一条信息后发送给存储节点,或者也可以是作为两条信息关联发送;在另一种实施方式中,存储节点在接收到数据所有方发送的目标密文数据之后,可由存储节点计算得到目标密文数据对应的数据认证信息,例如采用前述介绍的计算摘要的方式得到其对应的数据认证信息,再将目标密文数据和对应的数据认证信息保存在本地,而保存的方式可以是先将两者封装为一条信息后保存,或者也可以是将两者分开的关联保存。
需要说明的是,图2中的有些步骤可以并不按照上述介绍的先后顺序执行,即上述流程介绍的各个步骤的执行顺序只是一种可能的实施顺序,例如,也可先执行S210后再执行S206,或者S210和S206可并行执行等等,也就是说,数据所有方向存储节点发送目标密文数据和数据所有方向共识系统发送数据写入请求的执行顺序可以是任意的,本申请实施例对此不作限制。
本申请实施例中的区块链数据写入方案中,由于采用了秘密共享机制将目标密钥进行了拆分处理并分布式存储在了区块链系统中的多个共识节点中,可以提高目标密钥的安全性,这样,即使某些区块链节点由于已经被恶意攻击或者出现硬件故障等原因失效或不安全时,攻击者也难以获得一定数量(例如前述介绍的t)的密钥份额来恢复目标密钥,进一步地保证了目标密文数据的安全性,从而提高了数据上链存储的安全性。同时,通过将目标密文数据和密钥份额分别存储在存储节点和区块链系统,将目标密文数据存储在存储节点中,以及将目标密文数据对应的密钥份额存储在区块链系统中,通过将目标密文数据与对应的密钥份额分离存储的方式,解耦了目标密文数据和密钥份额之间的关联存储,这样可尽量分别保证目标密文数据和密钥份额的存储安全,提高两者的安全性。
上面通过图2介绍了数据所有方将目标密文数据和各个密钥份额存储的过程,基于该存储数据的过程,以下再通过图3对数据访问方访问目标密文数据的流程进行介绍,与图2类似的,图3还是仅以共识节点1、共识节点n这两个共识节点举例。图3为本申请实施例中的区块链数据访问方法的流程示意图,图3所示的流程描述如下。
S301:数据访问方向各个共识节点发起第一数据访问请求,对应的,各个共识节点获得数据访问方发起的第一数据访问请求。
当数据访问方希望读取区块链上的数据时,可以向区块链系统发送请求。其中的第一数据访问请求中携带有目标数据标识,该目标数据标识是用于唯一指示目标密文数据的标识信息,例如可以是目标密文数据的编号或者序号等排序信息,或者可以是指示目标密文数据的数据所有方何时存储的相关指示信息等。也就是说,通过目标数据标识可确定出对应的目标密文数据。
基于前述对区块链数据写入方法的介绍可知,区块链系统中的各个共识节点本地存储有目标密文数据对应且彼此不同的密钥份额,其中的目标密文数据是数据所有方例如通过对称加密算法以目标密钥对明文数据进行加密得到的密文数据,而各个共识节点中存储的密钥份额是数据所有方通过秘密共享机制将目标密钥进行拆分得到的,且各个共识节点中存储的密钥份额是相互彼此不同的,并且,各个共识节点中还存储有本地保存的密钥份额与目标密文数据之间的对应关系,进而可通过目标数据标识和密钥份额与目标密文数据之间的对应关系从本地存储中确定出目标数据标识所对应的密钥份额。
为了获取到目标密文数据对应的足够多的密钥份额,数据访问方向区块链系统发起数据访问请求,可以是指向各个共识节点发起数据访问请求,在具体实施过程中,各个共识节点可以通过以下任一种方式获得数据访问方发起的数据访问请求。
方式1,数据访问方生成携带有目标数据标识的第一数据访问请求,并且将该第一数据访问请求分别发送给各个共识节点,这样,各个共识节点可直接从数据访问方处接收到第一数据访问请求。
方式2,数据访问方生成携带有目标数据标识的第一数据访问请求,并且将该第一数据访问请求发送给共识网络中的某个共识节点,再由该共识节点扩散(例如广播)至共识网络中的其它共识节点,这样,各个共识节点也可获得第一数据访问请求。其中,从数据访问方处直接接收第一数据访问请求的共识节点可以是共识网络中的任一个共识节点,可以是预先指定的或者也可以是数据访问方随机选择的,例如对于采用POW、POS、DPOS等争夺记账权性质的共识算法的共识网络,数据访问方可随机选择其中的一个共识节点作为直接从数据访问方处接收第一数据访问请求的共识节点,而对于采用PBFT等非争夺记账权性质的共识算法的共识网络,数据访问方可将其中的记账节点(预先商定好的)确定为直接从数据访问方处接收第一数据访问请求的共识节点。
第一数据访问请求中携带有目标数据标识,此外,还可以携带数据访问方的待验证权限信息,或者还可以包括数据访问方的待验证权限信息和该待验证权限信息对应的权限签名。其中的待验证权限信息是用于对数据访问方是否具有读取目标密文数据的权限进行验证的信息,而权限签名是用于对待验证权限信息进行有效性验证的签名信息。
其中,数据访问方可以是任一经授权客户、可信认证中心或共识协议上层程序,本申请实施例不做限制。
S302:各个共识节点根据待验证权限信息和权限签名确定数据访问方的访问权限验证通过。
在具体实施过程中,各个共识节点可各自独立的根据待验证权限信息和权限签名对数据访问方的访问权限进行验证,以得到数据访问方的访问权限验证结果。具体地,各个共识节点先根据权限签名对待验证权限信息进行有效性验证,并在待验证权限信息的有效性验证通过时再根据待验证权限信息来验证数据访问方的访问权限,例如,可将待验证权限信息与数据所有方预先上链存储在区块链系统中的访问准入条件信息进行匹配比较,在匹配结果为设定匹配结果时则可确定数据访问方的访问权限验证通过。其中的访问准入条件信息,如前所述的,访问准入条件信息可以是数据所有方指定的允许或者不允许访问目标密文数据的用户标识、客户端标识、设备标识等黑名单或白名单,或者,访问准入条件信息也可以是允许或者不允许访问目标密文数据的限制条件。各个共识节点各自在本地独立地对数据访问方进行访问权限验证,各个共识节点对数据访问方的访问权限验证可并行进行,这样可以在一定程度上加快整个区块链系统对数据访问方的权限验证过程,并且各个共识节点独立验证的方式可尽量减少对链上公共资源的占用。
在另一种实施方式中,各个共识节点还可联合对待验证权限信息和权限签名进行共识处理,并在达成共识时确定数据访问方的访问权限验证通过。具体来说,共识网络通过运行共识算法可确定出具有记账权的共识节点,再由具有记账权的共识节点采用上述共识节点独立的根据根据待验证权限信息和权限签名对数据访问方的访问权限进行验证的方式确定数据访问方是否具有访问权限,再将确定结果扩散给其它共识节点。所有共识节点通过共识方式对访问权限进行验证的方式,充分利用了区块链网络的共识特性,这样可确保各个共识节点对最终验证结果认知的一致性,在具体实施过程中,可采用不同的共识算法进行至少两轮共识验证,以确保共识验证结果的准确性。
其中的访问准入条件信息,如前所述的,访问准入条件信息可以是数据所有方指定的允许或者不允许访问目标密文数据的用户标识、客户端标识、设备标识等黑名单或白名单,或者,访问准入条件信息也可以是允许或者不允许访问目标密文数据的限制条件。
本申请实施例中,通过权限签名和待验证权限信息对数据访问方的访问权限进行验证,可实现对访问者的访问控制,这样可以尽量提高数据访问的安全性和有效性,同时也保证链上数据的安全性。
在实际中,数据访问方可以是图2对应实施例中介绍的数据所有方,也就是说,数据访问方可以对自己之前上链存储到区块链系统中的加密数据请求访问,例如在数据访问方忘记了之前上链存储的加密数据的密钥时则可采用该方式再次获得目标密文数据和目标密钥,以此可重新获得加密数据对应的明文数据,进而可实现对数据的再次管理。在这种情形下,数据所有方(此时也为数据访问方)预先上链存储的访问准入条件信息中可包括允许数据访问方访问目标密文数据的相关信息,例如数据访问方的用户标识等,这样在进行匹配比较时则可确保数据访问方能够通过权限认证,进而从区块链上获得目标密文数据和多个密钥份额。
在具体实施时,S302是可选的步骤,所以在图3中是以虚线框表示的。
S303:从各个共识节点中确定目标共识节点。
本申请实施例中的目标共识节点是需要向数据访问方发送密钥份额的共识节点。因为基于(t,n)秘密共享机制可知,可无需全部密钥份额也可恢复出目标密钥,所以可通过部分共识节点向数据所有方发送一定数量的密钥份额,这样可减少系统中的数据传输量,同时数据所有方也可通过一定数量的密钥份额准确的恢复出目标密钥,为此,本申请实施例中可通过确定出的目标共识节点向数据所有方分别发送各自本地存储的密钥份额。可理解的是,目标共识节点可以是部分的共识节点,当然,也可以是全部的共识节点。
一种实施方式中,目标共识节点是各个共识节点中预先确定的共识节点,例如各个共识节点可以预先约定一些共识节点作为目标共识节点,或者用户可以预先从中选择一些共识节点作为目标共识节点。这样,当各个共识节点(包括目标共识节点)收到数据访问方的数据访问请求后,即可将预先确定的共识节点作为目标共识节点。这样,各个共识节点可快速确定出目标共识节点,效率较高。
另一种实施方式中,目标共识节点可以是数据所有方指定的共识节点,例如,数据所有方可以在数据访问请求中携带目标共识节点的节点标识(例如节点编号),当获得第一数据访问请求之后,各个共识节点可将其中携带的节点标识与自身的节点标识进行比较,进而确定出自身是否是数据访问方指定的目标共识节点,从而,可从所有共识节点中确定出目标共识节点。这样,数据访问方可根据实际需求灵活选择目标共识节点为自身发送目标密文数据,灵活性较好。
在确定出目标共识节点之后,各个目标共识节点可根据第一数据访问请求中携带的目标数据标识和自身的密钥份额与目标密文数据之间的对应关系,确定出与目标数据标识对应的密钥份额。
S304:各个目标共识节点将本地存储的密钥份额发送给数据访问方。对应的,数据访问方接收各个目标共识节点发送的密钥份额。
在前述的数据访问方的访问权限验证通过时,表明该数据访问方是具有权限访问链上存储的密钥份额的,则区块链系统可将确定出的目标密文数据对应的密钥份额发送给数据访问方,以便于数据访问方能够根据接收到的多个密钥份额恢复出目标密钥,进而再使用目标密钥进行解密。
假设确定出的目标共识节点是共识节点1和共识节点n,请参见图3所示的,S304可以包括S304a和S304n等步骤,S304a是共识节点1(即目标共识节点)向数据访问方发送密钥份额1,其中的密钥份额1是共识节点1中保存的密钥份额;S304n是共识节点n(也是目标共识节点)向数据访问方发送密钥份额n,其中的密钥份额n是共识节点n中保存的密钥份额。需要说明的是,图3中仅仅是以共识节点1、共识节点n进行举例说明,在具体实施过程中,还可以包括其它的目标共识节点,对应的,其它的目标共识节点还可以向数据访问方发送其它的密钥份额。
S305:数据访问方根据预定数量且不同的密钥份额确定目标密钥。
在实际中,由于区块链系统中的某些共识节点可能已经被恶意攻击或者出现硬件故障等原因并不能向数据访问方返回密钥份额,或者并不能向数据访问方发送正确的密钥份额。为此,根据(t,n)秘密共享的原理,数据访问方最少只要收到预定数量(例如称作第二预定数量,为大于或等于t且小于或等于n的整数)且互不相同的密钥份额就可以恢复出目标密钥,进而根据目标密钥对密文数据的解密,以此实现链上数据的有效访问。
如前所述的,各个共识节点除了存储的各不相同的密钥份额之外,还可以包括密钥份额对应的密钥份额签名,基于此,目标共识节点向数据访问方发送密钥份额的同时,还可以一并发送密钥份额对应的密钥份额签名,以便于数据访问方可先根据密钥份额签名对密钥份额本身进行有效性验证,在密钥份额的有效性验证通过时,再将其作为一个有效的密钥份额,进一步地的再使用第二预定数量个各不相同的有效密钥份额来恢复得到目标密钥。
S306:数据访问方向存储节点发送第二数据访问请求。对应的,存储节点获得数据访问方发送的第二数据访问请求。
其中,第二数据访问请求中携带有目标密文数据对应的目标数据标识,第二数据访问请求用于向存储节点请求获得目标密文数据。存储节点在获得数据访问方发送的第二数据访问请求之后,可通过其中的目标数据标识从本地存储中确定出目标密文数据。
S307:存储节点向数据访问方发送目标密文数据。对应的,数据访问方获得存储节点发送的目标密文数据。
如前所述的,存储节点中除了保存有目标密文数据之外,还可同时保存有目标密文数据对应的数据认证信息,而该数据认证信息可能是由数据所有方或者是存储节点自身对目标密文数据进行加密认证处理后得到的认证信息,通过该数据认证信息可对目标密文数据的可靠性进行校验。所以,在该实施例中,存储节点还可将目标密文数据对应的数据认证信息一并发送给数据访问方,以便于数据访问方能够根据数据认证信息对目标密文数据进行可靠性校验,以确保读取的数据是有效的数据。
此外,第二数据访问请求中除了携带的目标数据标识,还可以携带数据访问方的待验证权限信息,或者还可以携带数据访问方的待验证权限信息和该待验证权限信息对应的权限签名。其中的待验证权限信息是用于对数据访问方是否具有读取目标密文数据的权限进行验证的信息,而权限签名是用于对待验证权限信息进行有效性验证的签名信息。在将目标密文数据发送给数据访问方之前,存储节点可利用待验证权限信息(或者待验证权限信息和权限签名)对数据访问方的访问权限进行验证,例如先通过权限签名对待验证权限信息进行有效性验证,在验证通过时再根据待验证权限信息来判断其访问权限,例如将其与预先存储的访问准入条件信息(由目标密文数据的数据所有方确定并发送给的存储节点的)进行对比,若两者匹配则可确定具有访问目标密文数据的权限,进而可将目标密文数据(或者还可以包括数据验证信息)发送给数据访问方。
S308:数据访问方根据目标密钥对目标密文数据进行解密。
若数据访问方从存储节点仅接收了目标密文数据,在获得目标密文数据和前述的目标密钥之后,数据访问方即可使用该目标密钥对目标密文数据进行解密处理,以得到对应的明文数据,从而实现对数据的有效访问。
若数据访问方从存储节点接收了目标密文数据和对应的数据认证信息,数据访问方可先根据数据认证信息对目标密文数据进行可靠性校验,例如可采用数据所有方或存储节点加密时使用的散列函数对目标密文数据进行散列计算,再将得到的散列值与数据认证信息比对,若两者一样即可确定目标密文数据未被篡改,从而实现对目标密文数据的完整性和有效性的校验,即确定目标密文数据通过可靠性校验。进一步地,目标密文数据通过可靠性校验时再使用目标密钥对目标密文数据进行解密。
在具体实施过程中,数据访问方对目标密文数据的解密可能会失败,例如存储节点发送的目标密文数据可能已经被恶意篡改,或者在一定时间内数据访问方未能接收到存储节点发送的目标密文数据(例如由于目标共识节点的硬件故障未能成功发送或者由于网络故障未能成功传输至数据访问方),或者通过目标共识节点发送的密钥份额未能成功恢复出目标密钥,又或者,通过恢复出的目标密钥对接收到的目标密文数据解密时未能解密成功,等等。在这些情形下,为了能够确保数据的有效访问,数据访问方可向区块链系统和存储节点重新发起数据访问请求,本申请实施例中将数据访问方重新发起的数据访问请求例如称作数据重传请求,该数据重传请求中还是包括有用于指示目标密文数据的目标数据标识。数据访问方可将该数据重传请求分别发送给各个共识节点,各个共识节点在获得数据重传请求之后,可分别将各自本地存储的密钥份额再发送给数据访问方,通过全部共识节点均发送密钥份额的方式可避免由于其中个别共识节点被恶意控制而导致的个别密钥份额失效的影响,数据访问方在收到足够且相互不同的密钥份额之后可重新恢复出目标密钥。或者,据访问方可将数据重传请求再发送给存储节点,以请求存储节点重新向数据访问方发送目标密文数据,以尽量保证目标密文数据能够重新成功传输。
需要说明的是,图3中的有些步骤可以并不按照上述介绍的先后顺序执行,即上述流程介绍的各个步骤的执行顺序只是一种可能的实施顺序,例如,也可先执行S306后再执行S301,或者S301和S306可并行执行等等,也就是说,数据所有方向存储节点发送第二数据访问请求和数据所有方向共识系统发送第一数据访问请求的执行顺序可以是任意的,本申请实施例对此不作限制。
本申请实施例中,数据访问方将用于加密得到目标密文数据的目标密钥采用秘密共享机制拆分为若干个相互独立的密钥份额,再将目标密文数据对应的密钥份额分布式地存储在区块链系统中的各个节点中,这样,即使个别密钥份额被恶意窃取或者篡改,基于秘密共享的特性,也并不影响对目标密钥的准确恢复,提高了目标密钥在区块链系统中的安全性,从而也就提升了目标密文数据的安全性。同时,通过将目标密文数据和密钥份额分别存储在存储节点和区块链系统,将目标密文数据存储在存储节点中,以及将目标密文数据对应的密钥份额存储在区块链系统中,通过将目标密文数据与对应的密钥份额分离存储的方式,解耦了目标密文数据和密钥份额之间的关联存储,这样可尽量分别保证目标密文数据和密钥份额的存储安全,提高两者的安全性。
进而,数据访问方在访问区块链上的密钥份额时,在通过分散的多个密钥份额对目标密文数据进行有效保护的基础上,也可确保数据访问方能够通过一定数量的密钥份额恢复出正确的目标密钥,从而实现对目标密文数据的有效、安全的访问,提高了对区块链上存储数据访问的安全性,同时,可另外从存储节点处获得目标密文数据,这样可尽量确保目标密文数据的安全,并且这样无需由区块链系统中的各个共识节点发送目标密文数据本身,可较大程度上降低区块链系统的数据传输量,进而减少系统带宽的占用,提高系统带宽的利用率。
为便于理解,以下结合图4和图5对本申请实施例中的技术方案进行说明。
假设数据所有方需要存储的目标密文数据是C,数据所有方确定的能够访问目标密文数据的访问准入条件信息以ACL表示,用于采用对称加密方式进行加密得到目标密文数据C的目标密钥是K,数据所有方采用秘密共享机制将目标密钥K拆分为了K1、K2、K3这三份密钥份额,而与K1、K2、K3对应的密钥份额签名分别以Sig1、Sig2、Sig3表示。
请参见图4所示,数据所有方根据密钥份额的不同,生成了3个数据写入请求,如图4中的Write1、Write2、Write3。其中,Write1、Write2、Write3中均携带了访问准入条件信息ACL,而这3个数据写入请求中携带的密钥份额和对应的密钥份额签名均是不同的,以图3所示,Write1、Write2、Write3分别携带了密钥份额K1和密钥份额签名Sig1、密钥份额K2和密钥份额签名Sig2、密钥份额K3和密钥份额签名Sig3。在各个分别共识节点接收到对应的数据写入请求后,如共识节点1接收到的是Write1、共识节点2接收到的是Write2、共识节点3接收到的是Write3,则将数据写入请求中包括的信息分别保存在本地,如图3中的下图所示。然后,各个共识节点再向数据所有方发送成功写入指示信息,在图3中分别以Success1、Success2、Success3表示各个共识节点发送的成功写入指示信息,数据所有方可以根据足够数量的成功写入指示信息确定目标密钥K已经成功写入了区块链系统,实现了数据的上链存储。
以及,数据所有方将目标密文数据C和访问准入条件信息ACL发送给了存储节点,例如数据所有方通过图4中的Write4携带C和ACL,并将Write4发送给存储节点,进而,存储节点可以将目标密文数据C和访问准入条件信息ACL保存在本地,如图4中下图所示的。
再参见图5所示,当数据访问方希望获取目标密文数据对应的明文数据时,可向共识系统请求目标密钥,具体地,向各个共识节点发送对应的读取指令,在图5中是以Read1表示数据访问方向各个共识节点发送的数据访问请求的,Read1中的ts表示目标密文数据的编号(对应前述的目标数据标识),IDc表示的是数据访问方的身份标识(对应前述的待验证权限信息),Sigc是数据访问方的身份标识对应的身份签名(对应前述的权限签名)。进一步地,各个共识节点可以根据数据写入请求Read1中的Sigc对数据访问方的身份标识IDc进行有效性验证,再根据IDc进行访问权限验证,例如将IDc与存储的ACL进行比较,若两者匹配则确定访问权限验证通过,待验证通过后可以从本地存储中确定出ts对应的密钥份额和密钥份额签名,再分别将各自保存的密钥份额和密钥份额签名发送给数据访问方,例如图5中所示的,共识节点1将K1、Sig1发送给了数据访问方、共识节点2将K2、Sig2发送给了数据访问方、共识节点3将K3、Sig3发送给了数据访问方,以便于数据访问方根据这些密钥份额恢复出目标密钥K。
以及,数据访问方还向存储节点发送另一数据访问请求Read2,与Read1相同的,Read2中也可携带ts、IDc和Sigc,存储节点可以按照前述介绍的方式对数据访问方的访问权限进行验证,在数据访问方的访问权限验证通过时则将本地存储的目标密文数据C发送给数据访问方,以便于数据访问方能够根据恢复出的目标密钥K对目标密文数据C进行解密,进而得到对应的明文数据,以完成对数据的有效访问。
本申请实施例中,数据所有方、数据访问方、区块链系统之间可以使用加密通道交换数据,这样可尽量确保数据安全传输。此外,数据所有方、数据访问方、区块链系统均可使用可信硬件、TEE、可信平台模块(Trusted Platform Module,TPM)、密码卡、密码机等,确保数据安全可靠地处理和保存。
基于同一发明构思,本申请实施例提供一种区块链系统,该区块链系统例如是图1中的区块链系统,该区块链系统包括至少两个共识节点,其中:
各个共识节点分别用于获得数据所有方发送的数据写入请求,其中,各个数据写入请求中包括彼此不同的密钥份额和该密钥份额与目标密文数据之间的对应关系,各密钥份额是数据所有方通过秘密共享机制将目标密钥进行拆分得到的,目标密钥是数据所有方将明文数据加密为目标密文数据的密钥,目标密文数据保存在存储节点中;以及分别保存获得的密钥份额和该密钥份额与目标密文数据之间的对应关系。
在可能的实施方式中,本申请实施例中的区块链系统还包括存储节点,存储节点用于接收数据所有方发送的目标密文数据并保存该目标密文数据。
基于本申请实施例中的区块链系统可以实现前述的图2和图4所描述的流程,基于秘密共享技术将目标密文数据对应的目标密钥拆分为多个密钥份额并将各个密钥份额分散保存在各个目标区块链节点中,通过分布式地存储密钥份额的方式可提高目标密钥的安全性,从而增强对密文数据的保护。同时,通过将目标密文数据与其对应的密钥份额分开存储,可进一步确保两者的安全性。
基于同一发明构思,本申请实施例提供一种区块链系统,该区块链系统例如是图1中的区块链系统,该区块链系统包括至少两个共识节点,其中:
各个共识节点用于获得数据访问方发起的数据访问请求,其中,数据访问请求中包括用于指示目标密文数据的目标数据标识,各个共识节点本地存储有彼此不同的密钥份额和该密钥份额与目标密文数据之间的对应关系,各密钥份额是数据所有方通过秘密共享机制将目标密钥进行拆分得到的,目标密钥是数据所有方将明文数据加密为目标密文数据的密钥;
各个共识节点中的目标共识节点用于根据目标数据标识和存储的密钥份额与目标密文数据之间的对应关系,从本地存储中确定与目标密文数据对应的密钥份额,并将确定出的密钥份额发送给数据访问方,以用于数据访问方根据预定数量且不同的密钥份额确定目标密钥并根据目标密钥对目标密文数据解密。
基于本申请实施例中的区块链系统可以实现前述的图3和图5所描述的流程,在对区块链上数据进行访问时,即使区块链系统中的有些节点可能已经被恶意攻击而不安全时,例如已被篡改了该节点上存储的目标密文数据和密钥份额,由于采用的是秘密共享技术,数据访问方在收到一定数量的正确的密钥份额时才可恢复出正确的目标密钥,这其中即使有些密钥份额已不再可信,仍然可确保恢复出的目标密钥的有效性,从而提高了对数据访问的安全控制。数据访问方在访问区块链上的密钥份额时,在通过分散的多个密钥份额对目标密文数据进行有效保护的基础上,也可确保数据访问方能够通过一定数量的密钥份额恢复出正确的目标密钥,从而实现对目标密文数据的有效、安全的访问,提高了对区块链上存储数据访问的安全性,同时,数据访问方可另外从存储节点处获得目标密文数据,这样可尽量确保目标密文数据的安全,并且这样无需由区块链系统中的各个共识节点发送目标密文数据本身,可较大程度上降低区块链系统的数据传输量,进而减少系统带宽的占用,提高系统带宽的利用率。
基于同一发明构思,本申请实施例提供一种区块链数据写入装置,该装置可以是硬件结构、软件模块、或硬件结构加软件模块,该装置可以配置在终端设备、客户端中。请参见图6所示,本申请实施例中的区块链数据写入装置包括加密模块601、第一发送模块602和第二发送模块603,其中:
加密模块601,用于以目标密钥对明文数据进行加密处理,得到对应的目标密文数据,并通过秘密共享机制将目标密钥拆分为至少两个密钥份额;
第一发送模块602,用于将目标密文数据发送给存储节点,以通过存储节点保存目标密文数据;
第二发送模块603,用于分别将各数据写入请求对应发送给各个共识节点,以通过各个共识节点将接收到的数据写入请求中包括的信息进行保存,其中,每个数据写入请求中包括彼此不同的密钥份额和该密钥份额与目标密文数据之间的对应关系。
在一种可能的实施方式中,每个数据写入请求中还包括该密钥份额对应的密钥份额签名,加密模块601还用于:
在第二发送模块603分别将各数据写入请求对应发送给各个共识节点之前,生成各个密钥份额对应的密钥份额签名。
在一种可能的实施方式中,本申请实施例中的区块链数据写入装置还包括确定模块604,用于确定目标密文数据对应的访问准入条件信息;
第一发送模块602还用于将访问准入条件信息发送给存储节点,以及第二发送模块603还用于将访问准入条件信息发送给各个共识节点。
在一种可能的实施方式中,访问准入条件信息中包括允许数据所有方访问目标密文数据的条件信息。
在一种可能的实施方式中,加密模块601还用于:确定目标密文数据对应的数据认证信息;
第一发送模块用于602:将目标密文数据和数据认证信息发送给存储节点,以通过存储节点保存目标密文数据和数据认证信息。
在具体实施时,确定模块604是可选的模块,即确定模块604并不是必须的模块,所以在图6中是以虚线框表示的。
前述的区块链数据写入方法的实施例中涉及的各步骤的所有相关内容均可以援引到本申请实施例中的区块链数据写入装置所对应的功能模块的功能描述,在此不再赘述。
基于同一发明构思,本申请实施例提供一种区块链数据写入装置,该装置可以是硬件结构、软件模块、或硬件结构加软件模块,该装置可以配置在区块链系统中的各个共识节点中。请参见图7所示,本申请实施例中的区块链数据写入装置包括获得模块701和存储模块702,其中:
获得模块701,用于获得数据所有方发送的数据写入请求;其中,各个数据写入请求中包括彼此不同的密钥份额和该密钥份额与目标密文数据之间的对应关系,各密钥份额是数据所有方通过秘密共享机制将目标密钥进行拆分得到的,目标密钥是数据所有方将明文数据加密为目标密文数据的密钥,目标密文数据保存在存储节点中;
存储模块702,用于保存获得的密钥份额和该密钥份额与目标密文数据之间的对应关系。
在一种可能的实施方式中,各个数据写入请求中还包括密钥份额对应的密钥份额签名,存储模块702用于:
将获得的密钥份额、密钥份额对应的密钥份额签名、密钥份额与目标密文数据之间的对应关系进行保存。
在一种可能的实施方式中,各个数据写入请求中还包目标密文数据对应的访问准入条件信息,存储模块702用于:
将获得的密钥份额、密钥份额与目标密文数据之间的对应关系、访问准入条件信息进行保存。
在一种可能的实施方式中,访问准入条件信息中包括允许数据所有方访问目标密文数据的条件信息。
前述的区块链数据写入方法的实施例中涉及的各步骤的所有相关内容均可以援引到本申请实施例中的区块链数据写入装置所对应的功能模块的功能描述,在此不再赘述。
基于同一发明构思,本申请实施例提供一种区块链数据访问装置,该装置可以是硬件结构、软件模块、或硬件结构加软件模块,该装置可以配置在区块链系统中的各个共识节点中。请参见图8所示,本申请实施例中的区块链数据访问装置包括获得模块801和处理模块802,其中:
获得模块801,用于获得数据访问方发起的数据访问请求,其中,数据访问请求中包括用于指示目标密文数据的目标数据标识,各个共识节点本地存储有彼此不同的密钥份额和该密钥份额与目标密文数据之间的对应关系,各密钥份额是数据所有方通过秘密共享机制将目标密钥进行拆分得到的,目标密钥是数据所有方将明文数据加密为目标密文数据的密钥;
处理模块802,用于根据目标数据标识和存储的密钥份额与目标密文数据之间的对应关系,从本地存储中确定与目标密文数据对应的密钥份额,并将确定出的密钥份额发送给数据访问方,以用于数据访问方根据预定数量且不同的密钥份额确定目标密钥并根据目标密钥对目标密文数据解密。
在一种可能的实施方式中,处理模块802用于:
从本地存储中确定与目标密文数据对应的密钥份额和密钥份额签名,并将确定出的密钥份额和密钥份额签名发送给数据访问方。
在一种可能的实施方式中,数据访问请求中还包括数据访问方的待验证权限信息和权限签名,本申请实施例中的区块链数据访问装置还包括权限验证模块803,用于:
在处理模块802将确定出的密钥份额发送给数据访问方之前,根据待验证权限信息和权限签名确定数据访问方的访问权限验证通过;其中,根据权限签名对待验证权限信息进行有效性验证,并在待验证权限信息的有效性验证通过时,根据待验证权限信息确定数据访问方的访问权限验证通过。
在一种可能的实施方式中,权限验证模块803用于:
将待验证权限信息与存储的访问准入条件信息进行匹配,其中,访问准入条件信息是由数据所有方确定的;
若匹配结果为设定匹配结果,则确定数据访问方的访问权限验证通过。
在一种可能的实施方式中,访问准入条件信息中包括允许数据所有方访问目标密文数据的条件信息。
在一种可能的实施方式中,处理模块802还用于:
在处理模块802将确定出的密钥份额发送给数据访问方之后,获得数据访问方发起的数据重传请求,并将本地存储的与目标密文数据对应的密钥份额发送给数据访问方,其中,数据重传请求中包括目标数据标识,数据重传请求是数据访问方在确定对目标密文数据解密失败时重新发起的数据访问请求。
在具体实施时,权限验证模块803是可选的模块,即权限验证模块803并不是必须的模块,所以在图8中是以虚线框表示的。
前述的区块链数据访问方法的实施例中涉及的各步骤的所有相关内容均可以援引到本申请实施例中的区块链数据访问装置所对应的功能模块的功能描述,在此不再赘述。
基于同一发明构思,本申请实施例提供一种区块链数据访问装置,该装置可以是硬件结构、软件模块、或硬件结构加软件模块,该装置可以配置在终端设备、客户端中。请参见图9所示,本申请实施例中的区块链数据访问装置包括确定模块901、发送模块902和处理模块903,其中:
确定模块901,用于确定第一数据访问请求和第二数据访问请求,第一数据访问请求和第二数据访问请求中均包括用于指示目标密文数据的目标数据标识;
发送模块902,用于将第一数据访问请求分别发送给各个共识节点,以及将第二数据访问请求发送给存储节点;其中,各个共识节点本地存储有彼此不同的密钥份额和该密钥份额与目标密文数据之间的对应关系,各密钥份额是数据所有方通过秘密共享机制将目标密钥进行拆分得到的,目标密钥是数据所有方将明文数据加密为目标密文数据的密钥,存储节点中存储有目标密文数据;
处理模块903,用于获得各个目标共识节点分别发送的密钥份额,并根据获得的密钥份额确定目标密钥;以及获得存储节点发送的目标密文数据,并根据目标密钥对目标密文数据进行解密。
在一种可能的实施方式中,处理模块903用于:
获得各个目标共识节点分别发送的密钥份额和对应的密钥份额签名;
根据各个目标共识节点发送的密钥份额签名对应的密钥份额进行验证,在验证通过确定为有效密钥份额,并根据预定数量且彼此不同的有效密钥份额确定目标密钥。
在一种可能的实施方式中,处理模块903用于:
获得存储节点发送的目标密文数据和数据认证信息,其中,数据认证信息是用于对目标密文数据进行可靠性认证的信息;
根据数据认证信息对目标密文数据进行校验,在校验通过时根据目标密钥对目标密文数据进行解密。
在一种可能的实施方式中,第一数据访问请求和第二数据访问请求中均还包括数据访问方的待验证权限信息和对应的权限签名。
前述的区块链数据访问方法的实施例中涉及的各步骤的所有相关内容均可以援引到本申请实施例中的区块链数据访问装置所对应的功能模块的功能描述,在此不再赘述。
本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,另外,在本申请各个实施例中的各功能模块可以集成在一个处理器中,也可以是单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
基于同一发明构思,本申请实施例还提供一种计算机存储介质,该计算机存储介质可以是计算机可读存储介质,该计算机存储介质中存储有计算机指令或计算机可读程序,当该计算机指令或计算机可读程序在计算机上运行时,使得计算机执行如前述的区块链数据写入方法的步骤。
基于同一发明构思,本申请实施例还提供一种计算机存储介质,该计算机存储介质可以是计算机可读存储介质,该计算机存储介质中存储有计算机指令或计算机可读程序,当该计算机指令或计算机可读程序在计算机上运行时,使得计算机执行如前述的区块链数据访问方法的步骤。
在一些可能的实施方式中,本申请实施例提供的区块链数据写入方法的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在计算机上运行时,所述程序代码用于使所述计算机执行前文所描述的根据本申请各种示例性实施方式的区块链数据写入方法中的步骤。
在一些可能的实施方式中,本申请实施例提供的区块链数据访问方法的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在计算机上运行时,所述程序代码用于使所述计算机执行前文所描述的根据本申请各种示例性实施方式的区块链数据访问方法中的步骤。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (27)
1.一种区块链数据写入方法,其特征在于,所述方法包括:
数据所有方以目标密钥对明文数据进行加密处理,得到对应的目标密文数据;
所述数据所有方通过秘密共享机制将所述目标密钥拆分为至少两个密钥份额;
所述数据所有方将所述目标密文数据发送给存储节点,以通过所述存储节点保存所述目标密文数据;以及
所述数据所有方分别将各数据写入请求对应发送给各个共识节点,以通过所述各个共识节点将接收到的数据写入请求中包括的信息进行保存,其中,每个数据写入请求中包括彼此不同的密钥份额和该密钥份额与所述目标密文数据之间的对应关系。
2.根据权利要求1所述的方法,其特征在于,每个数据写入请求中还包括密钥份额对应的密钥份额签名,在所述数据所有方分别将各数据写入请求对应发送给各个共识节点之前,所述方法还包括:
所述数据所有方生成各个密钥份额对应的密钥份额签名。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
所述数据所有方确定所述目标密文数据对应的访问准入条件信息;
所述数据所有方将所述访问准入条件信息分别发送给所述存储节点和所述各个共识节点。
4.根据权利要求3所述的方法,其特征在于,所述访问准入条件信息中包括允许所述数据所有方访问所述目标密文数据的条件信息。
5.根据权利要求1所述的方法,其特征在于,所述数据所有方将所述目标密文数据发送给存储节点,以通过所述存储节点保存所述目标密文数据,包括:
所述数据所有方确定所述目标密文数据对应的数据认证信息,并将所述目标密文数据和所述数据认证信息发送给所述存储节点,以通过所述存储节点保存所述目标密文数据和所述数据认证信息。
6.一种区块链数据写入方法,其特征在于,所述方法包括:
各个共识节点分别获得数据所有方发送的数据写入请求;其中,各个数据写入请求中包括彼此不同的密钥份额和该密钥份额与目标密文数据之间的对应关系,各密钥份额是所述数据所有方通过秘密共享机制将目标密钥进行拆分得到的,所述目标密钥是所述数据所有方将明文数据加密为所述目标密文数据的密钥,所述目标密文数据保存在存储节点中;
所述各个共识节点分别保存获得的密钥份额和该密钥份额与所述目标密文数据之间的对应关系。
7.根据权利要求6所述的方法,其特征在于,各个数据写入请求中还包括密钥份额对应的密钥份额签名,所述各个共识节点分别保存获得的密钥份额和该密钥份额与所述目标密文数据之间的对应关系,包括:
所述各个共识节点分别将获得的密钥份额、密钥份额对应的密钥份额签名、密钥份额与所述目标密文数据之间的对应关系进行保存。
8.根据权利要求6所述的方法,其特征在于,各个数据写入请求中还包所述目标密文数据对应的访问准入条件信息,所述各个共识节点分别保存获得的密钥份额和该密钥份额与所述目标密文数据之间的对应关系,包括:
所述各个共识节点分别将获得的密钥份额、密钥份额与目标密文数据之间的对应关系、访问准入条件信息进行保存。
9.根据权利要求8所述的方法,其特征在于,所述访问准入条件信息中包括允许所述数据所有方访问所述目标密文数据的条件信息。
10.一种区块链数据访问方法,其特征在于,所述方法包括:
各个共识节点获得数据访问方发起的数据访问请求,其中,所述数据访问请求中包括用于指示目标密文数据的目标数据标识,所述各个共识节点本地存储有彼此不同的密钥份额和该密钥份额与所述目标密文数据之间的对应关系,各密钥份额是数据所有方通过秘密共享机制将目标密钥进行拆分得到的,所述目标密钥是所述数据所有方将明文数据加密为所述目标密文数据的密钥;
所述各个共识节点中的目标共识节点根据所述目标数据标识和存储的密钥份额与所述目标密文数据之间的对应关系,从本地存储中确定与所述目标密文数据对应的密钥份额,并将确定出的密钥份额发送给所述数据访问方,以用于所述数据访问方根据预定数量且不同的密钥份额确定所述目标密钥并根据所述目标密钥对所述目标密文数据解密。
11.根据权利要求10所述的方法,其特征在于,从本地存储中确定与所述目标密文数据对应的密钥份额,并将确定出的密钥份额发送给所述数据访问方,包括:
所述目标共识节点从本地存储中确定与所述目标密文数据对应的密钥份额和密钥份额签名,并将确定出的密钥份额和密钥份额签名发送给所述数据访问方。
12.根据权利要求10所述的方法,其特征在于,所述数据访问请求中还包括所述数据访问方的待验证权限信息和权限签名,在将确定出的密钥份额发送给所述数据访问方之前,所述方法还包括:
所述目标共识节点根据所述待验证权限信息和所述权限签名确定所述数据访问方的访问权限验证通过;其中,根据所述权限签名对所述待验证权限信息进行有效性验证,并在所述待验证权限信息的有效性验证通过时,根据所述待验证权限信息确定所述数据访问方的访问权限验证通过。
13.根据权利要求12所述的方法,其特征在于,所述目标共识节点根据所述待验证权限信息确定所述数据访问方的访问权限验证通过,包括:
所述目标共识节点将所述待验证权限信息与存储的访问准入条件信息进行匹配,其中,所述访问准入条件信息是由所述数据所有方确定的;
若匹配结果为设定匹配结果,所述目标共识节点确定所述数据访问方的访问权限验证通过。
14.根据权利要求13所述的方法,其特征在于,所述访问准入条件信息中包括允许所述数据所有方访问所述目标密文数据的条件信息。
15.根据权利要求10所述的方法,其特征在于,在所述目标共识节点将确定出的密钥份额发送给所述数据访问方之后,所述方法还包括:
所述各个共识节点获得所述数据访问方发起的数据重传请求,其中,所述数据重传请求中包括所述目标数据标识,所述数据重传请求是所述数据访问方在确定对所述目标密文数据解密失败时重新发起的数据访问请求;
所述各个共识节点分别将本地存储的与所述目标密文数据对应的密钥份额发送给所述数据访问方。
16.一种区块链数据访问方法,其特征在于,所述方法包括:
数据访问方确定第一数据访问请求和第二数据访问请求,所述第一数据访问请求和所述第二数据访问请求中均包括用于指示目标密文数据的目标数据标识;
所述数据访问方将所述第一数据访问请求分别发送给各个共识节点,以及将所述第二数据访问请求发送给存储节点;其中,所述各个共识节点本地存储有彼此不同的密钥份额和该密钥份额与所述目标密文数据之间的对应关系,各密钥份额是数据所有方通过秘密共享机制将目标密钥进行拆分得到的,所述目标密钥是所述数据所有方将明文数据加密为所述目标密文数据的密钥,所述存储节点中存储有所述目标密文数据;
所述数据访问方获得各个目标共识节点分别发送的密钥份额,并根据获得的密钥份额确定所述目标密钥;以及
所述数据访问方获得所述存储节点发送的所述目标密文数据,并根据所述目标密钥对所述目标密文数据进行解密。
17.如权利要求16所述的方法,其特征在于,所述数据访问方获得各个目标共识节点分别发送的密钥份额,并根据获得的密钥份额确定所述目标密钥,包括:
所述数据访问方获得各个目标共识节点分别发送的密钥份额和对应的密钥份额签名;
所述数据访问方根据各个目标共识节点发送的密钥份额签名对应的密钥份额进行验证,在验证通过确定为有效密钥份额,并根据预定数量且彼此不同的有效密钥份额确定所述目标密钥。
18.根据权利要求16所述的方法,其特征在于,所述数据访问方获得所述存储节点发送的所述目标密文数据,并根据所述目标密钥对所述目标密文数据进行解密,包括:
所述数据访问方获得所述存储节点发送的所述目标密文数据和数据认证信息,其中,所述数据认证信息是用于对所述目标密文数据进行可靠性认证的信息;
所述数据访问方根据所述数据认证信息对所述目标密文数据进行校验,在校验通过时根据所述目标密钥对所述目标密文数据进行解密。
19.根据权利要求16所述的方法,其特征在于,所述第一数据访问请求和所述第二数据访问请求中均还包括所述数据访问方的待验证权限信息和对应的权限签名。
20.一种区块链系统,其特征在于,包括至少两个共识节点,其中:
各个共识节点分别用于获得数据所有方发送的数据写入请求,其中,各个数据写入请求中包括彼此不同的密钥份额和该密钥份额与目标密文数据之间的对应关系,各密钥份额是所述数据所有方通过秘密共享机制将目标密钥进行拆分得到的,所述目标密钥是所述数据所有方将明文数据加密为所述目标密文数据的密钥,所述目标密文数据保存在存储节点中;以及分别保存获得的密钥份额和该密钥份额与所述目标密文数据之间的对应关系。
21.根据权利要求20所述的区块链系统,其特征在于,还包括存储节点,所述存储节点用于:
接收所述数据所有方发送的目标密文数据,并保存所述目标密文数据。
22.一种区块链系统,其特征在于,包括至少两个共识节点,其中:
各个共识节点用于获得数据访问方发起的数据访问请求,其中,所述数据访问请求中包括用于指示目标密文数据的目标数据标识,所述各个共识节点本地存储有彼此不同的密钥份额和该密钥份额与所述目标密文数据之间的对应关系,各密钥份额是数据所有方通过秘密共享机制将目标密钥进行拆分得到的,所述目标密钥是所述数据所有方将明文数据加密为所述目标密文数据的密钥;
所述各个共识节点中的目标共识节点用于根据所述目标数据标识和存储的密钥份额与所述目标密文数据之间的对应关系,从本地存储中确定与所述目标密文数据对应的密钥份额,并将确定出的密钥份额发送给所述数据访问方,以用于所述数据访问方根据预定数量且不同的密钥份额确定所述目标密钥并根据所述目标密钥对所述目标密文数据解密。
23.一种区块链数据写入装置,其特征在于,所述装置包括:
加密模块,用于以目标密钥对明文数据进行加密处理,得到对应的目标密文数据,并通过秘密共享机制将所述目标密钥拆分为至少两个密钥份额;
第一发送模块,用于将所述目标密文数据发送给存储节点,以通过所述存储节点保存所述目标密文数据;
第二发送模块,用于分别将各数据写入请求对应发送给各个共识节点,以通过所述各个共识节点将接收到的数据写入请求中包括的信息进行保存,其中,每个数据写入请求中包括彼此不同的密钥份额和该密钥份额与所述目标密文数据之间的对应关系。
24.一种区块链数据写入装置,其特征在于,配置于各个共识节点中,所述装置包括:
获得模块,用于获得数据所有方发送的数据写入请求;其中,各个数据写入请求中包括彼此不同的密钥份额和该密钥份额与目标密文数据之间的对应关系,各密钥份额是所述数据所有方通过秘密共享机制将目标密钥进行拆分得到的,所述目标密钥是所述数据所有方将明文数据加密为所述目标密文数据的密钥,所述目标密文数据保存在存储节点中;
存储模块,用于保存获得的密钥份额和该密钥份额与所述目标密文数据之间的对应关系。
25.一种区块链数据访问装置,其特征在于,配置于各个共识节点中,所述装置包括:
获得模块,用于获得数据访问方发起的数据访问请求,其中,所述数据访问请求中包括用于指示目标密文数据的目标数据标识,所述各个共识节点本地存储有彼此不同的密钥份额和该密钥份额与所述目标密文数据之间的对应关系,各密钥份额是数据所有方通过秘密共享机制将目标密钥进行拆分得到的,所述目标密钥是所述数据所有方将明文数据加密为所述目标密文数据的密钥;
处理模块,用于根据所述目标数据标识和存储的密钥份额与所述目标密文数据之间的对应关系,从本地存储中确定与所述目标密文数据对应的密钥份额,并将确定出的密钥份额发送给所述数据访问方,以用于所述数据访问方根据预定数量且不同的密钥份额确定所述目标密钥并根据所述目标密钥对所述目标密文数据解密。
26.一种区块链数据访问装置,其特征在于,所述装置包括:
确定模块,用于确定第一数据访问请求和第二数据访问请求,所述第一数据访问请求和所述第二数据访问请求中均包括用于指示目标密文数据的目标数据标识;
发送模块,用于将所述第一数据访问请求分别发送给各个共识节点,以及将所述第二数据访问请求发送给存储节点;其中,所述各个共识节点本地存储有彼此不同的密钥份额和该密钥份额与所述目标密文数据之间的对应关系,各密钥份额是数据所有方通过秘密共享机制将目标密钥进行拆分得到的,所述目标密钥是所述数据所有方将明文数据加密为所述目标密文数据的密钥,所述存储节点中存储有所述目标密文数据;
处理模块,用于获得各个目标共识节点分别发送的密钥份额,并根据获得的密钥份额确定所述目标密钥;以及获得所述存储节点发送的所述目标密文数据,并根据所述目标密钥对所述目标密文数据进行解密。
27.一种计算机存储介质,其特征在于,所述计算机存储介质中存储有计算机可读程序,所述计算机可读程序用于执行根据权利要求1-5中任一项所述的方法,或者用于执行根据权利要求6-9中任一项所述的方法,或者用于执行根据权利要求10-15中任一项所述的方法,或者用于执行根据权利要求16-19中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110634783.9A CN113259123B (zh) | 2021-06-08 | 2021-06-08 | 一种区块链数据写入、访问方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110634783.9A CN113259123B (zh) | 2021-06-08 | 2021-06-08 | 一种区块链数据写入、访问方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113259123A true CN113259123A (zh) | 2021-08-13 |
CN113259123B CN113259123B (zh) | 2022-02-08 |
Family
ID=77186951
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110634783.9A Active CN113259123B (zh) | 2021-06-08 | 2021-06-08 | 一种区块链数据写入、访问方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113259123B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114401125A (zh) * | 2021-12-29 | 2022-04-26 | 张海滨 | 满足因果序的共识方法、装置、系统及计算机存储介质 |
CN114417306A (zh) * | 2022-01-04 | 2022-04-29 | 北京金山云网络技术有限公司 | 数据处理方法、装置、电子设备及计算机可读存储介质 |
CN114640450A (zh) * | 2022-03-29 | 2022-06-17 | 蚂蚁区块链科技(上海)有限公司 | 一种区块链上实现分布式密钥生成的方法、系统 |
CN114697048A (zh) * | 2022-06-01 | 2022-07-01 | 天津市普迅电力信息技术有限公司 | 基于区块链的碳排放数据共享方法和系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107623569A (zh) * | 2017-09-30 | 2018-01-23 | 矩阵元技术(深圳)有限公司 | 基于秘密共享技术的区块链密钥托管和恢复方法、装置 |
CN110800252A (zh) * | 2019-03-18 | 2020-02-14 | 阿里巴巴集团控股有限公司 | 防止安全多方计算中参与者错误表示输入数据 |
CN112199649A (zh) * | 2020-09-28 | 2021-01-08 | 扬州大学 | 基于区块链的移动边缘计算下的匿名身份验证方法 |
US20210089676A1 (en) * | 2018-02-16 | 2021-03-25 | Ecole Polytechnique Fédérale De Lausanne Epfl-Tto | Methods and systems for secure data exchange |
-
2021
- 2021-06-08 CN CN202110634783.9A patent/CN113259123B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107623569A (zh) * | 2017-09-30 | 2018-01-23 | 矩阵元技术(深圳)有限公司 | 基于秘密共享技术的区块链密钥托管和恢复方法、装置 |
US20210089676A1 (en) * | 2018-02-16 | 2021-03-25 | Ecole Polytechnique Fédérale De Lausanne Epfl-Tto | Methods and systems for secure data exchange |
CN110800252A (zh) * | 2019-03-18 | 2020-02-14 | 阿里巴巴集团控股有限公司 | 防止安全多方计算中参与者错误表示输入数据 |
US20200304294A1 (en) * | 2019-03-18 | 2020-09-24 | Alibaba Group Holding Limited | Preventing misrepresentation of input data by participants in a secure multi-party computation |
CN112199649A (zh) * | 2020-09-28 | 2021-01-08 | 扬州大学 | 基于区块链的移动边缘计算下的匿名身份验证方法 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114401125A (zh) * | 2021-12-29 | 2022-04-26 | 张海滨 | 满足因果序的共识方法、装置、系统及计算机存储介质 |
CN114417306A (zh) * | 2022-01-04 | 2022-04-29 | 北京金山云网络技术有限公司 | 数据处理方法、装置、电子设备及计算机可读存储介质 |
CN114640450A (zh) * | 2022-03-29 | 2022-06-17 | 蚂蚁区块链科技(上海)有限公司 | 一种区块链上实现分布式密钥生成的方法、系统 |
CN114697048A (zh) * | 2022-06-01 | 2022-07-01 | 天津市普迅电力信息技术有限公司 | 基于区块链的碳排放数据共享方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN113259123B (zh) | 2022-02-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110875821B (zh) | 密码学区块链互操作 | |
CN113259123B (zh) | 一种区块链数据写入、访问方法及装置 | |
CN113098697B (zh) | 一种区块链数据写入、访问方法及装置 | |
CN112926051B (zh) | 多方安全计算方法和装置 | |
CN111949602B (zh) | 一种支持完整性验证的外包数据安全迁移方法与系统 | |
KR102179497B1 (ko) | 멀티 클라우드 기반의 데이터 저장 및 관리 시스템 및 그 구동방법 | |
CN112651037B (zh) | 区块链系统的链外数据访问方法和系统 | |
CN110443049B (zh) | 一种安全数据存储管理的方法、系统及安全存储管理模块 | |
CN110505055B (zh) | 基于非对称密钥池对和密钥卡的外网接入身份认证方法和系统 | |
CN101241528A (zh) | 终端接入可信pda的方法和接入系统 | |
CN114157415A (zh) | 数据处理方法、计算节点、系统、计算机设备和存储介质 | |
CN115277168B (zh) | 一种访问服务器的方法以及装置、系统 | |
CN110020869B (zh) | 用于生成区块链授权信息的方法、装置及系统 | |
CN113726733B (zh) | 一种基于可信执行环境的加密智能合约隐私保护方法 | |
CN112446050B (zh) | 应用于区块链系统的业务数据处理方法及装置 | |
CN111241492A (zh) | 一种产品多租户安全授信方法、系统及电子设备 | |
CN111932261A (zh) | 一种基于可验证声明的资产数据管理方法和装置 | |
CN109302442B (zh) | 一种数据存储证明方法及相关设备 | |
CN113259124A (zh) | 一种区块链数据写入、访问方法及装置 | |
EP3836478A1 (en) | Method and system of data encryption using cryptographic keys | |
Sarhan et al. | Secure android-based mobile banking scheme | |
CN110995671A (zh) | 一种通信方法及系统 | |
CN108242997B (zh) | 安全通信的方法与设备 | |
CN111651740B (zh) | 一种面向分布式智能嵌入式系统的可信平台共享系统 | |
CN116155483A (zh) | 区块链签名机安全设计方法及签名机 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |