是否有可能通过强制攻击加固aes加密?

问题描述:

有没有什么方法可以在不加强密码的情况下强化aes加密以抵御蛮力攻击。我的意思是用户通常选择简易密码。我不想强迫用户选择越来越复杂的密码(这是正确的解决方案,但是当他们连续忘记密码并且不能使用密码时,它是无用的)他们从大写,小写和数字中选择密码。并且密码长度是8.我想在不改变这些密码属性的情况下很难进行暴力攻击。是否有可能通过强制攻击加固aes加密?

编辑:密码长度正好是8.较少的长度是不可接受的。还有一个关于回复的问题,在内存上保存加密文本(使用salting和密钥伸缩)是一个安全问题?

+1

http://xkcd.com/936/ – Kimvais 2012-08-15 06:47:36

+0

这是第二个脱离两个*主题问题。 – 2012-08-15 20:26:16

+0

你为什么给倒计时? – PepeDeLew 2012-08-15 20:37:07

我很想说:不,这是不可能的。为了使蛮力攻击更难,你需要更多的熵。

这就是说,如果你做key stretching,你实际上可以让猜测过程变慢。

+0

那么在内存中存储加密文本呢,这是一个安全问题吗? – PepeDeLew 2012-08-15 07:29:28

如果不知道使用方法的确切性质,很难评论这个问题。 (例如,密码只能存储为8个字符?)。

也就是说,选择一个好的salt会让蛮力强制变得更难。今天大多数密码被盗是由于没有实施适当的盐析。

为了更安全起见,您可以使用consistent hashing将盐分割成多个值。

+1

...或为每个条目单独分配的盐,而不是完整的密码数据库。 – Rik 2012-08-15 14:43:23

+0

@Rik:确切地说,麻盐是一种*全球独一无二的盐,128位是您的较低利润率。 – 2012-08-19 01:15:08

+0

@HubertKario如果每个条目都是单独分配的盐,那么盐的存储就成了一个问题。这就是为什么我建议使用一致哈希来分配一定范围内的盐。对于足够数量的密码(大约2 ^(n-1)),盐很可能是唯一的。 – Asti 2012-08-19 05:54:46

使用多轮会减慢尝试密码的过程,但那只是我所能想到的。

如果你想确保你的用户不使用密码,如“密码”,“12345678”或类似的密码,然后没有没有办法硬化他们。

您必须能够检查提供的密码是否与合理时间内的散列相匹配(即平均硬件时间少于1秒)。即使在检查散列和密码之间的等同性时,Brute强制使用简单的密码,但在普通PC上需要1天的时间不到一天。

如果您想要保证平均质量的密码(不是最常用的密码1000或最常用的语言中的单个单词),那么密码/密钥延伸是您最好的选择:scrypt,bcrypt或标准PBKDF2不错的选择。

+1

盐(每位用户唯一)与关键拉伸一起是一条路。 – CodesInChaos 2012-08-19 11:14:16

+0

正确的盐分和拉伸使得即使是简单的密码(如“密码”)变得更硬。 (如果这是第一个猜测的密码,那么是的,这会失败,但它仍然可以根据要求对抗强力。) – 2012-09-03 00:20:23

+0

@RobNapier:如何将大多数常见密码的攻击时间从5分钟改为10小时帮你? – 2012-09-03 10:27:09