消息认证
消息认证
消息认证函数(三种函数)
一、哈希函数(跳转www.)
任意长的M ——> 定长的哈希值,哈希值是认证符。
二、消息加密(又分成2种)
整个消息 ——> 密文,密文是认证符。
1、对称密码:
上图中,如果消息是随机序列,那么无法判别是否被篡改。
于是,增加了FCS(校验和 / 错误检测码)在末尾:
(a)内部错误控制;
(b)外部错误控制。
.
(a)更难篡改,因为FCS被加密了;
而(b)的FCS暴露在外,很容易构造出正确的FCS。
2、公钥密码:
(b)仅有保密性;
(c)仅有认证;
(d)既有保密性,也有认证,但是公钥算法一共执行4次。
三、消息认证码(MAC) [重点]
又称 “**校验和”
消息和** ——> 定长的值,此值是认证符。
MAC算法不需要的可逆性,而加密算法必须可逆。
.
一般而言,MAC直接附在明文后面比较好(符合霍顿原则)。
(a)认证;
(b)认证+保密性,MAC与明文捆绑;
(c)认证+保密性,MAC与密文捆绑
.
(b)优点:更安全,正常人的选择。
(c)优点:可以先检验认证,无误后,才会解密,节省资源。
必须使用MAC的情形:
- 将同一消息广播给很多接受者。 只有一个人检验MAC,其他人直接解密,如果发现MAC出错,这个人发出警报给所有人。必须用(b)才行。
- 接受者负荷大。 随机选择消息验证MAC。(对称密码必须解密每条密文,不然读不了,解密的同时也就验证MAC了)
- MAC附在明文后面,每次验证MAC不用解密。(对称密码想验证MAC,只能通过解密密文)
补充:
由于双方共享**,故MAC不提供数字签名。(既然发送者能用**加密,一定是自己人)
消息认证的要求
可能的攻击:
保密性:泄露;传输分析
完整性:内容修改;顺序修改;计时修改(延时和重放)
认证:伪装
不可否认性:发送方否认;接收方否认
.
消息认证 对付完整性和认证的攻击。
消息认证码的要求
1、弱抗碰撞性
2、无法穷举明文
3、算法对消息的任一部分的认证,都不应比其他部分弱(木桶原理)
.
.