Pseudo-Random-Function

使用 HMAC 作為偽隨機函式時是否需要密鑰輪換?

  • March 11, 2022

我需要從一些使用者數據中生成一個確定性標識符。其中一個使用者數據項是高度敏感的,而另外兩個則不是。標識符將定期發送給外部方,因此將來不得更改 - 即相同的輸入應該始終在將來產生相同的輸出。

偽隨機函式 (PRF) 似乎是解決此問題的理想方法。我們使用 Google Tink 庫進行加密操作。它提供了一個帶有多種實現算法的PRF 原語,其中之一是 HMAC-SHA-512。此實現使用 512 位密鑰,該密鑰在密鑰加密密鑰下加密儲存。

傳統觀點似乎是,如果您擁有任何類型的加密密鑰,則必須定期輪換。然而,旋轉 PRF 的密鑰似乎違背了它的目的。PRF 應該是確定性的,但旋轉密鑰會破壞確定性。

在這種情況下是否需要定期輪換 HMAC-SHA-512 密鑰,或者我們可以無限期地使用原始密鑰?

選擇(和/或觀察)實施 HMAC-SHA-512 的黑盒的輸入和觀察輸出對於固定的適當大的隨機密鑰將不允許找到密鑰,或以其他方式預測其他輸入的輸出。這是完整的消息驗證碼的定義。據我們所知,HMAC-SHA-512 是一個不錯的選擇,包括對於合適的密鑰大小(例如至少 256 位熵)的假設加密相關量子電腦。因此,在該攻擊模型下,不,沒有必要輪換適當大且隨機的 HMAC-SHA-512 密鑰。

但是,否則密鑰仍然可能洩漏。也許將密鑰注入黑匣子的人使用了受損設備,或者將副本保存在不安全的位置,或者受到橡膠軟管密碼分析某種變體的影響。或者,也許密鑰是從具有足夠設備的盒子中提取的:例如,如果黑盒子是用標準微控制器實現的,也許可以連接一個 JTAG 探針並轉儲它的內容;或者也許可以使用一些聰明的顯微鏡來發現記憶細胞的狀態;盒子功能的功耗/電磁發射洩漏密鑰;或精心設計的故障注入允許這樣做。因此,在其他攻擊模型下,是的,輪換密鑰是件好事。

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