Hash
完整性受損 - HASH 已修改
眾所周知,雜湊是使用者驗證密碼學完整性的方法。我有一個關於散列的查詢。
假設中間攻擊者操縱數據並使用相同的散列算法(因為散列算法是通用算法)創建新的 HASH(通過對操縱的數據執行算法)並將其與操縱的數據一起發送給接收者。當接收者執行操縱數據的算法,它得到相同的雜湊(由攻擊者創建的雜湊),儘管完整性將被驗證。但實際數據已被操縱/修改,完整性受到損害。
是否可以?如果有可能我們如何消除這個問題(相同的解決方案)?
事實上,散列用於確保完整性,但不是這樣。
您想到的似乎是發送
(msg, Hash(msg))
. 實際上,由於您描述的攻擊,這並不安全。第一步從你自己說的話開始:
散列算法是通用算法
這個名字不是通用的,而是公開的,這意味著任何人都知道它。我們將使用 MAC ( Wikipedia:MAC )代替散列算法,它是一個帶有 key的散列算法。一個廣泛傳播的 MAC 結構是 HMAC:
HMAC(msg,key1,key2) = H( key1 || H(key2||msg) )
其中 H 是一個加密散列並且||
是連接。如果我們阻止對手知道我們使用的密鑰,他就無法在修改消息後重新計算 MAC。所以現在我們只需要MAC 密鑰的隱私,這是另一個挑戰,您可以使用密鑰交換協議(通常:Diffie-Hellman)來解決它,如果您有中間人,則可能使用身份驗證,並且很快 …
通常,出於您所說的原因,雜湊本身並不用於完整性。為了使它們更強大,我們獲取散列並使用
private key
發件人的 加密它。這樣,任何擁有發件人的人都public key
可以解密散列並將其與消息的新散列進行檢查,但中間人無法偽造它,因為他們沒有發件人的private key
.這稱為數字簽名。