密码学入门——消息认证码

news2024/10/7 10:18:55

文章目录

    • 参考书目
    • 一、简介
    • 二、消息认证码的使用步骤
    • 三、消息认证码的应用实例
    • 四、消息认证码的实现方法
    • 五、认证加密
    • 六、HMAC

参考书目

图解密码技术,第三版

一、简介

使用消息认证码可以确认自己收到的消息是否就是发送者的本意,也就是说,使用消息认证码可以判断消息是否被篡改,以及是否有人伪装成发送者发送了该消息。

消息认证码(Message Authentication Code,MAC)是一种用于验证消息完整性和真实性的算法。它通过将消息和密钥作为输入,生成一个固定长度的代码,称为 MAC,来保证消息的完整性和真实性。MAC 算法通常使用对称密钥密码学算法,如DES、AES等,并且需要密钥的共享才能进行验证。

MAC 算法广泛应用于网络通信、数据存储、电子商务等领域,以保护数据的安全性和可靠性。在网络通信中,MAC 可以防止数据被篡改或冒充,确保数据的完整性和真实性。在数据存储中,MAC 可以防止数据被篡改或删除,保护数据的完整性和可靠性。在电子商务中,MAC 可以确保交易数据的完整性和真实性,防止数据被篡改或冒充,保护用户的隐私和安全。

可以认为,消息认证码是一种与密钥相关联的单向散列函数

二、消息认证码的使用步骤

在这里插入图片描述

三、消息认证码的应用实例

  1. SWIFT(略)
  2. IPsec(略)
  3. SSL/TLS

SSL/TLS是我们在网上购物等场景中所使用的通信协议。SSL/TLS中对通信内容的认证和完整性校验也使用了消息认证码。

四、消息认证码的实现方法

1.使用单向散列函数

使用SHA-2之类的单向散列函数可以实现消息认证码,其中一种实现方法称为HMAC,具体步骤我们将在下节介绍。

2.使用分组密码实现

使用AES之类的分组密码可以实现消息认证码。

将分组密码的密钥作为消息认证码的共享密钥来使用,并用CBC模式将消息全部加密。此时,初始化向量(IV)是固定的。由于消息认证码中不需要解密,因此将除最后一个分组以外的密文部分全部丢弃,而将最后一个分组用作MAC值。由于CBC模式的最后一个分组会受到整个消息以及密钥的双重影响,因此可以将它用作消息认证码。例如,AES-CMAC( RFC4493)就是一种基于AES来实现的消息认证码。

3.其他实现方法

使用流密码和公钥密码等也可以实现消息认证码

五、认证加密

认证加密,缩写为AE或AEAD。认证加密同时将对称密码和消息认证码相结合,同时满足机密性,完整性和认证三大功能的机制。

认证加密的方式

  1. Encrypt-then-MAC和Encrypt-and-MAC
  2. GCM与GMAC

GCM 是 Galois/Counter Mode 的缩写,是块密码的一种工作模式。它是一种广泛使用的认证加密算法,可以提供数据的机密性和完整性。

在 GCM 中,使用块密码(例如 AES)对明文进行加密。用于加密的密钥由发送方和接收方共享。除了加密之外,GCM 还生成一个认证标记,用于确保密文的完整性。认证标记是通过使用消息认证码(MAC)算法(例如 GHASH)生成的。

GCM 的工作原理是将明文分成块,然后使用密钥和 MAC 算法对其进行加密和认证。加密和认证是同时进行的,这使得 GCM 比其他需要单独进行加密和认证步骤的模式更快。

GCM 在网络安全协议(例如 TLS 和 IPsec)中常用于提供互联网上的安全通信。它还用于存储设备(例如硬盘驱动器和固态硬盘)中,以保护静止数据的安全。

六、HMAC

HMAC 的全称是“Keyed-Hash Message Authentication Code”,翻译为“带密钥哈希消息认证码”。它是一种常用的消息认证算法,用于验证数据的完整性和真实性。

HMAC 算法使用一个密钥和一个哈希函数(如 SHA-256)来对消息进行哈希计算。哈希函数将消息转换为一个固定长度的哈希值,而密钥则添加了一个额外的安全层。这样,即使攻击者知道哈希函数,也无法对消息进行篡改,因为他们没有密钥。

HMAC 算法的计算过程是将密钥和消息分别进行按位异或(XOR)运算,然后将结果输入到哈希函数中进行哈希计算。最终的 HMAC 值是哈希函数的输出,它被用作消息的认证标记,以确保消息的完整性和真实性。

HMAC 算法在计算简单、安全性高、广泛应用于网络安全协议中,例如 TLS、IPsec、SSH 等。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/740282.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

python实现压缩与解压(zlib)

本文将使用python的zlib与base64进行压缩与解压 其中base64模块用于对字节流与字符串的转换,zlib用于数据的压缩与解压 同时在后面附上在JS中遇到需要压缩解压的案例 解压代码: import base64 import zlibinput_string eJwlzT1OAzEQBeC7pJjSf1rHu0h…

yum方式安装mysql 8.0.33失败,缺少依赖包

配置网络源 [rootlocalhost yum.repos.d]# ping www.163.com PING z163picipv6.v.bsgslb.cn (61.184.215.68) 56(84) bytes of data. 64 bytes from 61.184.215.68 (61.184.215.68): icmp_seq1 ttl128 time13.2 ms 64 bytes from 61.184.215.68 (61.184.215.68): icmp_seq2 tt…

造船码头行车限位器与驾驶室控制柜无线通讯

随着我国海洋交通的快速发展,船舶信息化管理的建设,无线通信资源的配置,将先进的无线通信技术引入水上交通安全的监管业务中已是大势所趋。码头安装(设备和系统的安装) 船舶下水后常停靠于厂内舾装码头, 以安装船体设备, 机电设备&#xff0c…

第6集丨JavaScript 使用原型(prototype)实现继承——最佳实战3

目录 一、原型继承与属性拷贝1.1 功能说明1.2 功能测试 二、多重继承2.1 功能实现2.2 功能测试 三、寄生式继承四、构造器借用4.1 简单实现4.2 进化版4.2.1 功能实现4.2.2 案例测试 五、借用构造器和原型复制六 综合案例6.1 需求说明6.2 代码实现 一、原型继承与属性拷贝 1.1 功…

免费的音频转文字软件这么多,音频转文字软件推荐有哪些?

在一次音频转文字工作者的聚会上,艾米和迈克正在探讨如何提高他们的工作效率。他们都深知手动转录音频文件的困难和耗时,因此开始讨论是否有一种音频转文字软件可以推荐。 迈克:嘿,艾米!我们都知道,音频转…

Scratch 星际飞船

Scratch 星际飞船 本程序主要增加了背景切换功能,飞船跟随鼠标移动,接触到右边的方块时切换到下一张背景,切换后飞船移动到左边,左边的椭圆则相反。随机生成另外两种飞船角色为背景,接触到边缘后移除。 图形化程序如下…

【算法与数据结构】150、LeetCode逆波兰表达式求值

文章目录 一、题目二、解法三、完整代码 所有的LeetCode题解索引,可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、解法 思路分析:我们常看见的表达式是中缀表达式(关于中缀表达式的定义可以参考前缀、中缀、后缀表达式&am…

0经验也能轻松设计商标logo的方法

如今,越来越多的人开始创业,而拥有一个好看的商标就显得尤为重要。但是,很多人并不具备设计技能,对于商标设计也是一头雾水。不过,现在有了一键logo设计应用,即使零经验的人也能轻松设计出自己满意的商标。…

IoT开发者为王,涂鸦智能硬核“靠边站”

文 | 智能相对论 作者 | 沈浪 6月底,全球化IoT开发平台服务商涂鸦智能开了个TUYA开发者大会,面向行业传达了两个关键的信息点: 1. 当前IoT领域的行业竞争不再局限于技术、渠道的单一纬度,开始演化为整体的生态之争。 2. 紧随行…

STM32 Proteus仿真双机串口通讯同步电子时钟系统数码管显示 -0060

STM32 Proteus仿真双机串口通讯同步电子时钟系统数码管显示 -0060 Proteus仿真小实验: STM32 Proteus仿真双机串口通讯同步电子时钟系统数码管显示 -0060 功能: 硬件组成:本系统由2个设备组成 设备1:STM32F103R6单片机 8位数…

GaussDB OLTP云数据库配套工具DRS

目录 一、前言 二、DRS定义与使用场景 1、DRS定义 2、DRS场景示意图 三、DRS核心功能 1、实时迁移管理 2、实时同步管理 3、备份迁移管理 4、数据订阅管理 5、实时灾备管理 四、小结 一、前言 华为GaussDB云数据库提供了配套的生态工具数据复制服务DRS。 DRS围绕云…

IO流学习09(Java)

解压缩流/压缩流: 解压缩流: 解压本质:把每一个ZipEntry按照层级拷贝到本地另一个文件夹中 注:Java只认zip格式 在正式写之前,先准备好压缩文件和解压完需要存放文件的文件夹 下面直接给出案例: pack…

步进电机的MATLAB仿真程序分享(采用了卡尔曼滤波,对定子电流进行估计,并估算出转子的位置和速度)

两相步进电机的连续时间延长卡尔曼滤波器仿真, 根据定子电流的噪声测量,估计定子电流以及转子位置和速度。 主程序: function MotorKalman % 两相步进电机的连续时间延长卡尔曼滤波器仿真 % 根据定子电流的噪声测量,估计定子电…

为什么InnoDB存储引擎选择使用B+tree索引结构?

🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉欢迎光临🎉🎉🎉🎉🎉&…

CS231W assignment3 RNN

对作业进行一些形象的解释 首先是def rnn_step_forward: 这里的t时刻其实就是一个句子里面的单词数,为了方便会统一到一个最长长度,对于比这个长度短的部分用null进行填充,并且在方法内部会让Null不进行传播和梯度计算。 我们最…

Simpleitk简单应用-python版本

安装: pip install simpletik读取 目前主流的医疗图像格式是nifti格式,相比于dicom格式更加简单和更加容易读取和操作。后缀名为nii或者nii.gz(nii为原格式,gz结尾的是经过压缩格式,因为医疗图像的重复像素特别多,通…

【Hello mysql】 mysql的基本查询(二)

Mysql专栏:Mysql 本篇博客简介:介绍mysql的基本查询 mysql的基本查询(二) 将筛选出来的数据插入到数据库中(insertselect)聚合函数统计班级共有多少同学统计班级手机的qq号有多少统计本次考试去重的数学成绩…

Xcode doesn’t support iPhone’s iOS 15.7.3 (19H307).

Xcode真机调试时,出现了Xcode doesn’t support iPhone’s iOS 15.7.3 (19H307).,Xcode不支持iPhone的版本。升级Xcode太耗时,用了找支持SDK文件方式解决了此问题。下图是本地的SDK支持文件。 从GitHub下载了15.7的设备支持文件&#xff0c…

N-123基于springboot房屋租赁管理系统

开发工具:IDEA,jdk1.8 服务器:tomcat9.0 数据库:mysql5.7 前端:jsp、bootstrap 技术: springbootmybatis-plus 系统主要分前台和后台,分租客、房东、管理员三个角色 系统功能介绍说明&am…