【密码学】消息认证

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

具体步骤如下:

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

相关推荐
tingting011926 分钟前
Linux 普通用户禁用sudo su - 命令
linux·运维·服务器
WZF-Sang29 分钟前
Linux—进程学习-01
linux·服务器·数据库·学习·操作系统·vim·进程
IT-民工2111042 分钟前
CI/CD 实践总结
运维·ci/cd·自动化
写代码的学渣1 小时前
Linux云计算个人学习总结(一)
linux·运维·云计算
没有名字的小羊1 小时前
二.Linux文件与目录管理
linux·运维·服务器
头真的要秃啦2 小时前
Linux 无名管道
linux·运维·算法
陌上花开缓缓归以2 小时前
linux strace 查看程序异常问题总结
linux·运维·服务器
学Linux的语莫2 小时前
网络,三层交换机,TCP/UDP,ACL配置
运维·网络
wowocpp2 小时前
ubuntu 22.04 防火墙 ufw
linux·运维·ubuntu
zybox运维2 小时前
Linux服务管理-DHCP
linux·运维·服务器