Hash
通過 SHA-256ing 將 256 位隨機數轉換為 192 位隨機數然後截斷它是否安全?
我希望通過計算 SHA-256 雜湊然後將其截斷為 24 字節來從 256 位 nonce 派生一個 192 位 nonce,以表現得像一個近似均勻隨機生成的 192 位 nonce,因此足以使用它例如作為 XChaCha20-Poly1305 加密的隨機數。這個對嗎?如果是,也許有人可以勾勒出正式的論點,如果不是,解釋這種方法的問題?
我希望通過計算 SHA-256 雜湊然後將其截斷為 24 字節來從 256 位隨機數派生出 196 位隨機數,以表現得像一個近似均勻隨機生成的 196 位隨機數
$$ … $$
實際上,我們不需要呼籲截斷的 SHA-256 是隨機的;我們可以訴諸抗碰撞性。即使我們允許對手控制 256 位隨機數(規定我們不讓對手重複隨機數),如果他們表現出實際能力,可以找到一對不同的此類隨機數,它們會在您的方案中發生衝突,那麼他們的攻擊將意味著對 192 位截斷的 SHA-256 進行相應的實際碰撞發現攻擊。
截斷的 SHA-256 被認為與截斷的輸出大小允許的一樣安全,因此您的策略應該沒問題。