假设我得到了一条消息A,我使用密码P加密它到我的加密消息B中,在B的存储过程中,我使用AES对它进行加密。所以我收到了一个与B非常相似的消息B‘。
如果我用正确的P解密B‘,我会得到与A相似的解密按摩A吗?
发布于 2014-12-21 22:28:18
这更多的是一个操作方式的问题,而不是使用的分组密码。有些模式只会翻转一位(CTR),但也有一些模式会随机化所有位(BiIGE),例如OpenSSL所支持的。密文中位错误对明文的影响的密码学性质称为错误传播。
CTR是一种计数器模式。它创建的密钥流只使用底层块密码的加密功能--根本不使用解密功能。这个密钥流甚至可能是预先计算出来的,或者是由特定偏移量生成的.纯文本使用密钥流简单地进行异或编辑,以生成密文。解密过程与加密过程完全相同(具有相同值的双XOR是标识函数:a^k^k= a)。因此,CTR的设计只有一个小的改变。
另一方面,BiIGE是专门设计来产生一个随机的明文,如果只有一位密文被改变。BiIGE的意思是双向无穷无尽的扩展.换句话说,它的目的是传播错误,并确保明文的第一部分也被混淆。BiIGE要求您对每个明文块使用两次分组密码,因此效率不高。
至于欧洲央行,CBC,CFB,OFB都有不同的错误传播特性,但它们都是虚实的,所以我甚至不会列出它们。
但是,通常,如果您想避免明文中的更改,只需保护密文不受更改。这可以通过在密文上使用MAC或HMAC添加身份验证标记,如果通过不安全的通道进行通信,则可以添加IV。还有一些身份验证模式,如GCM和EAX,它们会自动创建身份验证标记。MAC、HMAC和认证模式提供了密文的完整性和真实性。
GCM、EAX和CCM只是在内部使用CTR模式;身份验证标记已经提供了足够的保护:验证将在使用明文之前失败(如果应用得当)。
维基百科是这样写的:
在广泛使用消息认证码和认证加密之前,通常会讨论将“错误传播”属性作为操作模式的选择标准。例如,可以观察到,发送的密文中的一个块错误将导致欧洲央行模式加密的重构明文中的一个块错误,而在CBC模式下,该错误将影响两个块。 一些人认为,在面对随机错误(如线路噪声)时,这种弹性是可取的,而另一些人则认为,纠错增加了攻击者恶意篡改信息的范围。 然而,当使用适当的完整性保护时,这样的错误将导致(高概率)整个消息被拒绝。如果需要抵抗随机错误,则在传输前应将纠错码应用于密文。
因此,BiIGE 使用不多并不会让您感到惊讶。StackOverflow上的大多数问题甚至答案中的代码没有创建身份验证标记,这一点也不会让您感到惊讶,即使确实需要使用它。
https://stackoverflow.com/questions/27591912
复制相似问题