【问题标题】:Can a cipher be shorter than the original text?密码可以比原始文本短吗?
【发布时间】:2020-07-16 19:05:06
【问题描述】:

我正在阅读 Jean-Philippe Aumasson 所著的《Serious Cryptography》一书,在书的开头有一条注释说:

“对于某些密文,密文与明文的大小相同;对于另一些,密文略长。但是,密文永远不会比明文短。”

这对我来说似乎不正确,因为我不明白为什么密码也不能压缩它正在加密的文本。例如,我可以创建一个密码,其中每个字母映射到字母表中的 1 个字母,除了单词“THE”映射到 1 而单词“IS”映射到 2。

使用此密码对文本“The cat is old”进行加密将产生“1 dbu 2 pme”,它比原始文本短。有什么我遗漏的吗?

编辑:我还想将我接受的纯文本输入限制为仅包含字母。

【问题讨论】:

  • 那将是一种编码,而不是一种加密。您需要一个密码本:“1 THE; 2 IS”以及加密密钥。您需要考虑密码本的大小以及密文的大小。如果没有密码本,您的“1 dbu 2 pme”将毫无意义或模棱两可。不同的密码本:“1 A/AN; 2 ISN'T”给出了不同的含义:“猫不老”。
  • 编写只做一件事并做好的程序。如果您有任何特定的用例,您仍然可以使用压缩算法,然后对压缩后的明文进行加密。解压器可以从解密后的文本中工作,但不能反过来,因为密文的熵非常低,无法进行有效的进一步压缩。

标签: encryption cryptography


【解决方案1】:

通常加密作用于无法压缩的输入。应该可以输入任何类型的消息。由于大多数现代密码都是面向位/字节的,这意味着所有可能的特定位/字节大小的消息都是可能的。

请注意,现代密码应该是 IND-CPA 安全的。这意味着任何相同大小的消息都应该返回无法区分的密文。如果您有一组特定的消息可以增加密文,那么显然它们可以与其他消息区分开来。而且由于鸽子洞原理,对于所有可能的消息,当然不可能有更小的密文。

如果您的消息集较小,可以使用压缩算法来压缩特定类型的消息。但是,您应该记住,生成的密文的大小可能会将信息泄露给对手。对压缩音频流或 HTTPS 连接的攻击当然不仅仅是理论上的威胁,它们都太实际了。

请注意,即使没有压缩,密文大小总是会泄露有关明文的信息。由于上述原因,明文所包含的信息毕竟必须少于特定密文大小所能编码的信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-20
    • 1970-01-01
    • 1970-01-01
    • 2023-03-03
    • 1970-01-01
    相关资源
    最近更新 更多