在几分钟内记住密码的好算法是什么?

信息安全 密码管理
2021-09-05 20:46:08

假设我遵循良好的安全策略并选择以下密码:

  • 复杂(可能的密码短语,否则带有特殊字符的随机字符串)
  • 独特的(完全独立于不同的站点/事物)
  • 定期更换

还可以说,对于这组特定的密码,我不愿意将其写下来或保存在 LastPass 之类的数据库中。我们只使用良好的老式内存。

记住几个不常用密码的有效方法是什么?例如,可以设想以下朴素算法:

When you set a new password, take a sheet of paper
Repeat 100 times:
    Write password on paper (while spelling it with your internal voice)
    Fold that part of the paper so you can't see the password
When finished, destroy the paper

如何改进?您是否有过类似方法的经验,可以在创建密码时快速应用,以记住它?

重申问题:您已决定不将大量密码存储在您的记忆之外的任何地方。这些可能是密码短语,也可能是随机 ASCII 字符串,甚至是 4 位 PIN。它们总是随机生成并定期更改。密码将不经常使用(可能在几周或几天内使用一次),因此仅凭使用将无法确保保留。您如何确保在几周内不会点击“忘记密码”链接?

根据良好的主观问题指南,请尝试提供以下答案:

  • 深入而不是简短
  • 最好借鉴您的个人经验
  • 解释你的方法背后的基本原理(如果你知道任何关于有效性的研究,那就更好了)
4个回答

也许最好的方法是坚持使用密码算法。您可能有两个或三个算法来覆盖复杂性限制,例如,您可能会学习以下算法:

对于任何服务:

1. Select a reusable secret string
2. Add some common pattern, ie: the name of the service
3. Add some Caesar like algorithm: a=@ e=3 i=g1n d=|) g=Y1 o=()...
4. Add some logic to alternate the strings you have (one char from 1, and one char from 2).
5. Add some random text depending on the length of the service (add a number every length(name of the service)/2. 

建立它,即:

  1. 密码:“ algorithmpass
  2. 服务:“堆栈交换
  3. 凯撒:“ @lY1()rg1nthmp@ss ”和“ st@ck3xc​​h@nY13
  4. 备用字符串:“ @sltY@1c(k)3rxgc1hn@tnhYm1p3@ss
  5. 每 len(stackexchange)/2 = 13 添加数字:“ @sltY@1c(k)3r1xgc1hn@tnhYm12p3@ss

那就是你的密码,很难记住,但“很容易”重建它。

缺点很明显:一旦有人破解了您的算法,他就可以访问所有相关帐户。这里的好处是您可以制作非常简单的算法来构建出色的密码。此外,生成的密码可能很难记住,因此您应该仔细选择算法以满足日常可用性标准。

我没有明确使用过这样的方法来记住密码,但我发现抽认卡对于学习外语和英语词汇非常有效。

这个想法可以适用于密码:

  1. 保存一个文件,其中包含您要记住的每个站点的登录页面的屏幕截图。对于非网站密码,例如磁卡,请使用卡的照片或读取卡的设备。
  2. 打印一组或多组带有屏幕截图的抽认卡。
  3. 在每张卡的背面写下密码。
  4. 重复直到达到满意的成功率:

    1. 洗牌
    2. 查看每张卡片,并尝试记住密码(通过拼写出来、在纸上书写或在断开连接的键盘上“打字”)
    3. 如果您忘记了密码,请查看您卡的正面
  5. 销毁抽认卡。

这种方法的优点:

  • 您直接将密码与您将使用它的地方相关联,从而加强回忆并提供有用的提示。
  • 没有计算机会看到密码(除了您实际使用它时),从而消除了潜在的薄弱环节。
  • 每次您需要记住一个新密码时,都会练习所有密码,从而提供一种定期重复的机制。

缺点:

  • 需要打印机。因此,除非您仅在可以访问抽认卡的地方设置新密码(并且可以生成新密码),或者当您预计需要提前设置密码时,否则通常是不可行的。

如果每个密码都没有某种类型的主人,那么除了使用它来登录之外,没有办法真正检查你是否正确。这意味着如果你错了,大多数网站都会把你锁在外面,所以我不推荐这样做。话虽如此:

准备 使用铅笔。为每个网站制作一张卡片,列出网站的网址,i=0,l=今天的日期,n=今天的日期

algorithm
while any flashcards have n = today's date
   replace l with today's date
   try logging in
   if successful
      if i = 0
         replace with i = 1
      else
         replace with i = i * 2
      replace n with today's date + i days
   else
      replace i with i = 0
      replace n with today's date

When any password is changed
   replace i with i = 0
   replace l with today's date
   replace n with today's date
   do memorization algorithm

这是 SuperMemo SM-0 算法的简化版本,它导致更频繁的早期实践。

既然你可以选择密码,我会坚持一个句子并取每个单词的第一个字母。也许将每个 s 替换为 5 和一个 wit 4 等等。

我个人可以很好地记住押韵。如果您拿起一首诗并学习它,您可能会从中获得多个密码。尽管问题是,从已知短语创建的密码有多安全。

但是即使你能记住密码,你仍然有两个问题。

  1. 哪个密码属于哪个登录名?
  2. 如果网站密码策略不适用于您的密码怎么办?然后,您将不得不打破自己的规则,这将导致难以记住密码。

总而言之,这可能是安全和方便之间的另一种选择。即使我不确定它是否比密码管理器更方便......