【问题标题】:How to anonymize new log records without breaking relations between old and new data?如何在不破坏新旧数据关系的情况下匿名化新日志记录?
【发布时间】:2017-03-17 03:51:31
【问题描述】:

我正在生成有关用户操作的日志记录。出于隐私原因,这些需要在 N 天后匿名。但是,我还需要针对这些匿名数据运行报告。

我希望真实用户 A 的所有操作都列在匿名日志中的假用户 X 下 - 一个用户的记录必须仍然是日志中一个(假)用户的记录。这显然意味着我需要在真实用户和虚假用户之间进行一些映射,我在匿名新记录时使用它。当然,这完全违背了匿名化的意义——如果有映射,则可以恢复原始用户数据。

例子:

用户 Frank Müller 买了 3 罐汤。

三天后,用户 Frank Müller 要求退款 3 罐汤。

当我匿名化第二个日志条目时,第一个已经匿名化了。我仍然希望两个日志记录都指向同一个用户。嗯,这在实践中对我来说似乎几乎是不可能的,所以我想使用一些拆分数据的方法,希望能让我在数据中保持尽可能多的完整性。也许将日志用作数据仓库 - 将所有内容拆分为事实并接受某些维度无法分析的事实?

你以前遇到过这样的情况吗?我在这里有什么选择?我显然需要做出某种妥协——什么对你有效?如何充分利用这些数据?

【问题讨论】:

    标签: logging foreign-keys privacy


    【解决方案1】:

    冒着迂腐的风险,您描述的不是匿名数据,而是假名数据。也就是说,您是否考虑过使用某种键控散列函数(例如HMAC-SHA1)来执行假名生成?您可以通过以下方案达成公平妥协:

    • 分离分析和 OLTP 数据库。尽量减少同时访问两者的人数。
    • 将 HMAC 密钥保留给将数据复制到分析数据库的应用程序私有,不能从任一数据库访问。也许让应用程序在安装时生成它并使用硬编码的密钥对其进行混淆,这样系统管理员和软件开发人员都不会发现在没有串通的情况下获得它是微不足道的。
    • 请勿在未散列的情况下从 OLTP 数据库中复制真实姓名和地址或任何等效或易于链接的键,例如用户编号、发票编号等

    如果这样做,有两种主要的攻击途径可以从假名中获取真实身份。

    • 直接攻击:获取 HMAC 密钥,计算每个已知用户的假名,并在结果表中反向查找。 (HMAC 是不可逆的:仅给定一个假名和密钥,您无法获得原始值。)
    • 信息融合攻击:在不知道密钥和身份列表的情况下,最好的办法就是尝试将假名数据与其他数据相关联——甚至可能是 OLTP 数据库的被盗副本。

    对于信息融合攻击来说,假名数据集是notoriously vulnerable——你必须去除或“模糊”很多关键的相关信息,以使数据集能够抵抗此类攻击,但你需要去除多少是topic of current research

    【讨论】:

    • 涵盖假名、单向哈希、重新识别风险和密钥管理的绝佳答案。
    猜你喜欢
    • 1970-01-01
    • 2012-01-20
    • 1970-01-01
    • 2019-08-25
    • 2018-03-08
    • 1970-01-01
    • 2018-04-15
    • 2011-08-19
    • 1970-01-01
    相关资源
    最近更新 更多