将电子邮件安全地保存在黑名单中

时间:2017-12-01 10:46:50

标签: email security hash blacklist

我有一些网站,我希望没有帐户的人允许选择退出接收电子邮件。这可以通过将他们的电子邮件地址存储在“黑名单”表中并在发送一些邮件之前查找它来实现。

为了遵守数据保护并出于安全考虑,我希望以某种方式存储加密/散列的电子邮件。我想到了简单md5(password),但这太容易破解/暴力。第二个想法是使用bcrypt / scrypt来实现缓慢的散列函数,但是每个条目都有一些盐,所以我需要为每个要比较的条目散列邮件。这将是一个相当慢的运行时O(n),其中n是列入黑名单的条目数。

有没有其他方法让邮件安全地哈希与黑名单进行快速比较?它应该是O(1)运行时,无论有多少条目。

1 个答案:

答案 0 :(得分:1)

您可以使用任何密钥派生函数,如PBKDF2甚至BCrypt / SCrypt。

由于哈希必须是可搜索的,因此不能使用独特的随机盐。相反,我们可以传递一个静态salt,它充当服务器端密钥。

通过KDF,我们可以从成本因素中受益,从而大大减缓暴力行为。如果攻击者可以访问数据库,但是静态salt / key可以防止暴力破解,但是服务器上没有权限(密钥仍然保密),这是SQL注入的典型场景。只要确保salt不是hash-string的一部分,BCrypt的大多数实现都会这样做,因为它们是为密码散列而设计的。

这种方法的问题在于它无法适应未来更快的硬件。但即使KDF只需要几毫秒,这比使用简单的哈希更好。也许你应该在Information Security上问这个,他们可能知道更好的选择。