【问题标题】:How to utilize AAD in GCM cipher using BouncyCastle lightweight API如何使用 BouncyCastle 轻量级 API 在 GCM 密码中使用 AAD
【发布时间】:2016-03-16 21:35:57
【问题描述】:

在加密期间,为 MACing 添加 AAD 似乎只是使用 AEADParameters。但我不清楚我以后可以从哪里获得这块 AAD。

我认为processAADBytes 很可能是我正在寻找的。 processAADBytes

如果实现支持,这将是一个在线操作 并且不会保留相关数据。

我对此感到困惑。我对这种方法有两种可能的解释:

  1. 这是在加密期间传入 AAD 的另一种方式(除了AEADParameters),并且 AAD 不会与密文一起存储。
  2. 这是一种在解密期间验证 AAD 的方法。 AAD(来自其他地方)需要在此处输入以进行 MAC 验证。

我原以为会找到像getAAD() 这样的方法。所以我猜这个密码根本不存储AAD和密文,只是对我们声称是AAD的数据提供MAC验证?

【问题讨论】:

    标签: java encryption cryptography bouncycastle aes-gcm


    【解决方案1】:
    1. 这是在加密期间传入 AAD 的另一种方式(除了 AEADParameters),并且 AAD 不会与密文一起存储。

    没错,通常AEADParameters 的处理方式与processAADBytes 中的数据相同。 AAD 可能并不总是必须在 *1 前面提供,它可能包含大量数据(尽管通常不会)。这意味着processAADBytesAEADParameters 更灵活,因为它允许流式传输并且不需要同时缓冲所有 AAD。

    另一方面,AEADParameters 可能对向后兼容很有用,并且可能是更高效/更简洁的设计。

    1. 这是一种在解密期间验证 AAD 的方法。 AAD(来自其他地方)需要在此处输入以进行 MAC 验证。

    嗯,是的,通常是这样,但您也可以在这里使用AEADParameters

    所以两者都是正确的。是的,您需要确保消息的接收者接收(和/或能够生成)AAD。


    *1 EAX 允许随时提供 AAD,如果您在加密/解密开始后提供 AAD,GCM 需要额外的计算(模幂运算!)。 CCM 需要所有 AAD 预先。如果可以,您应该在加密/解密之前提供所有 AAD。

    【讨论】:

      猜你喜欢
      • 2016-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-05
      • 2014-03-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多