如何存储写在物理笔记本上的密码?

信息安全 密码 密码管理 混淆 朦胧 物理访问
2021-08-21 04:23:25

对“像 LastPass 这样的密码管理器有多安全? ”问题的回答表明,将个人密码存储在物理笔记本上可能是一个合理的选择:

我认识一个不会使用密码保险箱的人,而是有一个物理笔记本,他的密码以模糊的形式出现。这款笔记本显然对恶意软件更安全……它是否有更大的丢失/被盗风险是一个有趣的问题。

显然,一张纸可以抵御任何恶意软件攻击。

要求是对凭据的脱机访问。例如,您可以在一个小笔记本上写下所有银行、商店、网站的所有安全详细信息,甚至是密码锁、地址以及您可能希望能够从世界任何位置访问的所有其他详细信息。

此外,有时在笔记本中查找密码会更容易——例如,如果您经常出差,您可以使用密码管理器应用程序将密码存储在智能手机上。但是,这意味着您的手机需要一直充电和运行,这又增加了一个故障点。


现在,不管笔记本可能丢失、被盗、毁坏或以其他方式受到身体伤害的可能性,我想集中讨论一个问题:

您将如何混淆(如第一个引用中提到的)密码,以便能够瞥一眼笔记本的人无法轻易破译它们?

另一方面,算法必须足够简单,以便笔记本的所有者几乎可以立即解码他或她自己的密码。

奖励问题:

即使这样的算法在信息安全上发布在这里,是否可以认为它或多或少是安全的,或者混淆是否总是通过默默无闻来暗示安全(即保持算法本身的秘密)?

是否可以设计一种混淆算法,即使假设的攻击者可以访问笔记本至少几个小时,也无法或不可能破译密码?或者这自然会与所有者可以快速解码他/她的密码的要求相矛盾?

4个回答

按照复杂性增加的大致顺序(不是安全性,并且可以组合方法),这里有一些对于习惯于拼图/编写代码/数学的人来说很容易的想法。下面是一个更完整的想法。注意:当我说“秘密”时,我的意思是没有写在书中。这些都很容易,并且对于阻止随便的小偷最有用。

  • 有一个记忆的秘密元素,对所有密码都是通用的。*
  • 次要变体——一个很容易从网站名称/用户名派生的秘密元素。
  • 在书中放太多信息,例如知道实际上您省略了每个密码的前 4 个字符。*
  • 通过一定数量的条目偏移帐户和密码。*
  • 永远不要写完整的用户名,这足以成为你的线索。

*这些项目有一个重大漏洞,一旦一个条目的混淆被破解,它会自动破解所有条目,而无需进一步努力。

如果发布了确切的算法,那么显然也可以编写登录尝试脚本的笔记本窃贼(或当然是团队)可以自动应用该算法 - 或所有已发布的算法。可以公布算法类型,例如:

  • 从所写的密码中,调用第一个数字x和第二个y
  • 从第一个标点符号(或第一个字符,或第一个数字)开始计算x 个字符。
  • 然后交换下一个y字母(或前面的y)字母的大小写。
  • 对于记忆的 4 位 PIN,将前四个字母增加 PIN 的数字(例如1234应用于a!bcd将给出b!dfh)。

当然你可以:

  • 交换xy的含义
  • 递增/递减xy
  • 从第一个元音开始数。
  • 交换y 辅音的格。
  • 用字母位置对应的字母替换数字,反之亦然。
  • 在同一键上交换标点符号的数字(您需要对您将遇到的键盘布局充满信心,或者非常了解自己的键盘。)

根据定义,所有这些操作都可以编写脚本。但是笔记本窃贼必须掌握(或编写)一个实现这些的脚本(即使没有秘密元素,它实际上也是一个可变空间。然后他们必须输入密码(一个容易出错的过程,随机-生成的文本),在列表上运行脚本,并尝试使用每个站点现在可能有数千个密码登录。并希望该站点在多次尝试失败后不会锁定。

保留一份备份列表是值得的,即使不是这本书的备份副本,作为如果该书丢失,应该更改密码/标记帐户的站点列表。

与许多安全措施一样,目标必须是付出太多努力才能闯入。通过结合手动和脚本工作,您为此做了很多工作,并增加了他们放弃的机会。

为此,我创建了一种语言。没有一个符号看起来像英语(不知道它们是否看起来像任何其他语言),没有空格,缺少几个字母,常见模式变成单个符号(dis,ing等)以防止容易解码,它是这样写的从上到下,从右到左,在没有线条的网格中,我用垃圾填充每一行。

根据我存储它的方式,我还使用了一个可以调整最后一个字母位置的移动码轮。如果最后使用的字母类似于 h(无大小写系统),则将 7 添加到下一个字母码轮。您可以将页面上的代码轮包含在垃圾箱中,以进一步迷惑攻击者。由于您可以为每页创建多个代码轮并根据需要更改数字,因此可以防止轻松攻击。另一种选择是重叠码轮。如果您很懒惰,可以使用 +5、-2、+3,6 之类的数字模式(例如 PIN)。

使用口罩。

不,认真的。使用可从办公用品或业余爱好商店获得的中厚纸板之类的东西来创建一个刚性网格蒙版,大小可能为 30x6 字符槽,并从中随机放置 40-50 个字符的孔。(显然,您可以根据需要选择不同的尺寸。)

要写下密码,请将掩码放在笔记本顶部,通过前两个孔写下密码的长度(或选择一个始终表示“这是密码结尾”的特殊字符并将其写在末尾取而代之),然后通过剩余的孔(纵向或每列首先,再次由您选择)输入密码本身,根据需要。完成后,取下遮罩并用乱码填充所有剩余的字符槽;越随机越好。为了使这更容易,请先在笔记本中绘制一个网格,然后再填写密码。

当您需要读取密码时,只需将掩码放在乱七八糟的字符上,剩下的就是密码以及您用来填充不属于密码的字符槽的任何随机垃圾。(此时您只需要知道密码有多长,因此需要知道终止字符或记录字符数。)

保持面具安全,但与笔记本分开,也许在你的钱包里。将掩码视为您的“主密码”。

这并不能真正防止攻击者专门针对您的方案,甚至可能专门针对您,但它应该提供合理的安全性,以防止在您合法使用时开销较低的人碰巧拿到笔记本电脑密码。这里的开销是当您在笔记本中记录新密码时,这通常是您能够更好地控制的情况(例如,您在网吧随意更改银行密码时可能不需要更改第三世界国家)。

如果您想进一步增强混淆因子,您可以在方案中添加一个偏移量:记录输入密码时要跳过的开头的字符数。

如果在您输入密码时有摄像头在记录您的笔记本电脑,那么它似乎也很可能(如果不是实际上更有可能)也在记录您用于输入密码的键盘,此时您几乎已经丢失了用于混淆写下密码的方案。

一个基本的方法是尽量减少某人通过浏览笔记本就能找到密码的影响,那就是每页设置一个密码——如果你正在查看那个密码,他们只能看到这些密码。

另一种选择是有一个Diceware或类似的列表,并记下数字。它为“解密”增加了一个步骤,因为合法所有者需要与 Diceware 列表进行交叉引用,但它可能会在短时间内减慢可以访问笔记本的攻击者的速度——他们可能不得不复印整个列表,以及任何网站特定的号码,以确保访问。

但本质上,如果所有者可以立即“解密”,那么攻击者就可以在给定的时间内解密。如果他们有一段时间可以访问,他们可以清楚地复制内容并在您不知情的情况下进行处理(例如,让您在您认为安全的地方找到这本书 - 可能在您通常存放包的房子里) ,它可能会自然脱落)。

你可以记住一个固定的部分密码,只记下可变部分。但是,在这种情况下,您不依赖任何您进行身份验证的站点以防止被破坏 - 一旦有一个站点,您必须考虑部分被破坏,并使用它更改所有密码,就像您使用相同的一样到处都是密码。

最安全的选择可能是拥有一个存放笔记本的物理保险箱,并且只有在周围没有其他人时才打开。对于大多数用途来说,这似乎有点矫枉过正,但这几乎是用于一些关键数据的方法,例如 DNS 根签名密钥。