最好、最安全、最简单的方法是:
发布于 2011-10-27 01:36:24
@bstpierre我没有意识到安全系统的有效性需要很长时间的解释。这是一项尽可能简单有力地解决现实世界问题的建议。
人类直接实现一个系统的解释的长度是很重要的。我认识的大多数人几乎不愿意选择一个好密码,更不用说像这个提议那样操纵字符串了。
但是,让我们慷慨地假设用户可以处理复杂性。该方案仍然存在一些问题,使其无法使用。
首先,它生成像-----A1A8+QdjkD(*这样的密码。当您必须有一个需要6-8字符字母数字密码的braindead网站帐户时,会发生什么情况?(答案:您将需要一个次级重建算法,或者第三个salt算法和一个生成(可能是短)字母数字字符串的替代散列算法。您还需要一些机制来标记弱密码。)您已经需要记住7块信息才能重建密码(不包括算法--为了便于论证,我假设您已经实现了这种自动化)。更糟糕的是,在你解决了这个问题之后,你会发现一个更有潜力的服务,它需要一套新的食谱。
另一个问题是使用密码的前半部分“从下一行”的步骤。如果你失去了列表,你可以重建每个网站的“单词”对,但你将无法重建正确的密码,除非你得到正确的网站顺序正确。(国际海事组织这一步是不必要的混淆-如果有人掌握了列表,并且知道算法,那么你就没有任何附加值。)
然后依赖于散列“服务名称”。用于此操作的特定字符串是什么?服务器名?当MegaBank被GigaBank收购,你的账户从wwws.mega.example.com转移到wws1.giga.example.com时,会发生什么?我认为在更改服务名称时简单地更改密码是很容易的,但这是另一个麻烦。
如何处理强制密码更改?我所知道的一个系统似乎记住了你最后的两个密码,所以你不能重复使用它们。您可以修改您的方案,以包括第8块信息--一个“序列号”;这将被追加(或预置,或插入某个任意位置),但这种变化量相当于记住第9块信息)。在要求您每60或90天更改密码的系统上,这将成为一个麻烦。
如何跟踪用户名?你是把它们背下来还是记下来了?
如果您有一个服务的多个帐户怎么办?您的算法(通过设计)保证给定的服务生成一个密码。例如,您可能必须在您的银行或经纪公司单独登录帐户。
您如何存储用于生成散列的“超长密码”?它必须存储在某个地方,与密码列表分开。
如果你有一个更优雅的解决方案,符合设计标准,请分享!我很想用它
我没有别的解决办法来符合你的标准。
有一次,我使用了一个基于网站名称和一些信息的重建方案。由于上述原因,它很快就崩溃了,我开始使用具有强大主密码的keepassx。现在,在每个服务上,我使用一个唯一的随机生成的最大长度密码,其中包含允许的最大字符集。
您的问题概述了与此系统相关的风险。
编辑:一个单一的失败点,我错过了在我的初步分析是你的电子邮件帐户。除非您使用多个独立的电子邮件帐户,每个服务都有一个单独的帐户,否则,由于大多数密码恢复系统的工作方式,您的电子邮件对于多个服务来说是一个单一的失败点。如果您的邮件帐户密码被破坏(社会工程,键盘记录器等),您的许多服务也将被破坏。
发布于 2011-10-26 12:17:24
虽然这种技术可能对你有用,并将给你合理的力量(从我的快速浏览),但最简单的问题,至少95%的地球将是:
人类(通常)只是不记得那些规则,他们就会失去那张纸
因此,尽管对具体问题的快速回答可能是“它看起来还好”,但它的适用性是最小的。
https://security.stackexchange.com/questions/8397
复制相似问题