CCM和GCM

分组密码链接-消息认证码--CCM     Counter with CBC-MAC

  组成CCM的关键算法是AES加密算法、CTR工作模式和CMAC认证算法,在加密和MAC算法中共用一个密钥K。

  CCM加密过程的输入由三部分构成:

    1、将要被加密和认证的数据,即明文消息P数据块

    2、将要被认证,但是不需要加密的相关数据A,如协议头等。

    3、临时量N,作为负载和相关数据的补充,对每条消息N取值唯一,以防止重放攻击等。

  

   

  由计数器产生大量的Ctri

Galois/计数器模式--GCM     Galois/Counter Mode

  GCM基于并行化设计,可以提供高效的吞吐率和低成本、低延迟。其本质是消息在变型的CTR模式下加密,密文结果与密钥以及消息长度信息在GF(2128)域上相乘。该标准还同时制定了仅支持MAC的工作模式即GMAC。

  GCM模式使用两个函数:带密钥的Hash函数GHASH,以及计数器每次增1 的CTR模式的GCTR。

  1、GHASH

  

  GHASHH(X)函数将Hash密钥H和位串X作为输入,经过转化函数可表示成:

    GHASHH(X) = (X1•Hm)⊕(X2•Hm-1)⊕...⊕(Xm-1•H2)⊕(Xm•H)

  该式非常适合快速实现,如果使用相同的Hash密钥认证多个消息,那么H2,H3,...能够通过一次预计算来对所有消息进行认证,并且待认证的数据分组(X1,X2,...,Xm)能够并行处理,因为每组计算都相互独立。

  2、GCRT

  

  inc32(S)函数对S的最右32位增1并取模232,其余位不变。

  最后一次加密生成MSB,根据Xn‘的长度截取后再与Xn‘异或产生Yn

  3、整个认证函数结构

  

  (1)令 H = E(K , 0128)

  (2)定义分组J0如下

    如果len(IV) = 96,则令J0 = IV || 031 || 1。

    如果len(IV) ≠ 96,则令 s = 128⌈len(IV)/128⌉ - len(IV)   

      并令J0 = GHASHH(IV || 0s+64 || [len(IV)64])    //[s+64+len(IV)]%64 = 0,说白了就是使输入满足刚好可分整数组的长度

  (3)令C = GCRTK(inc32(J0) , P)

  (4)令u = 128⌈len(C)/128⌉ - len(C)     v = 128⌈len(A)/128⌉ - len(A)   //目的也是为了满足分组长度

  (5)定义分组S如下

      S = GHSASHH(A || 0v || C || ou || [len(A)]64 || [len(C)64])

  (6)令 T = MSBt(GCTRK(J0 , S)),这里t是支持的MAC长度

时间: 2024-10-12 08:09:09

CCM和GCM的相关文章

块密码的工作模式

密码学中,区块(Block)密码的工作模式(英语:mode of operation)允许使用同一个区块密码密钥对多于一块的数据进行加密,并保证其安全性.[1][2] 区块密码自身只能加密长度等于密码区块长度的单块数据,若要加密变长数据,则数据必须先被划分为一些单独的密码块.通常而言,最后一块数据也需要使用合适填充方式将数据扩展到符合密码块大小的长度.一种工作模式描述了加密每一数据块的过程,并常常使用基于一个通常称为初始化向量的附加输入值以进行随机化,以保证安全[1]. 工作模式主要用来进行加密

消息认证概述

在网络环境中的攻击类型 消息保密性范畴: 1.泄密 2.传输分析 消息认证/数字签名:    3.伪装 4.内容修改 插入/删除/转换/修改(消息内容) 5.顺序修改 插入/删除/重排(以消息为单位) 6.计时修改  延时/重播 数字签名:   7.发送方否认 8.接收方否认 消息认证函数 该函数用来产生认证符,可分成三类 1.Hash函数--以Hash值为认证符 2.消息加密--以整个信息加密后的密文作为认证符 3.消息认证符(MAC)--以消息和密钥作输入,产生定长值作为认证符  消息加密

https那些事儿

(一)SSL/TLS协议运行机制的概述 一.作用 不使用SSL/TLS的HTTP通信,就是不加密的通信.所有信息明文传播,带来了三大风险. (1) 窃听风险(eavesdropping):第三方可以获知通信内容. (2) 篡改风险(tampering):第三方可以修改通信内容. (3) 冒充风险(pretending):第三方可以冒充他人身份参与通信. SSL/TLS协议是为了解决这三大风险而设计的,希望达到: (1) 所有信息都是加密传播,第三方无法窃听. (2) 具有校验机制,一旦被篡改,通

tls1.2

注:本文省略了部分开发协议才涉及到的内容,如字段类型的定义以及字段长度的运算,主要聚焦理解tls协议的运作方式 tls协议包含2层协议:TLS Record 协议和TLS Handshake协议,底层采用可靠传输协议(如TCP),TLS Record协议通过如下方式实现数据的安全传输: 链路是私有的,使用对称加密方式对应用数据进行加密.对每条链路来说,对称加密使用的key是各自独立的(通过TLS Handshake协议协商得到).Record协议也可以用于非加密场景: 链路是可靠的.使用MAC来

.NET Core AES-CCM&AES-GCM加密算法

一. 前言 关于 CCM 以及 GCM 看此文( CCM和GCM )或者直接搜索网上资料. .NET Core 3.0 实现了对AES-GCM和AES-CCM加密的支持.这些算法既是带有关联数据的身份验证加密(AEAD)算法,也是添加到.NET Core的第一个身份验证加密(AE)算法. 二. 使用 CCM: var ccm=new AesCcm(key); ccm.Encrypt(nonce, plaintext, ciphertext, tag); ccm.Decrypt(nonce, pl

第二十七个知识点:什么是对称密码加密的AEAD安全定义?

第二十七个知识点:什么是对称密码加密的AEAD安全定义? AEAD 在之前的博客里,Luke描述了一种被广泛使用的操作模式(ECB,CBC和CTR)对块密码.我们也可能会想我们加密方案的完整性,完整性意味着接收到的消息就是发送的消息,在信道中没有意外修改或者恶意修改,真实性意味着接收者确实是收到了发送者的消息.为了使用这些特性,我们通常使用消息认证码(MAC),那些基于hash的消息认证码叫做HMAC.把这两个密码原语放在一起不是平凡的:为了获得IND-CCA安全方案,我们需要遵循加密然后MAC

gcm 被微信弃用的原因

作者:feng xixi链接:https://www.zhihu.com/question/21514839/answer/18496706来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 帮忙科普:GCM Architectural Overview Google Cloud Messaging for Android (GCM)是一个能够帮助开发者从服务器端发送数据到运行在Android手机上的程序的服务.这个服务提供了一个简单,轻量级的机制使得服务器端可以告诉

使用Google Cloud Messaging (GCM),PHP 开发Android Push Notifications (安卓推送通知)

什么是GCM? Google Cloud  Messaging (GCM) 是Google提供的一个服务,用来从服务端向安卓设备发送推送通知. GCM分为客户端和服务端开发. 这里我们只介绍服务端开发.其实过程非常简单,只需利用PHP发送POST数据. api key的取得? 待补充? class GCM { public $api_key = "AIzaSyAU3wZs9raik-mHQ"; function __construct() { } /** * Sending Push

GCM(Google Cloud Messaging)推送完全解析

转载请注明出处:http://www.cnblogs.com/cnwutianhao/p/6664293.html 应该是目前为止全网最详细的GCM推送解析. GCM官方解释: https://developers.google.cn/cloud-messaging/?hl=zh-cn Send data from your server to your users' devices, and receive messages from devices on the same connectio