AES256网络流量 - 填充如何影响大小?

时间:2011-08-29 06:45:52

标签: cryptography aes padding

我通过AES256(CBC)加密连接发送二进制数据,该连接在加密之前进行压缩。我正在使用OpenSSL进行AES密码。

问题是,我需要以“随机”长度段来解密数据。这需要填充吗?如果是这样,我将如何区分填充和真实数据?密码是否具有一些内置功能来检测在解密时删除填充?网络流量中是否应该填充?

我试图避免有人发送248位数据,并且它没有及时读取服务器端,他们看到延迟(这是视频游戏)。

我搜索过很多内容并没有发现任何相关内容;这导致我相信我可能会对这一切是如何运作的,或者我的问题是独一无二的(我怀疑)。

这一切归结为:我是否必须担心填充/取消填充网络流量?

2 个答案:

答案 0 :(得分:1)

您将遇到的问题是,您只能对大小为块大小倍数的包进行解密和解密。据我了解你的问题,你希望与可以更小或其他尺寸(不是128位的倍数)的包进行“实时”连接。是否考虑过使用流密码?然后你可以加密任意大小的包。您也可以使用AES作为流密码,例如反模式。

答案 1 :(得分:1)

在CBC模式下,您需要将所有消息填充到下一个块边界。您还需要发送每个消息的IV。对于短消息而言,这种开销显然比使用长消息更多。

CTR模式将块密码转换为流密码。它不需要填充,并且IV由Nonce替换,Nonce可以(但不总是)比IV短。

如果你有很多短信,那么点击率模式可能会让你值得保存。或者将大量短消息捆绑成一个较大的消息进行加密。

填充通常具有非常严格的形式,可以自动识别和删除。