Modes-of-Operation

使用 XTEA 在 OMAC1/CMAC 中生成子密鑰?

  • September 16, 2015

到目前為止,我發現的所有 CMAC 實現都使用具有相同密鑰和塊大小的塊密碼。但是,XTEA 使用 128 位密鑰對 64 位塊進行加密。如果E_XTEA(key,block)是加密函式並且k是我的主密鑰,CMACk0從全零塊生成一個臨時密鑰:

k0 = E_XTEA(k,0)

CMAC 派生另外兩個與和k0具有相同長度的k0密鑰。這種推導使用了一個“完全由塊中的位數決定”的常數k1``k2``C

有兩個問題:

  • k是 128 位長,但是k0k1只有k264 位長,因為它們取決於 64 位加密函式的輸出。
  • 真的是C由塊大小而不是密鑰大小決定的嗎?

我的假設是E_XTEA(k,0)用來生成一個偽隨機塊,我可以用它k0 = concat(E_XTEA(k,0),E_XTEA(k,1))來生成一個大小合適的偽隨機塊。但我不知道這是否正確或C選擇哪個。

看看鍵位如何 $ K_1 $ 和 $ K_2 $ 在CMAC中使用(pdf,第 6.2 節):

  1. 如果 $ M_n^* $ 是一個完整的塊,讓 $ M_n = K_1 \oplus M_n^* $ ; 否則,讓 $ M_n = K_2 \oplus (M_n^*||10^j) $ , 在哪裡 $ j = nb-Mlen-1 $ .

它們使用 XOR 與消息塊組合。因此,它們的長度必須等於密碼的塊大小,而不是密鑰大小(如果不同)。

類似地,那麼, $ C $ 由塊大小決定。

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