安全令牌URL - 它的安全性如何?代理验证作为替代?

时间:2011-05-28 17:58:44

标签: security http hash token

我知道它是安全令牌网址,maby还有另外一个名字。但我想你们都知道。

如果您想限制向某个客户传送内容,那么它主要适用于teqniuque,您提前提交了特定网址。

您获取一个秘密令牌,将其与您要保护的资源连接起来,拥有它,当客户端在您的某个服务器上请求此URL时,将根据从请求收集的信息重新构建哈希值哈希被比较。如果相同,则会传递内容,否则用户会被重定向到您的网站或其他内容。

您还可以在必须中添加时间戳,以便在网址上留出时间,或者包含用户IP地址以限制提供给他的连接。

此teqnique由亚马逊(S3和Cloudfront),Level 3 CDN,Rapidshare和许多其他人使用。它也是http摘要身份验证的基本部分,尽管它还使链接失效和其他东西更进了一步。

如果您想了解更多信息,请参阅Amazon docs的链接。

现在我对这种方法的担忧是,如果一个人破解了你的链接的一个标记,攻击者就会获得你的标记纯文本,并且可以自己在你的名字中签署任何URL。

或者更糟糕的是,就亚马逊而言,请在管理范围内访问您的服务。

当然,这里散列的字符串通常很长。并且您可以包含大量内容,甚至可以通过向请求添加一些不必要的数据来强制数据具有最小长度。 Maby在URL中使用了一些未使用的伪变量,并用随机数据填充它。

因此蛮力攻击破解sha1 / md5或者你使用哈希的任何东西都很难。但是协议是开放的,所以你只需填写秘密令牌所在的间隙,并用requst中已知的数据填补其余部分。今天硬件非常棒,可以以每秒几十兆字节的速度计算md5。这种攻击可以分发到计算云中,并且您不限于“登录服务器每分钟10次尝试”等,这使得散列方法通常非常安全。现在使用亚马逊EC2,您甚至可以在短时间内租用硬件(用自己的武器击败它们哈哈!)

那你觉得怎么样?我的担忧有基础还是我偏执?

然而,

我目前正在设计一个满足特殊需求的对象存储云(集成媒体转码和流媒体等特殊传送方式)。

现在,level3引入了另一种安全令牌网址的方法。它目前是测试版,仅向特别要求的客户开放。他们称之为“代理身份验证”。

内容传送服务器向您(客户端)设置中指定的服务器发出HEAD请求并模仿用户请求。因此传递相同的GET路径和IP地址(作为x_forwarder)。您使用HTTP状态代码进行响应,该代码告诉服务器与内容交付有关。

您还可以在此引入一些安全令牌流程,您也可以对其进行更多限制。就像让URL仅被请求10次左右一样。

显然会产生很多开销,因为需要进行额外的请求和计算,但我认为这是合理的,我没有看到任何警告。你呢?

3 个答案:

答案 0 :(得分:6)

你基本上可以将你的问题重新表述为:需要多长时间才能保密秘密令牌。

要回答这个问题,请考虑可能的字符数(字母数字+大写字母已经是每个字符62个选项)。其次,确保秘密令牌是随机的,而不是字典或其他东西。然后,例如,如果您将采用长度为10个字符的秘密令牌,则需要62 ^ 10(= 839.299.365.868.340.224)尝试暴力(最坏情况;平均情况将是当然的一半)。我真的不会害怕这一点,但如果你是,你可以随时确保秘密令牌至少100个字符长,在这种情况下需要62 ^ 100次尝试暴力(这是三个行中的数字)我的终端)。

总之:只需要一个足够大的标记就足够了。

当然,代理身份验证确实为您的客户提供了额外的控制,因为他们可以更直接地控制谁可以看,而不是,这也可以打败电子邮件。但是,我不认为在给定足够长的令牌的情况下,强制执行需要成为一个问题。

答案 1 :(得分:3)

据我所知,它被称为MAC

我不明白哈希有什么问题。简单的计算表明,SHA-1散列(160位)为我们提供了非常好的保护。例如。如果你有一个每秒10亿次尝试的超级云计算,那么你需要大约3000亿亿次才能蛮力。

答案 2 :(得分:2)

您可以通过多种方式保护令牌:

  • X令牌解码失败后阻止IP
  • 在您的令牌中添加时间戳(散列或加密)以在X天或X小时后撤消令牌
  • 我的最爱:使用快速数据库系统,如Memcached或更好:Redis来收集您的令牌
  • 与Facebook一样:生成带有时间戳,IP等的令牌......并加密它!