我正在设计一种服务,除其他外,它可以存储敏感信息。为确保不会未经授权访问此信息,将使用从其密码 (PBKDF2) 派生的密钥对其进行加密。密码将以 BCrypt 散列 + 加盐格式存储在数据库中。它永远不会以纯文本形式存储。
所保存信息的性质使得需要强密码。一些网站通过强制执行严格的字符准则来强制其用户使用具有大熵的密码。这些复杂的密码可能导致不同网站上的密码重用 [1]。这是一件坏事™ [2]。
我宁愿让我的用户选择一个既强大又不太可能被重复使用或已经在另一个不太安全的 Web 服务上使用的密码。因此,我正在考虑为我的用户以他们的母语使用类似于 XKCD [3] 的密码方案。
用户将看到来自超过 6 个字符的大型单词列表中的 4-5 个不同的单词(没有包含特殊字符的单词,只有 ASCII)。密码输入对话框将被格式化为 4-5 个字段而不是普通的单个字段,以加强密码短语范式。注册后,可以随意重新生成密码,使用户能够选择由他们容易记住的单词组成的密码短语。用户不能输入自己的话。
我从个人经验中知道 CreeperHost [4] 已经使用了这种方法,尽管只有一个密码字段和四个连接的英文单词。
我的问题如下:
- 这种方法会比让用户自己选择更安全/有效吗?
- 有没有人有实施类似计划的经验?有效吗?
- 将密码字段划分为多个不同的字段是有益的还是会暴露太多信息?
我正在专门寻找与这种特定方法的实际应用相关的答案(如果有的话)。我熟悉这种密码生成方法的理论优缺点。
- 纠结的密码重用网络 - http://www.jbonneau.com/doc/DBCBW14-NDSS-tangled_web.pdf
- 密码重用 - http://xkcd.com/792/
- 密码强度 - http://xkcd.com/936/
- Creeperhost - http://www.creeperhost.net/