首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何正确匿名数据,如果哈希是不够的?

如何正确匿名数据,如果哈希是不够的?
EN

Security用户
提问于 2014-06-25 14:28:06
回答 4查看 11.4K关注 0票数 9

今天,布鲁斯·施耐尔的博客ArsTechnica上都有关于纽约市如何发布关于出租车司机、他们的行程等信息的新闻。

基本上,敏感信息只是简单的MD5散列。由于输入是有限的(最多3个数字,3个字母),所以很容易做出一些蛮力攻击:生成所有可能的组合,然后进行回溯。

考虑到信息的性质(很小的输入,以便于生成所有组合),如何才能适当地匿名这些数据?

我想到的一些办法是:

  • 通过默默无闻的安全性(使用“秘密”次数的迭代)只是通过默默无闻的安全性。
  • 添加一个普通的,独特的盐,会增加0%的蛮力:简单的附加盐和做.
  • 每个用户附加一个唯一的盐分,会增加蛮力,但不会太大:取盐,计算每个盐的3位数3个字母。

我们能做些什么?

EN

回答 4

Security用户

回答已采纳

发布于 2014-06-25 14:46:42

您可以使用标记化。这意味着您创建了一个独立的数据库,其中包含随机生成的ID,映射到3个数字和3个字母。然后插入令牌而不是真正的标识。

另一个选项,如果您不需要将数据映射回,您可以使用一个HMAC (哈希算法)与一个长随机产生的秘密。如果没有秘密,您就不能野蛮地使用原始ID,即使它们仅由一个字符组成。

使用HMAC实际上是使用“秘密盐”的正确方法(在密码学中,盐实际上从来不被认为是秘密)。

票数 15
EN

Security用户

发布于 2014-06-25 22:24:31

不释放数据的方法是不释放数据。

标记化不会很好地工作,因为我所要做的就是知道在任何地方和什么时候驱动程序是什么地方,什么时候知道驱动程序,然后我就知道驱动程序的令牌了。

如果你不想让我搞清楚这一点,那就不要以任何形式发布这些数据。

票数 4
EN

Security用户

发布于 2014-06-25 14:42:31

如果输入是如此有限,您将始终存在这个问题。

唯一的解决办法是增加更多的“东西”,使输入多样化。就像你说的,盐是一种选择,但是如果它被破坏了,它就不会有多大的好处。同样的情况也适用于使用秘密密钥或密码。

我想说的是,在这个具体的案例中,答案是连接更多关于出租车的信息。例如:

代码语言:javascript
代码运行次数:0
运行
复制
Nonce | Driver Name | Driver's License | License Plate | ...

基本上是一个更丰富的输入,以补偿容易的野蛮强迫的车牌。哦,很明显,使用加密安全的散列函数:-)

票数 1
EN
页面原文内容由Security提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://security.stackexchange.com/questions/61875

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档