ssl的消息已經是加密的了,為何還要MAC,難道還有人會修改消息嗎?如果怕有人修改消息,加一個摘要不就可以了嗎?為何還要mac呢?這是怕有人離線攻擊,我們可以信任協定本身,但是卻不能信任加密算法,特别是ecb加密算法。
MAC=HASH[shared-key,serial-num,data],mac可以防止重播攻擊和保持資料的完整性,并且即使使用ecb加密算法導緻被猜出了一部分内容,攻擊者也無法重新計算mac值,因為她沒有密鑰,如果僅僅使用一個摘要是做不到的,特别在非分組加密算法比如序列加密算法中,攻擊者有各種方式不必知道密鑰而通過部分密文知道部分明文,如果她通過各種詭異的手段知道了一部分消息明文并且修改了它們,她就很可能有更詭異的方式計算出其摘要值,然後用更更詭異的方式替換掉原始包。然而使用mac的話,她隻要不知道密鑰就無法做到這一切,并且,mac的計算中有一個因子是序列号,這還可以防止重播攻擊,是以ssl中的mac最大程度保護了資料記錄的完整性,而使用密鑰加密則保證了資料記錄的保密性。
總之,MAC的安全性在于引入了保密的私鑰來計算摘要,理論上隻要對私鑰的窮舉攻擊是可能的,那麼對mac的攻擊就是可能的,隻是更慢些罷了,這種辦法一般采用離線的方式進行,是以最好的保護措施就是不斷的更新密碼,在離線攻擊成功之前把密碼改掉,不給攻擊者任何機會。另外,沒有另外了...
本文轉自 dog250 51CTO部落格,原文連結:http://blog.51cto.com/dog250/1271761