Security 强制UTF8

Security 强制UTF8,security,hash,md5,brute-force,Security,Hash,Md5,Brute Force,我用MD5散列我的密码。我并不真正关心使用最好的算法对它们进行散列,因为我相信,将最随机的盐添加到一个简单的MD5散列中,不能被所谓的“MD5解码器”识别。唯一困扰我的是暴力强迫。我想知道如果我在密码中加入不同字母(阿拉伯语、汉语、日语、西里尔语)的字符,会不会有什么不同。问题是,这是否会使蛮力攻击复杂化?当然,这会使蛮力攻击更加困难。当你使用蛮力时,你只需在有限的字符池中尝试所有组合。其中很可能不包含阿拉伯语、汉语、日语和西里尔语字符。想要攻击您的密码的人不太可能选择具有这些字符的池,因为随着

我用
MD5
散列我的密码。我并不真正关心使用最好的算法对它们进行散列,因为我相信,将最随机的盐添加到一个简单的
MD5
散列中,不能被所谓的“MD5解码器”识别。唯一困扰我的是暴力强迫。我想知道如果我在密码中加入不同字母(阿拉伯语、汉语、日语、西里尔语)的字符,会不会有什么不同。问题是,这是否会使蛮力攻击复杂化?

当然,这会使蛮力攻击更加困难。当你使用蛮力时,你只需在有限的字符池中尝试所有组合。其中很可能不包含阿拉伯语、汉语、日语和西里尔语字符。想要攻击您的密码的人不太可能选择具有这些字符的池,因为随着池大小的增加,获取密码的时间呈指数增长

你可以这样计算组合的数量-

Charpool=52(小写+大写字母)

组合=52^长度

这将在380204032组合中解析5个字母的密码


但要回答你的问题——是的,这会使暴力强迫更加复杂。这不仅是因为增加了字符池,更重要的是,攻击者必须在其攻击中包含这些奇异字符。

当然,这会使蛮力攻击更加困难。当你使用蛮力时,你只需在有限的字符池中尝试所有组合。其中很可能不包含阿拉伯语、汉语、日语和西里尔语字符。想要攻击您的密码的人不太可能选择具有这些字符的池,因为随着池大小的增加,获取密码的时间呈指数增长

你可以这样计算组合的数量-

Charpool=52(小写+大写字母)

组合=52^长度

这将在380204032组合中解析5个字母的密码


但要回答你的问题——是的,这会使暴力强迫更加复杂。这不仅是因为增加了字符池,而且更重要的是,攻击者必须在其攻击中包含这些外来字符。

添加密码哈希的建议是,如果哈希列表受损,则减少使用查找列表(等)的风险

为了说明的目的,考虑;br> Alice有密码“Ford”,它散列为值x Bob还有密码“Ford”,它仍然散列为值x

现在,如果用户/散列列表被破解,并且爱丽丝的密码被强制破解,那么攻击者也可以破解bob的帐户

拥有一个固定的salt对问题没有帮助,因为虽然两个用户之间的密码可能相同,但散列的结果将不同于以前,但对两个用户都是相同的。为Alice查找密码对Bob也有效

现在,使用每个用户的确定性字符串(必须是确定性的,因为每次都必须为用户使用相同的东西)来标记密码意味着,即使Alice和Bob拥有相同的密码,他们的哈希值也可能不同(如果salt是他们的用户名的话)。任何试图破坏帐户的人现在都必须暴力迫使每个用户破坏列表


因此,有了关于散列为何有用的知识,您可以进入下一点;角色重要吗?如果考虑一个16字节散列(例如MD5,它实际上不应该用于加密目的,但你已经知道),这给了你128比特的熵。如果您的密码策略具有适当的最小密码长度,并且可能需要很好的字符组合(即使是欧元也足以成为UTF-8中的多字节字符,这将以汉字的方式在字符的所有8位上提供熵),那么任何(每个用户)salt也同样有效。

在密码哈希列表受损的情况下,salt的建议是降低使用查找列表(等)的风险

为了说明的目的,考虑;br> Alice有密码“Ford”,它散列为值x Bob还有密码“Ford”,它仍然散列为值x

现在,如果用户/散列列表被破解,并且爱丽丝的密码被强制破解,那么攻击者也可以破解bob的帐户

拥有一个固定的salt对问题没有帮助,因为虽然两个用户之间的密码可能相同,但散列的结果将不同于以前,但对两个用户都是相同的。为Alice查找密码对Bob也有效

现在,使用每个用户的确定性字符串(必须是确定性的,因为每次都必须为用户使用相同的东西)来标记密码意味着,即使Alice和Bob拥有相同的密码,他们的哈希值也可能不同(如果salt是他们的用户名的话)。任何试图破坏帐户的人现在都必须暴力迫使每个用户破坏列表


因此,有了关于散列为何有用的知识,您可以进入下一点;角色重要吗?如果考虑一个16字节散列(例如MD5,它实际上不应该用于加密目的,但你已经知道),这给了你128比特的熵。如果您的密码策略具有适当的最小密码长度,并且可能需要很好的字符组合(即使是欧元也足以成为UTF-8中的多字节字符,这将以汉字的方式在字符的所有8位上提供熵),那么任何(每个用户)salt也同样有效。

我知道日语字母表包含50000多个字符。基本上这会使散列无法执行<代码>:D理论上不,但实际上是;)密码部分保持不变,通过使用