消息鉴别码的原理与应用

  • 消息鉴别码可以确认自己收到的消息是否就是发送者的本意,也就是说,使用消息鉴别码可以判断消息是否被篡改,以及是否有人伪装成发送者发送该消息。消息鉴别码实现鉴别的原理是,用公开函数和密钥产生一个固定长度的值作为认证标识,用这个标识鉴别消息的完整性。使用一个密钥生成一个固定大小的小数据块,即MAC,并将其加入到消息中,然后传输。接收方利用与发送方共享的密钥进行鉴别认证等。

一、消息鉴别码的定义:

  • 消息鉴别码(MAC)是一个概率多项式时间算法的三元组(Gen,Mac,Vrfy),满足几点:
    ①密钥产生算法 Gen:
    输入参数1^n,输出密钥k,其 中 |k|≧n
    ②标记生成算法 Mac:输入密钥 k 和消息 m∈{0,1}, 输出标记 t,该算法是随机的,记作
    在这里插入图片描述
    ③校验算法 Vrfy:输入密钥 k、消息 m 和标记 t,输出比特位 b, b=1 意味着有效,b=0 则无效,不失一般性,假设Vrfy算法是确定的,有
    在这里插入图片描述
    对任意 n,Gen(1^n)输出的k,以及每一个 m∈{0,1}
    ,满足
    在这里插入图片描述
    使用MAC 验证消息完整性的具体过程是:假设通信双方 A 和 B 共享密钥 K,A用消息认证码算法将 K 和消息 M 计算出消息验证码 Mac,然后将 Mac 和 M 一起发送给 B。B 接收到 Mac 和 M 后,利用 M 和 K 计算出新的验证码 Mac*,若Mac*和Mac 相等则验证成功,证明消息未被篡改。
    由于攻击者没有密钥 K,攻击者修改了消息内容后无法计算出相应的消息验证码,因此 B就能够发现消息完整性遭到破坏。

MAC的保护机制:

首先在参与通讯的双方间通过秘密信道共享一个密钥K,双方通过公开信道通讯时(这里使y用Alice和Bob分别代表参与通讯的两方),Alice如果要传送一个消息给Bob,首先将这一消息使用MAC生成算法和共享密钥 K计算出一个认证标记,称为MAC值,然后将此标记附加在这一消息之后一起传送给Bob接收后,Bob使用MAC验证算法和共享密钥 K 计算接收到消息的认证标记,并和他所接收到的标记进行比较.如果两个标记相同,MAC验证 算法 输 出 为1,Bob就认 为消息在传送过程中没有被未经授权的篡改;如果两个标记不相同,MAC 验证 算法 输 出为0,Bob就认为消息在传送过程中被篡改了.MAC的保护机制过程如图1所示.

在这里插入图片描述

在安全性方面,一个安全的 MAC 算法要满足三个条件

(1)抗碰撞性
(2)消息鉴别码在其空间内均匀分布
(3)消息验证码的一个或一些比特不能弱于其他比特

满足以上三个条件的消息验证码能够防止穷举搜索攻击,攻击者也无法成功伪造一个消息验证码。由于哈希函数能够满足以上消息验证码算法的安全需要,并且计算开销较小,所以消息验证码很多采用的是带密钥的哈希函数算法。

二、消息鉴别码的应用

  • 消息认证是指通过对消息或者消息有关的信息进行加密或签名变换进行的认证,目的是为了防止传输和存储的消息被有意无意的篡改,包括消息内容认证(即消息完整性认证)、消息的源和宿认证(即身份认证0)、及消息的序号和操作时间认证等。它在票据防伪中具有重要应用(如税务的金税系统和银行的支付密码器)
  • 消息认证所用的摘要算法与一般的对称或非对称加密算法不同,它并不用于防止信息被窃取,而是用于证明原文的完整性和准确性,也就是说,消息认证主要用于防止信息被篡改。
    消息认证中常见的攻击和对策:

重放攻击:截获以前协议执行时传输的信息,然后在某个时候再次使用。对付这种攻击的一种措施是在认证消息中包含一个非重复值,如序列号、时戳、随机数或嵌入目标身份的标志符等。

冒充攻击:攻击者冒充合法用户发布虚假消息。为避免这种攻击可采用身份认证技术。

重组攻击:把以前协议执行时一次或多次传输的信息重新组合进行攻击。为了避免这类攻击,把协议运行中的所有消息都连接在一起。

篡改攻击:修改、删除、 添加或替换真实的消息。为避免这种攻击可采用消息认证码MAC或hash函数等技术。

消息鉴别码现已广泛应用于各类Internet协议,如IP Security(IPsec)、SWIFT、Secure
Shell(SSL)/Layer Security(TLS)、Simple Network Management
Protocol(SNMP)等。此外,很多标准化组织也开始了消息验证码的标准化工作。

(1)SWIFTSWIFT是于1973年成立的一个组织,其目的是为了国际银行间的交易保驾护航。该组织成立时候有15个成员国,2008年时已经发展到208个成员国。银行和银行之间是通过SWIFT来传递交易消息的。而为了确保消息的完整性以及对消息进行验证,SWIFT中使用了消息认证码。在使用公钥密钥进行密钥交换之前,消息认证码所使用的共享密钥都是由人来进行配送的。

(2)IPsecIPsec是对互联网基本通信协议IP协议增加安全性的一种方式。在IPsec中,对通信内容的认证和完整性校验都是采用消息鉴别码来完成。

(3)SSL/TLSSSL/TLS是我们在网上购物等场景中所使用的通信协议。SSL/TLS中对通信内容的认证和完整性校验也使用了消息鉴别码。

三、 消息鉴别码的实现方法

  • 1.使用单向散列函数实现

    使用SHA-2之类的单向散列函数可以实现消息鉴别码,其中一种实现方法称为HMAC。

  • 2 使用分组密码实现

    使用AES之类的分组密码可以实现消息鉴别码。
    将分组密码的密钥作为消息鉴别码的共享密钥来使用,并用CBC模式将消息全部加密。此时,初始化向量是固定的。由于消息鉴别码不需要解密,因此将除最后一份分组意外的密文全部丢弃,而将最后一个分组用作MAC值。由于CBC模式额最后一个分组会受到整个消息以及密钥的双重影响,因此可以将它用作消息鉴别码。例如,AES-CMAC就是一种基于AES来实现的消息鉴别码。

  • 3.其他实现方法

    使用流密码和公钥密码也可以实现消息鉴别码。

  • [1] 谢瀛慧.消息鉴别码和数字签名安全性的比较[J].信息安全与技术,2014,5(06):27-28+56.
    [2] 陈圆. LTE 网络接入认证协议研究[D]. 西安电子科技大学, 2015.
    [3] 徐津,温巧燕,王大印.一种基于Hash函数和分组密码的消息认证码[J].计算机学报,2015,38(04):793-803.
    [4] https://blog.csdn.net/chengqiuming/article/details/82822907

  • 3
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值