【问题标题】:AES256 Network Traffic - How does padding affect size?AES256 网络流量 - 填充如何影响大小?
【发布时间】:2011-11-05 19:38:34
【问题描述】:

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

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

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

我用谷歌搜索了很多,但没有找到与此相关的内容;这导致我相信我可能对这一切的工作方式有很大的误解,或者我的问题是独一无二的(我对此表示怀疑)。

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

【问题讨论】:

    标签: cryptography aes padding


    【解决方案1】:

    在 CBC 模式下,您需要将所有消息填充到下一个块边界。您还需要在每条消息中发送 IV。与长消息相比,短消息的开销显然更大。

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

    如果您有很多短消息,那么 CTR 模式可能会给您带来值得节省的信息。或者将大量短消息捆绑成一条较大的消息进行加密。

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

    【讨论】:

    • 甚至,nonce 可以是隐式的(例如,为连接协商一次,然后通过某个消息编号为各个消息派生)。
    【解决方案2】:

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

    【讨论】:

    • 我实际上考虑了几个流密码。 en.wikipedia.org/wiki/… 我只是对它们不太熟悉。我想是时候改变它了。
    • 知道有流密码的优秀库吗? OpenSSL 的选择相当有限。
    • 选择了 HC-256 并留下了一个例子,因为我在 C++ 的任何地方都找不到它stackoverflow.com/questions/7227908/…
    猜你喜欢
    • 2013-03-19
    • 2021-08-30
    • 2011-02-27
    • 2023-03-22
    • 2017-05-24
    • 2022-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多