ssl的消息已经是加密的了,为何还要MAC,难道还有人会修改消息吗?如果怕有人修改消息,加一个摘要不就可以了吗?为何还要mac呢?这是怕有人离线攻击,我们可以信任协议本身,但是却不能信任加密算法,特别是ecb加密算法。
MAC=HASH[shared-key,serial-num,data],mac可以防止重放攻击和保持数据的完整性,并且即使使用ecb加密算法导致被猜出了一部分内容,攻击者也无法重新计算mac值,因为她没有密钥,如果仅仅使用一个摘要是做不到的,特别在非分组加密算法比如序列加密算法中,攻击者有各种方式不必知道密钥而通过部分密文知道部分明文,如果她通过各种诡异的手段知道了一部分消息明文并且修改了它们,她就很可能有更诡异的方式计算出其摘要值,然后用更更诡异的方式替换掉原始包。然而使用mac的话,她只要不知道密钥就无法做到这一切,并且,mac的计算中有一个因子是序列号,这还可以防止重放攻击,因此ssl中的mac最大程度保护了数据记录的完整性,而使用密钥加密则保证了数据记录的保密性。
总之,MAC的安全性在于引入了保密的私钥来计算摘要,理论上只要对私钥的穷举攻击是可能的,那么对mac的攻击就是可能的,只是更慢些罢了,这种办法一般采用离线的方式进行,因此最好的保护措施就是不断的更新密码,在离线攻击成功之前把密码改掉,不给攻击者任何机会。另外,没有另外了...