GCM与CCM的动作过程

news2024/11/16 23:59:02

CCM

CCM(Counter with CBC-MAC)是一种基于对称加密算法的认证加密(Authenticated Encryption)模式,结合了CBC-MAC(Cipher Block Chaining Message Authentication Code)用于消息认证和CTR(Counter)模式用于加密。这种模式可以确保信息的机密性和完整性。它主要用于无线网络安全标准,如IEEE 802.11i(WPA2)和IEEE 802.16e(WiMAX)。

认证加密过程分为三个阶段:初始化、加密和认证。
在这里插入图片描述

初始化阶段:
在此阶段,根据给定的密钥(key)和初始向量(nonce),算法首先生成一个初始计数器(counter)。在CCM中,nonce和计数器共同组成一个大小固定的输入,称为“计数器块”。通常,nonce的长度根据具体实现和安全需求而定。
加密阶段:
使用CTR模式对明文进行加密。通过将计数器块与密钥(key)进行加密,然后将结果与明文异或,生成密文。计数器每次递增(incr),直至加密整个明文。
加密后的认证阶段:
使用CBC-MAC生成认证标签。首先,根据给定的关联数据(Associated Data,AD)生成一个认证头。然后将密文与认证头一起输入到CBC-MAC算法中,最后生成一个认证标签。关联数据是不需要加密但需要认证的数据。
在这里插入图片描述

在解密过程中,我们首先使用CBC-MAC验证密文的认证标签。如果认证通过,再使用CTR模式解密密文,还原成明文。
上图提到的incr和multKh参数,它们在CCM算法中的具体含义如下:
incr:这是一个简化的表示,用于描述计数器递增的过程。在加密阶段,每次处理一个明文块后,计数器的值都会递增。这样,每次加密操作都使用一个不同的计数器块,确保了加密过程的安全性。
multKh:这是在CBC-MAC阶段使用的一个乘法运算。实际上,它是在有限域上的乘法运算。这个乘法操作用于处理输入数据块(关联数据和密文),并与前一个块的加密结果进行异或。multKh操作的目的是确保认证标签的安全性。
总之,CCM结合了CTR模式的加密和CBC-MAC的认证,确保了信息的机密性和完整性。在加密过程中,使用了诸如计数器递增、乘法运算等技术来确保算法的安全性。

GCM

GCM(Galois/Counter Mode)是一种基于对称加密算法的认证加密(Authenticated Encryption)模式,用于确保数据的机密性和完整性。GCM广泛应用于TLS、IPsec等安全协议中。它结合了CTR(Counter)模式用于加密和GHASH(Galois Hash)用于认证。

认证加密过程分为三个阶段:初始化、加密和认证。
初始化阶段:
在此阶段,根据给定的密钥(key)和初始向量(IV),算法首先生成一个初始计数器(ICB)。通常,IV的长度根据具体实现和安全需求而定。接下来,算法计算J0(算法中使用的初始值)。J0的计算方式取决于IV的长度;当IV长度为96位时,J0 = IV || 0^31 || 1,其中"||"表示连接操作。
加密阶段:
在加密阶段,使用GCTR(Galois Counter)模式对明文进行加密。GCTR与CTR类似,通过将计数器块(CB)与密钥(key)进行加密,然后将结果与明文异或,生成密文。计数器每次递增,直至加密整个明文。这里,CB的初始值是J0的递增值(即J0 + 1)。
认证阶段:
使用GHASH进行认证。首先,使用密钥(key)计算一个值H(称为GHASH_H),用于GHASH运算。接着,将关联数据(Associated Data,AD)和密文一起输入到GHASH算法中,生成一个认证标签。关联数据是不需要加密但需要认证的数据。

在这里插入图片描述

解密过程与加密过程类似,首先使用GHASH验证密文的认证标签。如果认证通过,再使用GCTR模式解密密文,还原成明文。
在这里插入图片描述

上图提到的参数在GCM算法中的具体含义:
GCTR:Galois Counter模式,用于加密和解密操作。与CTR模式类似,它使用计数器和密钥进行加密操作,然后将结果与明文(或密文)异或。
GHASH_H:GHASH运算中使用的H值。H是由密钥(key)计算得出的,用于Galois Hash运算。
GCTR_K:这是GCTR模式中用于加密和解密的密钥(key)。
MSB:Most Significant Bit,即最高有效位。在GCM中,它通常用于提取计数器递增后的最高有效位。
J0:GCM算法中使用的初始值。它由给定的初始向量(IV)计算得出。
CB:Counter Block,即计数器块。在GCTR模式中,它用于加密和解密操作。
ICB:Initial Counter Block,即初始计数器块。在GCM算法的初始化阶段,根据给定的密钥(key)和初始向量(IV),首先生成ICB。ICB是GCTR模式加密和解密过程中使用的第一个计数器块。接下来,计数器会递增,生成后续的计数器块。

综上所述,GCM是一种认证加密模式,通过结合GCTR模式进行加密和GHASH进行认证,确保了数据的机密性和完整性。在加密和认证过程中,使用了诸如J0、ICB、CB等参数。解密过程与加密过程类似,首先验证密文的认证标签,然后使用GCTR模式进行解密。GCM广泛应用于诸如TLS、IPsec等安全协议中。

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

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

相关文章

[java聊天室]服务器发送消息给客户端守护线程同步锁(三)

守护线程 守护线程也称为:后台线程 守护线程是通过普通线程调用setDaemon(boolean on)方法设置而来的,因此创建上与普通线程无异.守护线程的结束时机上有一点与普通线程不同,即:进程的结束.进程结束:当一个进程中的所有普通线程都结束时,进程就会结束,此时会杀掉所有正在运行…

嵌入式Linux(2):将Helloworld驱动编译到内核

文章目录 分析一个例子仿写一个例子(需要编译成.ko的)写三个文件编辑上一级目录的Makefile文件编辑上一级目录的Kconfig文件make menuconfig进行配置 烧录到开发板上 分析一个例子 例子: source "drivers/redled/Kconfig" config…

简单分享微信怎么添加报名链接的步骤

最近看到很多小伙伴都在问有没有简单的报名链接制作办法,因为最近是暑期活动开展的前期,需要用到很多报名链接,希望可以直接通过微信小程序进行报名,扫一扫微信小程序的二维码就可以进入报名页面,然后制作步骤也是简单…

残差 Gabor 卷积网络和 FV-Mix 指数级数据增强策略用于手指静脉识别

论文背景 手指静脉识别系统的性能受到手指静脉训练样本不足的限制,导致特征学习不足和模型泛化能力弱:DCNN 需要大量的数据来学习更抽象的语义信息进行分类。对于指静脉识别,由于每个类别只包含少量样本,极易出现过拟合。原因之一…

MinIO快速入门

一、MinIO概述 官网地址:http://www.minio.org.cn/ 文档地址:http://docs.minio.org.cn/docs/ MinIO是一款基于Apache License v2.0开源协议的分布式文件系统(或者叫对象存储服务),可以做为云存储的解决方案用来保存海…

如何借助测控终端实现设备远程运维?

随着物联网技术的发展,数字化越来越重要。数据是新的生产要素,是基础性资源和战略性资源,也是重要生产力。因此许多企业纷纷转型智慧工厂,但老旧的设备无法获取相应的数据,更换老旧设备的成本又太高,就无法…

【计算机架构】如何计算 CPU 时间

目录 0x00 响应时间和吞吐量(Response Time and Throughput) 0x01 相对性能(Relative Performance) 0x02 执行时间测量(Measuring Execution Time) 0x03 CPU 时钟(Clocking) 0x…

用docker承载mysql

这两天部署系统到生产服务器,前端后端部署docker是毫无疑义的,但mysql呢? 答案是mysql可以部署到docker。 1、数据文件挂载到宿主机 将mysql部署于docker,会有一个担心,就是docker容器的删除非常的容易,…

修改树莓派系统的更新源,软件安装源和pip安装源

本文目录 1、更换系统更新源2、更改软件源3、更换 pip 源4、更新系统与软件5、附加知识 Linux系统常用的安装源主要有系统更新源和软件安装源二大类,系统更新源是用于对Linux系统本身进行升级更新的,软件安装源是用于通过apt命令安装软件的。随着python的…

【Zigbee】解密Zigbee地址分配——你需要知道的一切

💖 作者简介:大家好,我是Zeeland,全栈领域优质创作者。📝 CSDN主页:Zeeland🔥📣 我的博客:Zeeland📚 Github主页: Undertone0809 (Zeeland) (github.com)&…

URL 转为QR code(二维码)

推荐一个良心的网站,能够免费地将url、text编码为二维码,而且还能设计logo、颜色等。 https://www.the-qrcode-generator.com/ 如下图: 可以自己定义logo、颜色: 还能查看扫描历史等统计信息: 上述所有功能都是免…

【人工智能概论】 RNN、LSTM、GRU简单入门与应用举例

【人工智能概论】 RNN、LSTM、GRU简单入门与应用举例 文章目录 【人工智能概论】 RNN、LSTM、GRU简单入门与应用举例一. RNN简介1.1 概念简介1.2 方法使用简介 二. 编码层embedding2.1 embedding的参数 一. RNN简介 1.1 概念简介 循环神经网络(Recurrent Neural Network)理念…

苹果电容笔值得买吗?ipad电容笔推荐平价

在当今时代,高科技已经成为推动数字产品发展的重要推动力。无论是在工作上,还是在学习上,大屏幕都能起到很好的作用。IPAD将会更好地融入我们的生活,不管是现在还是未来。而ipad配上一支简单的电容笔,不仅可以提高工作…

【机器学习】P22 过拟合和欠拟合的探究2,高偏差与高方差

过拟合与欠拟合的探究2,高偏差与高方差 高偏差和高方差过拟合与欠拟合的解决策略带有L2正则化的神经网络带有早停法的神经网络的完整案例 MINST 高偏差和高方差 高偏差和高方差是机器学习中常见的两个问题,会影响模型的性能。 高偏差(High …

MySQL数据库,聚合查询

目录 1、聚合查询 1.1聚合函数 1.1.1count函数 1.1.2sum函数 1.1.3avg函数 1.1.4max函数 1.1.5min函数 1.2group by子句 1.3having 1、聚合查询 1.1聚合函数 聚合函数查询又叫函数查询,它是通过一些特定的函数根据需求来查询相关的信息,常见的…

代码随想录|day52| 动态规划part13● 300.最长递增子序列 ● 674. 最长连续递增序列 ● 718. 最长重复子数组

300 最长递增子序列 链接&#xff1a;力扣 看了思路之后写的代码&#xff0c;不知道为什么报错了。 错误一&#xff1a; int nnums.size();vector<int>dp(n,0);dp[0]1;for(int i1;i<n;i){for(int j0;j<i;j){if(nums[i]>nums[j]){dp[i]max(dp[i],dp[j]1);}}}retu…

Java版本企业电子招投标采购系统源代码——功能模块功能描述+数字化采购管理 采购招投标

​ 功能模块&#xff1a; 待办消息&#xff0c;招标公告&#xff0c;中标公告&#xff0c;信息发布 描述&#xff1a; 全过程数字化采购管理&#xff0c;打造从供应商管理到采购招投标、采购合同、采购执行的全过程数字化管理。通供应商门户具备内外协同的能力&#xff0c;为外…

ChatGPT 聊天接口API 使用

一、准备工作 1.准备 OPENAI_ACCESS_TOKEN 2.准备好PostMan 软件 二、测试交流Demo 本次使用POSTMAN工具进行快速测试&#xff0c;旨在通过ChatGPT API实现有效的上下文流。在测试过程中&#xff0c;我们发现了三个问题&#xff1a;    1.如果您想要进行具有上下文的交流&…

【prettier Error resolving prettier configuration for x:\xxx\.prettierrc.js】

Prettier Error resolving prettier configuration for x:\xxx.prettierrc.js 解决方法 Prettier 出现如下错误 错误 内容内联代码片 Error resolving prettier configuration for d:\map\user_package\Leaflet.FileLayer-master\.prettierrc.js ["ERROR" - 10:38…

Facebook、Google、亚马逊,谁将成为跨境电商的营销宠儿?

跨境电商在全球范围内的发展日益迅猛&#xff0c;而营销渠道的选择也变得越来越多样化。在众多的广告平台中&#xff0c;Facebook、Google和亚马逊被公认为是跨境电商卖家们最主要的营销平台。那么&#xff0c;这三个平台中哪个会成为跨境电商的营销宠儿呢&#xff1f; 一、Fac…