Encryption

具有 256 位密鑰的 RFC 4493 (AES-CMAC) 算法

  • May 27, 2020

我為新手的問題道歉。如果我要使用 256 位密鑰和 AES256(假設我有函式而不是 AES128,那麼函式 xor_128、leftshift_bit、generate_subkey 等中的 for 循環長度將保持為 16 正確嗎?因為 AES256 也返回 128 -位結果

範例 xor_128 函式

void xor_128(unsigned char *a, unsigned char *b, unsigned char *out)
{
     int i;
     for (i=0;i<16; i++)
     {
         out[i] = a[i] ^ b[i];
     }
 }

rfc4493 中的 AES-CMAC 算法

AES 具有 128、192 和 256 位密鑰大小,並且始終為 128 位塊大小。它們通常寫成 AES128、AES192 和 AES256。塊大小是隱含的,因為它始終為 128。

基本函式xor_128用於支持x-or消息塊、密文塊和密鑰的CBC-MAC操作。無論密鑰大小如何,塊大小始終為 128。

rfc4493 沒有提到 AES192 或 AES256。這並不意味著不能使用除 AES128 之外的任何其他設備。rfc4493 僅提供 AES128 的測試程式碼。

NIST 在 NIST 中提供測試向量:分組密碼操作模式 -用於 AES128、AES192 和 AES256 身份驗證的 CMAC 模式。

Generate_Subkey算法還需要xor-128派生密鑰,因為密鑰xored與塊一起。這可以從程式碼中看出

 Step 4.  if flag is true                                        
          then M_last := M_n XOR K1;                             
          else M_last := padding(M_n) XOR K2;

常數是相同的,標準可以在 NIST 800-38B 中找到:建議分組密碼操作模式:用於身份驗證的 CMAC 模式

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