GCM与CCM的的规格和加解密过程
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等安全协议中。