Hmac
使用 sha(secret + rand) 的安全性
我遇到了一些安全實現,其中 A 方將計算 MD = sha256(secret + rand) 並將 MD 和 rand 傳輸給對方 B。如果第二方知道秘密,那麼當它計算 sha256(secret + rand) 時,它將與發件人 A 匹配並對其進行驗證。
這可能是一個沉重的問題,但這是否安全?意思是,給定結果雜湊和隨機數,攻擊者是否很難發現秘密?
第 2 部分:另一個可能載入的問題 使用密鑰作為“數據”來代替使用 hmac 是否更安全/更不安全?那麼 HMAC(rand, secret) ?
兩個安全系統的目標是確保 A 和 B 都擁有相同的密鑰 K 而不會傳輸它,但是哪個更安全?這些實現是“傳統的”還是更多的“線索”?
在這裡使用 HMAC 更加原則和靈活,因為帶有隨機密鑰的 HMAC 是偽隨機函式,而
sha256(secret + nonsecret)
不是。在您的非機密是隨機值的情況下,可能沒有安全差異。但我也提到了靈活性,因為這種身份驗證方案——當使用像 HMAC 這樣的適當偽隨機函式實現時——不需要隨機值。計數器或掛鐘時間就可以了。事實上,如果你見過那些顯示每分鐘更改的六位數程式碼的雙因素身份驗證令牌或應用程序,它們是基於TOTP 算法的,基本上是
hmac(secret, current_time / refresh_interval)
.