Full Database Reconstruction in Two Dimensions:二维全数据库重构
前述
坐标2021.1.21
新的一周,汇报CCS,还是选了应用密码学主题,一口气看了4篇,人都看傻了。。。
关于paper
本文是关于数据库安全的,存在对于一维数据库的很多攻击——基于范围查询(访问模式泄漏/已知查询分布/搜索模式泄漏)
核心:对二维数据库进行探讨
Keyword:Encrypted Database; Database Reconstruction; Attack
一些概念
- 二维数据库:DR,D中的记录称为点,是一个R元组,元组索引为 j
- 范围查询:一对q=(c,d)∈D2,响应一组标识符集合,即位于c和d之间的矩形中的点。
- 多重响应集:RM(D),是响应的集合,因为不同的查询可能响应相同的记录,所以多重。去重后记为RS(D).
- 泄漏等价数据库:指响应多重集完全相同的数据库,记为E(D).
- 全数据库重构:FDR,给定某个数据库的RM(D),计算E(D).
正文
定义的工具
(1)反射:一个点关于主对角线的对称点
(2)查询密度:点到域的两个角围成的面积的乘积,对于点v(v0,v1)和w(w0,w1)且v<=w,公式 ρv,w=v0v1(N0+1-w0)(N1+1-w1),N0和N1分别是域的长宽。引理:点与其反射具有相同的查询密度
(3)根据查询密度推断点的位置:引理a:设α∈Z,则方程ρx=α至多有2(N0+N1)个整数解x。引理b:已知ρx,ρv,x,v<=x,则x至多有两个整数解—画线,找交点
(4)定义的方法:第一步是确定“包含”数据库其余部分的2、3或4个端点;特别是这些点将共同实现每个维度的最大值和最小值。我们通过寻找一组点的极小集来找到这些点,使得它们在查询中的同时出现意味着整个数据库都在该查询中。然后,我们通过仔细应用引理a和b,代数地求解D中这些点的可能赋值,得到一个多项式解列表。然后,对于每个可能的解,我们恢复一系列等价的数据库族,由它们自由移动的“组件”组织起来。取所有族的并作为极值点的可能解,得到E(D)。
分类等价数据库
- 组件:定义D的组件C,C中的每个点都支配(>=)或被支配(<=) 非C中的点。若组件上的所有点都可反射(反射点在D上),则组件可反射。引理:任何数据库都可以被组件唯一地划分。
- 等价的引理:设C为数据库D的可反射组件,每个点 p∈C的反射σ( p)构成组件C′,用C′替换C得到D′,则D和D′是等价的。
- 分类的定理:任何等价于D的数据库都可以从少量的“种子”数据库反射它们的组件来形成。
全数据库重构
攻击概述
(1)识别数据库的极值点,包括任何拐角点。
(2)提取最左侧、左侧和最右侧、右侧的点,并将剩余点分为三组:一组是所有点位于左侧和右侧上方,一组是所有点位于它们之间,另一组是所有点位于它们下方。
(3)我们找到所有可能的左右点的位置,并用它们来识别数据库中每个点的一个或两个位置。
(4)利用恢复的位置,将数据库划分为多个组件。
(5)我们将每个分区中的点的位置修剪为每个点一个位置。
预处理
给定RM(D),生成相应的RS(D)。——去重
对RM(D)和RS(D)进行预处理,确保域中的每个值最多对应一个标识符。
极端情况
极值点的极小点集E,E中只有2/3/4个点的情况
只需遍历大小为2、3和4的所有极值点子集,然后选取第一个子集,这样包含该子集中所有点的RS(D)中的最小响应就是最大的响应
数据库中极值点的最小集的三种互斥情形:(1)两个corner,p和q;(2)一个corner,q;(3)无corner。
对数据库分段
给定一组由算法1计算的left、right、bot和top的极值点,我们的目标是根据它们相对于极值点的垂直(第二坐标)排列,将数据库中D的点分为三组,分别是:S1、S2和S3。
将数据库分割为三组点。
找到候选位置
首先,我们使用ρleft来计算left使得left0∈[N0]且left1∈[N1]。我们最多可以得到2(N0+N1)个解,如引理a所示。然后我们使用第二个参数,ρleft,right 得到方程组,然后求解left0、left1、right0和right1的所有有效解。一旦我们确定了left、right位置,我们就可以用引理b来计算剩余记录的至多两个潜在解。
将数据库划分为多个组件
把D的所有点投影到主对角线上,那么一个组件的点的投影沿着对角线是连续的。该算法通过“向上走”对角线并跟踪到目前为止遇到的投影点的IDs来找到可反射组件。一个组件被形成,一旦它的两个投影点都被看到。
修剪候选重构
已经获得可能的数据库族及其(可反射和不可反射)组件。为了实现FDR,必须删减解集,并为每个组件确定1或2种可能的配置。
我们将遍历每个族中的每个组件。对于每个组件C,我们创建一个图G,其节点是C的标识符。与算法5类似,我们在对角线上找到每个标识符的低和高投影。如果由(low(ID1)、high(ID1))和(low(ID2)、high(ID2))生成的框相交于多个点,我们再次“向上走”对角线,在ID1和ID2之间添加一条边。更正式地说,当high(ID1)>low(ID2)和high(ID2)>low(ID1)时。任何high(ID)=low(ID)的标识符就G而言被忽略。图12说明了图G的结构。
图12:(左)域[19]×[19]上有7条记录和3个组件的数据库。真实点用实心圆表示,它们的反射用空圆表示,它们在主对角线上的投影用十字记号表示。(右)由算法3构造的组件图,其中两条记录之间的边表示固定一条记录的点固定了另一条记录的点。
对图G进行深度优先搜索。在搜索的每个步骤中,我们遍历一些边(ID1,ID2),其中至少有一个标识符,比如ID1,只有一个位置,比如r。如果另一个标识符有两个u,u′,我们计算ρu,r和ρu’,r,并确定哪一个与RM(D)一致。不可能两者都是一致的,因为在这种情况下,(ID1,ID2)之间不会有边。如果没有一致的,则此数据库族无效。
评估
数据集:2004年、2008年和2009年的医疗成本和利用项目全国住院病人样本(HCUP,NIS)*,2012-2018年七年,芝加哥市数据门户网站的芝加哥犯罪地点的医院记录,以及德国绿党政治家马尔特·斯皮茨的手机记录。
【https://www.hcup-us.ahrq.gov/niscoverview.jsp。我们没有对任何数据进行非对称化,我们的攻击也不是为了对医学数据进行非对称化,进行实验的作者接受了HCUP数据使用协议培训,并提交了签署的数据使用协议。】
https://data.cityofchicago.org/Public-Safety/Crimes-2001-to-present/ijzp-q8t2
https://crawdad.org/spitz/cellular/20110504/
做了可反射组件的数量的结果。。。
还做了自动查找E(D)中的D的实验,一维、二维查询的对称性破坏
结论:对于HCUP数据库,攻击比基线要好得多,但并不完全准确。对于具有单个已知点的位置数据,对于具有大域的芝加哥数据,在E(D)中找到D的概率很高。密度较大的数据库(如具有小域的芝加哥数据)和具有许多可反射组件的数据库(如Spitz数据集)仍然显著优于基线,但性能较差。
心得
这篇的图很多,内容也很易懂了,可以说用到的数学知识不难,作者能这么巧妙地运用它们,并设计出精简的搜索算法,很厉害,敬仰
掌握一个idea小技巧,从一维扩展到二维。。。
特此声明,该博文所写均为本人自己理解,如有争议以论文原作者为准,(鞠躬