Aes

GCM 中 AAD 的最大長度是多少?

  • May 3, 2017
int mbedtls_gcm_starts( mbedtls_gcm_context *ctx,
               int mode,
               const unsigned char *iv,
               size_t iv_len,
               const unsigned char *add,
               size_t add_len )
{
   int ret;
   unsigned char work_buf[16];
   size_t i;
   const unsigned char *p;
   size_t use_len, olen = 0;

   /* IV and AD are limited to 2^64 bits, so 2^61 bytes */
   if( ( (uint64_t) iv_len  ) >> 61 != 0 ||
       ( (uint64_t) add_len ) >> 61 != 0 )
   {
       return( MBEDTLS_ERR_GCM_BAD_INPUT );
   }
}

以上是GCM(Galois/Counter Mode)實現的一部分mbedtls

AAD實現對(附加認證數據)的長度進行了限制,即長度AAD不能大於 $ 2^{61} $ 字節。

我的問題:

  1. 的長度是否有實際限制AAD,或者這只是特定於實現的限制?
  2. 從理論上講,我可以輸入AAD任意長度的 an 嗎?

GCM 規範

附加驗證數據 (AAD),表示為 A。此數據經過驗證,但未加密,並且可以在 $ 0 $ 和 $ 2^{64} $ .

引用自:https://crypto.stackexchange.com/questions/47134