【密码学】消息认证

可以用"信封+印章"来类比消息认证的过程。假设你要给远方的朋友写一封信。为了确保信件的内容不被他人篡改或者冒充,你会采取一些措施来保证信件的真实性与完整性。

具体步骤如下:

  1. 撰写信件:你写下了一封信,内容是你和朋友约定的见面时间地点。

  2. 密封信封:你将信纸折好放入信封内,然后用蜡封住信封口。这相当于对消息进行了封装,防止在传输过程中被随意打开或修改。

  3. 加盖印章:在蜡封上,你使用互相认可的印章(比如你们都是某一个组织的,组织给每一个组织成员都发了个印章)盖印。这个印章只有你们有,因此别人无法复制。这就相当于添加了一个消息认证码(MAC),用来证明这封信是自己人发给来的,并且在传输过程中没有被篡改。

  4. 信使传递:你将这封信交给信使,让他送到你朋友那里。信使不知道信封里的内容,但他知道信封上的印章是你的。

  5. 收信与验证:当你的朋友收到信时,他会检查信封上的印章是否匹配。如果印章正确无误,他就知道这封信确实是出自你手,且在途中没有被打开过或内容被改动。这就完成了消息的认证,确保了信件的真实性和完整性。

一、什么是消息认证?

消息认证(Message Authentication),也称为数据源认证,是信息安全领域的一个关键概念,主要涉及验证接收到的数据是否真实无误地来源于声称的发送方,以及数据在传输过程中是否未被篡改 。消息认证确保了信息的完整性真实性防止中间人攻击、重放攻击等安全威胁。

**消息认证的目的:**消息认证的主要目的是验证消息的完整性和确认消息的来源。它确保消息在传输过程中未被篡改,并且来自声称的发送方。

【注】在消息认证之前,收发双发就已经通过某种方式建立了信任关系,并且共享了密钥。这里更确切的说,我可以和一群人建立信任关系,我们都共享了密钥,所以消息认证并不能让我知道我收到的消息到底是谁发来的,我只知道是我信任的人(持有密钥的人)发给我的。

二、实现消息认证的方式

(1)消息认证码 MAC

消息认证码(Message Authentication Code,简称MAC)是消息认证的一种实现方式,它通常基于共享密钥,由发送方使用密钥和消息内容生成一个短的固定长度的值,然后将这个值附加在消息后面一起发送。接收方收到消息后,使用同样的密钥和消息内容重新计算MAC值,然后与接收到的MAC值进行比较,以此来验证消息的真实性和完整性。

MAC的主要特性包括:

  1. 完整性:MAC能够检测出传输过程中的任何更改,无论是无意的错误还是恶意的篡改。

  2. 真实性:由于MAC是使用共享密钥计算的,所以只有持有相同密钥的实体才能生成有效的MAC,这保证了消息来源于持有正确密钥的实体。

  3. 机密性:MAC本身并不提供对消息内容的加密,但是它可以与加密技术结合使用,以实现同时保护消息的隐私和完整性。

(2)消息检测码 MDC

消息检测码(Message Detection Code,简称MDC)是一种用于检测数据是否发生变化的校验码,但与消息认证码(MAC)不同的是,MDC不提供数据源的身份验证或保密性。MDC主要用于检测数据在传输过程中是否发生了非故意的改变,例如由噪声、干扰或其他物理因素引起的错误。它不提供防止恶意篡改的功能,因为任何人都可以生成正确的MDC,只要他们有原始数据。

相关推荐
甲鱼9297 小时前
MySQL 实战手记:日志管理与主从复制搭建全指南
运维
YuMiao1 天前
gstatic连接问题导致Google Gemini / Studio页面乱码或图标缺失问题
服务器·网络协议
碳基沙盒2 天前
OpenClaw 多 Agent 配置实战指南
运维
Sinclair4 天前
简单几步,安卓手机秒变服务器,安装 CMS 程序
android·服务器
Rockbean5 天前
用40行代码搭建自己的无服务器OCR
服务器·python·deepseek
蝎子莱莱爱打怪5 天前
Centos7中一键安装K8s集群以及Rancher安装记录
运维·后端·kubernetes
茶杯梦轩5 天前
CompletableFuture 在 项目实战 中 创建异步任务 的核心优势及使用场景
服务器·后端·面试
海天鹰6 天前
【免费】PHP主机=域名+解析+主机
服务器
DianSan_ERP6 天前
电商API接口全链路监控:构建坚不可摧的线上运维防线
大数据·运维·网络·人工智能·git·servlet
呉師傅6 天前
火狐浏览器报错配置文件缺失如何解决#操作技巧#
运维·网络·windows·电脑