Encryption 暴力攻击能否可靠地检测密钥是否正确?

Encryption 暴力攻击能否可靠地检测密钥是否正确?,encryption,dictionary,cryptography,brute-force,Encryption,Dictionary,Cryptography,Brute Force,我的理解是,对于大多数加密算法,不管密钥是什么,都会有一个输出。错误的键当然会产生错误的输出。那么,当使用蛮力解密加密数据时,黑客如何知道密钥何时正确?除了分析输出数据,还有其他方法吗 如果这是唯一的办法,我有这个想法。在加密文本时,使用目录在字级加密而不是像今天这样在位级加密难道不更安全吗?那么输出将始终由单词组成。黑客需要使用复杂而缓慢的算法来检查输出单词中的语法,以确定这是否是真正的书面文本。要回答第一部分,我只需陈述我对超级用户问题的旧答案“” 它知道正确的密码,因为在加密的容器中 有一

我的理解是,对于大多数加密算法,不管密钥是什么,都会有一个输出。错误的键当然会产生错误的输出。那么,当使用蛮力解密加密数据时,黑客如何知道密钥何时正确?除了分析输出数据,还有其他方法吗


如果这是唯一的办法,我有这个想法。在加密文本时,使用目录在字级加密而不是像今天这样在位级加密难道不更安全吗?那么输出将始终由单词组成。黑客需要使用复杂而缓慢的算法来检查输出单词中的语法,以确定这是否是真正的书面文本。

要回答第一部分,我只需陈述我对超级用户问题的旧答案“”

它知道正确的密码,因为在加密的容器中 有一个已知的标题

当Trucrypt对一个数据块进行解密,并且标头与它的内容匹配时 希望它报告解密成功。如果 如果您使用了错误的密码,它仍然会“解密”文本,但是 将头解密为乱码,解密检查失败

,你可以看到有很多 为使其成为有效的标头(字节64-67),必须为true 解密后应始终为ASCII值
TRUE
,字节 132-251必须全部为
0
,等等。)。如果你解密一团数据 而且它与头格式不匹配,你知道解密 失败了

因此,他们已经按照您的建议执行了“检查语法”的操作,他们尝试解密消息,如果消息“具有正确的语法”(数据遵循加密文件格式的规范),则消息已成功解密

关于“使用词典”的第二部分,有几个重要问题

首先,这只适用于纯无格式文本,不允许使用二进制数据或文本元数据。然而,更重要的是,第二,你如何“创建”这本词典?如果您使用文档中的单词动态创建词典,请告诉我以下消息的词典:

We attack tomorrow!
你可以用额外的单词填充词典,但是你如何选择填充?如果您使用的是现有的固定词典,那么如果词典中没有单词,您会怎么做?拼写错误怎么办

我甚至还没有开始接触到这种方法是如何很有可能弄脏信息的。正如你所说,英语有一套语法规则,有些词更经常出现在句末,有些词更经常出现在句首,看看用作索引的数字,你可能会对其进行统计分析,并排除词典中“不太可能”使用的词

我相信这方面还有很多其他问题,但我只是一个密码初学者,我想不出还有其他问题


密码学中有一句格言:“你很容易创造一个你自己无法破解的密码,你很难创造一个别人无法破解的密码”

实际上,你通常想要一个MAC电脑来防止主动攻击,通过验证MAC电脑,攻击者可以轻松地检查密钥。除非密钥来自低质量密码,否则无法强制执行现代加密(可能的密钥太多)。但是在密码的情况下,KDF应该比语法检查更昂贵,所以你的想法在这种情况下也没有用。我不认为有任何问题使用字典lokup来表示WRD。@Charles标签有什么问题?@danijar,它以前在过去的清理过程中被烧掉了。这是一个可怕的小元标记,收集了乞求“理解”问题的人提出的问题。你可以使用自然语言处理中的标记技术,但所有这些统计分析都会让暴力变得非常昂贵,不是吗?这本词典必须修好,否则会泄露信息。所以你是对的,对于不包含的单词,必须有一个变通方法。不过,我现在无法判断这是否会使实现变得不可能。我不知道这是否会很昂贵,但我知道人们解决加密方案的字母替换版本是为了好玩(通常完全是在他们的头脑中)。@danijar正如CodesInChaos指出的,暴力强迫已经非常昂贵了——事实上,它是如此昂贵,以至于让它变得更昂贵没有任何实际好处。