更新
我们有一个非常独特的场景:我们有几个旧的用户帐户数据库。如果用户愿意,我们希望新系统能够将这些旧帐户连接到新系统上的新帐户。
例如,在 System X 上,您有一个旧帐户,有一个旧的(比方说)RPG 角色。在系统 Y 上,您有另一个旧帐户,上面有另一个 RPG 角色。
在我们的新系统上,使用他们的新帐户,我们希望我们的用户能够搜索这些旧数据库并认领他们的旧 RPG 角色。(我们的用户也想要这个功能。)
我们希望将用户的旧帐户 PII 保留在我们的数据库中,其唯一目的是允许他们重新连接新帐户的旧帐户。这将使他们受益并且是一个很酷的功能,但根据 GDPR 和我们的隐私政策,我们最终需要从我们的数据库中删除这个旧的 PII。
但是 - 如果我们以不可逆的方式存储这个旧 PII 会怎样。即,只有拥有该信息的人才能得到肯定匹配。
我不是安全专家,但我知道简单的散列(例如 MD5)太容易破解(委婉地说),并且(技术上)不需要“附加信息”(即密钥) .
MD5 的好处是它很快(从某种意义上说它是确定性的),这意味着我们可以非常快速地扫描一个包含 100,000 行的数据库来寻找匹配项。
如果 MD5(和 SHA)被认为不安全到毫无意义的地步,我们还能做些什么来扫描数据库以寻找匹配项?我猜想现代散列,比如 bcrypt,会因为这个原因而设计得很慢,并且考虑到它不是确定性的,意味着它不适合。
如果我们将 PII 的多个方面合并到一个字段中(例如 FirstnameLastnameEmailDOB),然后对其进行散列处理,那么它基本上会变得很咸。这是一个愚蠢的解决方案吗?