CN110941857A - 一种区块链智能合约平台的隐私管理系统及其方法 - Google Patents
一种区块链智能合约平台的隐私管理系统及其方法 Download PDFInfo
- Publication number
- CN110941857A CN110941857A CN201911275259.6A CN201911275259A CN110941857A CN 110941857 A CN110941857 A CN 110941857A CN 201911275259 A CN201911275259 A CN 201911275259A CN 110941857 A CN110941857 A CN 110941857A
- Authority
- CN
- China
- Prior art keywords
- contract
- key
- public
- private
- intelligent contract
- 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.)
- Withdrawn
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/64—Protecting data integrity, e.g. using checksums, certificates or signatures
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Medical Informatics (AREA)
- Databases & Information Systems (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种区块链智能合约平台的隐私管理系统及其方法,是应用于由一个合约发起者与多个合约签订者之间签订智能合约所构成的网络环境中,该隐私管理系统包括智能合约子系统、私有合约子系统以及加密子系统,其中,智能合约子系统包括:智能合约提交模块、智能合约执行模块;私有合约子系统包括:加密合约存储模块、加密合约查询模块;加密子系统包括:公私钥生成模块、公私钥验证模块、合约加密解密模块ENC。本发明能实现私有合约与公开合约的兼容,使隐私管理与去中心化得以兼顾,从而不仅能够扩大智能合约的使用范围,提高区块链技术应用的可靠性和有效性,还能大大降低区块链技术的使用成本。
Description
技术领域
本发明涉及区块链通用平台领域,具体涉及一种区块链智能合约平台的隐私管理系统及其方法。
背景技术
如今,区块链技术应用已延伸到数字金融、物联网、智能制造、供应链管理、数字资产交易等多个领域。目前,全球主要国家都在加快布局区块链技术发展。我国在区块链领域拥有良好基础,要加快推动区块链技术和产业创新发展,积极推进区块链和经济社会融合发展。
区块链技术的集成应用,特别是智能合约,在新的技术革新和产业变革中起着重要作用。现阶段区块链智能合约技术仍存在不足之处,一味强调去中心化和公开性,而在实际应用场景中不可能把所有数据都公开,现行区块链智能合约平台不能兼顾隐私管理的需求,在追求隐私性的过程中,出现了私有合约,形成联盟链、私有链与公链的不同定位和分隔,私有合约与公开合约不能兼容的壁垒,影响了区块链智能合约的应用效率和体验,妨碍了其赋能实体经济以及与经济社会融合发展的速度。
发明内容
本发明是为了解决上述现有技术存在的不足之处,提出一种区块链智能合约平台的隐私管理系统及其方法,以期能实现私有合约与公开合约的兼容,使隐私管理与去中心化得以兼顾,从而不仅能够扩大智能合约的使用范围,提高区块链技术应用的可靠性和有效性,还能大大降低区块链技术的使用成本。
本发明为解决技术问题采用如下技术方案:
本发明一种区块链智能合约平台的隐私管理系统的特点是应用于由一个合约发起者与多个合约签订者之间签订智能合约所构成的网络环境中,将所述合约发起者记为用户A,将任意一个合约签订者记为用户B;所述隐私管理系统包括:智能合约子系统、私有合约子系统以及加密子系统;
所述智能合约分为:公开合约与私有合约;
所述智能合约子系统包括:智能合约提交模块、智能合约执行模块;
所述私有合约子系统包括:加密合约存储模块、加密合约查询模块;
所述加密子系统包括:公私钥生成模块、公私钥验证模块、合约加密解密模块ENC;
所述公私钥生成模块用于生成所述用户A和用户B的非对称公钥以及私钥,并记为用户A的公钥PubA以及私钥PriA,用户B的公钥PubB以及私钥PriB;所述公钥能公开给其他用户;
所述智能合约提交模块获取智能合约的属性信息和智能合约代码;
所述智能合约的属性参数包括:合约发起地址From、合约发起地址的私钥FromKey、合约发起使用非对称公钥PrivateFrom、合约发起使用的非对称私钥PrivateFromKey、合约接受使用的非对称公钥PrivateFor;
所述智能合约代码包括:智能合约方法以及方法的相关参数;
所述用户A利用所述智能合约提交模块在所述智能合约的属性信息中指定:所述合约发起使用非对称公钥PrivateFrom为自己的公钥PubA,所述合约发起使用的非对称私钥PrivateFromKey为自己的私钥PriA,所述合约接受使用的非对称公钥PrivateFor为用户B的公钥PubB;
所述智能合约提交模块根据智能合约的属性信息中的合约发起使用的非对称公钥PrivateFrom、合约发起使用的非对称私钥PrivateFromKey、合约接受使用的非对称公钥PrivateFor三个属性值,判断所述智能合约是否为私有合约;
若为私有合约,则所述公私钥验证模块对公私钥和公钥格式进行验证,若验证通过,则所述合约加密解密模块ENC对智能合约代码进行加密,得到合约密文cipherText;并对所述对称秘钥masterKey进行加密,得到加密后的对称秘钥EncMasterKey;
若为公开合约,则不对智能合约代码进行验证和加密处理;
所述加密合约存储模块对所述合约发起使用的非对称公钥PrivateFrom,合约接受使用的非对称公钥PrivateFor,加密后的合约密文cipherText,以及所述加密后的对称秘钥EncMasterKey进行存储,并取合约密文cipherText的Hash值做索引;
所述智能合约提交模块根据智能合约的属性参数打包成区块链交易数据,所述区块链交易数据包括:交易发起地址,交易接受地址,交易数据Input,交易类型V;
若为私有合约,则所述智能合约提交模块将交易数据Input的值设置为合约密文cipherText的Hash值,以及将交易类型V改为私有合约,从而使得区块链获知所述智能合约为私有合约;
若为公开合约,则所述智能合约提交模块将交易数据Input的值设置为智能合约代码,以及将交易类型V设置为公开合约;
所述智能合约提交模块将区块链交易数据通过区块链广播,并同步到区块链上其他的程序节点,从而获得一个智能合约的地址,以完成智能合约发布的过程;
当用户A或用户B需要调用或查看智能合约代码时,则利用所述智能合约执行模块提交相关参数包括:智能合约的地址,所述智能合约方法以及方法的相关参数,发送者公钥PrivateFrom,发送者私钥PrivateFromKey,接收者公钥PrivateFor;
所述智能合约执行模块据所述智能合约的地址查询所述区块链交易数据,根据所述区块链交易数据的交易类型V判断所述智能合约是否为私有合约;
若是私有合约,则所述公私钥验证模块对发送者公私钥和接收者公钥格式进行验证,若验证通过,则所述加密合约查询模块获取所述区块链交易数据的交易数据Input,即为合约密文cipherText的Hash值,若Hash值不存在,则表示所述智能合约调用失败,返回空值;
若Hash值存在,则所述合约加密解密模块ENC对所述对称秘钥EncMasterKey和合约密文cipherText进行解密,从而得到智能合约代码;
若是公开合约,则所述智能合约执行模块获取所述区块链交易数据的交易数据Input为所述智能合约代码;
所述智能合约执行模块根据所述智能合约方法以及方法的相关参数执行所述智能合约代码的对应方法,并返回结果给用户A或用户B。
本发明所述的隐私管理系统的特点也在于,所述公私钥验证模块是按如下过程对公私钥和公钥格式进行验证:
所述公私钥验证模块对所述合约发起使用的非对称公钥PrivateFrom、合约发起使用的非对称私钥PrivateFromKey、合约接受使用的非对称公钥PrivateFor进行验证,判断合约发起使用非对称公钥PrivateFrom、合约发起使用的非对称私钥PrivateFromKey是否为一对公私钥,以及合约接受使用的非对称公钥PrivateFor格式是否正确,若为一对公私钥且格式正确,则表示验证通过;
所述合约加密解密模块ENC是按如下过程进行加密:
所述合约加密解密模块ENC生成对称秘钥masterKey和一个随机数Nonce,从而使用随机数Nonce和对称秘钥masterKey对智能合约代码进行加密,得到合约密文cipherText;
所述合约加密解密模块ENC利用所述合约发起使用的非对称私钥PrivateFromKey和合约接受使用的非对称公钥PrivateFor计算出一个共享秘钥ShareKey,再使用所述共享秘钥ShareKey和随机生成的随机数RecipientNonce对所述对称秘钥masterKey进行加密,得到加密后的对称秘钥EncMasterKey;
所述加密合约存储模块对用于加密智能合约代码的随机数Nonce,用于加密所述对称秘钥MasterKey的随机数RecipientNonce进行存储。
所述公私钥验证模块是按如下过程对发送者公私钥和接收者公钥格式进行验证:
所述公私钥验证模块对所述发送者公钥PrivateFrom,发送者私钥PrivateFromKey,接收者公钥PrivateFor进行验证,以确定发送者公钥PrivateFrom,发送者私钥PrivateFromKey是否为一对公私钥,以及接收者公钥PrivateFor的格式是否正确,若为一对公私钥且格式正确,则表示验证通过;
所述合约加密解密模块ENC是按如下过程对所述对称秘钥EncMasterKey和合约密文cipherText进行解密:
所述合约加密解密模块ENC通过Hash值从所述加密合约存储模块中获得发送者公钥PrivateFrom、接收者公钥PrivateFor、发送者随机数Nonce、接收者随机数RecipientNonce、合约密文cipherText、以及加密后的对称秘钥EncMasterKey;
合约加密解密模块ENC使用发送者私钥PrivateFromKey和接收者公钥PrivateFor生成一个共享秘钥ShareKey,再联合接收者随机数RecipientNonce将加密后的对称秘钥EncMasterKey解开,得到未加密的对称秘钥MasterKey;
如果解不开所述对称秘钥EncMasterKey,则表明发送者私钥PrivateFromKey和接收者公钥PrivateFor不匹配,合约调用失败,所述合约加密解密模块ENC返回空值;
如果能解开所述对称秘钥EncMasterKey,则所述合约加密解密模块ENC使用对称秘钥MasterKey配合发送者随机数Nonce将合约密文cipherText解开,从而得到智能合约代码;
本发明一种区块链智能合约平台的隐私管理方法的特点是应用于由一个合约发起者与多个合约签订者之间签订智能合约所构成的网络环境中,并按如下步骤进行:
步骤1:将所述合约发起者记为用户A,将任意一个合约签订者记为用户B;
所述用户A和用户B分别生成一对非对称公私钥,记为用户A的公钥PubA以及私钥PriA,用户B的公钥PubB以及私钥PriB;所述公钥能公开给其他用户;
步骤2:所述用户A提交智能合约的属性信息和智能合约代码,所述智能合约的属性信息包括:合约发起地址From、合约发起地址的私钥FromKey、合约发起使用非对称公钥PrivateFrom、合约发起使用的非对称私钥PrivateFromKey、合约接受使用的非对称公钥PrivateFor;
所述智能合约代码包括:智能合约方法以及方法的相关参数;
步骤3:所述用户A在所述智能合约的属性信息中指定:所述合约发起使用非对称公钥PrivateFrom为自己的公钥PubA,所述合约发起使用的非对称私钥PrivateFromKey为自己的私钥PriA,所述合约接受使用的非对称公钥PrivateFor为用户B的公钥PubB;
步骤4:根据所述智能合约的属性信息中的合约发起使用的非对称公钥PrivateFrom、合约发起使用的非对称私钥PrivateFromKey、合约接受使用的非对称公钥PrivateFor三个属性值,判断所述智能合约是否为私有合约,若是,则执行步骤5;否则,表示为公开合约,并执行步骤9;
步骤5:对所述合约发起使用的非对称公钥PrivateFrom、合约发起使用的非对称私钥PrivateFromKey、合约接受使用的非对称公钥PrivateFor进行验证,判断合约发起使用非对称公钥PrivateFrom、合约发起使用的非对称私钥PrivateFromKey是否为一对公私钥,以及合约接受使用的非对称公钥PrivateFor格式是否正确,若为一对公私钥且格式正确,则执行步骤6;否则,不做处理;
步骤6:生成对称秘钥masterKey和一个随机数Nonce,从而使用随机数Nonce和对称秘钥masterKey对智能合约代码进行加密,得到合约密文cipherText;
步骤7:利用所述合约发起使用的非对称私钥PrivateFromKey和合约接受使用的非对称公钥PrivateFor计算出一个共享秘钥ShareKey,再使用所述共享秘钥ShareKey和随机生成的随机数RecipientNonce对所述对称秘钥masterKey进行加密,得到加密后的对称秘钥EncMasterKey;
步骤8:对所述合约发起使用的非对称公钥PrivateFrom,合约接受使用的非对称公钥PrivateFor,用于加密智能合约代码的随机数Nonce,用于加密所述对称秘钥MasterKey的随机数RecipientNonce,加密后的合约密文cipherText,以及所述加密后的对称秘钥EncMasterKey进行存储,并取合约密文cipherText的Hash值做索引;
步骤9:将所述智能合约打包成区块链交易数据;所述区块链交易数据包括:交易发起地址,交易接受地址,交易数据Input,交易类型V;
若为私有合约,则将交易数据Input的值设置为合约密文cipherText的Hash值,以及将交易类型V改为私有合约,从而使得区块链获知所述智能合约为私有合约;
若为公开合约,则将交易数据Input的值设置为智能合约代码,以及将交易类型V设置为公开合约;
步骤10:将区块链交易数据通过区块链广播,并同步到区块链上其他的程序节点,从而获得一个智能合约的地址,以完成智能合约发布的过程;
步骤11:当用户A或用户B需要调用或查看智能合约代码时,则提交相关参数包括:智能合约的地址,所述智能合约方法以及方法的相关参数,发送者公钥PrivateFrom,发送者私钥PrivateFromKey,接收者公钥PrivateFor;
步骤12:根据所述智能合约的地址查询所述区块链交易数据,根据所述区块链交易数据的交易类型V判断所述智能合约是否为私有合约,若是私有合约,则执行步骤13;否则,获取所述区块链交易数据的交易数据Input为所述智能合约代码,并执行步骤15;
步骤13:对所述发送者公钥PrivateFrom,发送者私钥PrivateFromKey,接收者公钥PrivateFor进行验证,以确定发送者公钥PrivateFrom,发送者私钥PrivateFromKey是否为一对公私钥,以及接收者公钥PrivateFor的格式是否正确,若为一对公私钥且格式正确,则执行步骤14;否则,不做处理;
步骤14:获取所述区块链交易数据的交易数据Input,即为合约密文cipherText的Hash值,若Hash值不存在,则表示所述智能合约调用失败,返回空值;若Hash值存在,则通过Hash值获得发送者公钥PrivateFrom、接收者公钥PrivateFor、发送者随机数Nonce、接收者随机数RecipientNonce、合约密文cipherText、以及加密后的对称秘钥EncMasterKey;
使用发送者私钥PrivateFromKey和接收者公钥PrivateFor生成一个共享秘钥ShareKey,再联合接收者随机数RecipientNonce将加密后的对称秘钥EncMasterKey解开,得到未加密的对称秘钥MasterKey;
如果解不开所述对称秘钥EncMasterKey,则表明发送者私钥PrivateFromKey和接收者公钥PrivateFor不匹配,合约调用失败,返回空值;
如果能解开所述对称秘钥EncMasterKey,则使用对称秘钥MasterKey配合发送者随机数Nonce将合约密文cipherText解开,从而得到智能合约代码;
步骤15:根据所述智能合约方法以及方法的相关参数执行所述智能合约代码的对应方法,并返回结果给用户A或用户B。
与现有技术相比,本发明的有益效果在于:
1、本发明利用区块链技术保证了数据的隐私性和不可篡改性,实现了私有合约与公开合约的兼容,扩大了区块链智能合约的实际应用范围,不同于传统的中心化合约,基于本发明的区块链智能合约平台除免去了第三方,具有公立性和低成本维护性,还大大降低了成本且增强了安全性。
2、本发明利用非对称加密算法,将数据加密到区块链上,非对称加密算法使用的公私钥完全保留在用户的手上,即使知道算法在没有公私钥的前提下依旧无法解开数据,极大保护了用户数据安全,不可篡改,真正可靠。
3、本发明基于区块链,完美继承了区块链的去中心化,不可篡改特性,为后续扩展提供更多可能性,简化了流程。
附图说明
图1为本发明私有合约加密流程图;
图2为本发明私有合约创建时序图;
图3为本发明私有合约解密流程图;
图4为本发明私有合约执行时序图。
具体实施方式
本实施例中,一种区块链智能合约平台的隐私管理系统是应用于由一个合约发起者与多个合约签订者之间签订智能合约所构成的网络环境中,将合约发起者记为用户A,将任意一个合约签订者记为用户B;隐私管理系统包括:智能合约子系统、私有合约子系统以及加密子系统;
智能合约分为:公开合约与私有合约;
智能合约子系统包括:智能合约提交模块、智能合约执行模块;
私有合约子系统包括:加密合约存储模块、加密合约查询模块;
加密子系统包括:公私钥生成模块、公私钥验证模块、合约加密解密模块ENC;
公私钥生成模块用于生成用户A和用户B的非对称公钥以及私钥,并记为用户A的公钥PubA以及私钥PriA,用户B的公钥PubB以及私钥PriB;公钥能公开给其他用户;
智能合约提交模块获取智能合约的属性信息和智能合约代码;
智能合约的属性参数包括:合约发起地址From、合约发起地址的私钥FromKey、合约发起使用非对称公钥PrivateFrom、合约发起使用的非对称私钥PrivateFromKey、合约接受使用的非对称公钥PrivateFor;
智能合约代码包括:智能合约方法以及方法的相关参数;
用户A利用智能合约提交模块在智能合约的属性信息中指定:合约发起使用非对称公钥PrivateFrom为自己的公钥PubA,合约发起使用的非对称私钥PrivateFromKey为自己的私钥PriA,合约接受使用的非对称公钥PrivateFor为用户B的公钥PubB;
智能合约提交模块根据智能合约的属性信息中的合约发起使用的非对称公钥PrivateFrom、合约发起使用的非对称私钥PrivateFromKey、合约接受使用的非对称公钥PrivateFor三个属性值,判断智能合约是否为私有合约;
若为私有合约,则公私钥验证模块对公私钥和公钥格式进行验证,若验证通过,则合约加密解密模块ENC对智能合约代码进行加密,得到合约密文cipherText;并对对称秘钥masterKey进行加密,得到加密后的对称秘钥EncMasterKey;
若为公开合约,则不对智能合约代码进行验证和加密处理;
具体的说,公私钥验证模块是按如下过程对公私钥和公钥格式进行验证:
公私钥验证模块对合约发起使用的非对称公钥PrivateFrom、合约发起使用的非对称私钥PrivateFromKey、合约接受使用的非对称公钥PrivateFor长度均为44字符且格式满足Base64算法加密,不满足长度要求和无法被Base64算法解开则验证不通过,通过合约发起使用的非对称私钥PrivateFromKey推导出非对称公钥,和合约发起使用的非对称公钥PrivateFrom对比,若相等则表示验证通过,否则验证不通过。
加密合约存储模块对合约发起使用的非对称公钥PrivateFrom,合约接受使用的非对称公钥PrivateFor,加密后的合约密文cipherText,以及加密后的对称秘钥EncMasterKey进行存储,并取合约密文cipherText的Hash值做索引;
其中,合约加密解密模块ENC是按如下过程进行加密:
合约加密解密模块ENC生成对称秘钥masterKey和一个随机数Nonce,从而使用随机数Nonce和对称秘钥masterKey对智能合约代码进行加密,得到合约密文cipherText;
合约加密解密模块ENC利用合约发起使用的非对称私钥PrivateFromKey和合约接受使用的非对称公钥PrivateFor计算出一个共享秘钥ShareKey,再使用共享秘钥ShareKey和随机生成的随机数RecipientNonce对对称秘钥masterKey进行加密,得到加密后的对称秘钥EncMasterKey;
加密合约存储模块对用于加密智能合约代码的随机数Nonce,用于加密对称秘钥MasterKey的随机数RecipientNonce进行存储。
智能合约提交模块根据智能合约的属性参数打包成区块链交易数据,区块链交易数据包括:交易发起地址,交易接受地址,交易数据Input,交易类型V;
若为私有合约,则智能合约提交模块将交易数据Input的值设置为合约密文cipherText的Hash值,以及将交易类型V改为私有合约,从而使得区块链获知智能合约为私有合约;
若为公开合约,则智能合约提交模块将交易数据Input的值设置为智能合约代码,以及将交易类型V设置为公开合约;
智能合约提交模块将区块链交易数据通过区块链广播,并同步到区块链上其他的程序节点,从而获得一个智能合约的地址,以完成智能合约发布的过程;
当用户A或用户B需要调用或查看智能合约代码时,则利用智能合约执行模块提交相关参数包括:智能合约的地址,智能合约方法以及方法的相关参数,发送者公钥PrivateFrom,发送者私钥PrivateFromKey,接收者公钥PrivateFor;
智能合约执行模块据智能合约的地址查询区块链交易数据,根据区块链交易数据的交易类型V判断智能合约是否为私有合约;
若是私有合约,则公私钥验证模块对发送者公私钥和接收者公钥格式进行验证,若验证通过,则加密合约查询模块获取区块链交易数据的交易数据Input,即为合约密文cipherText的Hash值,若Hash值不存在,则表示智能合约调用失败,返回空值;
其中,公私钥验证模块是按如下过程对发送者公私钥和接收者公钥格式进行验证:
公私钥验证模块对发送者公钥PrivateFrom,发送者私钥PrivateFromKey,接收者公钥PrivateFor长度均为44字符且格式满足Base64算法加密,不满足长度要求和无法被Base64算法解开则验证不通过,通过发送者私钥PrivateFromKey推导出非对称公钥,和发送者公钥PrivateFrom对比,若相等则表示验证通过,否则验证不通过。
若Hash值存在,则合约加密解密模块ENC对对称秘钥EncMasterKey和合约密文cipherText进行解密,从而得到智能合约代码;
若是公开合约,则智能合约执行模块获取区块链交易数据的交易数据Input为智能合约代码;
合约加密解密模块ENC是按如下过程对对称秘钥EncMasterKey和合约密文cipherText进行解密:
合约加密解密模块ENC通过Hash值从加密合约存储模块中获得发送者公钥PrivateFrom、接收者公钥PrivateFor、发送者随机数Nonce、接收者随机数RecipientNonce、合约密文cipherText、以及加密后的对称秘钥EncMasterKey;
合约加密解密模块ENC使用发送者私钥PrivateFromKey和接收者公钥PrivateFor生成一个共享秘钥ShareKey,再联合接收者随机数RecipientNonce将加密后的对称秘钥EncMasterKey解开,得到未加密的对称秘钥MasterKey;
如果解不开对称秘钥EncMasterKey,则表明发送者私钥PrivateFromKey和接收者公钥PrivateFor不匹配,合约调用失败,合约加密解密模块ENC返回空值;
如果能解开对称秘钥EncMasterKey,则合约加密解密模块ENC使用对称秘钥MasterKey配合发送者随机数Nonce将合约密文cipherText解开,从而得到智能合约代码;
智能合约执行模块根据智能合约方法以及方法的相关参数执行智能合约代码的对应方法,并返回结果给用户A或用户B。
本实施例中,一种区块链智能合约平台的隐私管理方法是应用于由一个合约发起者与多个合约签订者之间签订智能合约所构成的网络环境中,并按如下步骤进行:
步骤1:将合约发起者记为用户A,将任意一个合约签订者记为用户B;
用户A和用户B分别生成一对非对称公私钥,记为用户A的公钥PubA以及私钥PriA,用户B的公钥PubB以及私钥PriB;公钥能公开给其他用户;
步骤2:用户A提交智能合约的属性信息和智能合约代码,智能合约的属性信息包括:合约发起地址From、合约发起地址的私钥FromKey、合约发起使用非对称公钥PrivateFrom、合约发起使用的非对称私钥PrivateFromKey、合约接受使用的非对称公钥PrivateFor;
智能合约代码包括:智能合约方法以及方法的相关参数;
步骤3:用户A在智能合约的属性信息中指定:合约发起使用非对称公钥PrivateFrom为自己的公钥PubA,合约发起使用的非对称私钥PrivateFromKey为自己的私钥PriA,合约接受使用的非对称公钥PrivateFor为用户B的公钥PubB;
步骤4:根据智能合约的属性信息中的合约发起使用的非对称公钥PrivateFrom、合约发起使用的非对称私钥PrivateFromKey、合约接受使用的非对称公钥PrivateFor三个属性值,判断智能合约是否为私有合约,若是,则执行步骤5;否则,表示为公开合约,并执行步骤9;
步骤5:对合约发起使用的非对称公钥PrivateFrom、合约发起使用的非对称私钥PrivateFromKey、合约接受使用的非对称公钥PrivateFor进行验证,公私钥验证模块对合约发起使用的非对称公钥PrivateFrom、合约发起使用的非对称私钥PrivateFromKey、合约接受使用的非对称公钥PrivateFor长度均为44字符且格式满足Base64算法加密,不满足长度要求和无法被Base64算法解开则验证不通过,则不做处理;通过合约发起使用的非对称私钥PrivateFromKey推导出非对称公钥,和合约发起使用的非对称公钥PrivateFrom对比,若相等则表示验证通过,执行步骤6,否则验证不通过,不做处理。
步骤6:生成对称秘钥masterKey和一个随机数Nonce,从而使用随机数Nonce和对称秘钥masterKey对智能合约代码进行加密,得到合约密文cipherText;
步骤7:利用合约发起使用的非对称私钥PrivateFromKey和合约接受使用的非对称公钥PrivateFor计算出一个共享秘钥ShareKey,再使用共享秘钥ShareKey和随机生成的随机数RecipientNonce对对称秘钥masterKey进行加密,得到加密后的对称秘钥EncMasterKey,如图1所示;
步骤8:对合约发起使用的非对称公钥PrivateFrom,合约接受使用的非对称公钥PrivateFor,用于加密智能合约代码的随机数Nonce,用于加密对称秘钥MasterKey的随机数RecipientNonce,加密后的合约密文cipherText,以及加密后的对称秘钥EncMasterKey进行存储,并取合约密文cipherText的Hash值做索引;
步骤9:将智能合约打包成区块链交易数据;区块链交易数据包括:交易发起地址,交易接受地址,交易数据Input,交易类型V;
若为私有合约,则将交易数据Input的值设置为合约密文cipherText的Hash值,以及将交易类型V改为私有合约,从而使得区块链获知智能合约为私有合约;
若为公开合约,则将交易数据Input的值设置为智能合约代码,以及将交易类型V设置为公开合约;
步骤10:将区块链交易数据通过区块链广播,并同步到区块链上其他的程序节点,从而获得一个智能合约的地址,以完成智能合约发布的过程,如图2所示;
步骤11:当用户A或用户B需要调用或查看智能合约代码时,则提交相关参数包括:智能合约的地址,智能合约方法以及方法的相关参数,发送者公钥PrivateFrom,发送者私钥PrivateFromKey,接收者公钥PrivateFor;
步骤12:根据智能合约的地址查询区块链交易数据,根据区块链交易数据的交易类型V判断智能合约是否为私有合约,若是私有合约,则执行步骤13;否则,获取区块链交易数据的交易数据Input为智能合约代码,并执行步骤15;
步骤13:对发送者公钥PrivateFrom,发送者私钥PrivateFromKey,接收者公钥PrivateFor进行验证,公私钥验证模块对发送者公钥PrivateFrom,发送者私钥PrivateFromKey,接收者公钥PrivateFor长度均为44字符且格式满足Base64算法加密,不满足长度要求和无法被Base64算法解开则验证不通过,则不做处理,通过发送者私钥PrivateFromKey推导出非对称公钥,和发送者公钥PrivateFrom对比,若相等则表示验证通过,执行步骤14,否则验证不通过,不做处理。
步骤14:获取区块链交易数据的交易数据Input,即为合约密文cipherText的Hash值,若Hash值不存在,则表示智能合约调用失败,返回空值;若Hash值存在,则通过Hash值获得发送者公钥PrivateFrom、接收者公钥PrivateFor、发送者随机数Nonce、接收者随机数RecipientNonce、合约密文cipherText、以及加密后的对称秘钥EncMasterKey;
使用发送者私钥PrivateFromKey和接收者公钥PrivateFor生成一个共享秘钥ShareKey,再联合接收者随机数RecipientNonce将加密后的对称秘钥EncMasterKey解开,得到未加密的对称秘钥MasterKey;
如果解不开对称秘钥EncMasterKey,则表明发送者私钥PrivateFromKey和接收者公钥PrivateFor不匹配,合约调用失败,返回空值;
如果能解开对称秘钥EncMasterKey,则使用对称秘钥MasterKey配合发送者随机数Nonce将合约密文cipherText解开,从而得到智能合约代码,如图3所示;
步骤15:根据智能合约方法以及方法的相关参数执行智能合约代码的对应方法,并返回结果给用户A或用户B,如图4所示。
Claims (6)
1.一种区块链智能合约平台的隐私管理系统,其特征是应用于由一个合约发起者与多个合约签订者之间签订智能合约所构成的网络环境中,将所述合约发起者记为用户A,将任意一个合约签订者记为用户B;所述隐私管理系统包括:智能合约子系统、私有合约子系统以及加密子系统;
所述智能合约分为:公开合约与私有合约;
所述智能合约子系统包括:智能合约提交模块、智能合约执行模块;
所述私有合约子系统包括:加密合约存储模块、加密合约查询模块;
所述加密子系统包括:公私钥生成模块、公私钥验证模块、合约加密解密模块ENC;
所述公私钥生成模块用于生成所述用户A和用户B的非对称公钥以及私钥,并记为用户A的公钥PubA以及私钥PriA,用户B的公钥PubB以及私钥PriB;所述公钥能公开给其他用户;
所述智能合约提交模块获取智能合约的属性信息和智能合约代码;
所述智能合约的属性参数包括:合约发起地址From、合约发起地址的私钥FromKey、合约发起使用非对称公钥PrivateFrom、合约发起使用的非对称私钥PrivateFromKey、合约接受使用的非对称公钥PrivateFor;
所述智能合约代码包括:智能合约方法以及方法的相关参数;
所述用户A利用所述智能合约提交模块在所述智能合约的属性信息中指定:所述合约发起使用非对称公钥PrivateFrom为自己的公钥PubA,所述合约发起使用的非对称私钥PrivateFromKey为自己的私钥PriA,所述合约接受使用的非对称公钥PrivateFor为用户B的公钥PubB;
所述智能合约提交模块根据智能合约的属性信息中的合约发起使用的非对称公钥PrivateFrom、合约发起使用的非对称私钥PrivateFromKey、合约接受使用的非对称公钥PrivateFor三个属性值,判断所述智能合约是否为私有合约;
若为私有合约,则所述公私钥验证模块对公私钥和公钥格式进行验证,若验证通过,则所述合约加密解密模块ENC对智能合约代码进行加密,得到合约密文cipherText;并对所述对称秘钥masterKey进行加密,得到加密后的对称秘钥EncMasterKey;
若为公开合约,则不对智能合约代码进行验证和加密处理;
所述加密合约存储模块对所述合约发起使用的非对称公钥PrivateFrom,合约接受使用的非对称公钥PrivateFor,加密后的合约密文cipherText,以及所述加密后的对称秘钥EncMasterKey进行存储,并取合约密文cipherText的Hash值做索引;
所述智能合约提交模块根据智能合约的属性参数打包成区块链交易数据,所述区块链交易数据包括:交易发起地址,交易接受地址,交易数据Input,交易类型V;
若为私有合约,则所述智能合约提交模块将交易数据Input的值设置为合约密文cipherText的Hash值,以及将交易类型V改为私有合约,从而使得区块链获知所述智能合约为私有合约;
若为公开合约,则所述智能合约提交模块将交易数据Input的值设置为智能合约代码,以及将交易类型V设置为公开合约;
所述智能合约提交模块将区块链交易数据通过区块链广播,并同步到区块链上其他的程序节点,从而获得一个智能合约的地址,以完成智能合约发布的过程;
当用户A或用户B需要调用或查看智能合约代码时,则利用所述智能合约执行模块提交相关参数包括:智能合约的地址,所述智能合约方法以及方法的相关参数,发送者公钥PrivateFrom,发送者私钥PrivateFromKey,接收者公钥PrivateFor;
所述智能合约执行模块据所述智能合约的地址查询所述区块链交易数据,根据所述区块链交易数据的交易类型V判断所述智能合约是否为私有合约;
若是私有合约,则所述公私钥验证模块对发送者公私钥和接收者公钥格式进行验证,若验证通过,则所述加密合约查询模块获取所述区块链交易数据的交易数据Input,即为合约密文cipherText的Hash值,若Hash值不存在,则表示所述智能合约调用失败,返回空值;
若Hash值存在,则所述合约加密解密模块ENC对所述对称秘钥EncMasterKey和合约密文cipherText进行解密,从而得到智能合约代码;
若是公开合约,则所述智能合约执行模块获取所述区块链交易数据的交易数据Input为所述智能合约代码;
所述智能合约执行模块根据所述智能合约方法以及方法的相关参数执行所述智能合约代码的对应方法,并返回结果给用户A或用户B。
2.根据权利要求1所述的隐私管理系统,其特征是,所述公私钥验证模块是按如下过程对公私钥和公钥格式进行验证:
所述公私钥验证模块对所述合约发起使用的非对称公钥PrivateFrom、合约发起使用的非对称私钥PrivateFromKey、合约接受使用的非对称公钥PrivateFor进行验证,判断合约发起使用非对称公钥PrivateFrom、合约发起使用的非对称私钥PrivateFromKey是否为一对公私钥,以及合约接受使用的非对称公钥PrivateFor格式是否正确,若为一对公私钥且格式正确,则表示验证通过。
3.根据权利要求1所述的隐私管理系统,其特征是,所述合约加密解密模块ENC是按如下过程进行加密:
所述合约加密解密模块ENC生成对称秘钥masterKey和一个随机数Nonce,从而使用随机数Nonce和对称秘钥masterKey对智能合约代码进行加密,得到合约密文cipherText;
所述合约加密解密模块ENC利用所述合约发起使用的非对称私钥PrivateFromKey和合约接受使用的非对称公钥PrivateFor计算出一个共享秘钥ShareKey,再使用所述共享秘钥ShareKey和随机生成的随机数RecipientNonce对所述对称秘钥masterKey进行加密,得到加密后的对称秘钥EncMasterKey;
所述加密合约存储模块对用于加密智能合约代码的随机数Nonce,用于加密所述对称秘钥MasterKey的随机数RecipientNonce进行存储。
4.根据权利要求1所述的隐私管理系统,其特征是,所述公私钥验证模块是按如下过程对发送者公私钥和接收者公钥格式进行验证:
所述公私钥验证模块对所述发送者公钥PrivateFrom,发送者私钥PrivateFromKey,接收者公钥PrivateFor进行验证,以确定发送者公钥PrivateFrom,发送者私钥PrivateFromKey是否为一对公私钥,以及接收者公钥PrivateFor的格式是否正确,若为一对公私钥且格式正确,则表示验证通过。
5.根据权利要求1所述的隐私管理系统,其特征是,所述合约加密解密模块ENC是按如下过程对所述对称秘钥EncMasterKey和合约密文cipherText进行解密:
所述合约加密解密模块ENC通过Hash值从所述加密合约存储模块中获得发送者公钥PrivateFrom、接收者公钥PrivateFor、发送者随机数Nonce、接收者随机数RecipientNonce、合约密文cipherText、以及加密后的对称秘钥EncMasterKey;
合约加密解密模块ENC使用发送者私钥PrivateFromKey和接收者公钥PrivateFor生成一个共享秘钥ShareKey,再联合接收者随机数RecipientNonce将加密后的对称秘钥EncMasterKey解开,得到未加密的对称秘钥MasterKey;
如果解不开所述对称秘钥EncMasterKey,则表明发送者私钥PrivateFromKey和接收者公钥PrivateFor不匹配,合约调用失败,所述合约加密解密模块ENC返回空值;
如果能解开所述对称秘钥EncMasterKey,则所述合约加密解密模块ENC使用对称秘钥MasterKey配合发送者随机数Nonce将合约密文cipherText解开,从而得到智能合约代码。
6.一种区块链智能合约平台的隐私管理方法,其特征是应用于由一个合约发起者与多个合约签订者之间签订智能合约所构成的网络环境中,并按如下步骤进行:
步骤1:将所述合约发起者记为用户A,将任意一个合约签订者记为用户B;
所述用户A和用户B分别生成一对非对称公私钥,记为用户A的公钥PubA以及私钥PriA,用户B的公钥PubB以及私钥PriB;所述公钥能公开给其他用户;
步骤2:所述用户A提交智能合约的属性信息和智能合约代码,所述智能合约的属性信息包括:合约发起地址From、合约发起地址的私钥FromKey、合约发起使用非对称公钥PrivateFrom、合约发起使用的非对称私钥PrivateFromKey、合约接受使用的非对称公钥PrivateFor;
所述智能合约代码包括:智能合约方法以及方法的相关参数;
步骤3:所述用户A在所述智能合约的属性信息中指定:所述合约发起使用非对称公钥PrivateFrom为自己的公钥PubA,所述合约发起使用的非对称私钥PrivateFromKey为自己的私钥PriA,所述合约接受使用的非对称公钥PrivateFor为用户B的公钥PubB;
步骤4:根据所述智能合约的属性信息中的合约发起使用的非对称公钥PrivateFrom、合约发起使用的非对称私钥PrivateFromKey、合约接受使用的非对称公钥PrivateFor三个属性值,判断所述智能合约是否为私有合约,若是,则执行步骤5;否则,表示为公开合约,并执行步骤9;
步骤5:对所述合约发起使用的非对称公钥PrivateFrom、合约发起使用的非对称私钥PrivateFromKey、合约接受使用的非对称公钥PrivateFor进行验证,判断合约发起使用非对称公钥PrivateFrom、合约发起使用的非对称私钥PrivateFromKey是否为一对公私钥,以及合约接受使用的非对称公钥PrivateFor格式是否正确,若为一对公私钥且格式正确,则执行步骤6;否则,不做处理;
步骤6:生成对称秘钥masterKey和一个随机数Nonce,从而使用随机数Nonce和对称秘钥masterKey对智能合约代码进行加密,得到合约密文cipherText;
步骤7:利用所述合约发起使用的非对称私钥PrivateFromKey和合约接受使用的非对称公钥PrivateFor计算出一个共享秘钥ShareKey,再使用所述共享秘钥ShareKey和随机生成的随机数RecipientNonce对所述对称秘钥masterKey进行加密,得到加密后的对称秘钥EncMasterKey;
步骤8:对所述合约发起使用的非对称公钥PrivateFrom,合约接受使用的非对称公钥PrivateFor,用于加密智能合约代码的随机数Nonce,用于加密所述对称秘钥MasterKey的随机数RecipientNonce,加密后的合约密文cipherText,以及所述加密后的对称秘钥EncMasterKey 进行存储,并取合约密文cipherText的Hash值做索引;
步骤9:将所述智能合约打包成区块链交易数据;所述区块链交易数据包括:交易发起地址,交易接受地址,交易数据Input,交易类型V;
若为私有合约,则将交易数据Input的值设置为合约密文cipherText的Hash值,以及将交易类型V改为私有合约,从而使得区块链获知所述智能合约为私有合约;
若为公开合约,则将交易数据Input的值设置为智能合约代码,以及将交易类型V设置为公开合约;
步骤10:将区块链交易数据通过区块链广播,并同步到区块链上其他的程序节点,从而获得一个智能合约的地址,以完成智能合约发布的过程;
步骤11:当用户A或用户B需要调用或查看智能合约代码时,则提交相关参数包括:智能合约的地址,所述智能合约方法以及方法的相关参数,发送者公钥PrivateFrom,发送者私钥PrivateFromKey,接收者公钥PrivateFor;
步骤12:根据所述智能合约的地址查询所述区块链交易数据,根据所述区块链交易数据的交易类型V判断所述智能合约是否为私有合约,若是私有合约,则执行步骤13;否则,获取所述区块链交易数据的交易数据Input为所述智能合约代码,并执行步骤15;
步骤13:对所述发送者公钥PrivateFrom,发送者私钥PrivateFromKey,接收者公钥PrivateFor进行验证,以确定发送者公钥PrivateFrom,发送者私钥PrivateFromKey是否为一对公私钥,以及接收者公钥PrivateFor的格式是否正确,若为一对公私钥且格式正确,则执行步骤14;否则,不做处理;
步骤14:获取所述区块链交易数据的交易数据Input,即为合约密文cipherText的Hash值,若Hash值不存在,则表示所述智能合约调用失败,返回空值;若Hash值存在,则通过Hash值获得发送者公钥PrivateFrom、接收者公钥PrivateFor、发送者随机数Nonce、接收者随机数RecipientNonce、合约密文cipherText、以及加密后的对称秘钥EncMasterKey;
使用发送者私钥PrivateFromKey和接收者公钥PrivateFor生成一个共享秘钥ShareKey,再联合接收者随机数RecipientNonce将加密后的对称秘钥EncMasterKey解开,得到未加密的对称秘钥MasterKey;
如果解不开所述对称秘钥EncMasterKey,则表明发送者私钥PrivateFromKey和接收者公钥PrivateFor不匹配,合约调用失败,返回空值;
如果能解开所述对称秘钥EncMasterKey,则使用对称秘钥MasterKey配合发送者随机数Nonce将合约密文cipherText解开,从而得到智能合约代码;
步骤15:根据所述智能合约方法以及方法的相关参数执行所述智能合约代码的对应方法,并返回结果给用户A或用户B。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911275259.6A CN110941857A (zh) | 2019-12-12 | 2019-12-12 | 一种区块链智能合约平台的隐私管理系统及其方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911275259.6A CN110941857A (zh) | 2019-12-12 | 2019-12-12 | 一种区块链智能合约平台的隐私管理系统及其方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110941857A true CN110941857A (zh) | 2020-03-31 |
Family
ID=69910211
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911275259.6A Withdrawn CN110941857A (zh) | 2019-12-12 | 2019-12-12 | 一种区块链智能合约平台的隐私管理系统及其方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110941857A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112035864A (zh) * | 2020-09-09 | 2020-12-04 | 苏州工业园区凌志软件股份有限公司 | 一种双重加密的区块链智能合约系统及方法 |
CN112417502A (zh) * | 2020-11-18 | 2021-02-26 | 中国电子科技集团公司第三十研究所 | 基于区块链、去中心化部署的分布式即时通讯系统及方法 |
CN116248751A (zh) * | 2023-03-20 | 2023-06-09 | 北京航空航天大学云南创新研究院 | 一种基于联盟链的智能合约注册与校验方法 |
CN117372050A (zh) * | 2023-12-07 | 2024-01-09 | 成都天府通数字科技有限公司 | 多平台的订单核销验证的方法和系统 |
CN116248751B (zh) * | 2023-03-20 | 2024-06-21 | 北京航空航天大学云南创新研究院 | 一种基于联盟链的智能合约注册与校验方法 |
-
2019
- 2019-12-12 CN CN201911275259.6A patent/CN110941857A/zh not_active Withdrawn
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112035864A (zh) * | 2020-09-09 | 2020-12-04 | 苏州工业园区凌志软件股份有限公司 | 一种双重加密的区块链智能合约系统及方法 |
CN112417502A (zh) * | 2020-11-18 | 2021-02-26 | 中国电子科技集团公司第三十研究所 | 基于区块链、去中心化部署的分布式即时通讯系统及方法 |
CN116248751A (zh) * | 2023-03-20 | 2023-06-09 | 北京航空航天大学云南创新研究院 | 一种基于联盟链的智能合约注册与校验方法 |
CN116248751B (zh) * | 2023-03-20 | 2024-06-21 | 北京航空航天大学云南创新研究院 | 一种基于联盟链的智能合约注册与校验方法 |
CN117372050A (zh) * | 2023-12-07 | 2024-01-09 | 成都天府通数字科技有限公司 | 多平台的订单核销验证的方法和系统 |
CN117372050B (zh) * | 2023-12-07 | 2024-02-20 | 成都天府通数字科技有限公司 | 多平台的订单核销验证的方法和系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112491846B (zh) | 一种跨链的区块链通信方法及装置 | |
Bird et al. | The kryptoknight family of light-weight protocols for authentication and key distribution | |
CN113256290A (zh) | 去中心化加密通讯与交易系统 | |
US20200213125A1 (en) | Computer-implemented system and method enabling secure storage of a large blockchain over a plurality of storage nodes | |
US8806206B2 (en) | Cooperation method and system of hardware secure units, and application device | |
CN107425971B (zh) | 无证书的数据加/解密方法和装置、终端 | |
EP3387576B1 (en) | Apparatus and method for certificate enrollment | |
CN110941857A (zh) | 一种区块链智能合约平台的隐私管理系统及其方法 | |
WO2023184858A1 (zh) | 一种时间戳生成方法、装置、电子设备及存储介质 | |
CN115021913A (zh) | 工业互联网标识解析体系密钥生成方法、系统与存储介质 | |
TWI593267B (zh) | 具有時戳驗證的免憑證公開金鑰管理方法 | |
CN113761578A (zh) | 一种基于区块链的文书验真方法 | |
CN112926983A (zh) | 一种基于区块链的存证交易加密系统及方法 | |
CN114697038A (zh) | 一种抗量子攻击的电子签章方法和系统 | |
CN112364335A (zh) | 标识身份鉴别方法、装置及电子设备和存储介质 | |
CN116527282A (zh) | 用于算法过渡的多公钥数字证书的密钥使用方法 | |
CN116366259A (zh) | 一种面向密文数据的公共可验证布尔搜索系统及方法 | |
CN116760530A (zh) | 一种电力物联终端轻量级认证密钥协商方法 | |
CN113709734B (zh) | 一种基于区块链的无人机分布式身份认证方法 | |
CN111460463A (zh) | 电子存证保存和公证方法、装置、设备及存储介质 | |
CN112423295B (zh) | 一种基于区块链技术的轻量级安全认证方法及系统 | |
CN115913677A (zh) | 一种基于区块链的协作边缘存储数据隐私保护系统及方法 | |
CN101957962A (zh) | 电子印章软件系统的应用及验证方法 | |
CN115037479A (zh) | 一种客户侧综合能源公共信息数据存储防护方法 | |
CN113362065A (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 | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20200331 |
|
WW01 | Invention patent application withdrawn after publication |