如果我有一个例如 8 位的有效负载并且我想使用 AES 128 对其进行加密,我将需要添加一些随机填充以使明文长度为 128 位。这种填充是否会影响 AES 的安全性?
对于非常小的有效载荷大小,AES 128 加密是否很弱?
信息安全
加密
AES
2021-08-14 07:07:50
2个回答
由于 AES 是具有 128 位块的分组密码,根据定义,它只能处理 128 位条目。要将其变成一个可以加密和解密任意长度消息的系统,那么您需要使用一种操作模式。每种模式都有自己的要求。大多数将需要一个不得重复使用的IV (如果您使用相同的密钥加密了多条消息,则每条消息都需要其自己的特定 IV),并且某些模式有额外的要求(例如,在 CBC 中,随机选择 IV 至关重要, 统一, 并且以任何选择要加密的数据的人都无法预测的方式)。
某些模式还需要“填充”,以防输入消息长度在某些方面不合适。一些模式可以处理任意长度的输入数据(例如 CTR),而其他模式需要数据的长度是块长度的倍数(例如 CBC)。
大多数需要加密的攻击模型很容易变成主动攻击模型,攻击者不仅要检查数据,而且还可能修改数据。因此,无论何时使用加密,通常也需要完整性。将加密和MAC结合起来是一项艰巨的任务,因此强烈建议使用结合了这两种功能的模式。截至 2016 年初,安全结合加密和 MAC 的最标准模式是GCM。
如果你做的每件事都正确,那么输入数据很短就没有额外的问题。短数据在例如 SSH 连接中很常见。
但请注意,虽然加密保护了数据内容,但它往往会泄露数据长度。根据您发送的数据类型,其长度可能会向外界透露大量信息。
不要使用随机填充。在解密端无法检查随机填充,因为它可以是任何东西。随机填充为主动攻击者提供了额外的力量(在 SSL/TLS 中,请参阅POODLE 攻击,它利用 SSL 3.0 中的随机填充)。相反,如果需要填充,请使用接收器可以检查的确定性填充。不需要填充的模式更可取,因为在解密端更容易正确处理它(即,在发送无效消息时不会泄漏信息)。
总结:使用 GCM。
其它你可能感兴趣的问题