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工作模式的更多相关文章

  1. rabbitmq的五种工作模式

    abbitmq的五种工作模式      

  2. RabbitMQ 五种工作模式

    官网介绍:https://www.rabbitmq.com/getstarted.html 五种工作模式的主要特点 简单模式:一个生产者,一个消费者 work模式:一个生产者,多个消费者,每个消费者获 ...

  3. Thrift 的五种工作模式

    一.thrift 共有5中工作模式,分成阻塞和非阻塞: 阻塞:TSimpleServer.TThreadPoolServer 非阻塞:TNonblockingServer.THsHaServer.TT ...

  4. 消息队列rabbitmq的五种工作模式(go语言版本)

    前言:如果你对rabbitmq基本概念都不懂,可以移步此篇博文查阅消息队列RabbitMQ 一.单发单收 二.工作队列Work Queue 三.发布/订阅 Publish/Subscribe 四.路由 ...

  5. java加解密算法--对称加密工作模式

    对称加密又分为分组加密和序列密码.分组密码,也叫块加密(block cyphers),一次加密明文中的一个块.是将明文按一定的位长分组,明文组经过加密运算得到密文组,密文组经过解密运算(加密运算的逆运 ...

  6. AES算法加密java实现

    package cn.itcast.coderUtils; import java.security.Key; import javax.crypto.Cipher; import javax.cry ...

  7. Jetson TX2 不同的工作模式

    Jetson TX2 有五种工作模式,下面介绍这几种工作模式下电压.频率以及如何启动. 原理图 几种不同的工作模式 mode mode name Denver Frequency ARM Freque ...

  8. 面试官:RabbitMQ有哪些工作模式?

    哈喽!大家好,我是小奇,一位不靠谱的程序员 小奇打算以轻松幽默的对话方式来分享一些技术,如果你觉得通过小奇的文章学到了东西,那就给小奇一个赞吧 文章持续更新 一.前言 今天又.又.又来面试了,还是老规 ...

  9. AES五种加密模式(CBC、ECB、CTR、OCF、CFB)

    --转载https://www.cnblogs.com/starwolf/p/3365834.html https://www.freebuf.com/column/171939.html 分组密码有 ...

  10. AES五种加密模式

    分组密码在加密时明文分组的长度是固定的,而实用中待加密消息的数据量是不定的,数据格式可能是多种多样的.为了能在各种应用场合安全地使用分组密码,通常对不同的使用目的运用不同的工作模式. 一.电码本模式( ...

随机推荐

  1. tty详解

    linux下tty命令详解 [功能] 打印连接到标准输入的终端的文件名. [描述] 命令项: -s, --silent, --quiet: 什么也不打印,只是返回退出状态码. --help: 打印帮助 ...

  2. 斯坦福课程 UE4 C++ ActionRoguelike游戏实例教程 01.基础AI与行为树

    斯坦福课程 UE4 C++ ActionRoguelike游戏实例教程 0.绪论 前言&摘要 本篇文章是基于斯坦福UE4 C++课程的学习记录.因为B站用户surkea由于学业原因,暂停了课程 ...

  3. 【华为云技术分享】STM32L476移植华为LiteOS系列教程------背景知识 1

    一.这篇文章想向大家说明一个问题,我们开发单片机的本质是什么? 在最早的开发中,我们没有Keil.IAR等等一系列好用的单片机集成开发环境,注意这里的"集成",是指将多个软件其中有 ...

  4. 让“物”能说会道,揭晓华为云IOT黑科技

    什么是物联网?如何让"物"说话? 如今是一个万物互联的时代,物联网已经成为一个高大上的名词,那什么是物联网呢?从人与人之间的连接来看,指的是人们之间的通话.视频.进入智能时代以后, ...

  5. 解读登录双因子认证(MFA)特性背后的TOTP原理

    摘要:随着互联网密码泄露事件频发,越来越多的产品开始支持多因子认证(MFA),TOTP则是MFA领域里最普遍的一种实现方式,本文介绍TOTP的原理和华为云的实践经验. 原理 TOTP(Time-Bas ...

  6. 让 AI “潜入”物流中心,你的快递很快就到!

    摘要:华为利用数字化.智能化的手段从传统物流运营转升成为专业智慧物流,在那些"看不见的地方"华为正在默默耕耘. 网购已经成为了新时代下的"日常",于是每年的「6 ...

  7. 输入的查询SQL语句,是如何执行的?

    摘要:输入一条语句,返回一个结果,却不知道这条语句在 MySQL 内部的执行过程. 本文分享自华为云社区<一条查询SQL是如何执行的>,作者: 共饮一杯无 . 执行如下SQL,我们看到的只 ...

  8. iOS分发证书过期或手动吊销,会影响App的下架吗?

    ​ iOS distribution发布证书过期或者被手动revoke了app会被下架吗? 在距离distribution 证书过期一个月(或被手动revoke了)的时候会受到apple的邮件 ​编辑 ...

  9. 火山引擎DataLeap的Data Catalog系统搜索实践 (上)

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 摘要 火山引擎大数据研发治理套件 DataLeap的Data Catalog系统通过汇总和组织各种元数据,解决了数 ...

  10. 多领域应用落地,火山引擎ByteHouse加速云数仓升级

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群   近日,火山引擎数智平台VeDI直播活动「超话数据」在线举办,来自火山引擎的产品及解决方案专家分享了以ByteH ...