数据匿名化的陷阱

  • 当数据收集者说 “数据是匿名的” 时,为什么没有人追问一句:“你是如何做到的?” 因为他们做不到。而一众媒体为什么要帮助放大这些虚假的狡辩之辞?为了让它能欺骗更多人吗?

年初出了一件大事。曾经被公认推荐的杀毒软件霸主品牌 Avast 被曝光过去一直不通知用户的情况下收集用户的浏览历史记录,并通过其 Jumpshot 子公司将这些数据转化为利润 —— 卖给谷歌和微软。

在公众的强烈抗议和来自浏览器供应商的巨大压力之后,他们决定更改其做法,以便仅收集与防病毒相关的用户数据,并且必须明确选择这些数据。

在整个公关爆炸的过程中,Avast 一直在自辨称数据是 “去标识的和合并的” ,所以 Jumpshot 的客户永远无法看到个人身份信息(PII)。

这是BS。

实际上,Jumpshot 出售的数据包含大量的用户身份标识,如名称、电子邮件地址、甚至家庭住址。部分原因是 Avast 无法或不愿按计划删除用户特定的数据。

这再次凸显了中心问题:匿名化浏览器历史记录数据本身就非常困难。如果您打算将其出售给广告客户,则尤其如此。理论上您可以使数据完全匿名,但是在此过程中您必须严重精简数据,其结果就是对广告客户完全失效。

总之,即便您是善意的,想要匿名化数据,你也很难做到。

“数据是匿名的” 这句话一直都是供应商收集数据的自辨口头禅,下一次您再听到这句话的时候请记得追问他们:“你丫怎么做到的”?因为他们基本上无法做到。

本文希望能做到一个辩论模版,帮助您和您的社区组织在遭遇被强迫收集数据的情况下保护自己的的利益。

数据

我看到的数据是 Jumpshot 提供给潜在客户的一个样本:2019年一个星期的真实数据摘录。

其中每条记录都包括准确的时间戳(精确到毫秒)、几乎完整的用户标识、使用的平台(台式机或移动设备、以及哪种浏览器)、大概的地理位置(从用户的IP地址得出的国家、城市和邮政编码)、用户的性别和年龄段。

它所不包含的是“每个站点上的每次点击”。此数据示例不属于 “All Clicks Feed”,后者已经引发媒体的广泛关注。

取而代之的是 “ Limited Insights Pro Feed”,它应该仅涵盖用户的购物行为:他们查看了哪些产品,他们添加到购物车的商品是什么,以及是否完成了订单。

所有这些都限于购物网站,并按国家(德国、英国和美国)以及产品类别(例如 “鞋” 或 “男装”)进行分组。

听起来好像个人数据太多了?但是别忘了,这里还有一个 “referrer” 字段。这是为了表明用户是如何来到该购物网站的,例如通过 Google 搜索页或点击了其他网站上的广告。

鉴于 Avast 收集的详细信息如此之多,确定此引荐来源网站应该很容易 —— 但是 Avast 却以某种方式没能完成此任务。因此假定的引荐来源网址通常是该用户访问的完全不相关的随机网页,有时甚至不是网页,而是图像或JSON数据。

因此,如果提取这些引荐来源网址的列表(我这样做了),则会看到人们阅读的新闻、他们的Web邮件会话、与购物完全无关的搜索查询 …… 当然还有色情内容。

您可以一窥哪些色情网站最受欢迎,人们在哪里观看甚至搜索。

对于每个用户,所谓的 “有限了解” 实际上只包含了他们整个浏览行为的一小部分。然而,在一周的时间里,这种暴露方式对某些用户来说是很严重的,并且即使没有所谓的 “All Clicks Feed”,监视者也能了解到很多信息。

所谓的匿名化怎么样

数据中已经包含了一些参数和地址。例如,您将看到类似以下的条目:

http://example.com/email/edit-details/[PII_EMAIL_abcdef1234567890]

启发式方法就在这里起作用了,它将用占位符替换任何看起来像电子邮件地址的东西。其他启发式方法将产生占位符,例如[PII_USER_abcdef1234567890] 和 [PII_NM_abcdef1234567890] — 这些看起来更基本。在下面这样的条目中,这一点尤其明显:

https://www.ancestry.co.uk/name-origin?surname=[PII_NM_abcdef1234567890]

显然,此处的 surname 只是一个搜索查询。鉴于搜索查询不会在其他地方进行审查,因此在此处对它们进行审查没有多大意义。但是这种启发式方法并不十分高明,无法检测参数是否指向用户。

此外,通用算法似乎也适用,该算法将产生类似[PII_UNKWN_abcdef1234567890] 的占位符。

无法检查用户特定的参数

启发式方法会丢失一些数据也就不足为奇了。从专利中的描述来看,通用算法似乎是理智的,但是应该能够识别大多数用户特定的数据。

实际上,该算法似乎是错误实现的,仅检查了很少的相关参数,并且没有明显的系统。因此,您将看到没有应用任何审查的以下地址:

https://nolp.dhl.de/nextt-online-public/set_identcodes.do?zip=12345&idc=9876543210987654321

德国居民可以立刻看出这是DHL包裹跟踪链接。 idc参数是包裹号,有时出现的zip参数是收件人的邮政编码。

请记住,DHL只需要您知道这两条信息即可访问 “详细视图”,该信息将向您显示接收包裹的人的姓名。是的,现在我们有了一个真实的名字可以关联浏览历史记录了。

而且即使zip参数不在跟踪链接中,也请记住,数据包含基于用户IP地址的猜测,实际上是一个相当准确的猜测。

需要更多示例吗?不少 “引荐来源网址” 与网站的身份验证过程有关。搜索诸如“ oauth”,“ openid”或“ token”之类的关键字会产生大量匹配,通常不会检查任何参数。

这里是最坏的情况:有权访问 Jumpshot 数据的人可能会劫持一个已通过身份验证的会话并假冒该用户,从而允许他们访问和修改用户的数据。

但是,即使在理想条件下,JWT令牌也存在问题。 JWT是一种认证方法,无需服务器端状态即可工作,所有相关信息都编码在令牌本身中。通过搜索“ .ey”关键字,可以轻松找到这些标记。有一些由 Facebook,AOL,Microsoft 和其他知名公司发行。反转 Base64 编码后,您会得到类似以下内容的信息:

{"instanceId":"abcd1234","uid":12345,"nonce":"dcba4321","sid":"1234567890"}

这里的大多数值因站点而异。但是,通常都会包含一些用户标识,可以是数字标识符(可以将其转换为网站上某处的用户名),有时还包括电子邮件或IP地址。

它还通常包含与用户会话相关的令牌,并可能允许劫持该令牌:会话标识符、随机数、有时甚至包括OAuth令牌。

最后但并非不重要的是:

https://mail.yandex.ru/u1234/?uid=987654321&login=myyandexname#inbox

这个地址也不值得 Avast 审查。我从未使用过 Yandex Mail,但我也能猜到该用户的电子邮件地址为 [email protected]

有很多看起来像这样的地址,但是大多数只包含数字用户标识符。我强烈怀疑某些 Yandex 服务或API允许将这些数字ID转换为用户名,从而推断用户的电子邮件地址。

启发式方法的缺点

现在试一下启发式方法移除电子邮件地址(最后一道防线)。这将可靠地删除所有URL中编码的电子邮件地址,因此您不会在数据中找到类似 me%40example.com 的内容。但是异常编码呢?启发式方法不灵活,因此不会被检测到。

首先以两次明显的URL编码案例开始:me%2540example.com。 Avast 数据包含大量这样编码的电子邮件地址,例如:

https://m.facebook.com/login.php?next=https%3A%2F%2Fm.facebook.com%2Fn%2F
%3Fthread_fbid%3D123456789%26source%3Demail%26cp%3Dme%2540example.com

你注意到这里发生了什么吗?电子邮件地址不是 Facebook 的 login.php 参数,而是 next,这是成功登录后导航到的地址。无论出于何种原因,该地址恰好包含用户的电子邮件地址作为参数。因此,URL编码应用了两次。

另一种情况:

https://www.google.com/url?q=http://example.com/
confirm?email%3dme%2540example.com&source=gmail

那是什么?一个奇怪的 Google 查询吗? 不是的,source = gmail 表明是有人在 Gmail 中单击的链接。

显然,Gmail会 将诸如 “查询” 之类的链接发送到搜索引擎,然后再将用户重定向到其目的地。并且目标地址在此处包含电子邮件地址,显示该链接是来自哪个电子邮件地址。新闻通讯的链接也经常包含用户的电子邮件地址。

然后是这种意外情况:

https://mail.yahoo.com/d/search/name=John%2520Smith&emailAddresses=me%2540example.com

本文只提到了最明显的编码方法。某些网站出于某种原因使用Base64编码,并且这些网站也经常包含电子邮件地址。

这些用户住在哪里?

到目前为止,我们已经有了名字、电子邮件和IP地址。这当然很有趣,但是这些用户实际生活在哪里呢?

Jumpshot 数据为此仅提供一个大概的近似值。幸运的是(或对于用户而言不幸的是),Google Maps 是一种非常受欢迎的服务,因此它在该数据中非常常见。例如下面这样:

https://www.google.de/maps/@52.518283,13.3735008,17z

那是一组非常精确的地理坐标,这可能是用户的家吗?可能是,但也可能是他们想要去的地方,或者只是他们感兴趣的区域。以下条目实际上更能说明问题:

https://www.google.de/maps/dir/Platz+der+Republik+1,+10557+Berlin/
Museum+für+Kommunikation,+Leipziger+Straße,+Berlin/@52.5140286,13.3774848,16z

按照 Avast 的标准,在 Google Maps 上规划的路线不是个人 “可识别性信息” —— 可以有许多人在规划同一条路线。

但是,如果路线的起点是地址,而终点是博物馆、酒店或餐厅,则基本可以肯定该地址实际上是用户的家庭住址。

即使不清楚用户位于规划路线的哪个终点,Jumpshot 数据中的邮政编码也可以帮助您做出有根据的猜测。

然后,您在搜索引擎中输入“ Platz der Republik 1,Berlin”,在很多情况下,该地址会立即映射出一个人名 —— 因此,您以前的所谓 “匿名” 用户现在称为安吉格默克尔。

不是都合并了吗

2015年,Avast 当时的首席技术官 OndřejVlček 承诺:“这些合并结果是 Avast 提供给 Jumpshot 客户和最终用户的唯一内容。”

合并字面上意味着将来自多个用户的数据合并到一个记录中,这种方法会使有关单个用户的结论更加困难。听起来很隐私吗?不幸的是,Jumpshot 的行销已经使人们对这种说法产生了极大的怀疑。

我看到的数据根本没有合并,每条记录仅与一个用户相关联,并且有一个唯一的用户标识符来区分不同用户的记录。另外,我看到了 “All Clicks Feed” 的 市场营销材料,该数据也未合并。

违背承诺并不奇怪,因为合并的数据不值钱。Graham Cluley 曾经明确说过:“我们不要自欺欺人。广告客户无法对定位目标的数据不感兴趣。如果他们真的不认为这可以帮助他们确定潜在客户,那么数据将没有任何价值,他们也就不会买了。”

结论

本文仅从 Jumpshot 出售的数据中调查了一周的数据,就已经能够识别出大量的用户,有时还可以窥探到他们观看色情内容的习惯。

至少可以说,Avast 对数据进行匿名处理的方式远远不够。完全有权使用 “每个站点上的每次单击” 数据的公司很可能能够识别并随后跟踪大多数受影响的用户。识别用户的过程很容易实现自动化,如上所述的方式。

唯一剩下的问题是:为什么 Avast 如此强烈地否定出售任何个人身份数据?在决定关闭 Jumpshot 的几天前 Avast 的首席执行官 OndřejVlček 在博客文章中重复道:“我们希望向用户保证,我们绝不会将任何个人身份信息出售给第三方。”

现在您已经知道了这些都是胡说八道。对于任何仔细查看数据的人来说,问题应该是显而易见的。整个丑闻花了几个月的时间才得以解决。这是否意味着 Avast 在所有时间内一直重复此虚假的狡辩声明,将其提供给记者、并在社交媒体上进行传播,却没人愿意去验证它?

如果遵循这种思路,那么同一篇博客文章中的以下声明显然是一个大胆的谎言:“全球用户的安全和隐私是 Avast 的首要任务”。

在完成调查之后,我本人在见证人在场的情况下删除了所有原始和处理过的 Jumpshot 数据。考虑到这些数据的性质,这似乎是唯一明智的选择。⚪️

Insights from Avast/Jumpshot data: Pitfalls of data anonymization

发表评论

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据