【问题标题】:In (FIPS PUB-197) AES-128 cipher, how many unique 128 bit cipher keys are required, if my plain-text is divided into N 128 bit blocks?在(FIPS PUB-197)AES-128 密码中,如果我的纯文本被分成 N 个 128 位块,需要多少个唯一的 128 位密码密钥?
【发布时间】:2020-08-21 04:06:32
【问题描述】:

我在互联网上找到的所有关于 AES-128 算法的描述都是关于输入 128 位明文,该明文经过 11 轮转换以生成 128 位密文。我的问题是:

由于要发送的实际消息可能不仅仅占用一个 128 位“块”,我是否需要为我从消息中生成的每个 128 位块使用唯一密钥,以使用 AES-128 进行加密,或者我可以为每个 128 位块使用相同的密钥吗?

在为论文(期刊)创建算法时我需要这些信息,因此我在使用 AES-128 时需要科学正确,它构成了我的算法的一部分。

【问题讨论】:

  • 长话短说,您使用mode of operation 将像AES 这样的分组密码转换为流密码。
  • 正如其他人所说,您需要密码模式。您只需要一把钥匙。如果您不需要身份验证,请使用 CBC 模式或 CTR 模式。对于身份验证,请使用 GCM 模式。您可能还需要对消息的最后一个块进行填充。除非您有理由不这样做,否则请使用 PKCS#7 填充。

标签: java encryption cryptography aes encryption-symmetric


【解决方案1】:

您可能想看看Block_cipher_mode_of_operation

如果您对每个块使用相同的密钥,则您使用的是电子密码本 (ECB)。但是不推荐这种操作方式。

更安全的方法是 Galois/Counter 模式或 Cipher 块链接模式。有关更多信息,请阅读 wiki 文章。

【讨论】:

  • 上面的答案是一个指向正确概念的指针,用于考虑如何加密多个块。由于您将 FIPS 197 用于 AES,因此您可能应该通过“g”查看 NIST SP800-38a 以了解 AES 的各种“操作模式”的规范。 要非常小心,有很多方法可以攻击密码学的_uses_,在您花了很长时间了解基本攻击之前,很容易意外暴露自己到攻击。在 AES 所谓的“包装模式”的上下文中,请务必至少了解“填充预言”攻击。
【解决方案2】:

我不熟悉 FIPS PUB-197,但我知道 AES 的安全属性。

AES 是一种分组密码,所有分组密码的建模方式都使得即使您知道密文和明文也无法推断出密钥。使用此属性,您可以得出结论,即使攻击者知道部分明文和密文,对多个块使用相同的密钥也是完全安全的。当密码学家想要在像 AES 这样的算法中找到漏洞时,他们会在密码分析之后出现此属性。

此外,如果您有 11 轮 128 位密钥,则您没有 AES,但有其他东西。

【讨论】:

    猜你喜欢
    • 2016-05-26
    • 1970-01-01
    • 2016-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-17
    • 2020-04-15
    相关资源
    最近更新 更多