【密码学】消息认证

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

具体步骤如下:

  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,只要他们有原始数据。

相关推荐
sun0077003 小时前
ubuntu dpkg 删除安装包
运维·服务器·ubuntu
oi773 小时前
使用itextpdf进行pdf模版填充中文文本时部分字不显示问题
java·服务器
吃肉不能购4 小时前
Label-studio-ml-backend 和YOLOV8 YOLO11自动化标注,目标检测,实例分割,图像分类,关键点估计,视频跟踪
运维·yolo·自动化
学Linux的语莫5 小时前
Ansible使用简介和基础使用
linux·运维·服务器·nginx·云计算·ansible
qq_312920115 小时前
docker 部署 kvm 图形化管理工具 WebVirtMgr
运维·docker·容器
Onlooker1295 小时前
云服务器部署WebSocket项目
服务器
学Linux的语莫5 小时前
搭建服务器VPN,Linux客户端连接WireGuard,Windows客户端连接WireGuard
linux·运维·服务器
legend_jz5 小时前
【Linux】线程控制
linux·服务器·开发语言·c++·笔记·学习·学习方法
黑牛先生5 小时前
【Linux】进程-PCB
linux·运维·服务器