【密码学】消息认证

        你发送给朋友一条消息(内容:明天下午来我家吃饭),这一过程中你不想让除你朋友以外的人看到消息的内容,这就叫做消息的机密性,用来保护消息机密性的方式被叫做加密机制。

        现在站在朋友的视角,某一天他收到了一封来信,他怎么知道消息是谁发给他的呢?(也许你想到了,签个名不就好了,但如果有人伪造我的签名给我朋友发消息怎么办),他怎么得知消息里面的内容是真实的呢?(万一有人篡改了消息内容:“后天早上来我家吃饭”)

        这时候我们想确保对消息内容的真实性和完整性(比如没有被篡改),也想确保消息来源的真实性(是我的朋友发给我的,不是其他别的什么人)。那么这就需要一种方式来对消息进行处理,用来保护消息的完整性,内容真实性和来源真实性,这种方式被叫做消息认证!

一、什么是消息认证?

        消息认证(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,只要他们有原始数据。

相关推荐

  1. 现代密码-认证消息认证

    2024-07-13 16:50:04       30 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-13 16:50:04       70 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-13 16:50:04       74 阅读
  3. 在Django里面运行非项目文件

    2024-07-13 16:50:04       62 阅读
  4. Python语言-面向对象

    2024-07-13 16:50:04       72 阅读

热门阅读

  1. Redis 中的跳跃表(Skiplist)基本介绍

    2024-07-13 16:50:04       22 阅读
  2. python的面向对象编程

    2024-07-13 16:50:04       22 阅读
  3. 单元测试有什么好处呢?

    2024-07-13 16:50:04       22 阅读
  4. Git使用介绍教程

    2024-07-13 16:50:04       20 阅读
  5. Python 使用总结之 docx 添加图片设置图片大小详解

    2024-07-13 16:50:04       24 阅读
  6. unity 学习笔记 UI

    2024-07-13 16:50:04       22 阅读
  7. py每日spider案例之tts制作接口

    2024-07-13 16:50:04       18 阅读
  8. 创建型模式-单例模式

    2024-07-13 16:50:04       19 阅读
  9. 云WAF在电子商务领域具体能提供哪些安全功能?

    2024-07-13 16:50:04       21 阅读