社群發現一項錯誤,指出 AMD Zen 2 處理器的 rdrand16 指令無法產生零值。儘管該指令正確輸出了資料,但會錯誤地將進位旗標設為零以表示發生錯誤。此錯誤特別影響 Zen 2 上的 rdrand16 指令,而 rdrand32 則運作正常。問題在於產生零值時進位旗標會錯誤地被設定,導致軟體不必要地重試,而非完全無法產生該值。這是在先前微碼更新修復了該指令總是返回全一(-1)的問題之後發生的。這項發現突顯了硬體隨機數產生器在安全應用中的潛在可靠性問題。雖然其實際影響可能有限,因為這些值通常用於為軟體 CSPRNG 提供種子而非直接使用,但它提醒我們硬體層級熵源可能存在瑕疵。

事件背景

硬體隨機數產生器(HRNG)從處理器中收集物理熵來建立不可預測的值。這些值通常用於為加密安全偽隨機數產生器(CSPRNG)提供種子,然後由後者為軟體應用程式產生高速隨機串流。如果 HRNG 存在偏差或錯誤,可能會影響所種子化之 CSPRNG 的安全性或效能。

社群觀察

社群成員指出這並非 Zen 2 上的第一個 RNG 錯誤,他們回憶起先前 rdrand 總是返回 -1 的問題。部分用戶在 Ryzen 5 3600 處理器上確認了此錯誤,而其他人則建議在對安全性要求高的內容中使用可擴展輸出函數(XOF),以減輕單一來源熵瑕疵的影響。