Chacha

用於 MAC 生成的 Poly1305 密鑰

  • February 6, 2020

我剛剛瀏覽了https://www.rfc-editor.org/rfc/rfc7539#section-2.6(第 2.5 和 2.6 節)。那裡描述瞭如何使用 ChaCha20 塊函式生成一次性 Poly1305 密鑰(為此需要 96 位隨機數)。

我在問自己,與僅使用用於 ChaCha20 塊功能的密鑰相比,這如何“更好”或“更安全”。

你在評論中寫道:

不,我只對使用 Poly1305 生成 MAC 感興趣,該密鑰總是為每次執行MAC 函式時新生成的。密鑰是使用具有共享 DH 密鑰的 HKDF 和每次執行的隨機值(例如nonce)派生的。

在您提到它的同一個 RFC 中(引用 Bernstein 的論文):

原文(

$$ Poly1305 $$) 標題為“The Poly1305-AES message-authentication code”,那裡的 MAC 功能需要一個 128 位 AES 密鑰、一個 128 位“附加密鑰”和一個 128 位(非秘密)隨機數。AES 用於加密隨機數,以便獲得一個唯一(和秘密)的 128 位字元串,但正如論文所述,“這裡的 AES 沒有什麼特別之處。可以用 任意密鑰函式替換 AES任意一組隨機數到 16 字節的字元串。”

現在你有了 HKDF,它是一個鍵控函式、一個 nonce 和一個可以做成 16 字節的輸出。我說:去吧,但不要將密鑰用於其他任何事情,包括 ChaCha20 加密或更糟,計算另一個身份驗證標籤。

只是為了保證:請為 HKDF 使用 SHA-256 或更好。那麼它應該同樣安全。


請記住,您現在處於未知領域。這意味著使用庫來實現這種功能將更加困難,例如,與僅使用 ChaCha20/Poly1305 密碼的 AAD 來計算 MAC 相比。

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