随身携带密码的安全性

信息安全 密码
2021-08-10 16:25:27

在大学期间,我决定使用随机生成的 16 个字符的密码。我在各个站点中使用了该密码的一部分。但是,其中一个网站遭到入侵,因此我不得不更改密码。

我现在每个站点都有一个随机生成的密码。正如你所想象的那样,学习密码很困难,我不得不随身携带它们,直到我学会了它们。这本质上是一小块连续随机密码的纸。如果这些密码被泄露,我会是一个非常不开心的露营者。

假设我决定拥有一组随机密码,并且不喜欢一行清晰可见的密码。我正在考虑创建一个随机生成的字符网格并使用数据中的各种子字符串作为密码的选项。

这是一个工作示例:

密码网格

bqzryXrMjs
wqpPcPW2tG
CYvLdxGsnZ
Hq9KDBJeN5
Z2v5H2BG6G
JYNyWGLqEa

密码:从 (2,3) 开始。从左到右使用每个其他字符,必要时换行。长度 10。

使用这些说明我生成密码:

9DJNZvHB6J

请注意, (2,3) 是零索引的。当然,这些指示很难遵循,但它只是一种变得更好的技能。在实践中,我会使用更大的网格和可能更复杂的模式。

我的问题是这个系统有多安全。我知道安全可能意味着很多事情。我不确定加密安全是否适用,但我真的只是想看看使用这个系统来管理我的密码是否合理。

我可以想象一个 Bones 剧集,有人跟踪我的眼球运动以确定我正在阅读的角色......所以这样的建议是受欢迎的,但更实际/合理的漏洞是我正在寻找的。

谢谢!

编辑#1

为了限制问题的范围,假设如下:

Passwords are of length 10
Grids are of dimension 20x20
The only instruction available is one similar describe above.  
    Start at (x,y)
    Use every other character from left to right, wrapping rows as necessary. 
    Length 10.

They are not allowed means that could be used to steal general private information such as a key logger, aggressive interrogation, etc.
4个回答

关于密码的说法是,如果你能记住它,它就不够复杂

为什么不将密码列表保存在KeePass等专用密码管理器软件中这将加密文件并让您为每个站点生成非常长的随机密码。您可以将软件和文件都放在 U 盘上而不是一张纸上,解密文件的单个主密码是唯一存储在您脑海中的东西。

安全性权衡
在您的个人身上携带密码网格可以将一种安全性换成另一种安全性。与其说是你必须记住的东西,不如说是你必须保护的东西

人类似乎更擅长保护财产,而不是保护他们头上的东西。这可能看起来违反直觉,但在这一点上进化是站在你这边的。人们倾向于泄露他们的秘密而不是交出贵重物品。

提高晦涩
程度 如果您的纸质密码块落入攻击者手中,它的安全性在一定程度上取决于您如何使用它。

以目前的形式并使用您表达的算法,拥有垫子很容易蛮力。攻击者只需从密码块的开头开始,尝试各种长度和起点的组合,直到他得到正确的密码。虽然他有很多可能性可以进行分类,但它很容易实现自动化,并且不应该花费超过几秒钟的时间。

与其简单地按顺序阅读字符,更好的技术是“跳来跳去”。例如,使用从 3 开始的所有其他字符。尽管这是可以预测的。或者也许每第三个字符。嗯。通过焊盘遵循斐波那契数列?还是很数学的。攻击者可能会尝试这些中的每一个。你只是通过在图案中穿插噪音来掩盖图案。

RC4 著名地使用了这样的网格,但使用您访问的下一个单元格中的项目的来确定下一步要移动到哪里。也许我们可以遵循某种类似的逻辑。

一种难以预测的算法
我们将使用一些任意数字。XY选择你想要的任何数字。Y可以是负数。

那么这个算法怎么样。对于任何给定的密码,从位置X开始。现在,按照下面的模式,直到您为密码生成足够的字符:

  1. 向下复制当前位置的字符。它是密码中的下一个字母。
  2. Y添加到您到目前为止已复制的字符数。我们将调用结果A
  3. 从当前位置向前看A空格,必要时换行。我们将调用该单元格B处的值。使用您想要的任何方法将其转换为整数。(例如 A=1,B=2.. 或者 AE=1,FJ=2 等。任何事情都可以)。
  4. 取B的计算整数值并将其添加到您当前的位置结果是你的当前位置
  5. 转到步骤 1。

由此产生的算法在网格周围跳跃非常不可预测。该模式不是遵循设定的模式,而是由网格的周围内容确定。拥有密码和网格的人将很难逆转您的算法,所以这可能是我们在这个级别可以合理添加的尽可能多的保密性。

隐藏在众目睽睽之下
剩下的问题是你随身携带的东西看起来像密码。都是随机字符——你为什么要这样。相反,您想要一些看起来像是随身携带的东西。现在我们有了一个算法可以以不可预知的模式围绕字符串移动,我们可以使用更多平淡无奇的文本。

打印出看起来应该放在口袋里的东西。十几个名字和日期的列表,或者可能是一小段无聊的诗歌。你希望它是独一无二的,毕竟它是你的钥匙。所以不要只是从互联网上复制一些东西。但是您希望它被攻击者检查并迅速丢弃。

了解你的攻击者
我们已经想出了一些非常核心的东西。您在这里的安全性要高得多,但是您手动生成密码的难度也很高。那么,你在为谁辩护?如果它是一个压迫性的政府,那么你完全有理由这样做甚至更多。如果是你永远不会接触到的黑客,那么将密码打印在一张写有“超级秘密密码”的纸上就足够了。在。。。之间的某处?然后可能会做一些简单的事情。

不过,我至少会花一点时间让它看起来像密码以外的东西。例如,购物清单中每一行的第三个字母就可以了。

给定假设,攻击者必须选择一个起始字符,根据描述的过程生成 10 个字符的密码,然后在站点上尝试。如果失败,请重复。在第三次尝试后,他们将被锁定。

如果我们假设在创建帐户时您选择了一个好的随机起始位置(换句话说,每个起始位置的可能性相同),那么就有 20^2=400 个可能的起始位置。攻击者选择正确的概率是 1/400,因此他们在三个猜测中正确的概率是 3/400。您可能愿意接受的可能性非常低。

如果您开始将大量站点打包到同一个网格中,您可能会遇到问题。假设您对 50 个站点使用相同的网格。攻击者的成功概率现在是 (50)*3/400=0.375。

好消息是您至少可以量化攻击者的成功机会。如果您有很多帐户(并尝试将它们全部打包到一个网格中),您可能会遇到麻烦。

如果操作正确,您建议的解决方案可能是安全的。然而,为了做到这一点,你必须非常勤奋。您不能写下用于生成密码的坐标,因为如果攻击者可以访问它,他们可以轻松地复制您的密码。您不能让任何人为您的网格拍照,因为网格上可用的有限排列数量允许攻击者在暴力破解密码时显着降低搜索空间。您必须非常小心,不要松开正方形,因为这样做会导致您丢失所有密码。我不会太担心像读取眼球运动这样的复杂攻击,除非您存储诸如核导弹武装代码之类的东西,否则没有人会足够关心在您身上部署类似的东西。

如果你正确地保护了网格,你应该比仅仅拥有一个密码列表更好。猜测网格是如何工作的比仅仅从列表中读取密码更难,并且上述所有问题也适用于密码的纯文本列表,从而使您的安全性至少好一点。

您建议的解决方案可以通过合并 GRC 的 Steve Gibson 所做的一些类似工作来进一步改进,您可以在此处查看 - Perfect Paper Passwords该网站提供的示例用法是用于第二因素身份验证的一次性密码,但您可以轻松使用那里提供的工具来安全地生成用于您提到的方案的网格。使用 PPP 工具的优点如下:

  1. 你生成的网格会好很多。GRC 竭尽全力生成随机数,这意味着您将获得一个攻击者不太容易猜到的网格。
  2. 它是可重现的。您可以存储用于生成网格的种子并在将来重新生成它,以防您的钱包被盗等。
  3. 你会更好地准备使用它。如果您收听该页面上列出的 Security Now 播客,Steve 将为您提供您可能想要的所有提示/背景信息。这意味着您不太可能搞砸和暴露您的密码。

话虽这么说,我真的不建议使用您建议的解决方案。主要原因是它不是超级用户友好的。如果你只想使用密码,你必须走出广场,记住从哪里开始生成正确的密码,然后手动将密码转录到你的电脑中。除此之外,还需要确保正确保护方格所需的所有精神开销。对我来说,这听起来像是具有足够高的进入门槛的东西,您可能会决定使用不太安全的密码,而不是经历使用广场的麻烦,从而降低安全性

相反,我建议使用LastPass. LastPass 提供高度安全的密码存储,并带有在线备份。请注意,LastPass 不会直接将您的密码存储在他们的数据库中。它们存储一个加密的 blob,其中包含在客户端应用程序中加密/解密的密码,因此它们永远不会看到实际的密码。由于他们有网页访问页面,您可以从几乎任何地方安全地使用 LastPass,甚至是您手机上的浏览器。只需支付很少的费用,您甚至可以运行本机 LastPass,从而大大改善移动体验。使用自动化存储密码的所有复杂部分的应用程序意味着您可以拥有高度安全的每个站点密码,您可以随身携带在口袋中,而使用它们的开销很小。您确实需要确保使用非常安全的主密码,