数据以表的形式表示,每一行表示一条记录(record),每一列表示一个属性(attribute)。每一个记录与一个特定用户/个体关联。这些属性可以分为三类:1. 标识符:可直接确定一个个体,如:身份证号;2.准标识符集:可以和外部表连接来识别个体的最小属性集,如:图1{邮编,年龄};3.敏感数据:用户不希望被人知道的数据,可以认为数据表中除了标识符和准标识符之外都是敏感数据,如图2的disease。
当公开数据表时,应避免用户的敏感数据被公开,也即不能让观察者者将某条记录和一个确定的用户联系起来。信息公开(information disclosure)可以分为两类:1. 身份公开::指可以将用户和特定记录联系起来;2.属性公开:当新公开的信息可以使观察者更准确地推测用户的特征时,称发生了属性公开。
如下图所示,图2是图1经过k-匿名处理后的数据,它使得同一等价类中记录对于敏感属性不能与其他k-1条记录相区分。
用户画像,即用户信息标签化,就是企业通过收集与分析消费者社会属性、生活习惯、消费行为等主要信息的数据之后抽象出一个用户的商业全貌。
形式上讲,Embedding就是用一个低维稠密的向量“表示”一个对象,这里所说的对象可以是一个词(Word2Vec),也可以是一个物品(Item2Vec),亦或是网络关系中的节点(Graph Embedding)。其中“表示”这个词意味着Embedding向量能够表达相应对象的某些特征,同时向量之间的距离反映了对象之间的相似性。或者说更直白一点,它就是一个矩阵。Embedding将一个东西映射成一个向量,如果两个东西很像,那么得到的向量距离就会很小。下面举几个例子:
知道什么是Embedding之后,我们开始讨论Node Embedding了。在传统机器学习任务中,我们需要根据下游任务来提取指定的特征,如果下游任务变化了,提取的特征也需要变化,也即是依赖下游任务导向。
很显然,传统机器学习算法很难提取图结构数据的特征的。因为,图的特征信息很多是隐式的、抽象的、高维的、与任务无关的。因此,我们需要借助图表示学习将高维度信息降维到低维度空间,同时最大化保留原有图原本的结构信息。此外,它还有一个很重要的一个优点就是它弱化了对下游任务的依靠,不需要针对不同的任务每次都进行不同的特征提取。
因此,我们可以使用Node Embedding将图中节点映射到一个向量空间,同时保持节点的某些性质。
当节点映射到向量空间之后就可以进行各种下游任务了。
Danaan-Gift attack 首次在《Privacy Aspects and Subliminal Channels in Zcash》中被提出,它的意思是说:攻击者向目标的shielded address发送少量受污染的zcash,当目标de-shielded时这些值会保留下来,起到标记的作用。它基于这样一个事实:zcash的交易值精确度很高,最后几位数字没有经济意义,但是可以被用作fingerprint value。
在作者的定义中,交易价值的指纹是它在 Zatoshis 中的最后 7 位数字,尤其是最后4位数字特别稳定。由于最后四位数字低于交易的门槛费用,所以它没有什么经济意义,只代表了以前交易的残余。在区块链世界中,矿池支出都是以全精度计算的,因此会在最低有效数字中产生随机分布,所以fingerprint value的独特性可以得到保证。在作者的实验中,他们认为如果最后7位中有5位是相同的,或者最后4位都是相等的,这两个fingerprint value就是匹配的。
本文作者主要做了三个实验:以太坊用户画像与去匿名化、对混币服务进行去匿名化、以太坊上的Danaan-Gift攻击。
本文的评估方法有两个,一个是AUC,还有一个是熵增益。
对于前两个实验,算法会为测试集中的每个账户返回一个候选对的排名列表,每个排名列表里面只有一对是正确匹配的,则AUC可以表示为下式:
A
U
C
=
a
v
g
(
r
(
a
)
∣
c
(
a
)
∣
)
AUC=avg(\frac{r(a)}{|c(a)|})
AUC=avg(∣c(a)∣r(a)) over all
a
a
a, and
r
(
a
)
r(a)
r(a) is the rank of correct pair.
除了衡量匹配的AUC之外,作者还想量化去匿名化匹配带来的隐私损失。在这里,作者巧妙地将攻击者获得的信息表示为熵增益,即先验熵和后验熵的差异。注:先验熵是指没有使用去匿名化方法。对于TC mixer contracts来说,匿名集的大小是动态变化的,因此我们需要首先证明匿名集的大小对于我们比较熵增益是没有影响的。
论证:先验匿名集大小对熵增益没有影响
Δ
=
g
a
i
n
(
2
n
,
p
)
−
g
a
i
n
(
n
,
p
)
\Delta=gain(2n,p)-gain(n,p)
Δ=gain(2n,p)−gain(n,p),作者在概率分布为p的条件下,对大小为2n和n的匿名集的熵增益做差处理。如果概率分布是平滑的,且在邻域范围内变化很小,那么上述的差值就会很小,就可以近似认为先验匿名集大小对熵增益没有影响。
推断后验概率分布
对于每个大小为
n
n
n、正确匹配对排名为
r
r
r的匿名集,其概率
P
(
n
,
r
)
P(n,r)
P(n,r)在
[
(
r
−
1
)
/
n
,
r
/
n
]
[(r-1)/n,r/n]
[(r−1)/n,r/n]均匀分布。后验概率分布就是
P
(
n
,
r
)
P(n,r)
P(n,r)的平均值。注:前面说了算法为每个账户返回候选对列表,其实就是匿名集。
计算熵增益
在进行交易图分析的时候,本文作者率先采用节点嵌入的方法对同一用户的账户进行匹配识别,并同仅使用其他两个准标识符进行识别的方法进行对比。
在进行交易图分析的时候,本文作者率先采用节点嵌入的方法对同一用户的账户进行匹配识别,并同仅使用其他两个准标识符进行识别的方法进行对比。
作者对以太坊上进行Danaan-Gift攻击做了一个指纹存活概率的分析,说明了在以太坊进行该攻击的可能性。
匿名性 vs. 可解读性
在区块链数据集中匿名性与可解读性之间的摩擦相对来说还比较小。一个区块链数据集的匿名性越高,从中获取有意义的信息的难度就越大。
去匿名化 vs. 隐私保护
去匿名化区块链数据集并不涉及了解每个参与者的真实身份。「你是什么」远比「你是谁」要重要。
因篇幅问题不能全部显示,请点此查看更多更全内容