Aes
計數器生成的 AES-GCM 隨機數
我正在嘗試為 AES-GCM 生成隨機數。我知道人們通常通過 Counters 和 LFSRs 生成它。我對計數器的含義感到困惑。那是指計數器(CTR)嗎?為什麼它可以生成唯一的 nonce?
計數器儲存值,通常具有清除、設置和遞增功能。通過使用具有足夠大小的整數或使用 Java
BigInteger
或用於 C/C++ 的 Gnu/GMP 之類的庫,可以非常輕鬆地在軟體中實現計數器。
clear()
使所有位為零:unsigned int counter=0
set(y)
將計數器值設置為y
:counter = y
increment()
將目前值增加 1;counter++
對於 GCM,需要 32 位計數器和總共 128 位的 CTR 模式計數器和 96 位隨機數。
取一個 128 位無符號整數並初始化為零。然後GCM會像這樣使用它 $ J_0 = IV || 0^{31} ||1 $ 所以在執行過程中,你需要複製計數器,將 32 左移,然後與
0x01
.