在信息安全领域中,常见的信息保护方法分为加密和认证两大类。认证技术又分为对用户的认证和对消息的认证两种方式。用户认证用于鉴别用户的身份是否是合法用户;消息认证就是验证所收到的消息确实是来自真实的发送方且未被修改的消息,可以验证消息的准确性。

消息认证实际上是对消息本身产生的一个冗余的信息即消息验证码(MAC)。消息认证码Message authentication code)是一种确认完整性并进行认证的一种技术,简称MAC。密码学中,消息认证码指的是通信实体双方使用的一种验证机制,保证消息数据完整性的一种工具。消息认证码是一种带密钥的哈希函数,它本质上是一个哈希函数,那为什么要带密钥呢?是因为消息在传输过程中是可以被篡改,哈希值也可以被篡改,因此为了保证这个哈希值的有效性,通过加密的方式将哈希值保护起来,这样在接收方接收到消息后就可以通过这个哈希值来判断整条消息的完整性,从而达到信息传递的目的。

消息认证码步骤如下图所示

1)发送者与接收者事先共享密钥K(上图中的KEY1KEY2值保持一致)。

2)发送者根据消息计算MAC值(使用密钥KEY1对原始消息计算MAC1)。

3)发送者将原始消息和MAC1发送给接收者

4)接收者根据收到的原始消息计算MAC2(使用密钥KEY2

5)接收者将自己计算出的MAC2与从发送者收到的MAC1比对

6)如果MAC一致,接收者可以判定消息的确来自接收者(认证成功)且没有被篡改或者出现传输出错的情况;如果不一致,可判断消息不是来自发送方(认证失败)

注意:建议发送方和接收方将密钥KEY存放于硬件安全模块中,计算MAC值的过程最好也放到硬件安全模块中完成,这样可以保证密钥的安全,例如放到加密芯片中。

©著作权归作者所有:来自51CTO博客作者李阿淇的原创作品,如需转载,请注明出处,否则将追究法律责任

你的鼓励让我更有动力

赞赏

0人进行了赞赏支持

更多相关文章

  1. 快手私信xml消息名片图文卡片逆向破解如何制作生成?
  2. 一文彻底搞清 Kafka 的副本复制机制
  3. Docker_学习笔记系列之docker-secret
  4. 数据不撒谎,Flink-Kafka性能压测全记录!
  5. 【修订版】一文看懂Kafka消息格式的演变
  6. Kafka日志清理之Log Compaction
  7. RabbitMQ演讲稿(精简版)
  8. 消息中间件选型分析
  9. Kafka的Lag计算误区及正确实现

随机推荐

  1. 005. 最长回文子串 | Leetcode题解
  2. 大家好 这就是2018年的我~
  3. Linux环境都没有,怎么学编程?憋说了,肝!(保姆
  4. 006. Z 字形变换 | Leetcode题解
  5. eruda 一个被人遗忘的调试神器
  6. Linux性能优化(五)——性能监控工具
  7. 小姐姐对不喜欢的男孩到底有多残忍?
  8. 007. 整数反转 | Leetcode题解
  9. 专属开发者的福利,1000刀+的羊毛在等你
  10. 008. 字符串转换整数 (atoi) | Leetcode