发明内容
针对现有技术的不足,本发明提供一种基于区块链网络的智能合约数据安全管理方法用以解决现有技术中因合约公开且其他安全漏洞,造成合约数据恶意攻击造成数据变更的问题。
本发明解决技术问题采用如下技术方案:
一种基于区块链网络的智能合约数据安全管理方法,包括以下步骤:
在生成智能合约时同步将非对称公私钥中的公钥信息存入其中;
触发数据管理请求,建立区块链网络通信,调用智能合约生成验证数据,并对验证数据赋予时效性管理后传至数据管理请求端;
数据管理请求端调用私钥,对验证数据进行签名后与待管理数据进行重组并送入智能合约执行校验;
根据校验结果对待管理数据执行匹配管理操作,具体包括:
执行验证数据状态校验:若验证不通过则终止操作,否则执行验证数据时效性校验;
若验证数据时效性校验不通过则终止操作,否则执行签名验证;
若签名验证不通过则终止操作,否则执行合约匹配数据标签验证;
若标签验证不通过则终止操作,否则基于待管理数据对智能合约进行匹配数据管理。
优选地,,所述验证数据为随机生成的串码:
所述对验证数据赋予时效性管理为在智能合约中对本次生成的串码设置时间戳并预设时间阈值。
优选地,所述签名验证具体包括:
智能合约调用公钥对送入的签名数据进行解签,与本地存储的验证数据进行比对,完成验证。
优选地,所述验证数据状态校验为读取智能合约存储的验证数据状态,若验证数据未执行验签则通过校验;
所述验证数据时效性校验具体包括:
读取本地存储的验证数据中的时间戳,基于数据接收时间和预设时间阈值,进行验证数据的时效性验证。
优选地,所述标签验证具体包括:
对智能合约中数据匹配设置管理标签,所述管理标签包括该数据管理权限、管理次数和次数阈值;
签名验证通过后,读取待管理数据,定位智能合约中与待管理数据对应的目标数据管理标签;
若该管理标签中管理权限为禁止,则终止操作;
否则读取管理次数,若达到次数阈值则终止操作,否则基于待管理数据对目标数据执行更新操作,并更新管理标签中的管理次数。
优选地,所述区块链网络包括:采用用弱中心化的联盟区块链技术在可信执行环境中进行配置组建,或者采用去中心化的公有区块链技术进行配置组建。
本发明还提供一种基于区块链网络的智能合约数据安全管理系统,包括数据管理终端模块、区块链网络、智能合约模块和数据标签存储模块,其中,
所述数据管理终端模块配置成用于记录非对称公私钥中的私钥信息,并发出数据管理请求至智能合约模块,在收到智能合约模块生成的验证数据后对其进行签名并将待管理数据进行组合封装后经传输至智能合约模块;
所述智能合约模块配置成接收数据管理请求、生成验证数据传输至数据管理终端,对接收的签名数据执行验签并执行匹配管理操作,包括:
执行验证数据状态校验:若验证不通过则终止操作,否则执行验证数据时效性校验;
若验证数据时效性校验不通过则终止操作,否则执行签名验证;
若签名验证不通过则终止操作,否则执行合约匹配数据标签验证;
若标签验证不通过则终止操作,否则基于待管理数据对智能合约进行匹配数据管理;
所述数据标签存储模块配置成用于对智能合约中数据匹配设置管理标签并存储,所述管理标签包括该数据管理权限、管理次数和次数阈值;
签名验证通过后,读取待管理数据,定位智能合约中与待管理数据对应的目标数据管理标签;
若该管理标签中管理权限为禁止,则终止操作;
否则读取管理次数,若达到次数阈值则终止操作,否则基于待管理数据对目标数据执行更新操作,并更新管理标签中的管理次数。
优选地,所述智能合约模块生成的验证数据为随机生成的串码:
所述对验证数据赋予时效性管理为在智能合约中对本次生成的串码设置时间戳并预设时间阈值。
优选地,所述智能合约模块执行验证数据状态校验为为读取智能合约存储的验证数据状态,若验证数据未执行验签则通过校验;
所述验证数据时效性校验具体包括:
读取本地存储的验证数据中的时间戳,基于数据接收时间和预设时间阈值,进行验证数据的时效性验证。
本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有智能合约数据安全管理程序,所述智能合约数据安全管理程序可被一个或者多个处理器执行,以实现如前述的基于区块链网络的智能合约数据安全管理方法的步骤。
与现有技术相比,本发明具有如下的有益效果:
本发明对合约管理者信息进行链上存储,保证了管理者信息的安全性,对于合约中重要数据信息进行标签管理,采用多层数据防护机制,可以排除多数恶意数据攻击;四重数据校验机制解决了因合约公开或其他安全漏洞造成的合约数据恶意攻击造成数据变更,有效确保链上数据的安全性,有切实意义上的实用价值;
关于本发明相对于现有技术,其他突出的实质性特点和显著的进步在实施例部分进一步详细介绍。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,在说明书及权利要求书当中使用了某些名称来指称特定组件。应当理解,本领域普通技术人员可能会用不同名称来指称同一个组件。本申请说明书及权利要求书并不以名称的差异作为区分组件的方式,而是以组件在功能上的实质性差异作为区分组件的准则。如在本申请说明书和权利要求书中所使用的“包含”或“包括”为一开放式用语,其应解释为“包含但不限定于”或“包括但不限定于”。具体实施方式部分所描述的实施例为本发明的较佳实施例,并非用以限定本发明的范围。
此外,所属技术领域的技术人员知道,本发明的各个方面可以实现为系统、方法或计算机程序产品。因此,本发明的各个方面可以具体实现为软硬件结合的形式,这里可以统称为“电路”、“模块”或“系统”。此外,在一些实施例中,本发明的各个方面还可以实现为在一个或多个微控制器可读介质中的计算机程序产品的形式,该微控制器可读介质中包含微控制器可读的程序代码。
在此预先说明的是针对智能合约安全问题,通常主要使用安全库进行开发、安全团队开展合约测试、合约审计这三个角度采取措施,例如:
(1)形式化验证
形式化验证用逻辑语言对智能合约文档和代码进行形式化建模,通过严密的数学推理逻辑和证明,检查智能合约的功能正确性和安全属性,克服了用传统测试手段无法穷举所有可能输入的缺陷,能完全覆盖代码的运行期行为,可以确保在一定范围内的绝对正确,弥补了合约测试和合约审计工作的局限性,因此形式化验证已初步应用于高铁、航天、核电等安全攸关的领域,并且取得了非常好的效果。
Bhargavan等提出了一个智能合约分析和验证框架,该框架通过Solidity*和EVM*工具将智能合约源码和字节码转化成函数编程语言F*,以便分析和验证合约运行时安全性和功能正确性。目前,Coq、Isabelle/HOL、Why3等工具也实现了EVM的语义表示,并做了一些形式化验证智能合约的工作。
(2)模糊测试
模糊测试是一种通过构造非预期的输入数据并监视目标软件在运行过程中的异常结果来发现软件故障的方法。对智能合约进行模糊测试时,利用随机引擎生成大量的随机数据,构成可执行交易,参考测试结果的反馈,随机引擎动态调整生成的数据,从而探索尽可能多的智能合约状态空间。基于有限状态机分析每一笔交易的状态,检测是否存在攻击威胁。自动化工具Echidna采用了模糊测试技术来对EVM字节码进行检测,但是不能保证API功能的稳定性。
(3) 符号执行
符号执行的核心思想是使用符号值代替具体值执行程序。对于程序分析过程中任意不确定值的变量,包括环境变量和输入等,都可以用符号值代替。符号执行中的“执行”是指解析程序可执行路径上的指令,根据其语义更新程序执行状态,等同于解释执行借助符号执行检测智能合约漏洞的一般过程为,首先将按需将智能合约中不确定值的变量符号化,然后逐条解释执行程序中的指令,在解释执行过程中更新执行状态、搜集路径约束,并在分支节点处做fork执行,以完成程序中所有可执行路径的探索,发现安全问题。约束求解技术能够对符号执行中搜集的路径约束进行求解,判断路径是否可达,并在特定的程序点上检测变量的取值是否符合程序安全的规定或者可能满足漏洞存在的条件。
(4)污点分析
本质上来说,污点分析是针对污点变量的数据流分析技术。污点分析的一般流程为:首先识别污点信息在智能合约中的产生点并对其进行标记;然后按照实际需求和污点传播规则进行前向或后向数据依赖分析,得到污点的数据依赖和被依赖关系的指令集合;最终在一些关键的程序点检查关键的操作是否会受到污点信息的影响。
在智能合约具有缺陷需要完善时,对于合约中的数据需要进行对应管理更新,本发明基于这种背景下设计了下述实施例内容。
实施例1
如图1所示,本实施例提供的一种基于区块链网络的智能合约数据安全管理方法,包括以下步骤:
在生成智能合约时同步将非对称公私钥中的公钥信息存入其中;
触发数据管理请求,建立区块链网络通信,调用智能合约生成验证数据,并对验证数据赋予时效性管理后传至数据管理请求端;在本实施例中验证数据为随机生成的串码,该串码无规律,对验证数据赋予时效性管理具体为在智能合约中对本次生成的串码设置时间戳并预设时间阈值;
数据管理请求端调用私钥,对验证数据进行签名后与待管理数据进行重组并送入智能合约执行校验;
根据校验结果对待管理数据执行匹配管理操作,具体包括:
执行验证数据状态校验:若验证不通过则终止操作,否则执行验证数据时效性校验;其中验证数据状态校验为读取智能合约存储的验证数据状态,若验证数据未执行验签则通过校验;若已经执行过验签则终止操作,确保私钥签名内容和原始签名信息被别人截获后发生的重复攻击可以被阻止,设定了区块链下发验证串码的随机性以及一次性;
时效性校验具体包括:
读取验证数据中的时间戳,基于数据接收时间和预设时间阈值,进行验证数据的时效性验证;当其他非智能合约公钥对应私钥签名的数据,或者未签名的数据来恶意攻击智能合约时,在第一步防护—验签时就已被丢弃,合约数据不会有任何响应;
若验证数据时效性校验不通过则终止操作,否则执行签名验证;其中签名验证具体包括:
智能合约调用公钥对送入的签名数据进行解签,与本地存储的验证数据进行比对,完成验证;
若签名验证不通过则终止操作,否则基于待管理数据对智能合约进行匹配数据管理,在本实施例中的标签验证具体包括:
对智能合约中数据匹配设置管理标签,所述管理标签包括该数据管理权限、管理次数和次数阈值;
签名验证通过后,读取待管理数据,定位智能合约中与待管理数据对应的目标数据管理标签;
若该管理标签中管理权限为禁止,则终止操作;
否则读取管理次数,若达到次数阈值则终止操作,否则基于待管理数据对目标数据执行更新操作,并更新管理标签中的管理次数;比较常见的可以的设置管理次数为1次,即对智能合约中初始信息添加仅可执行一次的管理更新方法,如果用户在初次数据上传后,私钥丢失,当第二人通过私钥对合约信息进行更新时,本实施例的设计保护了数据安全,确保合约初始数据拥有者数据不被二次更新,保证数据信息的安全,在这里不做追溯;
由于现有技术总数据通过拥有者私钥授权,可实现对智能合约数据的更新,但现实中用户私钥保管机制不够完善,容易造成私钥的丢弃和被盗问题;一旦私钥被盗,合约安全性就无法得到保证,对于重要信息,上链后不被更改的信息,在本实施例中设置标签的主要可以解决对于智能合约中数据的分类分级别管控。
管理标签配合时效性校验和签名验证实现了对于待管理数据的多重防护。
在本实施例总的区块链网络包括:采用用弱中心化的联盟区块链技术在可信执行环境中进行配置组建,或者采用去中心化的公有区块链技术进行配置组建。
实施例2
如图2所示,本实施例提供一种基于区块链网络的对称加密溯源交易系统,包括数据管理终端模块、区块链网络、智能合约模块和数据标签存储模块,其中,
所述数据管理终端模块配置成用于记录非对称公私钥中的私钥信息,并发出数据管理请求至智能合约模块,在收到智能合约模块生成的验证数据后对其进行签名并将待管理数据进行组合封装后经传输至智能合约模块;
所述智能合约模块配置成接收数据管理请求、生成验证数据传输至数据管理终端,对接收的签名数据执行验签并执行匹配管理操作,包括:
执行验证数据状态校验:若验证不通过则终止操作,否则执行验证数据时效性校验;
若验证数据时效性校验不通过则终止操作,否则执行签名验证;
若签名验证不通过则终止操作,否则执行合约匹配数据标签验证;
若标签验证不通过则终止操作,否则基于待管理数据对智能合约进行匹配数据管理;
所述数据标签存储模块配置成用于对智能合约中数据匹配设置管理标签并存储,所述管理标签包括该数据管理权限、管理次数和次数阈值;
签名验证通过后,读取待管理数据,定位智能合约中与待管理数据对应的目标数据管理标签;
若该管理标签中管理权限为禁止,则终止操作;
否则读取管理次数,若达到次数阈值则终止操作,否则基于待管理数据对目标数据执行更新操作,并更新管理标签中的管理次数。
在本实施例中智能合约模块生成的验证数据为随机生成的串码:
所述对验证数据赋予时效性管理为在智能合约中对本次生成的串码设置时间戳并预设时间阈值。
本实施例中的智能合约模块执行验证数据状态校验为读取智能合约存储的验证数据状态,若验证数据未执行验签则通过校验;
所述验证数据时效性校验具体包括:
读取本地存储的验证数据中的时间戳,基于数据接收时间和预设时间阈值,进行验证数据的时效性验证。
实施例3
一种计算机可读存储介质,所述计算机可读存储介质上存储有智能合约数据安全管理程序,所述智能合约数据安全管理程序可被一个或者多个处理器执行,以实现如实施例1所述的基于区块链网络的智能合约数据安全管理方法的步骤。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显 示的部件可以是或者也可以不是物理单元,即可以位于一个地方。或者也可以分布到多个 网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。
而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)。随机存取存 储器(RAM,Random,Access,Memory)、磁碟或者光盘等各种可以存储程序校验码的介质。
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。
此外,应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施例中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。