如果我可以保证我永远不会对同一个块进行两次加密,那么欧洲央行是否安全?

信息安全 加密
2021-08-20 02:36:48

在阅读了分组密码的操作模式后,我发现基本上所有关于 ECB 的讨论都以:“永远不要使用 ECB”结尾。例如这个安全 stachexchange 答案但是我的理解是,只有当你可以发送同一个区块两次时,欧洲央行才是不安全的。那么,如果我能保证我不会两次发送同一个区块,那么使用 ECB 是否安全?

例如,假设我有一个家庭自动化系统,其中有许多可以容纳不到 8 个字节的命令。然后,我将一个唯一的 8 字节消息 ID 附加到该数据以形成一个 16 字节块。然后我使用 AES128 加密这个块。因此,我永远不会发送相同的消息两次,因为我从未期望给出超过 2^64 个命令。另外,假设我使用计数器作为消息 ID,那么我也会防止重放攻击。

1个回答

“永远不要使用欧洲央行模式”通常是可靠的建议。不是因为 ECB 永远无法安全使用,而是因为几乎所有使用 EBC 构建的密码系统都会以确保它被严重破坏的方式使用它。有趣的是,我看到人们选择 ECB 的最常见原因(当他们这样做时)他们选择它是因为它不需要 IV 或 nonce,这使得它的实现稍微简单一些。

也就是说,您的理解(以及评论中链接的其他问题的答案)是正确的。如果您从不重复键/块组合,则可以在您的场景中安全地使用 ECB 模式。可以安全地加密同一块消息两次(例如,如果您重置计数器并重新开始),但此时您必须切换到新密钥。在静态密钥下,您绝对不能两次发送相同的消息是正确的。

此外,请注意CodesInChaos 的评论如果在任何时候加密消息可能被篡改,您需要一个 MAC 来确保其完整性。