一种基于状态通道的分布式日志审计系统及方法与流程

文档序号:21719777发布日期:2020-08-05 01:09阅读:201来源:国知局
一种基于状态通道的分布式日志审计系统及方法与流程

本发明属于区块链技术领域,涉及一种分布式日志审计系统及方法,具体涉及一种基于状态通道的分布式集群环境下的快速日志审计系统及方法。



背景技术:

日志是一组与安全相关的具有时序的记录,它可以用来对计算机系统的事件进行入侵检测和数字取证。特别是在大规模的组织机构中,通常利用从多个服务器更新的审计日志来检测攻击。这些计算机(例如,web服务器、防火墙和入侵检测系统)共同组成一个分布式的集群环境。现在大部分企业都选用功能完备的日志审计系统对日志数据进行采集、分析、存储和展示。

研究人员已经证明通过使用攻击调查技术,例如因果关系分析表明,管理员可以通过审计跟踪许多攻击日志,甚至高级持久威胁(apt攻击)。传统的审计日志的存储是把日志落入系统文件或数据库,定期备份。但是,随着黑客活动日益猖獗和隐蔽,传统的日志审计系统本身也存在被攻击和篡改的可能。显然,日志的完整性是一个关键因素,需要保证。

分布式日志审计主要可以归为两个方向的解决思路。一个解决方案是外包日志审计到云服务提供商,并使用可证明的数据持有(pdp)或可检索性证明(por)来检查日志完整性。但是,使用云服务进行日志审计会带来两个问题,一个是云服务提供商本身的信任问题,第二是在进行日志上传与校验时花费的时间会较长。另一种选择是采用区块链技术,该技术主要用于保护小而大量具有时序顺序的数据的完整性。该种技术存储有审计日志或日志的校验和在区块链中。当审计者需要检查时日志完整性,它将区块链中的数据与审计日志进行比较以估计日志是否已被修改。现有的基于区块链的方案中要求每条记录(或记录的校验和)都存储于区块链之中,这就要求每条记录发布到整个网络并通过所有参与者的共识机制来保存到区块链中。然而,这些解决方案在实际中不足以解决海量日志生成的问题。据估计,一台普通web服务器一天可产生上百万条日志,需要占用上百mb的存储空间,然而当前区块链的吞吐量以及其本身区块链的存储空间不足以支撑如此海量并发数据的存储。

由于区块链不同共识下吞吐量的限制,大量的文献探索了不同的区块链规模解决方案:(1)分片共识和(2)状态通道。分片共识需要协调现有的共识机制和区块链的整体改进。



技术实现要素:

鉴于以上提及的传统的日志审计系统及现有基于区块链日志审计系统无法满级集群环境下审计日志的海量并发需求,本发明提供了一种在分布式集群环境下具有高效性、低延时、互监督的基于状态通道的日志审计系统及方法。

本发明的系统所采用的技术方案是:一种基于状态通道的分布式日志审计系统,其特征在于:包括日志服务器集群、区块链网络和外部审计者;

所述日志服务器集群由若干服务器组成,通过tls加密信道进行连接;所述区块链网络通过高效多方状态通道合约接口与所述日志服务器集群连接通信;

所述外部审计者的日志审计单元,通过tls加密信道与日志服务器连接,通过高效多方状态通道合约接口与区块链进行连接;

所述日志服务器中的状态处理及存储单元用于对日志进行预处理、生成本地日志状态及全局日志状态以及与区块链的交互,接入状态通道的各种协议,包括状态的离链确认以及状态的上链;

所述区块链网络用于保护日志状态的安全性、完整性,通过该状态通道实现状态的链下确认,同时按照系统需求将带有集群所有日志服务器签名的状态提交至链上,保证状态的完整性以及链下的一致性;

所述外部审计者的日志审计单元用于对服务器日志记录进行审计,将原日志数据以及日志状态数据进行完整性校验,自动化得到日志审计结果,快速定位到被删改的日志条目。

本发明的方法所采用的技术方案是:一种基于状态通道的分布式日志审计方法,其特征在于:包括日志预处理及存储过程、高效多方状态通道过程和审计日志的验证过程;所述高效多方状态通道过程用于将全局状态在分布式集群中形成共识并按照系统需求提交至区块链网络。

本发明相比现有技术,其优点和积极效果主要体现在以下几个方面:

(1)本发明提供了一种基于状态通道的分布式日志审计系统,基于我们的设计,日志的修改或删除既能够被集群内的服务器检测到也可以通过外部审计者检测到;

(2)本发明设计了在集群内代表日志状态的数据结构,同时设计了其对应日志的验证方式,其好处在于能够快速定位错误日志的条目,同时日志状态减少了日志的上链存储开销;

(3)本发明设计了一种基于区块链的高效多方状态通道,能够减少上链的数据量,并且同时保证其安全性,同时本方案与其他状态通道方案具有低延时、高一致性的特点。

附图说明

图1为本发明实施例的系统框架图;

图2为本发明实施例中日志预处理及存储过程的原理图;

图3为本发明实施例中高效多方状态通道过程的原理图;

图4为本发明实施例中审计日志验证过程的原理图。

具体实施方式

为了便于本领域普遍技术人员的理解和实施本发明,下面结合附图及实施例对本发明作为进一步的详细描述,应当理解,此处所描述的实施示例仅用于说明和解释本发明,并不用于限定本发明。

针对背景技术中指出的技术问题,本发明采用了一个更为通用的解决方案,即不需要改变原始区块链的状态通道来适应本文场景。状态通道源于支付通道,用于区块链中两个节点之间的支付交互。其背后的主要思想是将大量的小额交易放置于链下进行。希望开通支付通道的各方在区块链上部署一个特殊的“通道合约”,并在其中锁定一定数量的货币。然后,他们可以自由更新通道的平衡,而不需要跟区块链进行交互。只有当支付通道的相关方希望关闭该通道时,或者当他们产生分歧时,才会联系区块链,在这种情况下,该通道合同公平地进行处理与结算。状态通道是对支付通道的进一步延伸,丰富了支付通道的功能,其中锁定的内容不再限于货币,可以是任意形式的数据,因此本发明首次提出将状态通道作为区块链的吞吐量解决方案用于该场景中。

请见图1,本发明提供的一种基于状态通道的分布式日志审计系统,包括日志服务器集群、区块链网络和外部审计者;

日志服务器集群由若干服务器组成,通过tls加密信道进行连接;所述区块链网络通过高效多方状态通道合约接口与所述日志服务器集群连接通信;

所述外部审计者的日志审计单元,通过tls加密信道与日志服务器连接,通过高效多方状态通道合约接口与区块链进行连接。

日志服务器中的状态处理及存储单元用于对日志进行预处理、生成本地日志状态及全局日志状态以及与区块链的交互,接入状态通道的各种协议,包括状态的离链确认以及状态的上链;

高效多方状态通道合约的区块链网络用于保护日志状态的安全性、完整性,通过该状态通道实现状态的链下确认,同时按照系统需求将带有集群所有日志服务器签名的状态提交至链上,保证状态的完整性以及链下的一致性;

外部审计者的日志审计单元用于对服务器日志记录进行审计,将原日志数据以及日志状态数据进行完整性校验,自动化得到日志审计结果,快速定位到被删改的日志条目。

本发明提供的一种基于状态通道的分布式日志审计方法,包括可以并行的三个过程:日志预处理及存储过程、高效多方状态通道过程和审计日志的验证过程;高效多方状态通道过程用于将全局状态在分布式集群中形成共识并按照系统需求提交至区块链网络。

请见图2,本实施例的日志预处理及存储过程,具体过程包括以下步骤:

步骤a1:日志序列化过程在分布式系统中每个日志服务器生成日志缓存单元,该单元具有n个缓存集合分别缓存其他所有日记服务器最新产生的θ个日志,同时也保存本机产生的最新θ个日志记录,该阶段最终输出当前θ个日志的默克尔哈希树,日志缓存集合可以表示为

其中pi代表第i台日记服务器,li代表日记服务器所处于的日志周期,表示第i个日记服务器的第t条日志,h(·)为一个哈希函数,表示第i个日记服务器对第i个日记服务器的日志缓存集合,liθ+1表示前li个周期共生成了liθ条日志记录,现在是第liθ+1条;

步骤a1的具体过程包括以下子步骤:

步骤a1.1:每当日志服务器pi生成一条日志记录将其广播至集群内部,并同时存储于本地的日志缓存单元;

步骤a1.2:当集群内日志服务器pj接收到来自日志服务器pi的一条日志,当该日志服务器pj对pi日志缓存单元的日志数量小于θ时,将其存储于pj的日志缓存单元,日志服务器pj缓存单元对于单个日志服务器节点的上限为θ个日志;

步骤a1.3:每当集群内日志服务器接收到一条日志,当日志服务器pj对pi日志缓存单元的日志数量小于θ时,将其存储于pj的日志缓存单元,取出pj日志服务器对pi日志缓存单元的θ条日志,并用其生存默克尔哈希树将默克尔哈希树的根进行广播;

步骤a1.4:当日志服务器pi收到其他所有节点发来的默克尔哈希根将本地的θ条日志取出并生成默克尔哈希树,将该默克尔哈希树的根与其他节点发送的值进行对比,若全部一致则代表该段日志未被篡改,若不一致则代表有日志被篡改了。

步骤a2:状态生成阶段接收a1所生成的默克尔哈希树,并使用默克尔哈希根首先生成本地日志状态,和全局日志状态,随后在集群内部进行广播确认;

步骤a2的具体过程包括以下子步骤:

步骤a2.1:本地日志状态生成;

由该默克尔哈希树的根与该节点上一个本地日志状态进行字符串拼接后进行哈希得到,本地日志状态生成如下:

其中表示第i个日志服务器的第li个周期的本地日志状态;表示日志服务器pi的第li个周期所生产的默克尔哈希树的根

步骤a2.2:全局日志状态生成;

通过合并所有日志服务器节点的本地日志状态得到,其形式如下:

该全局日志状态具有一个序列号v(每次递增);每当一个日志服务器节点生成一个新的本地日志状态,便取出上一个全局日志状态,将其中本日志服务器节点的本地日志状态替换为新的本地日志状态,同时进行集群内广播;

步骤a2.3:全局日志状态验证;

每当一个日志服务器节点收到一条广播的全局日志状态,将该状态与上一条全局日志状态对比,其中一条某服务器pi的本地日志状态有修改,通过取出对pi的日志缓存单元的θ条日志并生成默克尔哈希树,取其根与上一条全局日志状态中pi的本地日志状态进行字符串拼接并进行哈希得到新的本地日志状态,对比该本地日志状态与广播收到的全局日志状态中pi的本地日志状态是否一致,若一致则说明状态未被篡改,不一致则说明已被篡改,抛弃该全局日志状态。

步骤a3:离链状态确认;

使用高效多方状态通道对上一步的集群广播的全局日志状态确认,通过该状态通道将全局日志状态进行共识,通过共识的全局日志状态将记录于本地;该共识的全局日志状态用于后续的审计日志验证;

步骤a4:全局日志状态上链,链上状态更新;包含以下数据结构:日志缓存单元、本地日志状态、全局日志状态;

由当前日志服务器节点向区块链中的状态通道发生该全局日志状态,状态通道内部过程由高效多方状态通道过程完成,上链后的状态能用于争议的处理以及后续的验证。

请见图2,本实施例中高效多方状态通道过程具体包括以下步骤:

步骤b1:状态通道初始化,首先在区块链上部署好高效多方状态通道的智能合约(包含高效多方状态通道与链下交互的代码),该合约可用于建立多个状态通道实例,集群内所有节点与区块链进行交互,建立起高效多方状态通道实例,实例表示形式如下:

γ:={sid,p,g}

其中sid为实例的唯一标识符,p为参与该实例的成员集合,g为实例中存储的状态;

步骤b1的具体过程包括以下子步骤:

步骤b1.1:由集群内一台日记服务器发生至区块链请求建立高效多方状态通道,并发送自己的公钥地址,智能合约此时会返回一个状态通道的唯一标识sid,并初始化一个状态通道,其中存储全局日志状态和所有节点的公钥地址,该日记服务器将该状态通道唯一标识记录下,并广播至集群内其他节点;

步骤b1.2:其他节点收到状态通道唯一标识sid,将本节点的公钥地址pkpi与该状态通道唯一标识一同发送至区块链上的状态通道智能合约,当该合约接收到消息后,将状态通道唯一标识匹配至刚才建立的那条通道,并将该消息中的公钥地址pkpi加入合约的存储模块。当所有节点完成了消息发送,便建立起了一条状态通道。

步骤b2:状态确认过程,该过程用于将状态进行集群内部共识,它主要用于将原属于区块链的全网共识转移至链下部分节点,以提高效率,该状态确认包含多轮,每轮负责β个状态确认,其中一个包含签名;

步骤b2的具体过程包括以下子步骤:

b2.1:主节点选择,在分布式集群中根据公钥地址的字典序大小,按照从大到小顺序指定主节点;

b2.2:轮签名状态生成,在主节点选举后第一个分布式集群中生成的状态需要所有节点的签名,该状态可用于提交至区块链上的状态通道合约储存,轮签名状态表示形式如下:

其中spi为第i个日志服务器的签名,具体流程如下:当一个新全局日志状态gv生成,首先提交至主节点,主节点进行对该状态签名后,分发至集群内所有其他日志服务器节点,其他日志服务器节点对该状态使用主节点公钥进行验证,验证通过过,返回自己对该状态gv的签名,主节点收集到所有日志服务器节点的签名后,与全局日志状态共同构成轮签名状态并发送至所有日志服务器节点;

步骤b2.3:轮非签名状态生成;

除了主节点选举后的第一个分布式集群中生成的状态不需要所有日志服务器节点的签名,当集群中生成一个新的全局日志状态gv时,将该状态发送至主节点,由该轮的主节点负责将状态同步至所有日志服务器节点,保证所有日志服务器节点拥有相同序列号的全局日志状态。

步骤b3:状态提交;

将经过链下共识的状态提交至区块链上的状态通道合约,若检验通过,将该状态存储于合约内部;

步骤b3的具体过程包括以下子步骤:

步骤b3.1:集群中任意日志服务器节点将最新的轮签名状态发送至区块链上的含有状态通道的智能合约;

步骤b3.2:部署在区块链上的状态通道合约通过该日志服务器节点的公钥确认其所属的状态通道实例γ,随后验证该轮签名状态的,第一步验证该轮签名状态是否是最新的,通过对比状态通道实例内存储的状态的序列号v与收到的状态序列号v’,若收到的状态序列号大,进行第二步验证,使用实例中存储的所有公钥p对轮签名状态的所有签名进行验证,若所有公钥都被使用并签名合法,则该状态视为一个合法的状态,将该轮签名状态存储于状态通道实例的存储模块中。

步骤b4:状态通道关闭,该过程同样生成一个含关闭标记的状态使用b2.2的轮签名状态生成一个全局关闭状态后提交至区块链上的状态通道合约,若检验通过,将关闭该状态通道通道实例;

步骤b5:状态争议处理,由于高校多方状态通道方案中b2是在每轮共识中设立有主节点,为了避免个别节点与主节点进行合谋攻击,我们提供一种轮换主节点的争议处理方式。

步骤b5的具体过程包括以下子步骤:

步骤b5.1:当集群中某个日志服务器节点发送自己产生的全局日志状态但是不被主节点接收时,可以向区块链的状态通道合约发送更换请求,更换主节点,请求内容包含上一个产生的轮签名状态;

步骤b5.2:当区块链上的状态通道合约收到该更换请求,提取其中的轮签名状态首先验证该轮签名状态是否是最新的,通过对比状态通道实例内存储的状态的序列号与收到的状态序列号,若收到的状态序列号大,进行第二步验证,使用实例中存储的所有公钥对轮签名状态的所有签名进行验证,若所有公钥都被使用并签名合法,则该状态视为一个合法的状态。

步骤b5.3:状态通道此时重新指定一个新的主节点,该主节点从除了发出更换请求节点以及上一个轮签名状态的主节点外随机选取,并同时要求链下集群生成的下一个轮签名状态的序列号v为更换请求中轮签名状态的序列号加一即v+1,这就保证了该轮签名状态的主节点并没有进行步骤b2.3轮非签名状态生成,阻止了合谋攻击。

请见图4,本实施例审计日志的验证过程,具体过程包括以下:

步骤c1:审计者向集群中任意一台日记服务器请求,要求验证其本地数据的完整性;

步骤c2:被请求日记服务器接收到消息后,返回本地存储的所有全局日志状态gv,以及对应的原日志数据;

步骤c3:审计者请求区块链上的该集群所对应高效状态通道实例,对比最新的全局日志状态与该实例存储的状态是否一致,若不一致则说明最新生成的日志已被篡改,若一致进行后续步骤;

步骤c4:审计者接收到全局日志状态与原日志数据后进行完整性校验,首先从全局日志装填中取出所有该日记服务器的本地日志状态,将每θ个原日志数据生成一个默克尔哈希树,并取其根哈希与前一个本地日志状态进行字符串拼接后进行哈希,对比与下一个本地日志状态是否一致,若不一致则说明该段日志被篡改,若一致则说明未被篡改。

本发明能够提供:

1.分布式集群内部的日志数据互监督:在分布式集群内部,每个日记服务器都能通过对日志的部分缓存,进行有效的监督,保证最新产生并未上链的数据的安全性、完整性;

2.高效多方状态通道,保证日志状态的完整性:状态通道能够压缩上链的数据量,并且本发明中高效多方状态通道扩展了原有状态通道的模式,提供多个参与节点的状态通道模式、提供了理想情况下o(1)的状态确认时延,并且保证了通道内状态的一致性,能够广泛应用于其他海量数据场景,;

3.高效的历史日志数据审计:外部审计可以通过本方法,进行对历史日志数据的快速审计,高效定位到删改的日志,能够用于数字取证等领域;

本发明能够在计算机的入侵检测及数字取证等更多领域,为使用者提供可靠、安全的日志完整性保护方法。

应当理解的是,本说明书为详细阐述的部分均属于现有技术。

应当理解的是,上述针对较佳实施例的描述较为详细,并不能因此而认为是对本发明专利保护范围的限制,本领域的普通技术人员在本发明的启示下,在不脱离本发明权利要求所保护的范围情况下,还可以做出替换或变形,均落入本发明的保护范围之内,本发明的请求保护范围应以所附权利要求为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1