共享链接生成安全

格鲁夫

我一直想知道网站如何生成“与他人共享”链接。有些网站允许您通过链接共享一段数据,以使您发送链接的人能够看到或什至编辑数据。例如Google Drive,OneDrive等...,它们为您提供了一个(很短的)链接,但是,什么使我无法保证有人“靠运气”找到此链接并访问我的数据呢?就像如果攻击者正在尝试所有可能的链接那样:https://link.share.me/xxxxxxx直到找到一些可行的链接,该怎么办?

  1. 是否存在一定的长度,几乎可以保证没有人会以这种方式找到一个链接?例如,如果一个站点生成了1000个链接,如果端点由10倍[A-Za-z0-9]字符(〜8e17种可能性)组成,我们仅假设它足够安全?如果是,那么我们认为这种系统在安全性和可能性之间的概率或比例是多少?
  2. 是否存在某种加密或数学方式来生成这些链接,以确保我们无法找到任何人链接?

非常感谢你。

加伯·伦吉尔(Gabor Lengyel)

也许最重要的事情(除了熵,我们将在一秒钟之内再谈)是从中获得随机数的地方。为此,您应该使用加密的伪随机数生成器(crypto prng)。(作为附带说明,您也可以使用真正的随机数,但是真正的随机数来源很难获得,如果生成许多链接,则可能会耗尽可用的随机位,因此加密prng可能对您足够了目的,很少有应用程序确实需要真正的随机数)。大多数语言和/或框架都为此提供了便利,例如在Ruby中SecureRandom,在Java中java.security.SecureRandom,例如在python中os.urandom,等等。

好吧,应该多久。这在某种程度上也取决于您的其他非安全性要求,例如有时这些要求在电话中易于说出,易于键入或类似内容。除了这些,您应该考虑的是熵。您计算所有可能代码数的想法是一个很好的开始,我们可以说代码中的熵是该数字的log2(以2为底的对数)。因此,对于区分大小写,长度为10个字符的字母数字代码,熵为log2((26 + 26 + 10)^ 10)= 59.5位。您可以以相同的方式计算任何其他长度和字符集的熵。

这可能就足够了,您应该考虑的是攻击者。他们是否只能执行在线攻击(速度要慢得多),也可以离线执行(可能非常快,特别是使用专用硬件)?另外,如果他们找到一个,例如财务数据,只是一张随机的有趣图片或某人的个人数据,这会对您产生多大的影响,您在多个司法管辖区对此负有法律责任(请参阅欧盟的GDPR或加利福尼亚州的隐私法) )?

通常,您可以说64位熵对于许多用途而言可能已经足够好,而128位熵就足够了(也许对于加密密钥和非常高安全性的应用除外)。对于安全性较低的应用,上面的59位几乎是64位,例如,这可能是合理的折衷方案,以提高可用性。

简而言之,没有确定的答案,这取决于您要对此建模的方式以及要满足的安全要求。

还有两件事要考虑:这些代码的有效性以及将要发出的代码数(空间的密度)。

我认为这里常用的变量是代码的字符集及其长度。有效性更像是业务需求,并且代码的密度将取决于您的用法以及长度(它定义了代码空间的大小)。

例如,假设您有64位熵,您已经发出了1000万个密码,并且攻击者只能通过以100 /秒的速度向服务器发送请求来执行在线攻击。这些可能会向安全方面夸大其词。

这意味着某人一年内有0.17%的机会可以找到有效的代码。但是,您的攻击者是否会花费大量精力来查找一个(随机)有效代码?您是否可以接受,仅取决于您的具体情况,只有您能知道。如果没有,您可以增加例如代码的长度。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Java生成安全证书

来自分类Dev

Java生成安全证书

来自分类Dev

分页以前的链接生成

来自分类Dev

Laravel从路由生成安全的https URL

来自分类Dev

从 AppEngine ImagesService 生成安全 (https) URL

来自分类Dev

Google App Engine:永久链接生成

来自分类Dev

为页面链接生成正确的 url

来自分类Dev

在Java中均匀生成安全随机数

来自分类Dev

在Rust中生成安全随机数

来自分类Dev

如何在python上生成安全的session_id?

来自分类Dev

我如何为 woocommerce 结账生成安全代码/密钥?

来自分类Dev

Angular 1.2到1.3-链接生成

来自分类Dev

具有验证功能的JavaScript链接生成器

来自分类Dev

linkshare自动链接生成器超时

来自分类Dev

如何通过单击超链接生成动态URL

来自分类Dev

如何使用busybox链接生成initramfs图像?

来自分类Dev

如何使用busybox链接生成initramfs图像?

来自分类Dev

Area上的ASP MVC URL /链接生成为空

来自分类Dev

将再营销代码直接添加到链接(链接生成器)

来自分类Dev

列表中的生成器与链接生成器和内存消耗之间的关系?

来自分类Dev

AWS IAM - 安全地连接生成的访问密钥 ID 和秘密访问密钥

来自分类Dev

如何使用.Net SDK从Recovery Services保管库生成安全PIN?

来自分类Dev

如何生成安全的临时URL以从Amazon S3下载文件?

来自分类Dev

Angular.js-生成安全的只读视图或可编辑视图

来自分类Dev

自定义具有复合ID的实体的HATEOAS链接生成

来自分类Dev

如何为Google表单的预填充链接生成QR码

来自分类Dev

如何通过php-ajax与jquery动作连接生成的链接?

来自分类Dev

自定义具有复合ID的实体的HATEOAS链接生成

来自分类Dev

JavaScript随机链接生成并在新标签页中打开它们

Related 相关文章

热门标签

归档