Hash
在簡單雜湊和 HKDF 之間進行選擇以派生用於 MAC 的第二個密鑰
我有一個加密函式,它採用單個加密密鑰並加密數據,但也包含一個 HMAC。所以我需要從加密密鑰中派生第二個密鑰以將其用於 HMAC。
您建議使用 sha256 或 HKDF 之類的簡單雜湊來驅動第二個密鑰,為什麼?
哪個更好,為什麼?
但是我對這些細節並不嚴格,如果簡單的雜湊沒有嚴重的缺陷,我會使用它,因為它看起來更簡單。
HKDF論文詳細回答了這個問題。尤其是第 8 節似乎是最相關的。
但也許你會發現這些解釋非常技術性。為了幫助你一點,一般的味道是這樣的:幾乎所有現代密碼算法的安全性都是推測性的——我們沒有無條件的證據證明它們實際上是安全的,而是以如下形式論證:
- 啟發式:“許多非常優秀的密碼分析員試圖破解算法,但沒有成功。”
- 條件證明:“如果你能破解這個算法,那麼你就能破解這個我們認為是安全的更簡單的建構塊。”
您建議使用 SHA-256 和 HKDF 之間的區別歸結為 HKDF 更加謹慎和悲觀。在您的應用程序中,我們沒有證據表明 HKDF 比 SHA-256 更安全,但 HKDF 安全性的論據比 SHA-256 的論據更好,因為與您使用普通 SHA 相比,它們依賴的未經測試的前提更少和/或更弱-256 會。
但也完全有可能簡單的 SHA-256 在這個應用程序中是安全的。你想賭它嗎?(到目前為止,許多系統都成功了。)
因此,將其應用於您的評論:
但是我對這些細節並不嚴格,如果簡單的雜湊沒有嚴重的缺陷,我會使用它,因為它看起來更簡單。
…要注意的是,您正在向後看問題-您建議使用簡單的雜湊,除非有人可以向您證明它不安全(可能不是!)。但是密碼學家看待它的方式是,您不應該使用散列函式,除非您能闡明一些好的(即使不確定)為什麼它是安全的原因(例如,通過推測 SHA-256 的行為類似於隨機預言)。