Hash
單向認證的 MD5 有多安全?
我有一個帶有私有字元串 (PS) 的伺服器 S1 作為與伺服器 S2 共享的標識符。
每 10 分鐘 S1 發布 PS+目前時間的雜湊值,用作公共標識符 (PI)。每個人都可以在網際網路上看到 PI 的價值。由於 S2 有 PS 的值,他也使用 MD5 得到 PS+目前時間的雜湊值,並與 S1 發布的值進行比較,從而確定該值來自 S1。
我的解決方案正在執行,但我想知道它有多安全?S1 和 S1 之間共享的私有字元串 PS 看起來像
PS=KJGFDFGHJK65456789876RFBNJK567Y7654RFGHJhhhHGE457UHKJHCDFG7654RF hash=md5(hours time in millisecond+PS) PI=fe**63**7b00-1cf0-11e6-b**d**f4-08002**00**c9a66
我使用遮罩從雜湊中獲取一些值並使用它們來構造公共標識符。血液值是隨機值,不考慮辨識伺服器。如果有人收集了我幾天發布的密鑰,他是否有可能辨識出 S1 用於生成公鑰的私有字元串,或者密鑰可能來自 S1 而不是另一台伺服器?我希望你明白我的意思,我的密碼學知識非常基礎,我很難使用技術詞彙。
每 10 分鐘 S1 發布 PS+目前時間的雜湊值,用作公共標識符 (PI)。每個人都可以在網際網路上看到 PI 的價值。由於 S2 有 PS 的值,他也使用 MD5 得到 PS+目前時間的雜湊值,並與 S1 發布的值進行比較,從而確定該值來自 S1。
本質上,您將使用 MD5(M + K) 作為MAC。那是不安全的。
當散列函式缺乏抗衝突性時,將密鑰附加到消息然後散列的結構不是安全的 MAC ,就像 MD5 一樣。(從技術上講,您需要對壓縮函式進行碰撞攻擊。)
即使使用抗衝突雜湊(如 SHA-256)可能會使您所做的事情變得安全,但我還是建議使用真正的 MAC。例如,HMAC,您應該在幾乎任何程式環境中找到它的實現。