CN113642041A - 一种实现合约隐私的数据处理与存储方法 - Google Patents
一种实现合约隐私的数据处理与存储方法 Download PDFInfo
- Publication number
- CN113642041A CN113642041A CN202110933241.1A CN202110933241A CN113642041A CN 113642041 A CN113642041 A CN 113642041A CN 202110933241 A CN202110933241 A CN 202110933241A CN 113642041 A CN113642041 A CN 113642041A
- Authority
- CN
- China
- Prior art keywords
- key
- contract
- node
- data
- map2
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/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
- G06F21/6245—Protecting personal data, e.g. for financial or medical purposes
-
- 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
- G06F21/6227—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 where protection concerns the structure of data, e.g. records, types, queries
-
- 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/2107—File encryption
Abstract
本发明提供一种实现合约隐私的数据处理与存储方法,属于区块链的数据隐私领域,本发明基于可信执行环境(TEE)的方案,在此基础上提出对密钥的加密、设置、更换的方案,通过合约设计、管理员设置密钥、管理员修改密钥、TEE密钥设置、加密数据读取与存储五大步,使得用户可以简单方便使用现有的区块链基础设施,包括使用可信执行环境,对数据进行加密存储。其目标在于用户可以方便设置、修改加密数据的密钥;各区块链节点能够对密钥解密,获得原始密钥,以完成共识流程;区块链节点程序只有在授权后才能访问本地的合约元数,最终在联盟链场景下,保护合约数据的隐私。
Description
技术领域
本发明涉及区块链的数据隐私领域,特别涉及一种实现合约隐私的数据处理与存储方法。
背景技术
在区块链项目中,因为其分布式的特性,要求每个节点都要有同样的数据。区块链共识算法的的使用又要求各个节点数据要保持一致。而在现有的区块链应用中,用户对数据隐私性的要求越来越高,即想用区块链来保证数据、操作的公开,解决多方安全互信的问题,同时又想保护数据隐私,不希望敏感数据被广大的用户得和。
关于数据的隐私有两种,第一种是用户应用数据的隐私,第二种是区块链元数据的隐私。
对于前者,用户可以将数据在本地加密,然后再将数据发送到区块链上进行记录,在使用时,可以先从区块链上读取,然后在本地进行解密。这种方式不管是在公有链还是联盟链上都是适用的,因为数据的所有者与使用者都是用户;对于后者,关于区块链元数据的隐私保护,却是一个难点。首先数据一定是要加密存储的,同时还要求各个节点都要能读到真实数据进行共识。如何设置、存储、分发、使用密钥,成为我们这个需求的难点。
发明内容
本发明的主要目的在于提供一种一种实现合约隐私的数据处理与存储方法,可以有效解决背景技术中提出的问题。
为实现上述目的,本发明采取的技术方案为:
一种实现合约隐私的数据处理与存储方法,该合约被分成两个部分,一部分是不需要隐私计算的模块,直接送入智能合约虚拟机EVM中执行,数据以明文的形式存储入数据库;另一部分是需要隐私计算的部分,将代码传入可信执行环境TEE中,同时TEE环境中的输入、输出数据也是加密的,而数据的具体处理与存储方法包括以下步骤:
(一)、合约设计
1)设计两个map对象,用于存储新、旧两组密钥,map的key为节点程序的公钥,value为用节点公钥加密后的密钥;
2)设计一个设置密钥函数,参数为一个map,例如:
SetKey(map[pubkey:value]),函数要使用传入的参数对map1与map2赋同样的值;
3)设计一个修改密钥函数,参数为一个map,UpdateKey(map[pubkey:value]),函数内要实现将map2的值赋给map1,同时用新传入的参数设置map2;
(二)、管理员设置密钥
1)区块链节点程序通过硬件加解密卡获得节点的公钥,合约管理员通过调用区块链节点程序的API接口获得节点的公钥;
2)合约管理员采用随机算法在本地生成合约所用的加密密钥;
3)合约管理员用节点的公钥对第二步生成的密钥进行非对称加密;
4)对所有的联盟链区块链节点重复第二步;
5)调用区块链合约的设置密钥函数SetKey,将加密后的多个密钥发送到合约;
6)合约内部的方法将密钥分别存储到map1、map2;
7)完成合约管理员对密钥的设置,合约中map1与map2中存储了用各个节点公钥加密过后的密钥;
(三)、管理员修改密钥
1)区块链节点程序通过硬件加解密卡获得节点的公钥,合约管理员通过调用区块链节点程序的API接口获得节点的公钥;
2)合约管理员采用随机算法在本地生成合约所用的新的加密密钥;
3)合约管理员用节点的公钥对第二步生成的密钥进行非对称加密;
4)对所有的联盟链区块链节点重复第三步;
5)调用区块链合约的修改密钥函数UpdateKey,将加密后的密钥发送到合约;
6)合约内部的方法将map2中的值更新到map1中,同时用传入的参数更新map2中的内容;
7)完成合约管理员对密钥的修改,合约中map1存储了原来map2中的内容,map2全部更新为新的密钥;
(四)、TEE密钥设置
1)加载合约的公开模块到合约虚拟机中;
2)加载合约的隐私模块到TEE环境中;
3)节点程序从合约虚拟机中读取自己节点公钥对应的加密密钥;
4)节点程序将新、旧两个加密密钥全部送入硬件加解密卡解密,获得密钥;
5)节点程序将新、旧两个密钥设置给TEE;
(五)、加密数据读取与存储
1)TEE向节点程序索要数据,节点程序从KV数据库读取;
2)TEE用旧密钥解密数据;
3)TEE进行逻辑运算;
4)TEE对将要输出的数据用新密钥进行加密,向节点程序输出加密后的数据,节点程序将加密数据记录到KV数据库中。
优选的,所述步骤(二)的6)中在map1与map2中所存的密钥是一样的。
优选的,所述步骤(三)的6)中在map1与map2中相同公钥所对应的密钥是不一样的。
优选的,所述步骤(五)的1)中读取的数据为加密数据。
与现有技术相比,本发明具有如下有益效果:
本发明针对合约元数据隐私存储的方案,使得用户能在应用层,即在合约中设置、修改密钥,用户在密钥设置上简单、方便;本发明所设计方案还能做密钥的修改做到即改即用,即在当次修改密钥,密钥的修改就有效,而不需要等待多个区块高度后再生效。
附图说明
图1为本发明的合约组成运行架构示意图;
图2为本发明的具体流程示意图。
具体实施方式
为使本发明实现的技术手段、创作特征、达成目的与功效易于明白了解,下面结合具体实施方式,进一步阐述本发明。
在传统的智能合约方案中,因为对数据的隐私性未做要求,因些对智能合约的处理逻辑为:区块链节点将智能合约放入合约虚拟机运行,虚拟机与区块链节点程序进行数据的读写交互。但如果对智能合约提出隐私性的要求,合约产生的中间数据、结果数据不能泄露,这就要求这些数据是加密的,要求在调用合约执行过程中也不能泄露合约数据。
如图1所示:合约会被分成两个部分,一部分是不需要隐私计算的模块,直接送入智能合约虚拟机EVM中执行,数据会以明文的形式存储入数据库;另一部分是需要隐私计算的部分,需要将代码传入可信执行环境TEE中,同时TEE环境中的输入、输出数据也需要是加密的。
关于节点私钥存储方案,我们选择用硬件加解密卡的方式,通过硬件加解密卡生成公私钥对,外部可以获取公钥,但无法得到私钥。节点程序所有用到私钥的功能全都在硬件加解密卡内进行,包括:数据的解密、数据的验签等。
如图2所示:具体处理与存储方法包括以下步骤:
(一)、合约设计
1)设计两个map对象,用于存储新、旧两组密钥,map的key为节点程序的公钥,value为用节点公钥加密后的密钥;
2)设计一个设置密钥函数,参数为一个map,例如:
SetKey(map[pubkey:value]),函数要使用传入的参数对map1与map2赋同样的值;
3)设计一个修改密钥函数,参数为一个map,UpdateKey(map[pubkey:value]),函数内要实现将map2的值赋给map1,同时用新传入的参数设置map2;
(二)、管理员设置密钥
1)区块链节点程序通过硬件加解密卡获得节点的公钥,合约管理员通过调用区块链节点程序的API接口获得节点的公钥;
2)合约管理员采用随机算法在本地生成合约所用的加密密钥;
3)合约管理员用节点的公钥对第二步生成的密钥进行非对称加密;
4)对所有的联盟链区块链节点重复第二步;
5)调用区块链合约的设置密钥函数SetKey,将加密后的多个密钥发送到合约;
6)合约内部的方法将密钥分别存储到map1、map2,注意此时在map1与map2中所存的密钥是一样的;
7)完成合约管理员对密钥的设置,合约中map1与map2中存储了用各个节点公钥加密过后的密钥;
(三)、管理员修改密钥
1)区块链节点程序通过硬件加解密卡获得节点的公钥,合约管理员通过调用区块链节点程序的API接口获得节点的公钥;
2)合约管理员采用随机算法在本地生成合约所用的新的加密密钥;
3)合约管理员用节点的公钥对第二步生成的密钥进行非对称加密;
4)对所有的联盟链区块链节点重复第三步;
5)调用区块链合约的修改密钥函数UpdateKey,将加密后的密钥发送到合约;
6)合约内部的方法将map2中的值更新到map1中,同时用传入的参数更新map2中的内容,注意此时在map1与map2中相同公钥所对应的密钥是不一样的;
7)完成合约管理员对密钥的修改,合约中map1存储了原来map2中的内容,map2全部更新为新的密钥;
(四)、TEE密钥设置
1)加载合约的公开模块到合约虚拟机中;
2)加载合约的隐私模块到TEE环境中;
3)节点程序从合约虚拟机中读取自己节点公钥对应的加密密钥;
4)节点程序将新、旧两个加密密钥全部送入硬件加解密卡解密,获得密钥;
5)节点程序将新、旧两个密钥设置给TEE;
(五)、加密数据读取与存储
1)TEE向节点程序索要数据,节点程序从KV数据库读取,此数据为加密数据;
2)TEE用旧密钥解密数据;
3)TEE进行逻辑运算;
4)TEE对将要输出的数据用新密钥进行加密,向节点程序输出加密后的数据,节点程序将加密数据记录到KV数据库中。
需要说明的是,上述实施例中,合约中设置合约元数据的密钥,而非由节点来设置,即数据的加密掌握在合约管理员手中,在设置与修改密钥上方便、灵活;合约中存储的密钥分别用节点的公钥进行了加密,每个节点对应一个加密后的密钥,每个区块链节点程序只能解开属于自己的加密密钥。节点的私钥在硬件加解密卡内,私钥不出硬件,对合约密钥的解密在硬件内进行。合约在执行时分为两部分,普通部分在合约虚拟机中执行,隐私部分在TEE环境中执行。合约隐私部分在TEE处理完成后,以加密数据的形式存储在节点KV数据库中。
以上显示和描述了本发明的基本原理和主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本发明要求保护范围由所附的权利要求书及其等效物界定。
Claims (4)
1.一种实现合约隐私的数据处理与存储方法,其特征在于:该合约被分成两个部分,一部分是不需要隐私计算的模块,直接送入智能合约虚拟机EVM中执行,数据以明文的形式存储入数据库;另一部分是需要隐私计算的部分,将代码传入可信执行环境TEE中,同时TEE环境中的输入、输出数据也是加密的,而数据的具体处理与存储方法包括以下步骤:
(一)、合约设计
1)设计两个map对象,用于存储新、旧两组密钥,map的key为节点程序的公钥,value为用节点公钥加密后的密钥;
2)设计一个设置密钥函数,参数为一个map,例如:SetKey(map[pubkey:value]),函数要使用传入的参数对map1与map2赋同样的值;
3)设计一个修改密钥函数,参数为一个map,UpdateKey(map[pubkey:value]),函数内要实现将map2的值赋给map1,同时用新传入的参数设置map2;
(二)、管理员设置密钥
1)区块链节点程序通过硬件加解密卡获得节点的公钥,合约管理员通过调用区块链节点程序的API接口获得节点的公钥;
2)合约管理员采用随机算法在本地生成合约所用的加密密钥;
3)合约管理员用节点的公钥对第二步生成的密钥进行非对称加密;
4)对所有的联盟链区块链节点重复第二步;
5)调用区块链合约的设置密钥函数SetKey,将加密后的多个密钥发送到合约;
6)合约内部的方法将密钥分别存储到map1、map2;
7)完成合约管理员对密钥的设置,合约中map1与map2中存储了用各个节点公钥加密过后的密钥;
(三)、管理员修改密钥
1)区块链节点程序通过硬件加解密卡获得节点的公钥,合约管理员通过调用区块链节点程序的API接口获得节点的公钥;
2)合约管理员采用随机算法在本地生成合约所用的新的加密密钥;
3)合约管理员用节点的公钥对第二步生成的密钥进行非对称加密;
4)对所有的联盟链区块链节点重复第三步;
5)调用区块链合约的修改密钥函数UpdateKey,将加密后的密钥发送到合约;
6)合约内部的方法将map2中的值更新到map1中,同时用传入的参数更新map2中的内容;
7)完成合约管理员对密钥的修改,合约中map1存储了原来map2中的内容,map2全部更新为新的密钥;
(四)、TEE密钥设置
1)加载合约的公开模块到合约虚拟机中;
2)加载合约的隐私模块到TEE环境中;
3)节点程序从合约虚拟机中读取自己节点公钥对应的加密密钥;
4)节点程序将新、旧两个加密密钥全部送入硬件加解密卡解密,获得密钥;
5)节点程序将新、旧两个密钥设置给TEE;
(五)、加密数据读取与存储
1)TEE向节点程序索要数据,节点程序从KV数据库读取;
2)TEE用旧密钥解密数据;
3)TEE进行逻辑运算;
4)TEE对将要输出的数据用新密钥进行加密,向节点程序输出加密后的数据,节点程序将加密数据记录到KV数据库中。
2.根据权利要求1所述的一种实现合约隐私的数据处理与存储方法,其特征在于:所述步骤(二)的6)中在map1与map2中所存的密钥是一样的。
3.根据权利要求2所述的一种实现合约隐私的数据处理与存储方法,其特征在于:所述步骤(三)的6)中在map1与map2中相同公钥所对应的密钥是不一样的。
4.根据权利要求3所述的一种实现合约隐私的数据处理与存储方法,其特征在于:所述步骤(五)的1)中读取的数据为加密数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110933241.1A CN113642041A (zh) | 2021-08-14 | 2021-08-14 | 一种实现合约隐私的数据处理与存储方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110933241.1A CN113642041A (zh) | 2021-08-14 | 2021-08-14 | 一种实现合约隐私的数据处理与存储方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113642041A true CN113642041A (zh) | 2021-11-12 |
Family
ID=78421731
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110933241.1A Pending CN113642041A (zh) | 2021-08-14 | 2021-08-14 | 一种实现合约隐私的数据处理与存储方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113642041A (zh) |
-
2021
- 2021-08-14 CN CN202110933241.1A patent/CN113642041A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111130757B (zh) | 一种基于区块链的多云cp-abe访问控制方法 | |
CN107864139B (zh) | 一种基于动态规则的密码学属性基访问控制方法与系统 | |
CN102138300B (zh) | 消息认证码预计算在安全存储器中的应用 | |
CN108418796B (zh) | 云数据多副本完整性验证及关联删除的方法、云存储系统 | |
CN104363215B (zh) | 一种基于属性的加密方法和系统 | |
Mood et al. | Reuse it or lose it: More efficient secure computation through reuse of encrypted values | |
Castiglione et al. | Supporting dynamic updates in storage clouds with the Akl–Taylor scheme | |
CN102567688B (zh) | 一种安卓操作系统上的文件保密系统及其保密方法 | |
CN111274599A (zh) | 一种基于区块链的数据共享方法及相关装置 | |
CN105426775A (zh) | 一种保护智能手机信息安全的方法和系统 | |
CN102355350A (zh) | 一种用于移动智能终端的文件加密方法和系统 | |
CN114039790A (zh) | 一种基于区块链的细粒度云存储安全访问控制方法 | |
Zhang et al. | Feacs: A flexible and efficient access control scheme for cloud computing | |
CN113098849A (zh) | 基于属性及身份加密的访问控制方法、终端及存储介质 | |
CN106934301A (zh) | 一种支持密文数据操作的关系型数据库安全外包数据处理方法 | |
CN102945356A (zh) | 云环境下搜索引擎的访问控制方法及系统 | |
Ma et al. | CP-ABE-based secure and verifiable data deletion in cloud | |
Xu et al. | Accountable and fine-grained controllable rewriting in blockchains | |
Damiani et al. | An experimental evaluation of multi-key strategies for data outsourcing | |
CN113194089A (zh) | 一种支持属性撤销的密文策略基于属性加密方法 | |
CN114553557B (zh) | 密钥调用方法、装置、计算机设备和存储介质 | |
CN116248289A (zh) | 基于密文属性加密的工业互联网标识解析访问控制方法 | |
CN113642041A (zh) | 一种实现合约隐私的数据处理与存储方法 | |
Wu et al. | Research of the Database Encryption Technique Based on Hybrid Cryptography | |
CN102622561A (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 |