【问题标题】:Cryptography - AES and DES S-boxes密码学 - AES 和 DES S-box
【发布时间】:2013-09-04 06:05:22
【问题描述】:

我正在为大学做一些密码学修订练习(准备考试),这个问题让我很困惑:

大多数分组密码实现将 S-box 视为查找表。 DES 使用 8 个 S-box,每个 S-box 接收 6 位并输出 4 位。 AES 仅使用 一个 S-box,接收 8 位并输出 8 位。 需要多少存储空间 在每种情况下?

我……不知道?我不确定这个问题到底在问什么。我觉得我可能遗漏了一些关于存储和 s-box 的概念?

如果有人能对此有所了解,那就太好了! 谢谢。

【问题讨论】:

  • 这个问题似乎是题外话,因为它是关于密码学的。这个问题属于 crypto.stackexchange.com
  • 不是题外话 -> 实施细节

标签: cryptography aes des


【解决方案1】:

这似乎是一个奇怪的问题,但我认为我会这样处理它:

如果实现为查找表,它基本上只是一个数组,“查找”只是索引到数组中。

因此,数组元素的数量必须对应于输入可以采用的不同值的数量,例如如果 S-box 输入为 8 位,则有 28 = 256 个可能的输入值。

数组元素本身的大小对应于输出位数。现在,我们通常不能定义元素小于 8 位(1 字节)的数组,但我们假设可以对输出进行编码,这样我们就可以构造一个没有“浪费”空间的数组(就像会发生的那样)如果我们必须在 8 位数组元素中存储一个 4 位值)。

考虑到这一点,我们应该能够按如下方式计算存储量:

存储(以字节为单位)= S-box 数量 x 2输入位数 x(输出位数/8)

所以:

DES = 8 x 26 x (4 / 8) = 256 字节
AES = 1 x 28 x (8 / 8) = 256 字节

【讨论】:

  • 您好!谢谢你的回答。我认为这也是一个奇怪的问题。我只是想弄清楚你为什么将输出降低 8 倍? (如果答案很明显,很抱歉,但这是我的第一个密码学主题)
  • 除以 8 得到的结果是字节而不是位。
  • 当然可以。对,这是有道理的。我认为这个答案与他们在讲座中介绍的概念相匹配,所以我想我现在明白了!非常感谢你:)
  • 这就是我尝试在 Java 中使用 Byte.SIZE 而不仅仅是 8 的原因。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多