USENIX Security 2023 溯源图压缩论文分享——The Case for Learned Provenance Graph Storage Systems

文章来源:USENIX Security 2023


)


前言

  本篇文章是关于溯源图(provenance graph)压缩系统LEONARD的介绍,该系统首次将AI模型运用到溯源图压缩领域,获得了良好的效果。该系统理解起来其实十分清晰移动,本文会梳理该方法的脉络以及我个人的一些思考。


提示:以下是本篇文章正文内容

一、问题描述

1.需解决的问题与目前的该领域研究现状

  近些年来,APT盛行,许多APT调查或者检测的方法都是基于溯源图进行的,使得溯源图重要性逐年递增。但是很多APT攻击会潜伏很长时间,有的可能超过一年。据报告显示,像Firefox这样的浏览器一天仅打开几个网页也会有10GB左右数据写入SSD中,因此用较少的磁盘空间存储长时的溯源图并且能够及时查询获得图内对应信息变得越来越有挑战性。
  目前的解决方法与缺陷:
  (1)减少图本身的体积:对溯源图中不影响攻击的冗余以及重复节点进行去除,比如NodeMerge、LogGC等。但是这些方法是有损压缩,会对溯源图进行相应破坏。
  (2)基于编码的压缩方法:对溯源图数据格式进行重新编码,使得数据总占比减少,如Gzip、数据库方法等,其中数据库方法包含因果数据库与图数据库。这些方法都是无损压缩方法,空间压缩程度可能较低,但是会保留完整的溯源图信息。其中Gzip方法无法支持信息查询,因果数据库会包含大量的I/O操作,系统压力较大并且查询较复杂,图数据库可能会有存储效率方面的问题。

2.本文想法与挑战

2.1 想法

  由于现在模型存在种种缺陷,因此作者希望寻找一种更优的存储形式,同时能够支持查询,经过调研后,作者想到了使用DNN深度神经网络)的方法
  为什么会想到DNN呢,因为目前DNN在查询或存储上已经有了一些优势:
  (1)在查询领域通过替代B+树索引实现了更高的吞吐量以及更小的索引大小。 参考文献1
  (2)在存储领域提出以矢量格式存储表格数据,实现了很高的存储效率,刚好满足我们的需求。参考文献2
  (3)DNN本身也有一些优势,AI模型可以学习更紧凑的数据表示,描述复杂的数据分布,用实值向量(embedding)可以轻量级地表示不同含义的字符,同时AI模型支持批量查询,加速系统效率。
  因此,考虑综合溯源图的本身特征以及DNN处理文本信息的能力,综合建立了LEONARD模型,后文会详述。

2.2 挑战

  (1)现有工作DNN可以压缩文本,但是如何压缩图结构的数据并不清晰,需要进行额外的数据设计。
  (2)使用DNN作为存储系统是一项很新并且不成熟的技术,如何与这些系统进行快捷交互(提取数据)也值得思考。比如传统通过索引的方式可以直接定位到数据,而DNN该如何查找想要的数据呢?
  (3)溯源图包含一些领域特有的特征,如何利用这些特征来设计与简化我们的系统也值得思考。


二、LEONARD溯源图存储模型

1.模型总览

在这里插入图片描述

   该存储系统共分为3个部分:
   A.将图结构展平为顶点和边,为其建立高效的索引与参考表,避免在图结构上训练模型。
   B.利用精简后的图信息进行模型的训练,用以记忆数据,通过修正表辅助来精确恢复数据。
   C.在查询模块通过给出的关键字进行相关信息查询,完成交互。


2. 组块A:模型预处理

在这里插入图片描述

  A.1:将溯源图解耦成边表与节点表,原因为将图结构展平为可编码的文本信息。各表中包含对应结构的详细信息。
  A.2:对边和节点表去除冗余内容,将表中长出现的文本利用类似霍夫曼编码的形式,用较短的数字替换该信息,替换内容记录在参考表中。对于时间戳改为记录偏移值。
  A.3:构建索引,将节点与边的常用信息对应,支持高效查询。
  本部分其实就是将溯源图数据解析成文本数据,包含节点的信息和边的信息,之后通过作者对于溯源图的认知,利用参考表对上述信息进行替换,获得简洁的可以训练的数据,并且提取出索引表方便后面查询的时候使用。


3. 组块B:训练&修正

在这里插入图片描述

  使用轻量级LSTM模型进行训练,因其训练时间较短较易收敛,且磁盘占比较少。
  训练数据为去除冗余后的图信息,将其中文本使用char2vec方法转换为向量后,逐字符输入到LSTM,训练方法为根据当前字符预测下一字符,这样模型能够根据关键字(节点或边的token)联想出其详细信息。具体数据格式请看下文。
  由于模型为轻量级,对于庞大的溯源图数据必有预测错误,但是我们希望编码是无损的,因此每个epoch后会有修正表对当前模型错误修正,保证存储数据恢复无误。修正表记录模型预测结果的错误的位置信息(具体是哪个字符预测错了),同时记录正确的结果。这一步是关键,因为DNN预测一定会有差错,而压缩数据需要保证数据恢复的完整性和正确性,所以需要有修正表的支持。同时也可以获知,DNN预测的越精确,修正表所需要修改的内容就越少,修正表的占磁盘空间就越小。


4. 组块C:查询模块

在这里插入图片描述

  对于用户给定的查询,先通过索引查询对应节点或边的关键字,后将其传递给LSTM模型进行详细内容提取,获得的结果经过修正表与参考表后获得原始信息,通过交互界面传递用户。


5. LEONARD模型示例

5.1 LEONARD存储系统预处理

在这里插入图片描述
  A. 椭圆与矩形表示不同实体,将溯源图中信息解析成②所示的文本,并为其赋关键字V0、E0等。
  B. 将文本信息进行编码,去除冗余。节点文本有3个属性,边文本有4个属性,编码规则存在参考表中。其中,对于V0来说,第一个属性0表示该节点是实体(文件或进程),第二个属性a.txt表示该文件名称或进程名称,第三个属性0表示实体种类,为文件。
  C. 构建节点与边的索引,节点索引包含其主要属性(文件实体为文件名,例如a.txt,进程实体为进程名,例如Firefox),边索引包含相邻节点,方便后面的查询。
  D. 将③中获得的文本数据通过char2vec后变为实值向量,传入模型训练,并根据每个epoch的训练结果更新修正表。其中,每个词在char2vec中会加上起始和结束标志符,词会被对应向量替代,每次训练传入一个数字(标志符算一个数字,词向量可能包含多个数字,分别依次传入)。修正表包含数据为:(关键字,出现错误的位置,该位置的真实值),依此进行修改。

5.2 LEONARD查询

在这里插入图片描述
  ①给定查询Value:firefox,通过查找参考表获得编码后firefox的值,利用该值通过节点索引获得其对应节点V1。
  ②~③在边索引表中通过前向遍历(也可能是后向,这个是预先人为确定的)的方式以V1为起点搜索相关联的节点和边,示例中最终输出V0、V1、E0。
  ④~⑤针对结果进行处理,首先将节点关键字传入char2vec转换后,将字符依次传入LSTM模型,获得对应的结果<[9,1],0,1,2>,之后根据修正表修改对应位置字符,获得最终结果<[9,1],0,0,2> 。
  ⑥~⑦将结果通过vec2char逆向转变为去冗余后的文本数据,之利用参考表进行数据的还原,最终获得V1的结果为V1,firefox,process。(其实在查询中,根据人为设定的查询节点阈值,从起始节点开始可以查询出很多很多的相关节点或边的信息,本文实例只是输出了一个节点的信息,实际上文章中设置的阈值并不是1)


三、总结

  以上就是我对本篇文章方法的总结,本篇文章的实验部分我并没有发出来,但是作为一篇顶会文章本文的实验非常非常非常的详细,如果是研究此方向的同学老师我建议可以看一看。
  本文作者提出,他们是第一位将DNN运用在溯源图存储上的,获得了良好的效果,这也是目前大的趋势,将AI应用到多个领域,利用其对特征处理的超强能力帮助我们的工作。

四、参考文献

[1] Tim Kraska, Alex Beutel, Ed H. Chi, Jeffrey Dean, and Neoklis Polyzotis. The case for learned index structures. In SIGMOD, 2018.
[2] Amir Ilkhechi, Andrew Crotty, Alex Galakatos, Yicong Mao, Grace Fan, Xiran Shi, and Ugur Çetintemel. Deepsqueeze: Deep semantic compression for tabular data. In SIGMOD, 2020.

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值