跳到主要内容
Q drop
登录
认证 / 安全

IP 哈希化

概要

IP 哈希化,是把用户的 IP 地址通过 SHA-256 等哈希函数,转换为无法直接读出原 IP 地址的定长字符串的技术。转换后的哈希值对同一个 IP 地址总是相同的,所以可以用来判断“是不是同一个人”,但很难识别出“是谁”。难到什么程度,取决于后面讲到的盐值的处理方式。它被用作兼顾保护匿名性和检测滥用这两个相互矛盾的要求的手段。

哈希函数的选择和实现上的注意

IP 地址的空间在 IPv4 中约为 43 亿种,在 IPv6 中实际使用的前缀也是有限的。因此,只是单纯地做哈希,就有被彩虹表攻击(事先算好所有 IP 的哈希值的方法)反查出原 IP 的风险。

作为对策,哈希化时要加上盐值(保密的固定字符串)。不知道盐值的第三方无法构建彩虹表,所以从哈希值识别出原 IP 在现实中会变得很难。盐值保存在服务器端的环境变量或密钥管理服务中,不写进源代码。

在匿名提问服务中的应用

在匿名提问服务中,IP 哈希化有两种代表性的用法。第一,用作检测来自同一 IP 的连续投稿的速率限制标识。以哈希值为键管理计数器,就能在不保存原始 IP 地址的情况下限制投稿频率。

第二,可以用来生成分配给匿名提问者的标识。在投稿上附上由哈希值生成的短 ID,收到的一方就能把同一个人的多条投稿关联起来掌握。不过,这类 ID 终究只是参考,由于 VPN 或移动网络的 IP 变动,同一个人也可能会是不同的 ID。

和原始 IP 的加密保存分开使用

从加了盐值的 IP 哈希化中无法直接取出原 IP,所以只靠哈希值无法应对基于法律程序的披露请求。因此,也有服务采用在 IP 哈希化的同时,用 AES-256 等对称密钥加密把原始 IP 地址加密保存的设计。这种情况下,平时的运营只参照哈希值,只有在收到披露请求时才解密加密的 IP。

这种双重保存方式,是为了兼顾隐私保护和法律应对。哈希值用于日常的滥用检测,加密 IP 用于法律应对,通过明确区分用途,可以把对不必要的个人信息的访问降到最低。

这篇文章对你有帮助吗?

相关术语

相关文章

想创建你自己的提问箱吗?

只需邮箱地址即可注册,无需密码。

免费开始