消息身份验证是检查收到的消息的真实性和完整性的过程,而且还可对消息的顺序性与时间性进行证明。消息认证期间的检验应含以下内容:
(1)证实消息的源和宿;
(2)消息内容之前有没有被偶然或故意篡改;
(3)消息的序号与时间先后。
总之,消息认证可让接收者辨出消息的源、内容的真假、时间性与信宿。这种认证仅在对应通信双方间实施,不让第三者进行。认证并非是实时的,可借助消息认证码(MAC)认证消息。
消息认证码也叫做密码校验与或MAC值。消息认证码的目的是确认完整性并认证。MAC算法输入随意长度消息输出确定长度的数据,这点和Hash函数类似,但与Hash函数不同的是,计算MAC值须持有共享密钥,无共享密钥的人不能计算MAC值。消息认证码正是用此性质实现认证的。除此之外,与Hash函数一样,就算消息有1bit的变化,MAC值也会出现变化,消息认证码用这一特性来达到确认消息完整性的目的。
消息认证码主要有基于Hash的MAC与基于分组密码的MAC。
1.基于分组密码的MAC
目前,大多数消息认证码都是基于分组密码的MAC,它们具有相对较短的输出MAC功能的位长,加密算法类似,不同的地方是MAC函数没有必要是可逆的,所以较于加密算法被攻破更不轻易,可有足够的安全性。
2. 基于Hash的MAC
为确保数据认证与数据完整性,也常用基于Hash的MAC算法得到消息认证码。