IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 【信息保护论】Ch8. 合法认证 Message Authentication Code -> 正文阅读

[网络协议]【信息保护论】Ch8. 合法认证 Message Authentication Code

MAC(Message Authentication Code)

注意这里的MAC不是计算机网络中的MAC地址,而是信息认证码。对于一个加密后的消息,我们通常需要确认两点,第一点是其完整性,信息是否被篡改过;第二段是其出处,来源是否是合法对象,使用认证技术。
在这里插入图片描述
MAC:拥有【来自真正发信者】的性质,确定机密性,并对信息来源进行认证的代码。输入是信息和共享的密钥而输出是固定长度是固定的。MAC与哈希函数相似,区别在于哈希函数不需要使用密钥,而MAC需要使用密钥来获取输出。

在这里插入图片描述
MAC认证过程:A向B事前共享密钥,A用该密钥计算MAC值,然后将该MAC值通过安全途径送达B处。而此后与A交互时,在传输加密消息之前,直接通过明文形式传输这一段固定的信赖信息,该信赖信息由于是一般途径自然可能被篡改或伪造,此时用已经共享的密钥对其进行计算,计算得到的MAC值与从安全渠道获取的MAC值相比较,如果相同则证明来源确实是A没错,否则该信息是伪造的。

那么这里存在一个问题,这个安全的渠道是什么?这就又回到上一篇博文讲过的密钥配送问题了,详细内容请看一下上一篇博文的密钥配送问题。典例有公钥加密、 Diffie-Hellman 、KDC等。


MAC使用的例子:

  1. SWIFT: Society for Worldwide Internet Financial
    Telecommunication,翻译为国际间银行通信协会。银行与银行之间交换交易信息时使用MAC。
  2. Ipsec:为IP协议安全而诞生,通信内容的完整性和认证都使用了MAC。
  3. SSL/TLS:Web 网购时使用的协议,同样使用MAC保证通信内容的完整性和认证。

MAC的实现:

  1. 利用SHA-1&MD5 等单方向哈希函数生成的MAC——HMAC。
  2. 利用块加密技术3DES/AES等生成的MAC。将块加密的密钥当做MAC的密钥使用,用CBC模式加密所有信息,因为在MAC中没有解密的必要,因此最后的加密结果当做MAC值,此外的部分舍弃掉。
  3. 此外还有流加密和公钥加密两种方式可以实现。

认证加密

认证密码,英文简写为AE或AEAD,从2000年开始进行研究,是将对称加密与MAC相结合形成的同时保证机密性、完整性和认证的结构。

  • Encrypt-then-MAC
    在这里插入图片描述
    IPsec中使用,可以阻止选择密文攻击。将明文通过对称加密加密成密文后,将密文当做输入计算MAC值,然后组合密文与MAC值。选择密文攻击可以用密文生成任意对应的明文,但是由于最终加密结果并不仅仅是密文,因而无法解密出正确的明文。
  • Encrypt-and-MAC
    在这里插入图片描述
    SSH是使用该方式的典例。使用同一个密钥加密。
  • MAC-then-Encrypt

在这里插入图片描述
SSL是使用这种方法的典例。先计算MAC值并与明文结合后再加密。

  • GCM(Galois/Counter Mode):是认证模式的一种。将与AES相同的128位块数据利用CTR模式计算MAC值。为此需要使用反复加法和反复乘法的哈希函数。由于CTR模式的特性,可以并发处理数据进而提高整体加密效率,此外CTR和MAC计算使用的是同一个密钥,因此管理便利。
  • GMAC(Galois/Counter Mode MAC):GCM专用的MAC。

HMAC

在这里插入图片描述

HMAC是利用单方向哈希函数生成的MAC,上图是不同版本HMAC对应使用的哈希函数。根据RFC 2014的定义,HMAC生成公式如下。
在这里插入图片描述
生成过程:
在这里插入图片描述

步骤操作
1key padding 生成,用0填充密钥到与块加密长度相等的长度
2经过填充的key与ipad异或运算
3②与明文结合
4计算③哈希值
5①密钥与opad异或运算
6与④得到的哈希值结合
7计算⑥的哈希值

针对MAC的攻击

  1. 再传送攻击:replay attack。用实现保存的真正的mac值进行反复传输的一种攻击。
    看下面一个例子:
    黑客监听了A与B的通信,A与B都是银行。黑客在AB银行都有自己的账户,黑客在A银行制作一个信赖信息【向B银行的M账户存款10万元】,B银行的M账户也是他自己的账户。A银行将此信赖信息的MAC值计算后,附加到信赖信息内发给B银行,B银行将收到的信息计算MAC值比较两个MAC值,确定是正确无误的信赖信息。而黑客监听该流程从而得到了信赖信息和MAC值,然后,黑客将此组信息重发给B银行,B银行收到后,会验证MAC值,计算出了正确的结果,从而系统上会再给黑客B银行的账户增加十万元额度。由于是系统操作,因此只要使用过一次现金入账,此后就可以无限次重发该消息,令B银行无限次给自己进行“存款”。
    应对策略:
  • 序号(sequence number):为每次发送上述消息组增加一个序号并设置最大序号。该消息组每发一次便计数器+1,如果受到再传送攻击,则会是N个序号为x的消息组,则会被认定为假。
  • 时间戳(timestamp):发送的信息组会记录当前时刻,当受到再传送攻击时,会收到 复数组同一已经过去的时刻发来的信息组。要求收发双方要提前将时钟同步。
  • nonce:nonce是服务器产生的随机数,当客户端第一次发出请求时,获取nonce,将其与原文一起进行加密,进行发送。服务器使用同样的算法进行加密,与客户端发送过来的密文进行对比,若用户名一样则证明消息的有效性。若发现该nonce在数据库中已经存在,则该请求可能为恶意请求。但是随机数本身有可能会重复,因此可以结合上述两点来使用。
  1. 推测攻击:针对MAC本身的攻击有暴力解码和生日攻击。需要使考虑的单方向性、抗碰撞性、密钥生成时的伪随机数生成器等。
  2. 否认(repudiation):虽然收到明文并计算出了对应的MAC,但是无法证明 这一组重组信息是真的来自于合法用户,因为只要有密钥,就能生成对应正确的MAC。如果有多个合法用户持有一个密钥,则不能保证该合法用户不被另一个合法用户恶意攻击。举个例子,ABC三人,A偷了B的东西被C看到了,在此情况下A打死不承认该事件,由于没有证据,因而C的证言不能排除恶意攻击A的可能性,因此无法证明A是真的小偷。因此该弊端需要一项其他技术来解决。
  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-09-09 12:08:14  更:2021-09-09 12:09:54 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年6日历 -2024/6/18 19:30:01-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码