数据匿名化的陷阱

2021-08-05 20:48:23

在我上一篇关于该主题的文章之后,出现了令人惊讶的发展,Avast 宣布他们将终止 Jumpshot 并停止出售用户数据。然而,这并不是故事的结局,捷克个人数据保护办公室开始对 Avast 的做法进行调查。我很好奇这项调查是否会证实 Avast 的说法,即他们始终完全符合 GDPR 要求。就我而言,我现在大致了解了 Jumpshot 数据的实际情况。我了解到,在对这些数据进行匿名处理时,我大大高估了 Avast 的成功。实际上,Jumpshot 出售的数据包含大量用户标识符、姓名、电子邮件地址,甚至家庭地址。部分原因是 Avast 无法或不愿意按计划删除用户特定的数据。然而,许多问题是通用的,几乎无法避免。这再次强调了核心要点:匿名浏览器历史数据非常困难。如果您打算将其出售给广告商,则尤其如此。您可以使数据完全匿名,但在此过程中您必须将其简化,以至于广告商将不再使用它。为什么我决定如此详细地记录 Avast 的失败?我的目标是传播对数据匿名化任务的赞赏:很难确保不可能得出关于用户身份的结论。因此,也许任何想收集匿名数据的人最好再三考虑他们是否真的想去那里。也许下次我们看到供应商收集数据时,我们会就他们如何确保这是一个“完全匿名”的过程提出正确的问题。我看到的数据是 Jumpshot 提供给潜在客户的一个例子:2019 年一周的真实数据的摘录。每条记录都包括一个确切的时间戳(毫秒精度)、一个持久的用户标识符、使用的平台(桌面或移动,它浏览器)、大概的地理位置(国家、城市和从用户 IP 地址得出的邮政编码)、对用户性别和年龄组的猜测。它没有包含的是“每个网站上的每次点击”。该数据样本不属于备受媒体关注的“All Clicks Feed”。相反,它是“Limited Insights Pro Feed”,它应该只涵盖用户的购物行为:他们查看了哪些产品、他们添加到购物车的内容以及他们是否完成了订单。所有这些都仅限于购物网站,并按国家(德国、英国和美国)以及鞋类或男士服装等产品类别分组。这听起来不会有太多的个人数据?但是,由于存在“推荐人”字段,因此存在。这应该表明用户是如何访问购物网站的,例如从 Google 搜索页面或通过点击另一个网站上的广告。鉴于 Avast 收集的详细信息,确定此引荐网站应该很容易——但 Avast 以某种方式未能完成这项任务。因此,假定的引用者通常是该用户访问的完全不相关的随机网页,有时甚至不是页面,而是图像或 JSON 数据。如果您提取这些推荐人的列表(我这样做了),您会看到人们阅读的新闻、他们的网络邮件会话、与购物完全无关的搜索查询,当然还有色情内容。您可以一瞥哪些色情网站最受欢迎,人们在那里观看什么,甚至他们搜索什么。对于每个用户,“有限的见解”实际上只包含他们整个浏览行为的一小部分。然而,在一周的时间里,这暴露了一些用户的太多信息,即使没有“All Clicks Feed”,在更长时间内观察用户的 Jumpshot 客户也可以了解每个用户的很多信息。

数据中的一些参数和地址部分已被删失。例如,您将看到如下所示的条目: 启发式在这里起作用,它将用占位符替换任何看起来像电子邮件地址的内容。其他启发式方法会产生占位符,如 [PII_USER_abcdef1234567890] 和 [PII_NM_abcdef1234567890]——这些似乎更基本,根据参数名称应用。这在这样的条目中尤为明显:显然,这里的姓氏参数只是一个搜索查询。鉴于搜索查询没有在其他地方受到审查,在这里审查它们没有多大意义。但这种启发式方法并不十分聪明,无法检测参数是否指代用户。最后,上一篇文章中描述的通用算法似乎适用,这个会产生像[PII_UNKWN_abcdef1234567890]这样的占位符。启发式方法会遗漏一些数据并不奇怪。然而,从专利中的描述来看,通用算法似乎很合理,应该能够识别大多数用户特定的数据。实际上,该算法似乎实现不当,仅审查了少数相关参数且没有明显的系统。因此,您将看到如下所示的地址,而无需进行任何审查:德国居民会立即将其识别为 DHL 包裹跟踪链接。 idc 参数是包裹标识符,而有时出现的 zip 参数是收件人的邮政编码。现在您需要记住,DHL 只需要您知道这两条信息即可访问“详细视图”,该视图将向您显示收到包裹的人的姓名。是的,现在我们有了一个名称来关联浏览历史。即使 zip 参数不在跟踪链接中——请记住,数据包含基于用户 IP 地址的猜测,实际上是相当准确的。想要更多例子?相当多的“引用者”与网站的认证过程有关。搜索诸如“oauth”、“openid”或“token”之类的关键字会产生大量点击,通常不会对任何参数进行审查。最坏的情况是:有权访问 Jumpshot 数据的人可能会劫持已通过身份验证的会话并冒充该用户,从而允许他们访问和修改用户的数据。人们不得不希望像 Facebook 和谷歌这样的大型网站使用足够短的过期间隔,这样对于 Jumpshot 客户来说,这种攻击是不切实际的。

然而,即使在理想条件下,JWT 令牌也存在问题。 JWT 是一种无需服务器端状态即可工作的身份验证方法,所有相关信息都编码在令牌本身中。通过搜索“.ey”关键字可以轻松找到这些令牌。还有一些是由Facebook、AOL、微软等大牌发行的。在反转 Base64 编码后,您会得到类似的信息:此处的大多数值都是特定于实现的,并且因站点而异。但通常有一些用户标识符,要么是数字标识符(可能会在网站上的某处转换为用户名),有时是电子邮件,甚至是 IP 地址。它还经常包含与用户会话相关的令牌,并可能允许劫持它:会话标识符、随机数,有时甚至是 OAuth 令牌。这个地址也不值得 Avast 审查。现在我从未使用过 Yandex Mail,但我猜这个用户的电子邮件地址是 [email protected]。有很多地址看起来像这样,但其中大多数只包含数字用户标识符。我强烈怀疑某些 Yandex 服务或 API 允许将这些数字 ID 转换为用户名,从而允许推断用户的电子邮件地址。现在让我们看看启发式删除电子邮件地址,这是最后一道防线。这将可靠地删除任何 URL 编码的电子邮件地址,因此您不会在数据中找到类似 me%40example.com 的任何内容。但是不寻常的编码呢?启发式不灵活,因此不会检测到这些。它从应用两次 URL 编码的明显案例开始:me%2540example.com。 Avast 数据包含大量这样编码的电子邮件地址,例如:您注意到这里发生了什么吗?电子邮件地址不是 Facebook 的 login.php 的参数。这里唯一的参数是 next,它是成功登录后导航到的地址。无论出于何种原因,该地址恰好包含用户的电子邮件地址作为参数。因此 URL 编码应用了两次。那是什么,一个非常奇怪的谷歌查询? source=gmail 参数表明它不是,而是某人在 Gmail 中单击的链接。显然,在用户被重定向到目的地之前,Gmail 会向搜索引擎发送诸如“查询”之类的链接。考虑到链接显然来自地址确认电子邮件,目标地址包含此处的电子邮件地址。来自时事通讯的链接也经常包含用户的电子邮件地址。

我不知道为什么在 Yahoo Mail 中搜索会对参数进行两次编码,但确实如此。雅虎邮箱用户的搜索包含大量与他们通信的人的姓名和电子邮件地址。请注意,我这里只提到了最明显的编码方法。一些网站出于某种原因使用 Base64 编码对其参数进行编码,并且这些网站也经常包含电子邮件地址。到目前为止,我们有姓名、电子邮件和 IP 地址。这当然很有趣,但这些用户实际上住在哪里? Jumpshot 数据仅提供了粗略的近似值。幸运的是(或不幸的是——对于用户而言),谷歌地图是一项广受欢迎的服务,因此它非常存在于数据中。例如:那是一组非常精确的地理坐标,它会是用户的家吗?可能是,但也可能是他们想去的地方,或者只是他们看过的一个区域。以下条目实际上更能说明问题:根据 Avast 的标准,在 Google 地图上规划的路线不是个人身份信息——任何数量的人都可以规划相同的路线。但是,如果路线的起点是地址,终点是博物馆、酒店或餐馆,则可以相当安全地打赌,该地址实际上是用户的家庭住址。即使用户居住在路线的哪一端并不明显,Jumpshot 数据中的邮政编码也有助于在这里做出有根据的猜测。然后你在搜索引擎中输入“Platz der Republik 1, Berlin”,在很多情况下,地址会立即映射到一个名字。所以你以前的匿名用户现在被称为安吉拉默克尔。这些汇总结果是 Avast 向 Jumpshot 客户和最终用户提供的唯一内容。

聚合会将来自多个用户的数据合并到一个记录中,这种方法会使关于单个用户的结论变得更加困难。听起来很隐私?不幸的是,Jumpshot 的营销已经对持续使用聚合的说法提出了重大质疑。在我之前的博客文章中仅仅是怀疑的内容现在已成为事实。关于 Jumpshot 数据,我一般不想多说,我还没有看到全部。但是我看到的数据根本没有聚合,每条记录都与一个用户相关联,并且有一个唯一的用户标识符来区分来自不同用户的记录。此外,我还看到了“All Clicks Feed”的营销材料表明这些数据也没有汇总。这里违背承诺并不令人惊讶,聚合数据更难货币化。我之前已经引用了 Graham Cluley 对 2015 年的预测:但我们不要自欺欺人。广告商对无法帮助他们定位您的数据不感兴趣。如果他们真的觉得它不能帮助他们识别潜在客户,那么这些数据就没有任何价值,他们也不会有兴趣支付 AVG 来访问它。我从 Jumpshot 销售的“有限洞察”产品中查看了一周的数据,我已经能够识别出大量用户,有时还包括他们的色情观看习惯。这些数据被 Avast 匿名化的方式至少可以说是不够的。拥有“每次点击,在每个网站上”产品的完全访问权限的公司可能能够识别并随后跟踪大多数受影响的用户。识别用户的过程很容易自动化,例如通过查找双重编码的电子邮件地址或计划的谷歌地图路线。剩下的唯一问题是:为什么 Avast 如此强烈地拒绝出售任何个人身份数据?就在决定关闭 Jumpshot Avast 的首席执行官 Ondřej Vlček 前几天在博客文章中重复:我们想向我们的用户保证,我们从未将任何个人身份信息出售给第三方。

到目前为止,我们只是怀疑,现在我们都可以确定这种说法不是真的。给他们怀疑的好处,他们怎么可能不知道?对于任何仔细查看数据的人来说,这些问题应该非常明显。整个丑闻花了几个月的时间才平息。这是否意味着一直以来 Avast 不断重复这一声明,将其提供给记者并在社交媒体上传播,但没有人费心去验证它?如果我们遵循这一思路,那么来自同一博客文章的以下声明显然是一个大胆的谎言:就我而言,在结束调查后,我在证人在场的情况下删除了所有原始和处理过的 Jumpshot 数据。鉴于这些数据的性质,这似乎是唯一明智的行动方案。