基于区块链的加密智能合约检测系统的制作方法

文档序号:33319456发布日期:2023-03-03 19:25阅读:38来源:国知局
1.本发明涉及信息安全
技术领域
:,尤其涉及基于区块链的加密智能合约检测系统。
背景技术
::2.在现有的区块链系统中,所有参与共识的节点都必须拥有交易和智能合约的真实数据,才能完成计算工作并根据状态达成共识。然而,智能合约中可能会包含一些隐私信息,比如身份信息、企业机密、特定代码等,由于所有参与共识的节点都可以获得智能合约的真实数据,导致智能合约中的隐私数据存在泄露的风险,进而降低区块链的安全性和实用性。因此,为了保证智能合约的隐私性,一些关于智能合约加密的方法、系统或流程被提出。3.考虑这样一个场景,存在一个拥有强大算力和大量数据资源的算力节点(比如数据训练平台),它可以为其他用户提供数据挖掘的操作。另外,存在一个用户,它作为智能合约的开发者,希望利用该算力节点的资源和算力进行数据挖掘,同时不想让除了该算力节点以外的其他节点获取智能合约的真实数据。此时,可行的操作为:首先,用户和算力节点进行协商获取密钥;之后,用户将智能合约加密后得到的合约密文存储到区块链上;最后,算力节点在收到用户的交易信息(包含智能合约地址和其他调用参数)后,根据交易信息获取对应的合约密文,对密文解密获取智能合约明文(有且只有该节点拥有可以对加密合约解密的密钥)。4.然而,此时又产生了另外的问题,如果智能合约的开发者存在无意的疏忽或故意的恶意行为,则智能合约代码中可能会存在安全漏洞,这将对交易及财产安全产生威胁。因此,在保护智能合约的隐私性的前提下,为了进一步保证加密智能合约的内容安全性,需要在加密智能合约部署在区块链上之前对其进行检测操作。技术实现要素:5.本发明的目的在于克服现有技术的问题,提供基于区块链的加密智能合约检测系统。6.本发明的目的是通过以下技术方案来实现的:基于区块链的加密智能合约检测系统,该系统包括开发者节点、算力节点、规则处理节点以及检测节点,开发者节点与算力节点、检测节点互联,算力节点与开发者、规则处理节点、检测节点互联,且规则处理节点、检测节点互联;7.开发者节点用于将智能合约进行加密处理,并将密钥共享至算力节点,同时对智能合约的明文代码进行处理得到用于检测的随机令牌,并将加密智能合约和随机令牌写入交易信息并存储至交易池;8.算力节点选择用于进行规则处理的矿工作为规则处理节点,并将关键信息写入交易信息并存至交易池,关键信息包括哈希值、密钥、算力节点签名;9.规则处理节点用于计算并构建模糊映射表并存储至包含若干区块的私有链上,同时将包括模糊映射表地址的交易信息发布至交易池中;10.检测节点包括签名验证单元和令牌检测单元,检测节点根据开发者发布的交易信息获取加密智能合约、随机令牌集合t和开发者签名sigdev,并根据规则处理节点发布的交易信息获得模糊映射表obm和算力节点签名sigcp,模糊映射表obm用于反映响应规则与隐藏内容选项的映射关系;11.签名验证单元用于对开发者签名sigdev、算力节点签名sigcp进行验证处理,若验证成功,根据随机令牌集合t、模糊映射表obm执行令牌检测操作,若检测通过,将加密智能合约和随机令牌存储至区块链,否则,认为智能合约中包含恶意行为,直接丢弃;12.在对开发者签名sigdev、算力节点签名sigcp进行验证处理前还包括:13.比较算力节点发布的交易信息transinfocp和开发者发布的交易信息transinfodev中的滑动窗口大小l是否相同,如果相同,对开发者签名sigdev、算力节点签名sigcp进行验证处理;否则,需要在私有区块链上找到一个新的区块;14.模糊映射表的构建包括以下子步骤:15.根据算力节点发布的交易信息获取密钥;16.对规则集中的规则ri进行预处理;17.对内容进行分割处理,得到包含等长的第一片段集合segj;18.基于第一片段集合segj对内容进行隐藏处理;19.对规则响应操作进行隐藏处理,生成τ个秘密共享20.拼接字符串和秘密共享得到拼接结果21.将的异或结果作为映射表的值插入模糊映射表obm的位置,表示由第j个内容的第n个片段产生的伪随机数,f表示伪随机函数;kh表示密钥;表示规则的第j个内容的第n个片段。22.在一示例中,所述算力节点还用于对密钥进行验证:23.算力节点接收开发者发送的基于公钥对k'aes、密钥集k'set和时间戳ts进行加密的加密信息encpkcp(k'aes,k'set,ts);24.采用私钥skcp对加密信息(k'aes,k'set,ts)进行解密,得到k'aes,k'set和ts;25.以k'aes为种子,采用与开发者使用的相同伪随机数生成器生成一个新的密钥集,若新的密钥集与开发者通过相同伪随机数生成器得到的密钥集相同,不执行任何操作;反之,算力节点停止与开发者的通信。26.在一示例中,所述算力节点在接收检测节点发送的包含加密智能合约地址的交易信息后,从区块链上获取智能合约密文和随机令牌,并基于开发者共享的密钥对加密智能合约进行解密,获取智能合约明文;27.通过随机令牌化操作生成新的随机令牌,并与来自开发者的随机令牌进行对比,验证智能合约的一致性,若不一致,丢弃对应智能合约。28.在一示例中,所述开发者使用算力节点的公钥对k'aes、密钥集k'set和时间戳ts对智能合约进行加密,并将加密信息(k'aes,k'set,ts)传输至算力节点。29.在一示例中,所述开发者执行一个基于滑动窗口的令牌化算法,将整个智能合约m划分为一个令牌集合w={w1,|,wσ},计算公式为:30.w={w1,|,wσ}=token(m)31.式中,token是基于滑动窗口的令牌化算法,每个令牌wi的长度与滑动窗口长度相同且均为l;32.开发者利用伪随机函数和密钥生成随机令牌集合t进行安全检测。33.需要进一步说明的是,上述方法各示例对应的技术特征可以相互组合或替换构成新的技术方案。34.与现有技术相比,本发明有益效果是:35.1.在一示例中,本发明通过引入的检测节点接收开发者发布的加密智能合约和随机令牌,并接收规则处理节点发布的模糊映射表,能够在不暴露有效负载的情况下,使用随机令牌与模糊映射表执行匹配检测,即在保证加密智能合约隐私性的基础上,实现了对加密智能合约的安全性检测。36.2.在一示例中,本发明通过通过引入规则处理节点,建立响应规则与隐藏内容选项的映射关系的模糊映射表,仅使开发者与算力节点能够获取智能合约明文,进而在保证隐私的前提下实现了加密智能合约的安全性检测。附图说明37.下面结合附图对本发明的具体实施方式作进一步详细的说明,此处所说明的附图用来提供对本技术的进一步理解,构成本技术的一部分,在这些附图中使用相同的参考标号来表示相同或相似的部分,本技术的示意性实施例及其说明用于解释本技术,并不构成对本技术的不当限定。38.图1为智能合约结构示意图;39.图2为本发明一示例中的方法流程图;40.图3为本发明优选示例的方法流程图;41.图4为本发明一示例的系统结构图。42.图中:1-开发者、2-算力节点、3-规则处理节点、4-检测节点、5-交易池、6-区块、7-区块链、8-私有链、9-签名验证单元、10-令牌检测单元、11-智能合约、12-存储单元、13-代码单元。具体实施方式43.下面结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。44.在本发明的描述中,需要说明的是,属于“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方向或位置关系为基于附图所述的方向或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,使用序数词(例如,“第一和第二”、“第一至第四”等)是为了对物体进行区分,并不限于该顺序,而不能理解为指示或暗示相对重要性。45.在本发明的描述中,需要说明的是,除非另有明确的规定和限定,属于“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。46.此外,下面所描述的本发明不同实施方式中所涉及的技术特征只要彼此之间未构成冲突就可以相互结合。47.本发明提出了一种基于区块链网络的数据训练平台中数据挖掘的高效隐私保护加密智能合约检测方法,该方法采用了轻量级加密操作实现了对加密智能合约内容的安全检测。48.其中,区块链网络由许多参与共识的节点构成,拥有数据交易平台的节点,为智能合约开发者提供算力和数据支持,使得智能合约可以正常部署并执行。具体地,区块链是比特币、以太坊等加密货币系统的核心支持技术。区块链本质上是一个去中心化的允许任何人参与的公共分布式账本(即分布式数据库)。因此,当一个区块链节点出现故障时不会影响到其他节点。此外,整个区块链网络通过区块链节点之间的共识机制(如工作量证明机制proofofpower,权益证明机制proofofstake)进行维护,允许每个区块链节点获得数据库的完整副本。因此,区块链系统只能按照严格的共识和规则进行修改。49.进一步地,区块链的主要组成包括区块和事务(交易)。每个区块由区块头和区块体组成,其中区块头中包含了软件/协议的版本号、前一区块的哈希值、merkle树(梅克尔树)的根哈希值、创建时间戳、工作量证明难度目标以及用于证明工作量的计算参数,通过加密哈希算法和merkle树结构确保了数据不会被篡改;区块体中包含了所有与区块确认的事务,每个事务都记录了一组特定的操作。50.进一步地,以太坊是一个具有开源代码的编程平台,使得开发人员能够基于智能合约构建分布式应用程序。由于共识机制的存在使得以太坊得到了认可,很多人通过购买服务器(矿工)运行以太坊代码,这种矿工执行代码的操作称为挖矿,即验证和处理交易。每一个矿工都是一个节点,节点之间存在通信验证,以太坊的任意一个节点都可以是网络的入口和出口,做到了去中心化。具体来说,以太坊可以用于协议编程、行为保证和交易处理,如投票、公司管理、金融交易以及协议签署。与比特币系统相比,以太坊允许程序在区块链上执行。一旦部署了智能合约,以太坊节点就可以去中心化地执行合约。51.进一步地,智能合约是一种以信息化方式传播验证的,并可以根据其内容在区块链上自动执行的计算机程序。智能合约的结构如图1所示,一个完整的智能合约11存储在区块链7的某一区块6中,包括用于存储状态和值的存储单元12、用于响应条件的代码单元13。在部署智能合约时,需要预设触发条件和相应的响应规则,相关的状态和值也将记录在已部署的智能合约中。当条件触发时,将执行来自调用节点的相关操作进行响应。只有修改合约状态或值的行为最终会被记录在区块链中,其他行为不会被披露。52.进一步地,智能合约运行在本地的以太坊虚拟机evm上,以太坊虚拟机可以将智能合约代码解释成字节码进行执行。以太坊可以被视为一个交易驱动的状态机,即,当调用智能合约的交易在区块链上发布时,每个矿工都会执行该交易,并确定地从当前状态转移到下一个状态。53.为了在加密智能合约存储至区块链之前,保证其隐私性和合法性,本发明提出了一个隐私保护的加密智能合约检测方案。54.在一示例中,如图2所示,一种基于区块链的加密智能合约检测方法,该方法以检测节点(det)作为执行主体,具体包括以下步骤:55.根据开发者(dev)发布的交易信息获取加密智能合约随机令牌集合t和开发者签名sigdev,并从规则处理节点(rp)的私有区块链上获得区块中的交易信息,进而得到模糊映射表obm和算力节点签名sigcp,模糊映射表obm用于反映响应规则与隐藏内容选项的映射关系;其中,检测节点、规则处理节点为不同矿工(服务器),矿工节点相互互联形成分布式网络。56.对开发者签名sigdev、算力节点签名sigcp进行验证处理,若验证成功,根据随机令牌集合t、模糊映射表obm执行令牌检测操作,若检测通过,将加密智能合约和随机令牌存储至区块链,否则,认为智能合约中包含恶意行为,直接丢弃。57.本示例中,通过检测节点接收开发者发布的加密智能合约和随机令牌,并接收规则处理节点发布的模糊映射表,能够在不暴露有效负载的情况下,使用随机令牌与模糊映射表执行匹配检测,即在保证加密智能合约隐私性的基础上,实现了对加密智能合约的安全性检测。58.在一示例中,对开发者签名sigdev、算力节点签名sigcp进行验证处理,具体包括:59.分别使用开发者的公钥pkdev、算力节点的公钥pkcp对开发者签名sigdev、算力节点签名sigcp进行解密处理得到两个哈希值,若两个哈希值相同,继续执行下一步骤;否则,需要在私有区块链上找到一个新的合适的区块。60.通过随机令牌集合t、以及哈希函数计算一个哈希值,与交易信息中的哈希值hv比较,若相同,则验证成功,能够进行令牌检测操作;反之,验证失败,需要在规则处理节点的私有区块链上找到一个新的区块。61.进一步地,在对开发者签名sigdev、算力节点签名sigcp进行验证处理前还包括:62.比较算力节点发布的交易信息transinfocp和开发者发布的交易信息transinfodev中的滑动窗口大小l是否相同,如果相同,对开发者签名sigdev、算力节点签名sigcp进行验证处理;否则,需要在私有区块链上找到一个新的合适的区块。63.在一示例中,检测节点使用随机令牌集合t和模糊映射表obm执行检测操作,即执行多项式时间算法match(obm,t1,…,tσ):以模糊映射表obm和一组由σ个消息生成的随机令牌集{t1,…,tσ}作为输入,一个多项式时间算法match输出一组布尔值{v1,|,vσ}。1表示令牌匹配成功;0表示该令牌未发现匹配。具体地,执行令牌检测操作包括以下子步骤:64.a)对每个随机令牌ti进行分割处理,得到左边部分的随机令牌和右边部分的随机令牌将按序的ti的位置信息存入表tablelen;具体地,对于i∈[σ],分割每个ti获得和其中,wi为第i个明文令牌;ks,kh,kc,kl构成密钥集kset,其中ks为伪随机函数f的密钥,kh为伪随机函数f的密钥,kc为伪哈希函数h的密钥,kl为伪随机数生成器g的密钥,ks,kh,kc,kl用于生成模糊映射表和随机令牌。[0065]b)根据开发者生成的密钥确定模糊映射表obm在位置loc存储的值obm[loc];具体地,计算并在obm中找到loc处存储的值并在obm中找到loc处存储的值其中表示由第j个内容的第n个片段产生的伪随机数。[0066]c)对obm[loc]、进行异或处理得到id和秘密共享p的拼接(id||p),id为规则的总编号;[0067]d)维护表tablecon,储存分割得到的id和秘密共享p,并更新表tablecon中秘密共享p;在存储过程中,如果该id在表中已有记录,则令id对应的p与表tablecon中id对应的值执行异或操作,然后将表tablecon中id对应的值更新为异或的结果;如果秘密共享恢复成功,则可以在表tablecon中找到总编号为id的规则的一个被隐藏的内容(即con);同时,维护存储“id-令牌位置信息”键值对的表tablelen,以使用表tablecon中恢复的con中包含的modcollection验证表tablecon中的长度和位置信息;[0068]e)对于单个规则,id包含规则编号id1、规则中内容选项编号id2、和内容选项总数id3;当具有相同规则编号id1的内容选项数量达到总数id3时,并且通过了modcollection(content对应的所有修饰选项的集合)所规定的修饰选项的验证后,认为该规则中的所有内容选项都已成功匹配;此时,维护中间表tableact存储规则编号id1作为键,并以con分离的第一秘密共享q作为值,当同样的id1到来时,将第一秘密共享q与中间表tableact中的值进行异或,并将结果更新到中间表tableact中;[0069]f)若中间表tableact中恢复出规则集规定的响应操作(如alert,log等,其中alert表示使用选择的报警方法生成一个警报;log表示记录),则认为智能合约包括恶意信息,直接丢弃;反之,认为智能合约合法,将加密智能合约、随机令牌集合t和哈希值hv存储至区块链上。[0070]在一示例中,本发明方法以开发者作为执行主体时,包括以下步骤:[0071]将智能合约进行加密处理,并将密钥共享至算力节点,同时对智能合约的明文代码进行处理得到用于检测的随机令牌,具体通过以ks为密钥的伪随机函数f、以kh为密钥的伪随机函数f计算得到随机令牌。[0072]将加密智能合约和随机令牌写入交易信息并存储至交易池。[0073]具体地,开发者即用户使用算力节点的公钥对k'aes、密钥集k'set和时间戳ts对智能合约进行加密,并将加密信息(k'aes,k'set,ts)传输至算力节点。[0074]进一步地,为了实现对加密智能合约的检测,开发者除了需要生成传统的加密信息(m)外,还需要生成一个随机的令牌集合t,其中m表示智能合约的明文。首先,为了得到t,开发者首先执行一个基于滑动窗口的令牌化算法,将整个智能合约m划分为一个令牌集合w={w1,…,wσ},具体计算公式为:[0075]w={w1,…,wσ}=token(m)[0076]式中,token是基于滑动窗口的令牌化算法,每个令牌wi的长度与滑动窗口长度相同且均为l。然后,开发者利用伪随机函数和密钥生成随机令牌集合t进行安全检测。[0077]具体地,对于每个i∈[σ],开发者通过使用伪随机函数f、随机函数f,以及密钥ks、kh计算得到随机令牌:[0078]ti=f(ks,wi)||f(kh,wi)[0079]在检测时,除了需要匹配规则的内容选项外,还需要满足内容选项对应的修饰选项中的相应要求。由于明文令牌集w是通过基于滑动窗口的令牌化算法得到的,所以明文令牌的长度信息是确定的。此外,只要w中令牌按照处理顺序排列,便可确定令牌首字符在完整明文中的位置信息。对于每个i∈[σ],通过下式进行处理:[0080]hv=hash(…hash(hash(t1),t2)…,tσ)[0081]式中hash是一个哈希函数,计算得到用于验证令牌顺序的哈希值hv。[0082]进一步地,开发者计算一个交易信息transinfodev,具体计算公式为:[0083][0084]式中,tiddev表示交易标识;addrdev表示开发者(dev)的地址;addrdest表示目的地址;表示开发者签名,h为哈希函数的简写;kaes表示加密算法aes(高级加密标准)的对称密钥;kset表示密钥集;ts表示时间戳;ids表示作为规则处理者(rp)的矿工。开发者将交易信息transinfodev放入交易池中,以进行后续的令牌检测操作。[0085]在一示例中,方法以算力节点作为执行主体时,还包括以下步骤:[0086]选择用于进行规则处理的矿工作为规则处理节点;具体地,在开发者和算力节点确定密钥后,算力节点需要从一组矿工节点miner={miner1,…,minerτ}中选择一个矿工作为规则处理者来处理原始规则集,τ表示矿工数量。算力节点需要计算待选择矿工的编号,具体计算公式为:[0087]ids=h(kaes||kset||ts)modτ[0088]其中,ids表示作为规则处理者(rp)的矿工的编号;mod为求余计算符。然后算力节点用开发者的公钥pkdev对ids进行加密得到作为规则处理者的加密矿工并将发送给开发者以进行通知。[0089]进一步地,算力节点还用于将关键信息写入交易信息并存至交易池,关键信息包括哈希值、密钥、算力节点签名。具体地,为了后续的规则处理阶段的开展,需要将一些重要信息作为交易信息放入交易池中,与规则处理节点共享。算力节点计算得到的交易信息的公式为:[0090][0091]式中,tidcp表示交易标识;addrcp、addrrp分别为算力节点和规则处理节点的地址;pkrp是规则处理节点的公钥;表示算力节点签名,l是滑动窗口大小,其获取过程如下:[0092]由于规则处理节点拥有原始规则集,它根据所有规则中最短的“content”选项推导出滑动窗口应设置的大小l(l≤len(contentmin)),len(contentmin)为规则集r中全部规则的所有内容选项中最短内容选项的长度。之后,通过公钥加密将l分别发送给开发者和算力节点。[0093]从威胁模型来看,开发者可能是恶意的,并企图使用伪造的随机令牌来成功通过令牌检测。因此,在执行智能合约代码进行数据挖掘前,算力节点需要检测来自开发者的m与t的一致性。在一示例中,方法以算力节点作为执行主体时,还用于对智能合约的一致性进行验证,包括以下子步骤:[0094]接收检测节点发送的包含加密智能合约地址的交易信息后,从区块链上获取智能合约密文、随机令牌t以及哈希值hv,并使用密钥kaes解密得到智能合约明文m;[0095]通过随机令牌化操作生成新的随机令牌,并与来自开发者的随机令牌进行对比,验证智能合约的一致性,若不一致,丢弃对应智能合约。具体地,使用基于滑动窗口的令牌化算法token以及随机令牌生成算法来获得随机令牌集合t',并使用哈希函数对t'进行计算得到hv'。如果t'=t,且hv'=hv,则认为数据流和t一致;否则,算力节点认为开发者存在恶意篡改行为,不予执行并丢弃智能合约。[0096]在一示例中,方法以算力节点作为执行主体时,还包括以下步骤:[0097]接收开发者发送的基于公钥对k'aes、密钥集k'set和时间戳ts进行加密的加密信息[0098]采用私钥skcp对加密信息进行解密,得到k'aes,k'set和ts;[0099]以k'aes为种子,采用与开发者使用的相同伪随机数生成器生成一个新的密钥集,若新的密钥集与开发者通过相同伪随机数生成器得到的密钥集相同,不执行任何操作;反之,认为开发者不诚实,算力节点立即停止与开发者的通信。[0100]在一示例中,方法以规则处理节点作为执行主体时,包括以下步骤:[0101]计算并构建模糊映射表并存储至自己的私有链上,并将包括模糊映射表地址的交易信息发布至交易池中。在此阶段,规则处理节点执行规则处理策略。为了提高效率和可扩展性,提出了一种高性能的模糊映射表生成算法。为了更接近实际的应用场景,选择了开源的snort规则集r={r1,…,rδ}作为检测规则。具体地,使用规则中的内容选项(即规则中“content”关键字对应的内容)来匹配待检测的明文。与先前工作的加密索引设计(将加密规则头与加密规则选项存入字典中)不同,本技术所提出的模糊映射表通过只存储加密片段来缩小所需的存储空间,同时仍能够保持检测的正确性,具体以密钥krp和一个规则集r作为输入,一个多项式时间算法obrulegen输出一个模糊映射表obm,具体包括以下步骤:[0102]a)根据算力节点发布的交易信息获取密钥;[0103]b)对规则集中规则ri进行预处理;[0104]c)对内容进行分割处理,得到包含等长的第一片段集合segj;[0105]d)基于第一片段集合segj对内容进行隐藏处理;[0106]e)对规则响应操作进行隐藏处理,生成τ个秘密共享j为规则的内容的序号,n为片段的序号;[0107]f)拼接字符串和秘密共享得到拼接结果其中,i∈[δ],n∈[len(segj)],j∈[ω]。[0108]g)将的异或结果作为映射表的值插入模糊映射表obm的位置,位置,表示规则的第j个内容的第n个片段。[0109]具体地,步骤a)中,规则处理节点得到交易信息transinfocp后,使用自己的私钥skrp解密交易信息中的得到密钥集合kset,并保存算力节点签名sigcp。[0110]具体地,步骤b)中,对于δ个规则,每个规则ri,i∈[δ],提取内容选项及其对应的修饰选项,并获取“{content:modcollection}”键值对,其中modcollection为该content对应的所有修饰选项的集合(或拼接)。同时,每个规则都有一个包含安全操作的规则头,规则头中定义了内容选项匹配后的响应操作action。首先根据规则本身结构对所有规则进行预处理,对任意i∈[δ],每个规则ri表示为:[0111]ri={content1:modcollection1,…,contentω:modcollectionω,actioni}={cmi,actioni}[0112]上式中,规则ri包含ω个用于匹配检测的内容选项,为方便描述定义ri中的键值对集合为cmi。[0113]具体地,步骤c)中,由于内容选项长度的不同,会导致智能合约明文处理困难。为了统一长度以便于匹配,使用滑动窗口算法对明文和规则内容选项进行处理,其中滑动窗口大小设定为l。然后,一个内容-修饰键值对将被进一步处理为“{seg:modcollection}”,其中seg是content经过滑动窗口分割得到的片段集合:[0114][0115]式中,使用基于滑动窗口的令牌化算法token对规则中第j个内容进行分割,得到包含τ个元素的片段集合。对任意i∈[δ],规则ri进一步处理为:[0116]ri={seg1:modcollection1,…,segω:modcollectionω,actioni}[0117]通过上述操作,对每个内容选项都进行了分割,得到包含等长片段的集合。此时,由于内容选项被分割,这就要求所有片段都匹配时才能说明匹配成功,然而不同content分割得到的不同片段集合中可能存在相同的片段,因此对内容选项的隐藏和恢复进行了设计。[0118]具体地,步骤d)中,首先,为每个规则定义一个编码,用于唯一地标识规则并方便后续操作。然后,通过哈希函数h和密钥kc处理初始的内容选项,然后将该哈希值与其相应的修饰选项集合拼接,得到待隐藏的规则内容。对于规则的第j个内容选项contentj(conj),j∈[ω],进行如下计算:[0119]conj=h(kc,contentj)||modcollectionj[0120]式中modcollectionj是经过填充的修饰选项(末尾用0填充),目的是使所有conj拥有相同长度。然后,考虑使用片段集合segj中的所有片段对coni进行隐藏。为了实现高效、安全的隐藏和恢复操作,采用了一种高效的秘密共享方案。具体来说,给定一个带有τ个段的内容选项contentj,通过该内容选项计算得到的conj将被视为一个秘密。然后生成τ-1个与conj相同比特的随机字符串{p1,…,pτ-1},并且定义p={p1,…,pτ-1,pτ}为秘密共享集合,其中每个元素都是关于conj的秘密共享。只有获得τ个秘密共享后,才能执行还原操作,有以下计算公式:[0121][0122]通过隐藏每个内容选项及其修饰选项,对任意i∈[δ],规则将进一步定义为下式所示的形式:[0123][0124]令每个内容选项对应的秘密共享数与经过滑动窗口算法生成的片段数一致。idij表示一个与规则和内容选项相关的字符串,有其中表示规则编号,表示规则中内容选项编号,表示规则中内容选项总数。例如,一个规则的总编号为3,它有10个内容选项,则该规则的第5个内容选项可以表示为需要说明的是,与与真实规则中内容选项的信息对应,而则是在规则处理过程中按规则先后顺序进行的自动编号。[0125]具体地,步骤e)中,当一条规则的所有内容选项都匹配时,表示明文中包含该规则规定的内容,认为存在入侵行为。之后,便可执行在该规则的规则头中指定的响应操作,即“action”。因此,本发明设计的目标是:只有当一个规则中的所有相关内容选项都被匹配时,响应操作才会被恢复;否则,认为与规则不匹配,且不会透露任何与响应操作有关信息。具体来说,生成ω-1个(ω为一条规则中内容选项的数量)随机字符串(第一秘密共享数据序列){q1,…,qω-1},其中每个字符串的长度与规则响应操作actioni,i∈[δ]所对应字符串的长度相同。令得到第一秘密共享集合q={q1,…,qω-1,qω}。当获取到ω个第一秘密共享后,可通过下式进行还原:[0126][0127]将qj放入conj,j∈[ω]中。此时,只有当一个规则的所有conj都被恢复时,才可以用得到秘密共享恢复响应操actioni,以处理可能存在安全问题的加密数据流,有以下计算公式:[0128]conj=qj||h(kc,contentj)||modcollectionj,j∈[ω][0129]最后,对任意i∈[δ],每个规则将被处理为下式所示形式:[0130][0131]此时,响应操作actioni被隐藏。[0132]具体地,步骤g)中,通过伪随机函数和片段计算得到,即为了解决可能出现的碰撞,在映射表的每个位置都构建了可变长度的桶。[0133]将上述示例进行组合,得到本发明优选检测方法,如图3所示,包括以下步骤:[0134]s1:开发者将智能合约进行加密处理,并将密钥共享至算力节点,同时对智能合约的明文代码进行处理得到用于检测的随机令牌,并将加密智能合约和随机令牌写入交易信息并存储至交易池;[0135]s2:算力节点对密钥进行验证;具体地,算力节点接收开发者发送的基于公钥对k'aes、密钥集k'set和时间戳ts进行加密的加密信息采用私钥skcp对加密信息进行解密,得到k'aes,k'set和ts;以k'aes为种子,采用与开发者使用的相同伪随机数生成器生成一个新的密钥集,若新的密钥集与开发者通过相同伪随机数生成器得到的密钥集相同,不执行任何操作;反之,算力节点停止与开发者的通信。[0136]s3:算力节点选择用于进行规则处理的矿工作为规则处理节点,并将关键信息写入交易信息并存至交易池,关键信息包括哈希值、密钥、算力节点签名;[0137]s4:规则处理节点计算并构建模糊映射表并存储至自己的私有链上,并将包括模糊映射表地址的交易信息发布至交易池中;[0138]s5:检测节点根据开发者发布的交易信息获取加密智能合约、随机令牌集合t和开发者签名sigdev,并根据规则处理节点发布的交易信息获得模糊映射表obm和算力节点签名sigcp;对开发者签名sigdev、算力节点签名sigcp进行验证处理,若验证成功,根据随机令牌集合t、模糊映射表obm执行令牌检测操作,若检测通过,将加密智能合约和随机令牌存储至区块链,否则,认为智能合约中包含恶意行为,直接丢弃;[0139]s6:算力节点接收检测节点发送的包含加密智能合约地址的交易信息后,从区块链上获取智能合约密文和随机令牌,并基于开发者共享的密钥对加密智能合约进行解密,获取智能合约明文;通过随机令牌化操作生成新的随机令牌,并与来自开发者的随机令牌进行对比,验证智能合约的一致性,若不一致,丢弃对应智能合约。[0140]本发明还包括一种基于区块链的加密智能合约检测系统,如图4所示,系统包括开发者节点(开发者1)、算力节点2、规则处理节点3以及检测节点4,开发者节点与算力节点2、检测节点4互联,算力节点2与开发者1、规则处理节点3、检测节点4互联,且规则处理节点3、检测节点4互联。[0141]其中,开发者节点用于将智能合约进行加密处理,并将密钥共享至算力节点2,同时对智能合约的明文代码进行处理得到用于检测的随机令牌,并将加密智能合约和随机令牌写入交易信息并存储至交易池5。[0142]算力节点2选择用于进行规则处理的矿工作为规则处理节点3,并将关键信息写入交易信息并存至交易池5,关键信息包括哈希值、密钥、算力节点签名。[0143]规则处理节点3用于计算并构建模糊映射表并存储至包含若干区块6的私有链8上,同时将包括模糊映射表地址的交易信息发布至交易池5中。[0144]检测节点4包括签名验证单元9和令牌检测单元10,检测节点4根据开发者1发布的交易信息获取加密智能合约、随机令牌集合t和开发者签名sigdev,并根据规则处理节点3发布的交易信息获得模糊映射表obm和算力节点签名sigcp。其中,签名验证单元9用于对开发者签名sigdev、算力节点签名sigcp进行验证处理,若验证成功,令牌检测单元10根据随机令牌集合t、模糊映射表obm执行令牌检测操作,若检测通过,将加密智能合约和随机令牌存储至包含若干区块6的区块链7,否则,认为智能合约中包含恶意行为,直接丢弃。[0145]在一示例中,算力节点还用于对密钥进行验证;具体地,算力节点接收开发者发送的基于公钥对k'aes、密钥集k'set和时间戳ts进行加密的加密信息采用私钥skcp对加密信息进行解密,得到k'aes,k'set和ts;以k'aes为种子,采用与开发者使用的相同伪随机数生成器生成一个新的密钥集,若新的密钥集与开发者通过相同伪随机数生成器得到的密钥集相同,不执行任何操作;反之,算力节点停止与开发者的通信。[0146]在一示例中,算力节点在接收检测节点发送的包含加密智能合约地址的交易信息后,从区块链上获取智能合约密文和随机令牌,并基于开发者共享的密钥对加密智能合约进行解密,获取智能合约明文;通过随机令牌化操作生成新的随机令牌,并与来自开发者的随机令牌进行对比,验证智能合约的一致性,若不一致,丢弃对应智能合约。[0147]本技术还包括一种存储介质,与上述任一示例或多个示例组成的基于区块链的加密智能合约检测方法具有相同的发明构思,其上存储有计算机指令,计算机指令运行时执行上述基于区块链的加密智能合约检测方法的步骤。[0148]基于这样的理解,本实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。[0149]本技术还包括一种终端,与上述任一示例或多个示例组成的基于区块链的加密智能合约检测方法具有相同的发明构思,包括存储器和处理器,存储器上存储有可在处理器上运行的计算机指令,处理器运行计算机指令时执行上述基于区块链的加密智能合约检测方法的步骤。处理器可以是单核或者多核中央处理单元或者特定的集成电路,或者配置成实施本发明的一个或者多个集成电路。[0150]在本发明提供的实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。[0151]以上具体实施方式是对本发明的详细说明,不能认定本发明的具体实施方式只局限于这些说明,对于本发明所属
技术领域
:的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演和替代,都应当视为属于本发明的保护范围。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1