在某些情况下,不允许组织使用或存储有用的密钥,例如 SSN 号码、电话号码等。
但是,这些唯一键对于匹配数据非常有用。因此,理论上,如果数据提供者能够为您提供 SSN 的散列值,并且您要存储该散列并使用它进行匹配,那么您将永远不必使用或存储 SSN。
对于像 SSN 这样的东西,什么是合适的散列函数?
您需要像对待密码一样对待 SSN。使用强大的慢速散列算法(例如bcrypt或PBKDF2 )对它们进行散列,使用唯一的每条记录前缀和后缀盐。
散列 SSN 的缺点是它们是可预测的,并且熵非常小,这使得明文暴力破解非常容易。如果你能负担得起,我建议为这种事情投资硬件保护(即HSM )。事实上,您应该避免完全通过 SSN 来识别人员。
因此,理论上,如果数据提供者能够为您提供 SSN 的散列值,并且您要存储该散列并使用它进行匹配,那么您将永远不必使用或存储 SSN。
那是错误的;设计的哈希不是唯一的,不能用于唯一标识任何东西。如果您必须唯一标识某物,并且不允许使用其他人的标识符,则您必须提出自己的标识符。这就是为什么诸如加油卡、电影租赁卡等之类的东西。带有他们自己唯一的会员标识符。