消息驗(yàn)證碼(Message Authentication Code,MAC)
消息驗(yàn)證碼與哈希算法
Hash算法的作用之一是完整性校驗(yàn)设捐,但不能確保消息是否被篡改(即只能確定發(fā)送過(guò)來(lái)的消息是完整的筋现,但不能確定是誰(shuí)發(fā)送的喻杈,是否被中間人篡改)勾栗。
消息驗(yàn)證碼則可以避免消息被篡改。
使用場(chǎng)景
傳遞的消息沒(méi)有必要加密,但需要確保消息是完整的并且沒(méi)有被篡改收厨。
消息驗(yàn)證碼算法的特點(diǎn)
- 證明消息沒(méi)有被篡改
- 證明消息是正確的發(fā)送者發(fā)送的晋柱,也就是消息是經(jīng)過(guò)驗(yàn)證的
如何確定消息是特定的發(fā)送者發(fā)送的?
在通信雙方可以維護(hù)同一個(gè)密鑰诵叁,只有擁有密鑰的通信雙方才能生成和驗(yàn)證消息驗(yàn)證碼雁竞。
消息驗(yàn)證碼的模型
MAC值 = mac(消息,密鑰)
MAC值一般和原始消息一起傳輸黎休,原始消息可以選擇加密或不加密浓领,通信雙方會(huì)以相同的方式生成MAC值,然后進(jìn)行比較势腮,如果兩個(gè)MAC值相同联贩,表示消息驗(yàn)證通過(guò);否則驗(yàn)證失敗捎拯。