数据来源描述了数字工件的起源。它解释了对象的创建,以及在其生命周期中发生的所有修改和转换。当历史记录是详细的,或跨越很长的时期,或两者兼而有之时,收集到的信息就会变得大量。即使是在通过一系列的计算来不断扩展源的同时,也经常使用源的分析。这就需要一个框架来支持新元素的性能流输入和并发查询,并在数据可用时生成包含数据的响应。
操作系统和区块链是收集和分析的许多领域中的两个大来源9有很多有用的应用。在操作系统中,由内核审计框架收集的系统调用信息可以构成可信的源元数据的基础。这有助于跟踪发生在机器甚至联邦系统中的所有活动。这整个网络的起源1特别有用的应用程序,如恶意软件检测和确保计算的可重复性。
比特币是一种基于区块链的加密货币,个人可以在其中彼此进行交易。两个或多个用户之间的每个交易都包含应该存储在区块链中的支付信息。这些记录构成了跟踪区块链中任何给定数字对象来源的基础。除了跟踪货币所有权的主要目的外,来源还有其他应用,例如检测异常行为以识别非法活动。
来源元数据可以存储在数据库中,以方便高效的查询。查询系统的过程必须是直观和方便使用的,因为在大来源中寻找相关片段类似于众所周知的大海捞针。这些目标必须得到满足,尽管该系统被用于各种领域,从分析复杂的应用程序工作流到在发现对系统的攻击后执行取证和影响分析。
有几个接口用于查询来源。在允许用户选择自己选择的数据库类型方面,它们中的许多都不灵活。有些接口在数据模型中提供查询功能,这与面向图的数据模型不同,面向图的数据模型是自然的来源。其他接口有用于查找结果的直观构造,但对所需的有效链接响应的支持有限在上雕琢平面的搜索。本文提供了用于查询来源的用户界面,该界面解决了这些问题,并且与所使用的底层数据库无关。
首先,提供了数据来源的相关背景知识,以及如何对数据来源进行建模,以及如何在开源实现中实现表示。然后介绍了查询界面的设计,概述了其核心功能,描述了说明性用例,并突出了系统的突出方面。
报告数据来源的一种常用方法是将其建模为一个图结构,其中顶点表示历史记录中的元素,边表示与元素相关并按顺序排列的事件。一个来源图G(V,E)然后包含一组顶点,V边,E。一员,v,集合的V可以是一个代理,过程,或工件这是一个事件。每条边e属于集E表示发生的操作并将两个顶点关联起来,V我而且Vj.
已经开发了多个数据模型来表示数据来源。著名的变体有OPM(开放来源模型),11在2010年出版的;W3C PROV规范,132013年发布;以及DARPA透明计算项目的CDM(公共数据模型),10在2019年完成。它们有一些相似之处。每个都包含三类元素的顶点:代理或主体;过程、活动或主题;以及工件、实体或对象。它们根据预期的使用领域在细节上有所不同:OPM被设计成领域不可知的;创建W3C PROV是为了帮助发布语义丰富的Web内容;CDM专注于操作系统的特定领域。
使用自定义模式捕获被监视的活动域的语义。通过使用属性图来表示来源,可以直接嵌入这些细节。顶点和边都有一个(可能是空的)集合,一个的域描述注释,一个=一个1,一个2、……一个n.每个注释ai都是一个键值对,也就是说,一个我=关键我:价值我-该函数报告域的一个方面,例如项目:firefox或路径:/ etc / passwd
.通过这种方式,来源图捕获事件的相对顺序,以及被监视领域的显著方面。
例如,考虑一个表示操作系统进程的顶点。这个顶点可以有注释来传递信息,比如它的名称、标识符或开始时间。边可以将进程与已读取的文件关联起来。就比特币的来源而言,7代表事务的顶点会有注释,比如标识事务的散列和事务有效的最早时间。edge可以将未使用的比特币与指定金额的收款人关联起来。
最简单的来源查询包括搜索匹配规范的顶点,规范由描述规范的注释上的表达式定义。这样的查询对于定位可以作为更复杂查询的起点的顶点非常有用,比如本文中所描述的查询。类似于检索顶点的是标识单个边的查询。例如,用户可能希望了解特定文件的权限被更改的所有情况。因为这是一个原子系统事件,用户可以搜索所有相关的起源边。类似地,一旦定位了一条边(或一组边),用户就可以提取端点顶点。在前面的示例中,这将允许识别执行该操作的进程。
在对来源记录进行操作时,最常用的功能之一是支持查找元素的沿袭。在沿袭查询中,数据工件的祖先被追溯到指定数量的步骤。在另一个方向上运行的类似功能对于识别后代很有用。通过递归地分别定位图结构中的父顶点或子顶点,可以找到给定数据工件的祖先或后代。一个物品的祖先血统提供了一幅导致该物品被创造的图画,而后代变体描述了在它被创造之后从它派生出的东西。通过操作系统来源,文件的沿袭可以解释文件是如何、何时以及由谁创建的。它可以支持向文件写入或从文件读取的所有系统进程(及其所有者)的枚举。在比特币的情况下,支付的谱系揭示了参与用户和所有与他们相关的交易的详细信息。
另一个重要的操作是搜索一对元素之间的路径。这种操作在实践中经常出现两种变体。第一个涉及到寻找两个顶点之间的所有路径,而第二个关注于寻找它们之间的最短路径。两个顶点之间的路径演示了不同的数据元素如何通过在系统中发生的事件相互影响。例如,查找Web浏览器应用程序和从Internet下载的文件之间的路径,将显示浏览器用户将文件从远程服务器带到本地机器所需的完整步骤集。在比特币上下文中,可以使用两个地址之间的路径来查找连接这两个地址的交易。反过来,这可以用来计算从一个用户流向另一个用户的资产,即使它们经过中介。
开源的SPADE项目3.提供用于推断、存储和查询数据来源的软件。它是跨平台的,可以与区块链、在线社交网络和多种操作系统(包括Linux、macOS和Windows)使用。来源的收集不需要在应用程序或目标平台中进行任何更改。SPADE易于安装和配置。它为用户提供了从多种存储格式中进行选择的简单机制。
SPADE的架构如图所示图1.它由多个模块组成,每个模块在处理来源记录时起着独立的作用。这些模块由SPADE管理内核核心。通过推断活动域的来源图元素并将其发送到内核记者模块。在被任何过滤器Present,元素被发送到存储将元素插入使用自定义模式配置的数据库的模块。摄入和查询处理的独立线程的存在允许客户端在底层图发生变化时进行来源查询。稍后将进一步描述各种类型的模块。
Reporter模块充当来源元数据的生产者。它接收来自不同来源的事件流,从中提取相关信息,并推断来源关系,在此过程中构建图顶点和边。SPADE提供了大量的报告器,生成关于不同域的来源,包括操作系统、区块链、应用程序内调用和用户定义的模式。
Filter模块作用于报告器发出的来源流。它根据编程的标准对来源执行选择操作。例如,有些过滤器只允许与规范匹配的顶点和边通过。其他过滤器抽象或删除顶点或边中的信息。过滤器的输出是经过处理的要持久保存的来源信息。可以插入几个过滤器,对前面每个过滤器的输出进行顺序操作。
Storage模块接受筛选器序列的最终输出(如果有的话),并将其存储在一个可用的数据库中。该模块提供了对底层持久存储的抽象。这个子系统可以是一个关系数据库(如MySQL或Postgres)、一个图形数据库(如Neo4j)或任何数据存储。该模块提供用于存储和检索与底层数据库无关的数据的接口。
Analyzer模块为用户提供了一个接口,用于检索存储在SPADE中的来源记录。它负责接收查询,将其发送到适当的存储,处理信息,并与用户共享结果。默认实现从命令行接收查询。
第一代SPADE及其前身引入了对查询文件沿袭的支持,该沿袭由文件的路径和版本(如给定日期和时间)指定。它包括了一些用于跨主机传输源元数据的优化4并加速对这些记录的加密验证。5直到第二代6添加了更丰富的查询面,包括对检索顶点、边、路径和沿袭的支持。
SPADE提供了大量的报告器,生成关于不同域的来源,包括操作系统、区块链、应用程序内调用和用户定义的模式。
为了使查询在大来源导航和执行分面搜索时更可用,开发了一个新的表面。它的名字叫“快速圣杯”,是因为它的设计灵感来自于“圣杯”项目2最初是在Quickstep数据库上实现的。12随后,SPADE添加了对与Neo4j图形和Postgres关系数据库一起使用Quick-Grail的支持。
QuickGrail提供了底层数据库的抽象,这样用户就可以使用统一的查询语言,而不必考虑下面的数据模型和序列化。这允许用户专注于手头的来源分析任务,而不必担心如何将查询翻译成数据库的本地语言。除了高效之外,该曲面还提供了一种统一的机制来导出响应,以供可视化和其他外部使用。
查询接口提供了一组函数,用于搜索来源记录和操作从底层数据库检索到的响应。支持的数据库有Neo4j、Postgres和Quickstep。查询面中的每个函数都以中间表示形式实现,该表示形式被翻译成目标数据库的查询语言。
该系统提供了几个方便的功能面向方面的搜索,允许用户锁定他们感兴趣的信息。其中一个特性是将查询响应分配给图形变量的能力。可以在后续查询中对这些变量进行操作,以优化搜索。在存在大来源的情况下,促进高效用户交互的另一个特性是能够限制响应的大小。这允许用户发送查询并快速接收部分响应,他们可以检查这些响应以改进搜索。
变量。一个特殊的变量$base表示存储在当前选择的数据库中的整个来源图。这个变量充当大多数查询的来源范围。类时使用变量来存储响应图在查询中,它将出现在赋值(用=表示)的左侧,其名称必须以$开头。如果使用一个变量来定义a查询约束,名称必须以%开头。这样的变量很方便,提供了一种简洁的方式来表示可能需要作为参数重复传递给查询的约束。
约束。要确定与查询、选择相匹配的元素的范围约束可以指定。在其最基本的形式中,它由一个注释键、一个关系操作符和一个值组成。(回想一下,本文前面介绍过注释。)支持的操作符包括==, !=, <, <=, >=,
而且就像
.最后一个选项有助于匹配字符串(使用%作为通配符)。例如,名字喜欢的/ bin / %
将匹配具有以/bin/开头的值的注释键名称的顶点。一个约束的uid = = ' 0 '
可以用于选择作为root运行的进程的顶点(因为它的uid是0)。为了简化重用,可以将约束存储在变量中——例如,%system_procs = name LIKE '/bin/%'
.
为了支持更复杂的过滤,可以通过使用逻辑运算符组合组件来构建约束表达式和
,或
,不
.这允许在多个注释上构建约束表达式。此外,它还允许用户将现有约束与新标准结合起来,从而促进分面搜索。例如,考虑约束%proc _ python = name == 'python'
用于查找表示python执行的顶点。查询器可能对作为根用户运行的子集感兴趣。在这种情况下,查询器可以定义另一个约束%proc _ root = uid == '0'
.然后可以将这两个约束组合成一个表达式%proc _ python和%proc _ root
在后续查询中使用。
提取元素。因为来源图由顶点和边组成,所以提供的最基本函数是getVertex
而且getEdge
.它们可以与任何现有的图变量一起使用,以提取由约束指定的元素子集。这些函数的输出必须赋值给一个图变量。注意,尽管这些函数的结果是顶点或边的集合,但这些集合被视为图。在下面的示例中,从特殊变量中提取顶点美元的基础
,表示全局图。它们被约束到注释类型为的子集过程
:
%only _ processes = type == 'Process'
$all _ processes = $base。
只getVertex(% _流程)
类似地,如果每条边都有值为fork的operation注释,那么它将被提取:
%all _ fork = operation == 'fork'
$fork _ edges = $base。getEdge(% _叉)
使用刚刚获得的边集,下一个查询提取执行fork操作的进程,以及作为结果创建的进程:
$fork _ vertices = $fork _ edges。
getEdgeEndpoints ()
确定起源和影响。给定一个来源图中的元素,一个核心问题是理解是什么导致了它。同样重要的是理解什么受到了特定元素的影响。在这两种情况下,都是从元素开始,分别找到它的父元素或子元素,然后进行递归。get-Lineage函数支持这一点,它被泛化为操作一组种子元素。它有三个参数:一组种子点;的最大层数从种子顶点遍历,该顶点必须为正整数;和方向可以是祖先,后代,或者两者都是。中的例子图2用firefox注释提取顶点祖先谱系的两层:
人生中的点点滴滴怎么串连在一起。初步的分析(例如,通过使用越来越具体的约束的分面搜索)可能会导致识别出两组顶点:一组可能由进入系统的网络流的入口点组成,而第二组可能具有妥协的指标,例如特权升级的进程或在特定时间窗口中所有权发生变化的文件。
了解两个集合之间是否存在联系是一个关键问题。这可以通过get-Path函数来确定,该函数接受三个参数源点;一组目的地顶点;和最大路径长度在任何源顶点和目标顶点之间,它必须是正整数。来源的语义意味着,只有当目的地位于源的来源(即祖先)中时,才会找到路径。下面的示例搜索长度最多为三条边的路径火狐
过程顶点和/ etc / passwd
文件顶点:
%source = name == 'firefox'
firefox = base.getVertex美元(%)
%destination = path == '/etc/passwd'
$etc _ passwd = $base。
getVertex目的地(%)
路径=美元基地。getPath($firefox, $etc _ passwd, 3)
如果发现的路径集很大,可以通过指定一组或多组中间顶点来对其进行细化。例如,如果已知acompromised_process美元
设谎言的道路上的兴趣从firefox美元
来etc_passwd美元
,查询可以更具体:
路径=美元基地。getPath($firefox, $ comed_process, 3, $etc_passwd, 3)
填补缺失的部分。在调查的早期,特定的代理、活动和工件可能是已知的,但不是所有的元素(包括它们之间的关系)都可能是已知的。在这种情况下,分析人员可以定义一组有趣的顶点,然后要求系统描述它们彼此之间的关系。例如,在指定的时间段内,可能会识别出一组具有修改所有权的可疑网络连接和文件。然后,分析人员可能希望知道这些元素是否以及如何相关。
在泛化中,分析人员可以在集合中包含边,以合并有关已知的感兴趣的来源关系的信息。这是可以被影响的在托托与getSubgraph
函数,它以a作为输入骨架图。骨架是一组已知的感兴趣的顶点和边先天的。该函数返回覆盖骨架中所有元素的源子图,以及位于骨架中顶点和边缘端点之间路径上的那些元素。
中的例子图3显示返回的来源子图将显示Firefox创建的几十个线程中的每个线程的顶点,被访问的每个配置和缓存文件,用于进程间通信的每个套接字,以及它们之间的来源关系。
本机。商品数据库提供不同的查询表面。支持的原语集取决于使用的数据模型和在底层引擎中实现的索引等因素。关系数据库如Postgres和Quickstep提供了基于SQL(结构化查询语言)的接口。Neo4j等图数据库使用Cypher,这是一种面向图的声明式模拟。由于每个数据库可能支持对分析人员有用的自定义查询,因此提供了访问它们的工具。如果一个查询在关键字native之前,它将被不加修改地传递给底层数据库。响应将以文本行而不是图形的形式返回。这允许调用任意本机查询。
例如,考虑OPM中的一个操作系统来源图工件按子类型细化的顶点,包括文件,链接,目录,块设备,字符设备,命名管道,未命名管道,Unix套接字
,网络套接字
.在初步分析中,这些元素的分布可能有助于确定不寻常的模式。在这种情况下,每个子类型的计数可以通过用户定义的函数从Postgres中获得柱状图:
本地'SELECT * FROM直方图(顶点,子类型)'
当分析大型数据集时,过程通常是迭代的。分析师可以构建许多假设,通过查询数据来检查每个假设是否有效。随着研究的深入,保持工作流的效率需要简洁地表示中间结果,以避免I/O带宽成为瓶颈。在实践中,搜索通常是分面的,一个步骤的结果在后续步骤中重用。它还可能涉及回溯和比较所提取的数据子集。当检索到潜在感兴趣的结果时,可视化或其他外部处理可能允许分析人员获得对所选子集的广泛理解。查询面有几个特性可以解决这些问题。它们一起促进了敏捷探索。
有效的表示。SPADE将来源建模为属性图。选择注释模式是为了确保散列它们将为每个顶点和边缘生成一个惟一的基于内容的标识符。在执行查询时,只有响应中涉及的标识符与用于跟踪响应的图变量相关联。实际上,只构造由相应子图的邻接表组成的骨架表示。键值注释形式的图属性的丰富表示并没有立即具体化。这些属性描述了推断出处的域,使用了保存完整图所需的大部分存储空间。在显式地将响应导出到控制台或使用dump命令分别导出到文件之前,将避免检索它们。这使得分析师可以在不中断交互工作流的情况下进行查询,从而产生大量的响应(如果要实现完整的响应,就会发生这种情况)。
考虑下面的顺序图4.图变量$sources、$destinations和$paths只跟踪涉及的顶点和边的标识符。例如,只有显式地发出dump $paths时,才会从数据库检索图$paths中元素的注释。
响应重用。当查询客户端发起会话时,将创建一个本地工作区来存储接收到的图形响应。每个图都绑定到一个变量名,简化了它的重复使用。可以通过以下两种方式之一使用这些变量。首先,因为变量代表一个图,所以它可以被视为后续查询操作的整体。其次,变量可以作为查询的参数传递。
在图5,最后一个查询使用美元的过程
而不是美元的基础
作为起源范围,在其中搜索名称以。开头的所有流程顶点火狐
.
随着会话的进行,可以使用命令识别当前定义的变量集列表图
.的统计
命令可用于获取关于特定图的统计信息。例如,stat美元路径
报告已命名图中的顶点和边的数量美元的路径
.通过使用erase销毁绑定来支持变量名的重用。这就消除了与变量相关的骨架表示。
集合操作。对来源的初步检查可能会给分析人员留下一组需要进一步细化的大子图。例如,如前所述,可以利用有关活动域的知识来识别图中特别感兴趣的子集。更具体地说,在特定于领域的注释上框架的查询可以将顶点和边的集合从底层数据库提升到工作区中;这些种子集可以通过路径和沿袭查询进行扩展。
为了方便图形的符号操作,提供了一套补充的操作。它们在图的设置中实现了直观的数学集合运算。图对可以用+运算符转换为组成部分的联合。结果包含一个顶点集,该顶点集是操作数图中顶点的并集。类似地,得到的边集是操作数中的边的并集。或者,两个图的交集可以用&运算符来计算。结果图将只包含在两个操作数图中都存在的顶点和边。最后,可以根据第二个图的规格删除图中的元素。这是由区别操作符。
考虑这样一种情况,分析师希望确定在执行过程中更改其标识的流程集。首先,他们提取所有报告标识变化的边的集合。接下来,它们提取这些边的端点,表示发出setuid ()
调用。然而,在此上下文中,最初作为根运行的子集不感兴趣。因此,通过在最后一步中减去相应的集合(参见图6).
图导出。由于查询得到的图可能很大,所以不会立即具体化。相反,图表可以有三种用法。首先,它可以以JSON (JavaScript对象表示法)格式打印到控制台。输出是顶点和边的数组。每个元素由一个或两个标识符(取决于它是顶点还是边)和描述它的注释组成。
在图7,分析人员检查图形内容的子集。这是通过使用limit函数提取一个示例(在这个实例中有10个元素),然后使用dump命令打印它们来实现的。此主题在分面搜索中非常有用,分析人员可以基于对连续中间结果的研究迭代地改进查询。
使用图的第二种方法是以JSON格式将其导出到文件或管道中。这允许它被外部工具导入或摄取。为了影响这一点,在使用dump之前使用一个export指令来指定文件系统路径。例如,图变量firefox美元
_顶点
可以序列化到文件吗/ tmp / firefox.json
:
> / tmp / firefox.json出口
转储$firefox _顶点
最后,支持将图形导出为广泛使用的Graphviz DOT格式。这允许它以几种形式可视化,这取决于用于渲染它的布局工具。机制与前一种方法类似,在使用dump命令之前有一个导出(指定DOT数据应该发送到哪里):
> / tmp / firefox.dot出口
转储$firefox _顶点
本节介绍了前面介绍的两个域的用例:操作系统和区块链。在事件后分析场景中查询来源。
操作系统。考虑一个从系统调用推断来源的设置,就像Linux上的SPADE的Audit Reporter、macOS上的OpenBSM和Windows上的ProcMon。结果图捕获了用户、流程和数据工件之间的交互。作为一个激励用例,请考虑系统管理员在做出妥协后所面临的挑战。必须确定对目标主机造成的损害的性质和程度。这可以从确定恶意软件感染的来源到识别哪些数据被泄露,哪些系统配置被修改。
现在考虑一个受实践中所见的攻击启发的例子,如图8.通过分析系统中进程和工件之间的抽象来源关系,可以简化对攻击步骤的理解。假设有一个应用程序(火狐
)通过远程连接接受恶意请求。这将利用程序中现有的漏洞。它导致执行过程被劫持,对手获得了对它的控制。数据被写入二进制文件的位置(tcexec
).修改后的文件的权限将被更新,以确保它是可执行的。随后,当这个二进制文件运行时,它将访问系统文件并将它们导出到远程主机。
在图9在美国,法医分析人员可以通过一组查询重构结果。一开始,分析师被认为是知道的先天的那就是火狐
浏览恶意网站后被劫持的进程。
比特币在暗网(和其他)市场中使用。8每次付款都支付到表示用户的特定地址。每一笔成功的交易都被记录在一个区块中,成为公共账簿的一部分,比特币区块链。SPADE的比特币报告器可以用来推断将单个地址、交易和区块联系在一起的来源图。下一个示例假设区块链已经导入到Quick-Grail支持的数据库中。这使得取证分析师能够跟踪比特币生态系统中的资金流动。例如,他们可能希望标识特定事务的所有源。或者,他们可能想要检查从一个比特币地址到另一个比特币地址是否有路径。
在这个例子中,分析师从一个网站上发现的比特币地址开始,该网站为支持非法活动募捐。最初,他们检查特定地址是否已发送任何付款。搜索被限制在五个间接级别。
$捐款_地址= $基地。
getVertex(地址= = 13 pcmh4dkje8aqrhq4zz-wmm1sbkfcmqee)
$payer _ candidate = $base。
getVertex(地址= =“ZwmbK4ZdKJ3PcQEmh-8MEAqrhq41FcEM1s”)
路径=美元基地。getPath($donation _ address, $payer _ candidate, 5)
接下来,分析人员检索所有通过直接支付或通过中介将资金送到捐赠地址的支付者。
纳税人=美元基地。
getLineage($donation _ address, 2, 'descendants')
下载、构建和运行SPADE的说明可以在网上找到。3.假设查询客户端正在运行,在shell的命令行上执行命令铲查询启动查询客户端后,可以以交互方式使用查询客户端。还可以通过分别重定向标准输入和标准输出,将命令和响应通过管道传递给它。
对来源的初步检查可能会给分析人员留下一组需要进一步细化的大子图。
指令集存储
可以在客户端发出更改当前默认数据库。这假设前面已经添加了相应的SPADE存储。此时,创建了一个会话。现在进行的任何查询都将被发送到所选数据库。查询会话将继续,直到发出退出命令。
本材料基于ACI-1547467拨款下国家科学基金会支持的工作。本材料中表达的任何意见、发现和结论或建议都是作者的观点,并不一定反映美国国家科学基金会的观点。
1.Ahmad, R., Jung, E., de Senne Garcia, C., Irshad, H., Gehani, A.全网来源的差异检测。在12人会议记录th关于来源理论和实践的USENIX研讨会;https://www.usenix.org/conference/tapp2020/presentation/ahmad.
2.Fan, J., Gerald, A., Raj, S., Patel, J.针对专门图形分析引擎的案例。在七人会议记录th创新数据系统双年会议, 2015;http://cidrdb.org/cidr2015/Papers/CIDR15_Paper20.pdf.
3.Gehani, a .铲;http://spade.csl.sri.com.
4.Gehani, A, Kim, M, Zhang J.在网格集群中管理沿袭元数据的步骤。在会议记录1圣Usenix种源理论与实践研讨会, 2009年1 - 9;https://dl.acm.org/doi/10.5555/1525932.1525939.
5.Gehani, A., Kim, M. Mendel:有效验证在多个信任域中修改的数据沿袭,十九届会议记录thACM实习生。计算机协会。高性能分布式计算2010;https://dl.acm.org/doi/abs/10.1145/1851476.1851503227 - 239。
6.Gehani, A., Tariq, D. SPADE:支持分布式环境中的来源审计。在十三届会议的议事录thACM /联合会/ Usenix中间件配置。;2012;https://dl.acm.org/doi/pdf/10.5555/2442626.2442634.
7.Gehani, A., Kazmi, H., Irshad, H.将SPADE扩展为“大来源”。在八人会议记录thUsenix种源理论与实践研讨会2016年,26-33;https://www.usenix.org/conference/tapp16/workshop-program/presentation/gehani.
8.Ghosh, S., Das, A., Porras, P., Yegneswaran, V., Gehani, A.用于分析暗网生态系统的洋葱网站自动分类。在二十三次会议的会议记录理查德·道金斯ACM实习生。知识发现与数据挖掘, 2017, 1793 - 1802;https://dl.acm.org/doi/10.1145/3097983.3098193.
9.Glavic, B.大数据来源:对基准测试的挑战和影响。修订论文选集1圣指定大数据基准研讨会, 2012, 72 - 80;https://dl.acm.org/doi/10.1007/978-3-642-53974-9_7.
10.库里,J., Upthegrove, T.,卡罗,A., Benyo, B., Kong, D.基于事件的信息流跟踪数据模型。12人会议记录th关于来源理论和实践的Usenix研讨会, 2020;https://www.usenix.org/biblio-4496.
11.莫罗等人。开放来源模型核心规范。未来一代计算机系统27日,6 (2011);https://dl.acm.org/doi/10.1016/j.future.2010.07.005.
12.Patel, J., Deshmukh, H., Zhu, J., Potti, N., Zhang, Z., Spehlmann, M., Memisoglu, H., Saurabh, S. Quickstep:基于扩展方法的数据平台。在VLDB捐赠基金的议事日程, 6 (2018), 663-676;https://dl.acm.org/doi/10.14778/3184470.3184471.
13.W3C工作组。PROV-overview, 2013;https://www.w3.org/TR/prov-overview/.
数字图书馆是由计算机协会出版的。版权所有©2021 ACM, Inc.
没有发现记录