对于非常小的有效载荷大小,AES 128 加密是否很弱?

信息安全 加密 AES
2021-08-14 07:07:50

如果我有一个例如 8 位的有效负载并且我想使用 AES 128 对其进行加密,我将需要添加一些随机填充以使明文长度为 128 位。这种填充是否会影响 AES 的安全性?

2个回答

由于 AES 是具有 128 位块的分组密码,根据定义,它只能处理 128 位条目。要将其变成一个可以加密和解密任意长度消息的系统,那么您需要使用一种操作模式每种模式都有自己的要求。大多数将需要一个不得重复使用的IV (如果您使用相同的密钥加密了多条消息,则每条消息都需要其自己的特定 IV),并且某些模式有额外的要求(例如,在 CBC 中,随机选择 IV 至关重要, 统一, 并且以任何选择要加密的数据的人都无法预测的方式)。

某些模式还需要“填充”,以防输入消息长度在某些方面不合适。一些模式可以处理任意长度的输入数据(例如 CTR),而其他模式需要数据的长度是块长度的倍数(例如 CBC)。

大多数需要加密的攻击模型很容易变成主动攻击模型,攻击者不仅要检查数据,而且还可能修改数据。因此,无论何时使用加密,通常也需要完整性。将加密和MAC结合起来是一项艰巨的任务,因此强烈建议使用结合了这两种功能的模式。截至 2016 年初,安全结合加密和 MAC 的最标准模式是GCM

如果你做的每件事都正确,那么输入数据很短就没有额外的问题。短数据在例如 SSH 连接中很常见。

但请注意,虽然加密保护了数据内容,但它往往会泄露数据长度根据您发送的数据类型,其长度可能会向外界透露大量信息。

不要使用随机填充。在解密端无法检查随机填充,因为它可以是任何东西。随机填充为主动攻击者提供了额外的力量(在 SSL/TLS 中,请参阅POODLE 攻击,它利用 SSL 3.0 中的随机填充)。相反,如果需要填充,请使用接收器可以检查的确定性填充。不需要填充的模式更可取,因为在解密端更容易正确处理它(即,在发送无效消息时不会泄漏信息)。

总结:使用 GCM。

不,填充不会影响 AES 的安全性。
常用于CBC等模式,PKCS#7 padding尤其流行。

但是,如果您需要填充您的信息,那么您很可能做错了什么。
首先,您可以使用 CTR 模式来摆脱填充消息的必要性,其次,无论如何您都应该使用经过身份验证的加密(例如AES- GCM)。