【问题标题】:Save emails securely in blacklist将电子邮件安全地保存在黑名单中
【发布时间】:2018-05-15 11:03:15
【问题描述】:

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

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

有没有其他方法可以安全地对邮件进行哈希处理以与黑名单进行快速比较?不管有多少条目,它都应该是O(1) runtime。

【问题讨论】:

    标签: email security hash blacklist


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2012-10-19
      • 1970-01-01
      • 1970-01-01
      • 2010-10-19
      • 1970-01-01
      • 2021-01-03
      • 1970-01-01
      • 2018-04-17
      • 1970-01-01
      相关资源
      最近更新 更多