[转帖]AES算法(五)GCM工作模式
https://zhuanlan.zhihu.com/p/376692295
在以前介绍的基本工作模式中,ECB、CFB、OFB 三种模式可以解决 ECB 模式中相同明文生成相同密文的缺陷,CTR 又可以在此基础上提供多分组并行加密特性,但是它们都不能提供密文消息完整性校验功能,所有就有了 GCM 模式。
讲解 GCM 模式之前,我们先要讲一下 MAC和GMAC。
MAC
MAC 全称是 Message Authentication Code,中文名称为消息认证码,一串由密钥和密文生成的固定值,有时也称 Auth Tag。
MAC 的使用流程如下:
- 首先 Sender 和 Receiver 共享同一个 Key,约定一个 MAC 计算算法 Algorithm
- Sender 把要传递的消息 Message 通过 Key 和 Algorithm 计算出 MAC,将 Message 和 MAC 发送给 Receiver
- Receiver 收到 Message 和 MAC 后,将 Message 通过约定的 Key 和算法 Algorithm 计算出 MAC_1,通过对比 MAC 和 MAC_1 是否相等
- MAC == MAC_1 消息无篡改且是 Sender 发布的
- MAC != MAC_1 消息有篡改或者根本不是 Sender 发布的,也就是有问题

消息认证码是密码学家工具箱中的 6 大工具之一:对称密码、公钥密码、单向散列函数、消息认证码、数字签名和伪随机数生成器。
MAC 跟哈希有点像但比哈希要复杂,因为 Mac 的生成和验证过程都是需要密钥的。
GMAC
GMAC 全称是 Galois Message Authentication Code,中文名称为伽罗瓦消息验证码。
GMAC 就是利用伽罗华域(Galois Field,GF,有限域)乘法运算来计算消息的 MAC 值。
GCM 模式
GCM 全称为 Galois/Counter Mode,可以看出 G 是指 GMAC,C 是指 CTR。它在 CTR 加密的基础上增加 GMAC 的特性,解决了 CTR 不能对加密消息进行完整性校验的问题。
GCM 加密所需数据:明文 P、加密密钥 Key、初始向量 IV、附加消息 F。
GCM 加密步骤如下:
- 将 P 分为 P1、P2、…、Pn,Px 长度 <= 128
- 生成累加计数器 c0、c1、c2、…、cn,由密钥 Key 计算出密钥 H
- 将 IV、c0 进行运算(连接、加和、异或等)得到 IV_c0,用 Key 加密 IV_c0 得到 IVC0
- 将 IV、c1 进行运算(连接、加和、异或等)得到 IV_c1,用 Key 加密 IV_c1 得到 IVC1,将 IVC1、P1 做异或运算得到 C1,用密钥 H 通过 GMAC 算法将附加消息 F 计算出 F1, F1 与 C1 做异或运算得到 FC1
- 将 IV、c2 进行运算(连接、加和、异或等)得到 IV_c2,用 Key 加密 IV_c2 得到 IVC2,将 IVC2、P2 做异或运算得到 C2,用密钥 H 通过 GMAC 算法将附加消息 FC1 计算出 F2, F2 与 C2 做异或运算得到 FC2
- …
- 将 IV、cn 进行运算(连接、加和、异或等)得到 IV_cn,用 Key 加密 IV_cn 得到 IVCn,将 IVCn、Pn 做异或运算得到 Cn,用密钥 H 通过 GMAC 算法将附加消息 FC(n-1) 计算出 Fn, Fn 与 Cn 做异或运算得到 FCn
- 拼接 C1、…Cn 得到密文 C,用密钥 H 通过 GMAC 算法结合 FCn 和 IVC0 最终计算出 MAC
GCM 加密步骤相关资料较少,本文根据维基百科大致做了步骤拆解,如有不准确请敬请斧正

[转帖]AES算法(五)GCM工作模式的更多相关文章
- rabbitmq的五种工作模式
abbitmq的五种工作模式
- RabbitMQ 五种工作模式
官网介绍:https://www.rabbitmq.com/getstarted.html 五种工作模式的主要特点 简单模式:一个生产者,一个消费者 work模式:一个生产者,多个消费者,每个消费者获 ...
- Thrift 的五种工作模式
一.thrift 共有5中工作模式,分成阻塞和非阻塞: 阻塞:TSimpleServer.TThreadPoolServer 非阻塞:TNonblockingServer.THsHaServer.TT ...
- 消息队列rabbitmq的五种工作模式(go语言版本)
前言:如果你对rabbitmq基本概念都不懂,可以移步此篇博文查阅消息队列RabbitMQ 一.单发单收 二.工作队列Work Queue 三.发布/订阅 Publish/Subscribe 四.路由 ...
- java加解密算法--对称加密工作模式
对称加密又分为分组加密和序列密码.分组密码,也叫块加密(block cyphers),一次加密明文中的一个块.是将明文按一定的位长分组,明文组经过加密运算得到密文组,密文组经过解密运算(加密运算的逆运 ...
- AES算法加密java实现
package cn.itcast.coderUtils; import java.security.Key; import javax.crypto.Cipher; import javax.cry ...
- Jetson TX2 不同的工作模式
Jetson TX2 有五种工作模式,下面介绍这几种工作模式下电压.频率以及如何启动. 原理图 几种不同的工作模式 mode mode name Denver Frequency ARM Freque ...
- 面试官:RabbitMQ有哪些工作模式?
哈喽!大家好,我是小奇,一位不靠谱的程序员 小奇打算以轻松幽默的对话方式来分享一些技术,如果你觉得通过小奇的文章学到了东西,那就给小奇一个赞吧 文章持续更新 一.前言 今天又.又.又来面试了,还是老规 ...
- AES五种加密模式(CBC、ECB、CTR、OCF、CFB)
--转载https://www.cnblogs.com/starwolf/p/3365834.html https://www.freebuf.com/column/171939.html 分组密码有 ...
- AES五种加密模式
分组密码在加密时明文分组的长度是固定的,而实用中待加密消息的数据量是不定的,数据格式可能是多种多样的.为了能在各种应用场合安全地使用分组密码,通常对不同的使用目的运用不同的工作模式. 一.电码本模式( ...
随机推荐
- ElasticSearch之Clear cache API
本方法用于清理缓存. 命令样例如下: curl -X POST "https://localhost:9200/testindex_001/_cache/clear?pretty" ...
- Gateway:Spring Cloud API网关组件
Gateway:Spring Cloud API网关组件 问题总结 API网关? Spring Cloud Gateway? GateWay的工作流程?(重点) Predicate断言? Filter ...
- kubernetes之部署nginx+vue前端(一)
kubernetes之部署nginx+vue前端(一) k8s系列项目的部署方式之一使用了kubernetes部署nginx+vue前端. 一.打包前端 将dist与Dockerfile放到同一目录下 ...
- C++ 观察者模式实现
观察者模式 主体(被观察者)通知一个或多个观察者状态改变/数据更新/事件发生. 描述 C++ 实现观察者模式有几个要点: 观察者都有一个共同的抽象基类 Listener,定义了一个纯虚接口 OnNot ...
- 文心一言 VS 讯飞星火 VS chatgpt (31)-- 算法导论5.2 3题
三.利用指示器随机变量来计算掷n 个骰子之和的期望值. 文心一言: 为了计算掷n个骰子之和的期望值,我们需要先了解一个重要的概念:指示器随机变量. 指示器随机变量是一种特殊的随机变量,它只有两个取值: ...
- <Python全景系列-1> Hello World,1分钟配置好你的python环境
<从此开始:1分钟配置好你的python环境> 欢迎来到我们的系列博客<Python360全景>!在这个系列中,我们将带领你从Python的基础知识开始,一步步深入到高级话题, ...
- 一文带你全面了解openGemini
本文分享自华为云社区<一文带你全面了解openGemini>,作者: 华为云社区精选. 7月19日,openGemini社区联合华为云DTT(技术公开直播课栏目)共同举办了一期主题为< ...
- 一文掌握GaussDB(DWS) SQL进阶技能:全文检索
摘要:本文简要介绍了GaussDB(DWS)全文检索的原理和使用方法. 全文检索(Text search)顾名思义,就是在给定的文档中查找指定模式(pattern)的过程.GaussDB(DWS)支持 ...
- 应对全场景AI框架部署挑战,MindSpore“四招”让你躺平
摘要:所谓全场景AI,是指可以将深度学习技术快速应用在云边端不同场景下的硬件设备上,包括云服务器.移动终端以及IoT设备等等,高效运行并能有效协同. 本文分享自华为云社区<AI框架的挑战与Min ...
- AI论文解读丨融合视觉、语义、关系多模态信息的文档版面分析架构VSR
摘要:文档版式分析任务中,文档的视觉信息.文本信息.各版式部件间的关系信息都对分析过程具有很重要的作用.本文提出一种融合视觉.文本.关系多模态信息的版式分析架构VSR. 本文分享自华为云社区<论 ...