密码强度库 - 目标C.

时间:2013-02-18 11:39:13

标签: iphone ios objective-c macos passwords

我正在寻找一种可以估算密码强度的开源组件。 在网上搜索时,我发现这非常有趣:https://github.com/lowe/zxcvbn(有关它的详细信息:https://tech.dropbox.com/2012/04/zxcvbn-realistic-password-strength-estimation/)。

令我印象深刻的是分析给定密码的能力,与 “常用密码,常用美国名称和姓氏,常用英语单词以及日期,重复(aaa),序列(abcd)等常见模式相比较)和QWERTY模式。“

有没有人知道可以用于iOS / Mac应用程序的类似内容?如果没有,最好的方法是什么?

3 个答案:

答案 0 :(得分:11)

所以,最后,经过一年多的时间,伟大的Mattt Thompson刚刚向GitHub发布了自己的库,用于验证密码强度,验证规则,以及对强度的评估。

这是:https://github.com/mattt/Navajo

答案 1 :(得分:2)

看一下名为zxcvbn-ios的GitHub上的开源库,它是为Objective-C重写的库:

https://github.com/dropbox/zxcvbn-ios

答案 2 :(得分:0)

除了在密码上使用真正的英文单词,使其易受字典攻击之外,您可以将其简单地分析为对纯粹暴力攻击的抵抗。

检查字典攻击的安全性必须使用大型词表。我还必须考虑实际的字典攻击如何工作并混合字典单词,如果他们做的变化,如交易A等4等。

让我们专注于暴力攻击,我相信我可以帮助你。

对于暴力攻击,您首先需要做的是定义攻击将用于生成密码的字符集。 第一次尝试可能会很快获得许多密码,但只能使用小写字母。

如果只有小写字母(其中大约有25个,取决于语言)和N个字符的密码,你将拥有25个N个不同组合的力量。因此,例如小写6个字母的密码具有244140625种不同的可能性。

现在让我们添加大写字母,再添加25个(总共50个)。在6个字母的密码上,我们将获得50个6个组合的功能,15625000000。

添加一些数字?所以另外10个字符。

如果你添加一些符号,你可以添加另外20个常用符号(猜测数字)。

所以基本上你要做的就是分析一个密码并检查它是否有小写字母(可能总是),这样你就可以在字符集数上加25。 它是否有大写字母?另有25到伯爵。 它有没有数字?另有10个计数。 它有其他符号吗?另有20个计数。

使用小写,大写,数字和符号(约80个字符集)的10个字符的密码将具有大约10737418240000000000个组合。

现在计算密码的大小并进行数学计算。 characterSetCount为nCharacters的力量。

因此,您将获得的数字是攻击者原则上必须检查的组合数量,以确保他能找到正确的密码。您还可以假设攻击者无需检查所有密码即可找到正确的密码。检查其中的一半将大致给它找到它而不是找到它的机会。因此,保留一半的组合作为参考。

现在,哪种哈希算法用于存储密码?

让我们假设MD5。对于MD5,我发现这个http://bvernoux.free.fr/md5/index.php表示每秒检查2亿个哈希值。

获取您的半组合数并将其除以2亿,您将获得攻击者使用该硬件和方法获取密码所需的秒数。例如,我们谈到的所有类型字符的10个字符的密码大约需要26843545600秒。大约425年。

有了这个,您可以分析最坏的情况。它不准确,但它可以给你一个估计。

要检查的另一个重要事项是密码哈希是否正在使用盐。使用salt存储密码(http://en.wikipedia.org/wiki/Salt_(cryptography))是当今常见的做法。如果你不使用这种方法,你很容易受到Rainbow Table攻击(http://en.wikipedia.org/wiki/Rainbow_table)的影响,在这种情况下,所有这些数学都没用,因为你的密码非常不安全,直到非常高的字符数(16左右)计算彩虹表。

希望它有所帮助!