Aes
GCM 中 AAD 的最大長度是多少?
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} $ 字節。我的問題:
- 的長度是否有實際限制
AAD
,或者這只是特定於實現的限制?- 從理論上講,我可以輸入
AAD
任意長度的 an 嗎?
從GCM 規範:
附加驗證數據 (AAD),表示為 A。此數據經過驗證,但未加密,並且可以在 $ 0 $ 和 $ 2^{64} $ .