【问题标题】:Very simple password generation scheme; is this secure?非常简单的密码生成方案;这安全吗?
【发布时间】:2011-01-07 05:20:31
【问题描述】:

编辑/澄清:我的意思是密码生成,如 “根据一些秘密和一些特定于站点的数据,确定性地生成供您自己使用的密码(例如,注册网络服务)”

我采用主密码和(非秘密)站点特定字符串串联的 MD5 摘要。然后我取十六进制表示的前 16 位。

这种简单方案的优点是:

  • 可在任何可用 MD5 的地方使用
  • 不必信任 Firefox 扩展程序或其他任何东西来为您生成密码

这是否有任何隐藏的漏洞?显然,如果主人被攻破了,我就倒霉了。

(旁注:当然,使用十六进制数字是每个字符的次优熵,但谁在乎密码是否更长来弥补呢?)

#!/bin/bash

主=我的主密码
回声“$master$1”| md5sum |头-c16

【问题讨论】:

  • 使用 sha256 比使用 md5 更好。 md5 中已经证明了一些问题(选择的碰撞,IIRC)。 sha1 在类似的船上。

标签: security hash cryptography passwords md5


【解决方案1】:

脚本本身就是一个漏洞,因为其中包含明文形式的主密码 - 最好将“站点特定字符串”存储在脚本中,并始终将密码作为用户输入,也可以使用一些询问密码程序,而不是命令读取输入的参数 - 你的命令行被存储到.bash_history

另外,请注意 MD5 的 16 个字符只有 64 位熵 - 例如 uuencode 可以提供更强大的 16 个字符密码。

【讨论】:

  • 脚本包含主密码;特定于站点的字符串是 $1 参数。例如,要生成我的 Google 密码,我会调用 make-password google。要求主密码作为用户输入会以方便为代价提供一些额外的安全性(针对有权访问本地文件系统的人)。脚本当然应该有 700 个权限。
  • 就个人而言,我“手动”生成密码,将它们存储在 GPG 加密文件中,私钥受我的“主密码”保护。我的.vimrc 也有魔法可以透明地进行加密/解密。
【解决方案2】:

你在为谁辩护? 妥协的效果是什么? 你如何保护你的主密码,尤其是如果它被输入到这个脚本中。

如果您使用的机器遭到破坏或检查,您的所有密码都会被泄露。通过命令行历史,你的 bash 脚本,内存分页到磁盘。更糟糕的是您谈论可移植性,因此您将在许多机器上使用它,其中一些机器不值得信赖。如果有人在你之后使用这台机器并注意到你在做什么,他们不仅会得到你在这台机器上使用过的密码,还会得到你曾经生成的所有密码。

另一个限制是网站对密码组成有规则。混合大小写字母,需要使用标点符号、最小位数或字母,而您的 MD5 为该特定站点所没有的。还有一些网站有密码的最大长度,我的银行网站的最大密码长度为 8,只使用 16 个可能的字符,你大大减少了密码的可能数量。

这对我来说对于低安全性网站来说似乎很好,妥协的效果还不错。对于我的银行网站访问或我对我的工作网站的访问,我不会相信这一点。我关心的事情。

我会信任它作为我的 slashdot、facebook、flickr 等密码

我使用的解决方案是Password safe,这是people I trust 推荐的。我通过电子邮件发送我的密码数据库,并在我使用的每台机器上安装客户端。

人们一直在思考如何保护密码,密码安全是一种解决方案。

【讨论】:

  • 抱歉,我对这些攻击含糊其辞。我假设脚本文件本身是安全的。我主要考虑的问题是“给定许多具有已知站点特定字符串的生成密码,推导出新站点特定字符串的生成密码”。
  • 好点,在不受信任的机器上调用 MD5 可能很难不留下痕迹。
  • 快速浏览一下似乎人们相信 MD% 可以被解码 QUOTE:注意:如果您想让您的 MD5 摘要与其他摘要不同,请取消注释并调整摘要子例程中的“安全功能”以下。如果您出于安全目的想要获得不可解码的摘要,这很有用。如果可能的原件 set 很小且已知(例如 IP 号码的最后两位)equi4.com/md5/doug2md5.plequi4.com/md5,则可以解码标准 MD5
【解决方案3】:

好吧,您的算法依赖于一个秘密 - 即您的主密码,所以为什么不直接将秘密设为“带有我的 DOB 的站点名称”这个短语。同样安全,无需将算法存储在您的头部之外的任何地方。只要您不将密码写在任何地方,任何人都不太可能猜到您的“秘密”

【讨论】:

  • 这在某些情况下可能不安全。假设您在中间攻击中有一个人,他们嗅探了您的密码。如果他们看到:stackoverflow290889 facebook290889 然后他们几乎可以猜出您可以使用的所有服务的密码:gmail290898 workemail290898 等...
  • 首先你的 DOB 不是秘密的,其次,如果一个没有加密用户密码的坏站点的系统管理员注意到这一点,他们可以推断出算法并尝试使用相同用户名和 DOB 的其他站点。海报算法并不意味着信任您使用算法的每个网站。
【解决方案4】:

已经有系统使用它,例如SuperGenPass。一般来说,假设您的哈希函数可以安全地抵御原像攻击(为此,我建议使用其他而不是 MD5 的东西),您可能没问题。

然而,有一个更好的结构用于此目的:HMAC。它是由一个常规的散列函数构成的,但有针对各种攻击的安全性证明,甚至是有限的原像攻击。 RFC 中还有一个部分明确处理使用截断的 HMAC。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-28
    • 1970-01-01
    • 1970-01-01
    • 2014-04-01
    • 1970-01-01
    • 2011-01-14
    相关资源
    最近更新 更多