【问题标题】:Gaining extra security by using longer ciphertext通过使用更长的密文获得额外的安全性
【发布时间】:2011-03-14 19:24:23
【问题描述】:

我需要使用 256 位密钥加密纯文本消息。

密文可以是任意长度(不等于明文长度)

当我允许密文更长时,是否有一种加密方法可以为我提供额外的安全性?

例如:将 256 位明文编码为 8192 位密文会比将其编码为 256 位密文更安全。

【问题讨论】:

    标签: security language-agnostic encryption


    【解决方案1】:

    从理论上讲,没有办法通过将明文加密为更长的密文来获得任何额外的优势。如果我天真地尝试通过尝试所有可能的解密密钥来破坏您的加密,那么密文的长度并不重要,因为我仍在对相同的密钥空间进行暴力搜索。在实践中,这可能会有所帮助,因为它会减慢我尝试反转加密的速度,但使用更长的密文不会获得额外的安全性。

    这样做的原因是破解密码(不攻击密码本身)的困难在于尝试探索整个密钥空间以进行解密。如果您的密文较长但仍可使用 256 位密钥解密,那么我必须搜索的空间不会比我开始时的空间大。

    现在,如果您通过某种方式引入更大的密钥空间(例如,通过选择四个随机密钥并用每个密钥加密消息的不同部分)使密文更长,那么您确实会获得额外的安全性,因为空间我在尝试解密消息时必须搜索的密钥现在大大增加了。

    【讨论】:

    • 你的最后一段是错误的。通过用不同的密钥加密不同的消息片段,密钥空间并没有显着增加。它一点也不大。
    • @GregS- 你能详细说明一下吗?你很可能是对的,但我不明白为什么。我的理解是,如果我使用多个密钥对消息进行编码,而没有一个密钥足以解码整个消息,则需要搜索更大的密钥空间。这是不正确的吗?
    • 这具体取决于消息,但通常消息的熵会相当低。知道消息的前半部分会泄露很多关于后半部分的信息。使用多个密钥的好处是微乎其微的。你最好用 N 个密钥依次加密整个消息。还要考虑它只是一个小的计算障碍。当您谈论 128 或 256 位加密时,添加两个密钥只会使工作量加倍。总共进行 129/257 位加密。另外,如果有人能够破解 AES256 一次,他们可能能够破解两次。 :)
    • @AltF4- 这是一个很好的观点,但我正在考虑一些系统,其中验证您是否正确解密消息的唯一方法是在最后一个块中使用某种校验和会验证它。毕竟,很难知道您是否正确地将一个块解密为原始文本,或者您是否只是随机最终得到了一个错误的密钥来解密为有意义的文本。在这种情况下,在获得完整消息之前,您无法知道是否成功解密了任何内容。这个系统在那种情况下可以工作吗?
    【解决方案2】:

    添加随机填充可能是个好主意,它可以确保相同的加密消息每次都会产生不同的密文(这样您就无法通过查看密文来判断消息是否相同)。

    但是 8192 位似乎有点过头了。总共 512 个额外的 256 个就足够了。

    添加任何非随机内容根本不会提高安全性。

    【讨论】:

      【解决方案3】:

      不,至少没有任何意义。 256 位足以使用(例如)带有 256 位密钥的 AES。块大小固定为 128 位。 AES 是历史上研究最仔细的密码之一,但仍然没有任何方法可以对它进行实际攻击。您通常希望在消息中包含一个 IV,但它实际上并不是加密消息本身的一部分(而且它是一个额外的块大小,因此如果您使用 AES,它将是额外的 128 位)。

      【讨论】:

        猜你喜欢
        • 2017-07-24
        • 1970-01-01
        • 2020-11-16
        • 1970-01-01
        • 2015-05-14
        • 2014-01-22
        • 1970-01-01
        • 2020-08-23
        • 2012-05-30
        相关资源
        最近更新 更多