rails - 创建安全ID /密码

时间:2010-11-25 16:13:27

标签: ruby-on-rails ruby-on-rails-3

我正在寻找一种RAIL方式来创建一个非常安全的UID,它将充当身份验证令牌。

我一直在使用UUID,但被告知他们不安全。我想了解一下,这些天在ruby / rails 3中选择的方法是什么?

1 个答案:

答案 0 :(得分:2)

这个问题绝不是Rails特有的。

UUID不安全,因为它是一个唯一标识符,它包含给定计算机的“常量”部分(例如,它可能使用机器的MAC地址),这使得它更容易猜到。

如果您想要100k +字符串而无需猜测,您需要能够在大的密钥空间内分发密钥。让我解释一下:

如果你只需要一把钥匙(让我们),你可以选择'A'。在A-Z的关键空间中,你有1:26的机会猜测它。现在,如果你将你的密钥空间扩展到A-Za-z,你有1:52的猜测机会。

还需要更多安全措施吗?使用更长的钥匙:“AA”1:2704几率。

现在,如果您想拥有2000个密钥并使用密钥长度2(例如“AA”),那么有人可能会猜到2000:2704 => 1:1.352。非常糟糕。

所以,这里的关键是选择一个很长的密钥大小。使用Digest::SHA1,您可以获得40个字符的密钥(使用Hex,每个字符有16个不同的值)。这是1.46150164e48个唯一值。你的100k值应该足够随机。

编辑:

使用40位HEX SHA1值,您有1:461501640000000000000000000000000000000000000000000猜测一个值。这需要很长时间。