gpt4 book ai didi

algorithm - 数据匿名化技术

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:46:41 25 4
gpt4 key购买 nike

我正在寻找一种对数据库中的数据进行匿名化处理的好方法,同时保留聚合/汇总统计信息的能力。

举个例子,假设我想按 IP 地址跟踪每小时的点击次数,但实际上我不想存储 IP 地址。

我的第一个想法是只存储 IP 的哈希值(例如 SHA-256)。但是,我不确定这是否提供了足够的安全性。如果攻击者掌握了我们的数据库并决心逆转我们的匿名化,他们可以生成 IP 的彩虹表并相当容易地取回真实的 IP 信息。

我的下一个想法是在散列之前为 IP 添加静态前缀(例如 192.168.1.10 变为 MY_SECRET_STRING-192.168.1.10)。当然,如果攻击者找到了静态前缀,那么它基本上就没有用了。

我一直在寻找这个问题的合理解决方案,但到目前为止我还没有找到我真正喜欢的东西。是否有任何众所周知的匿名化数据的方法?

最佳答案

如果有人可以访问您的盐和数据库,我会说几乎不可能(如果不是不可能的话)阻止他们创建某种冲突表并“破解”您的哈希值。您唯一的选择是让他们的工作变得困难/昂贵。

不过,使用静态盐是个坏主意,因为盐的全部意义在于防止攻击者为您的所有记录生成彩虹表。 唯一性是使盐成为好盐的原因,因为盐的目的是使每个散列都是唯一的,而不管原始内容是否与另一条记录相同(因此攻击者有义务暴力破解 -强制每一行找出其内容)。另外值得注意的是,盐不需要保密,因此您可以将盐存储在一个额外的列中。

this nice article如果您对该主题有任何疑问,请讨论加盐和散列。

所描述方法的问题在于,最终,就像攻击者一样,您将无法分辨哪些行是相同的 IP。

一个可能的解决方案我可以看到如果你真的真的需要实现这个是有一个表来存储 IP + 点击计数,然后每 1 小时通过简单地用一个好的 RANDOM 值替换过去一小时的所有 IP/哈希值来匿名化数据的过程。这最终意味着您只能在不知道实际 IP 的情况下对每小时的点击次数进行分组,但是,请注意两点:

  1. 虽然攻击者永远无法找出过去的数据,但您将拥有 1 小时的数据,这些数据在任何给定时间都未匿名。这意味着攻击者可以“监视”您并随着时间的推移存储此信息,这可能会成为比“我们刚刚泄露 1 小时的数据”要严重得多的问题。
  2. 您无法在每个小时之间区分同一 IP。例如:如果 IP 127.0.0.1 从 17:00 到 18:00 进行了 3 次点击,而同一个 IP 从 18:00 到 19:00 进行了 6 次点击,您将无法判断 127.0.0.1 从 17:00 进行了 9 次点击:00 到 19:00。

另外,为了让每小时的非匿名 IP 更难破解,您可以使用一个函数来获取 IP 并生成唯一的 salt,然后为该 IP 缓存该唯一的 salt 直到下一个小时,这意味着每个 IP 都会每小时都有自己独特的盐。这样,攻击者必须每小时为每一行计算一个新的彩虹表,而您仍然可以找出要增加|创建的 IP 行。

关于algorithm - 数据匿名化技术,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21561516/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com