GCM与CCM的的规格和加解密过程

news2025/1/23 13:17:39

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/468514.html

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

相关文章

沃通TSA可信时间戳服务,保障电子数据法律效力

在全球信息化的大趋势下,以计算机及其网络为依托的电子数据,在证明案件事实的过程中起着越来越重要的作用,而可信时间戳已成为确立电子数据法律效力的重要技术之一。沃通TSA可信时间戳服务,提供具有法律效力的第三方可信时间戳认证…

android10 关闭默认输入法的“更正建议”

1. 场景 使用系统默认的输入法,在进行输入时,在输入法上方,会显示更正建议列表,同时会干扰我们的输入内容:会自动补全到输入框,而且删除不掉,甚至越删越多,非常讨厌。 如下&#x…

Spring IOC之对象的创建方式、策略及销毁时机和生命周期且获取方式

目录 一、对象的创建方式 1. 使用构造方法 2. 使用工厂类方法 3. 使用工厂类的静态方法 二、对象的创建策略 1. 单例策略 2. 多例策略 三、对象的销毁时机 四、生命周期方法 1. 定义生命周期方法 2. 配置生命周期方法 3. 测试 五、获取Bean对象的方式 1. 通过id/…

学习ZLmediaKit流媒体服务器时候遇到的问题

照zlmediakit的源码 自己复制了一份 然后有的地方编译不过修改了部分 测试的时候发现有两个问题 第一是 ffmpeg的ffplay 能播放 vlc不能播放 第二个问题是directProxy设置为0的时候 推流的时候 然后用ffplay播放 只有音频没有视频 查了好久终于解决这个问题 第一个…

pytest 自动化框架搭建-生成一个报告(alluer)

简单的case跑通了,尝试生成报告 1、使用allure-pytest 安装pip3 install allure-pytest 2、使用--alluredir../allure-results 如下我是直接在pytest.ini文件中使用命令 如下生成文件夹和json格式的文件 二、生成allure报告 1、安装allure 我是使用的命令直接…

字节超全学习流程图流出,100天涨薪10k,从功能测试到自动化测试...

今年年初,由于经济压力让我下定决心进阶自动化测试,已经24的我做了3年功能测试,坐标广州薪资定格在8k,可能是生活过的太安逸,觉得8000的工资也够了。 但是生活总是多变的,女朋友的突然怀孕,让我…

thinkphp6(tp6)初步小尝试(记录一下)

thinkphp6(tp6)初步小尝试(记录一下) 一、服务器环境二、创建tp6项目三、配置apache四、创建应用五、各应用入口六、简单模板 一、服务器环境 操作系统:ubuntu-22.04.2-live-server-amd64集成xampp(Apache MariaDB …

Python学习10:计算三维空间某点距离原点的欧式距离(python123)

题目描述: 欧几里得度量(euclidean metric)(也称欧氏距离)是一个通常采用的距离定义。三维空间里点a和b的坐标如果分别为a(x1,y1,z1)、b(x2,y2,z2),则ab的距离的计算机公式是dist(a,b) √( (x1-x2)^2(y1-y2)^2(z1-z2…

史上最全Maven教程(四)

文章目录 🔥Maven聚合开发_聚合关系🔥Maven聚合开发_继承关系🔥Maven聚合案例_搭建父工程 🔥Maven聚合开发_聚合关系 之前我们在Idea中开发时会将项目的所有包放在同一个工程当中。 ⭐ domain:定义实体类 ⭐ dao&…

learn_C_deep_7 (switch 语句的基本理解、case 的作用、break的作用switch、case 推荐规则)

目录 switch 语句的基本理解 case语句的深度理解 case 的作用 case语句的要求 break 的作用 switch case 推荐规则 规则一: 规则二: 小结: switch 语句的基本理解 switch是一种控制语句,用于控制程序流程的走向。在 swit…

Zookeeper系统模型介绍

目录 一、数据模型 二、 节点的类型 (1)持久节点 (2)持久顺序节点 (3)临时节点 (4)临时顺序节点 三、客户端命令行 (1)创建节点 (2&…

k8s- kubernetes证书过期替换之kubeadm命令 certs renew all方式

k8s- kubernetes证书过期替换之kubeadm命令 certs renew all方式 大纲 基础概念证书替换测试使用kubeadm alpha certs renew all 更新证书重启所有组件和kubelet.service生成kubelet-client-current.pem证书测试替换后集群是否正常工作 基础概念 本次测试使用的k8s集群使用…

【代码随想录】刷题Day9 --- 我有自信讲清楚KMP的next原理

字符串 --- 找子串匹配算法_哈里沃克的博客-CSDN博客https://blog.csdn.net/m0_63488627/article/details/130197908?spm1001.2014.3001.5501 首先具体KMP算法理论在上面的博客中,不过该博客我当初写的时候并没有了解next数组实现的过程是那样的,所以只…

【react全家桶学习】react中组件的props属性(详)

学过了vue的props属性,那react中的props属性如何使用呢? props的基本使用 我们先定义一个person组件 我们想要这三个参数动态传递进来,如何实现? 答:跟vue一样,直接在引用组件的地方进行传递即可。 在re…

Java——两个链表的第一个公共节点

题目链接 牛客网在线oj题——两个链表的第一个公共节点 题目描述 输入两个无环的单向链表,找出它们的第一个公共结点,如果没有公共节点则返回空。(注意因为传入数据是链表,所以错误测试数据的提示是用其他方式显示的&#xff0…

润本“带伤”冲刺IPO,再闯“驱蚊第一股”

夏日来临,润本再度冲刺“驱蚊第一股”! 今年3月,润本生物技术股份有限公司(下称“润本”)再次更新招股书,拟在上交所主板上市。 润本是一家多品牌家庭护理产品公司, 专注于驱蚊类、个人护理类…

米哈游新游正式公测!还没上线就已经“爆了”!

米哈游制作的3D冒险主题回合制策略游戏《崩坏:星穹铁道》,在2023年4月26日正式开启全平台公测。 该游戏在2021年10月27日曾开启过“始发测试”,后继续沉淀了两年才正式开启公测。 B站的ACG内容生态丰富,其中游戏相关内容当数米哈…

C++“this”指针的使用

1.this指针的引出 先看一段代码&#xff1a; class Date { public:Date(int year0,int month0,int day0){_year year;_month month;_day day;}void Print(){cout << _year << " "<< _month << " "<< _day << end…

无需公网IP 使用SSH远程连接Linux CentOS服务器【内网穿透】

文章目录 视频教程1. Linux CentOS安装cpolar2. 创建TCP隧道3. 随机地址公网远程连接4. 固定TCP地址5. 使用固定公网TCP地址SSH远程 本次教程我们来实现如何在外公网环境下&#xff0c;SSH远程连接家里/公司的Linux CentOS服务器&#xff0c;无需公网IP&#xff0c;也不需要设置…

SDK_examples问题汇总

CompParameter 看起来可以用 拖动中间的dialog框 调整下面的参数 GraphicsViewDropEvent 点击“模型库”或者“用户模型”会弹出如下&#xff0c;点击“中止”后退出页面 MassSpringDamperApp 成功过&#xff0c;现在点击“开始仿真”会显示仿真失败 MwBatchSimPlu…