问题标签 [brute-force]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
4094 浏览

f# - 并行计算、f# 和 GPU 并行处理可能解决哪些实际问题

最近,WiFi 加密是通过使用现代 GPU 的并行处理能力强行进行的。 您认为其他现实生活中的问题会从类似技术中受益吗?

0 投票
10 回答
28373 浏览

security - 为哈希隐藏盐的必要性

在工作中,我们有两种相互竞争的盐理论。我工作的产品使用用户名或电话号码之类的东西来加盐。本质上,对于每个用户来说都是不同的,但我们很容易获得。另一款产品为每个用户随机生成一个salt,并在用户每次更改密码时更改。然后在数据库中加密盐。

我的问题是第二种方法是否真的有必要?我可以从纯理论的角度理解它比第一种方法更安全,但从实用性的角度来看呢。现在要对用户进行身份验证,salt 必须未加密并应用于登录信息。

在考虑之后,我只是没有看到这种方法真正的安全收益。将盐从一个帐户更改为另一个帐户,即使攻击者知道如何快速确定每个帐户的值,仍然使某人尝试暴力破解散列算法非常困难。这是在假设密码足够强的情况下进行的。(显然,找到一组密码的正确哈希值,其中它们都是两位数字,比找到正确的 8 位密码哈希值要容易得多)。我的逻辑是不正确的,还是我遗漏了什么?

编辑:好的,这就是为什么我认为加密盐真的没有实际意义的原因。(让我知道我是否走在正确的轨道上)。

对于下面的解释,我们假设密码总是 8 个字符,salt 是 5,所有密码都由小写字母组成(这只是为了让数学更容易)。

每个条目使用不同的盐意味着我不能使用相同的彩虹表(实际上,如果我有一个足够大的大小,我可以使用,但我们暂时忽略它)。据我了解,这是真正的关键,因为要破解每个帐户,我必须重新发明轮子,可以说每个帐户。现在,如果我知道如何将正确的盐应用于密码以生成散列,我会这样做,因为盐实际上只是扩展了散列短语的长度/复杂性。所以我会减少我需要生成的可能组合的数量,以“知道”我的密码+盐从 13^26 到 8^26,因为我知道盐是什么。现在这使它变得更容易,但仍然非常困难。

因此,对盐进行加密。如果我知道盐是加密的,我不会先尝试解密(假设我知道它有足够的加密级别)。我会忽略它。而不是试图弄清楚如何解密它,回到前面的例子,我只生成一个更大的彩虹表,其中包含 13^26 的所有密钥。不知道盐肯定会减慢我的速度,但我认为它不会增加尝试首先破解盐加密的艰巨任务。这就是为什么我认为这不值得。想法?

这是一个链接,描述了密码在蛮力攻击下可以保存多长时间: http ://www.lockdown.co.uk/?pg=combi

0 投票
4 回答
1833 浏览

algorithm - 计算蛮力方法的操作次数

我是一名大三学生,我有一门名为“算法设计与分析”的课程。课程很酷,但教练不是。我不了解蛮力以及如何计算操作次数以及如何计算时间复杂度(最差,最好,平均),我试图在网上搜索它,但每次我都以 big-o 结尾符号和我不想要的分而治之。如果你们中的任何人都可以从此链接下载讲师幻灯片,看看我在说什么......

幻灯片

我真的需要你的帮助,我保证我会尽力而为

0 投票
14 回答
3348 浏览

algorithm - 偏爱蛮力解决方案是一个坏兆头吗?

我是一名初学者 C++ 程序员,为了扩展我的想法,我一直在尝试projecteuler.net上的一些问题。尽管在学校对数学很感兴趣,但我发现自己会自然而然地寻求解决问题的蛮力解决方案,而不是寻找流线型或优雅的东西。

这听起来像是一种糟糕的心态吗?这样做我感到有点内疚,但也许有时快速和肮脏是可以的......

0 投票
14 回答
16802 浏览

security - 防止网站上的暴力登录

作为对最近Twitter 劫持Jeff 在 Dictionary Attacks 上的帖子的回应,保护您的网站免受暴力登录攻击的最佳方法是什么?

Jeff 的帖子建议为每次尝试登录增加延迟,评论中的建议是在第二次失败尝试后添加验证码。

这两个似乎都是好主意,但你怎么知道它是什么“尝试次数”?您不能依赖会话 ID(因为攻击者每次都可以更改它)或 IP 地址(更好,但容易受到僵尸网络的攻击)。使用延迟方法简单地将其登录到用户名可以锁定合法用户(或至少使登录过程对他们来说非常慢)。

想法?建议?

0 投票
8 回答
506 浏览

security - 针对 web 应用程序的密码列表攻击的最佳实践

我想防止机器人入侵受密码保护的弱帐户。(例如,这发生在 ebay 和其他大型网站上)

因此,我将使用 ip、尝试次数和上次尝试的时间戳(memcache-fall-out)设置一个(mem-)缓存值。

但是机器人试图用一个密码打开任何账户呢?例如,机器人尝试使用密码“password123”的所有 500.000 个用户帐户。也许10会打开。

所以我的尝试是用try缓存ip并将max-tries设置为~50。我会在成功登录后删除它。因此,好的机器人每 49 次尝试重置锁定,就会使用有效帐户登录。

有什么办法可以做到吗?大平台对此做了什么?我能做些什么来防止白痴通过重试 50 次来阻止代理上的所有用户?

如果没有最佳实践——这是否意味着任何平台都是暴力破解的?至少提示何时重置计数器?

0 投票
16 回答
17717 浏览

security - 最好的分布式蛮力对策是什么?

首先,一点背景知识:我正在为 CodeIgniter 实现一个 auth+auth 系统,这已经不是什么秘密了,到目前为止我赢了(可以这么说)。但是我遇到了一个非常重要的挑战(大多数身份验证库完全错过的挑战,但我坚持要正确处理它):如何智能地处理大规模、分布式、可变用户名暴力攻击

我知道所有常用的技巧:

  1. 限制每个 IP/主机的失败尝试次数并拒绝违规者访问(例如 Fail2Ban) -由于僵尸网络变得更加智能,这不再有效
  2. 将上述内容与已知的“坏”IP/主机(例如 DenyHosts)的黑名单相结合——这依赖于僵尸网络落入第一名,而他们越来越不这样做
  3. IP/主机白名单与传统身份验证相结合(遗憾的是,对于动态 IP 用户和大多数网站的高流失率无用)
  4. 在 N 分钟/小时内设置站点范围内的失败尝试次数限制,并在此之后限制(暂停)所有登录尝试数分钟/小时(问题是 DoS 攻击您成为僵尸网络的小游戏)
  5. 没有登录/密码选项的所有用户的强制性数字签名(公钥证书)或 RSA 硬件令牌(毫无疑问,这是一个坚如磐石的解决方案,但仅适用于封闭的专用服务)
  6. 强制执行的超强密码方案(例如 >25 个带有符号的无意义字符 - 再次,对于普通用户来说太不切实际了)
  7. 最后,验证码(在大多数情况下都可以工作,但对用户来说很烦人,而且对坚定、足智多谋的攻击者几乎毫无用处

现在,这些只是理论上可行的想法。有很多垃圾想法使网站大开(例如,微不足道的 DoS 攻击)。我想要的是更好的东西。更好的是,我的意思是:

  • 它必须对 DoS 和蛮力攻击是安全的(+),并且不引入任何可能允许稍微狡猾的机器人继续在雷达下运行的新漏洞

  • 它必须是自动化的。如果它需要人工操作员来验证每个登录或监控可疑活动,那么它在现实世界中是行不通的

  • 它必须适用于主流 Web 使用(即非程序员可以执行的高流失率、高容量和开放注册)

  • 它不能将用户体验阻碍到临时用户会感到恼火或沮丧(并可能放弃该网站)的程度

  • 它不能涉及小猫,除非它们真的是非常安全的小猫

(+)所谓“安全”,我的意思是至少与偏执的用户保密密码的能力一样安全

所以 - 让我们听听吧!你会怎么做?你知道我没有提到的最佳实践吗(哦,请说你知道)?我承认我确实有自己的想法(结合 3 和 4 的想法),但在让自己尴尬之前,我会让真正的专家发言;-)

0 投票
2 回答
484 浏览

algorithm - 我将如何实现这个算法?

不久前,我试图暴力破解发送 12 位二进制“密钥”的遥控器。

我制作的设备可以工作,但速度很慢,因为它以每秒约 50 位的速度尝试每种组合(4096 个代码 = 49152 位 = 约 16 分钟)

我打开接收器,发现它正在使用移位寄存器来检查代码,并且尝试之间不需要延迟。这意味着接收器只是查看要接收的最后 12 位,以查看它们是否与密钥匹配。

这意味着如果流111111111111000000000000被发送,它已经有效地尝试了所有这些代码。

在这种情况下,我使用 24 位来尝试 13 种 12 位组合(>90% 压缩)。

有谁知道可以利用这一点减少我发送的 49152 位的算法?

0 投票
8 回答
14108 浏览

php - 在 PHP 中限制用户登录尝试

我见过对用户登录尝试有限制的网络应用程序。

这是安全必要性吗?如果是,为什么?

例如: 您有 3 次登录尝试失败,让我们在 10 分钟后重试!

0 投票
3 回答
13135 浏览

firebird - 查找旧版 firebird/Interbase 数据库密码

我有一个客户有一个旧的不存在的应用程序;他与提出申请的公司有问题,他们不会透露他的数据库密码。他意识到他(当时)签署了一份合同,其中说他是在“租用”该应用程序,他们无权透露任何内容。这位客户发现他并不是唯一一个与该公司有同样问题的人。他是一名牙医,使用相同旧应用程序的其他牙医在尝试购买新软件并试图将他们的患者迁移到新系统时遇到了同样的问题。

无论哪种情况,他都想打开他的小火鸟数据库,这样我们至少可以将一些数据提取到我们的 SQL Server 中。我尝试使用默认的“masterkey”(实际上,由于 8 个字符的限制,“masterke”)无济于事。

现在我知道他可以合法化并试图强迫公司发布他的信息,但我想用捷径做。有人知道可以暴力破解/破解旧版 Firebird 密码的应用程序吗?

谢谢。

编辑:旧版软件是“STOMA-W”,我什至在互联网上都找不到。他们位于西班牙的阿斯图里亚斯。