zoukankan      html  css  js  c++  java
  • 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长度

  • 相关阅读:
    第4月第1天 makefile automake
    第3月30天 UIImage imageWithContentsOfFile卡顿 Can't add self as subview MPMoviePlayerControlle rcrash
    第3月第27天 uitableviewcell复用
    learning uboot fstype command
    learning uboot part command
    linux command dialog
    linux command curl and sha256sum implement download verification package
    learning shell script prompt to run with superuser privileges (4)
    learning shell get script absolute path (3)
    learning shell args handing key=value example (2)
  • 原文地址:https://www.cnblogs.com/block2016/p/5635462.html
Copyright © 2011-2022 走看看