《1 引言》
1 引言
对称密钥算法分为序列密码算法和分组密码算法。分组密码算法的主要优势是可并行处理。由于分组密码算法本身只定义了将一个分组明文加密成密文的变换, 而实际应用中要加密和认证的数据长度远远大于一个分组, 这就需要为分组密码算法选择工作模式, 避免采用固定格式带来的安全隐患
在128 MB内存环境下, AES (Rijndael) 算法
R. Housley等提出的CCM (CTR with CBC-MAC) 模式
CTR (计数器) 模式
现有的并行认证模式主要是P. Rogaway提出的PMAC (并行MAC) 模式
《2 CCM模式简介》
2 CCM模式简介
CTR模式包含CTR模式和CBC-MAC模式。
《2.1CCM的加密模式——CTR (计数器) 模式》
2.1CCM的加密模式——CTR (计数器) 模式
定义C = EK (P) 表示用密钥K把明文P加密成密文C, P = DK (C) 表示用密钥K把密文C解密成明文P;假设单个分组长度为T位, 明文分组为P1, …, Pn;密文分组为C1, …, Cn;最后一组明文长度为τ位, 信息认证码 (MAC) 长度为m位。
(初始向量IV一般为计数器, 或为不重复的伪随机数, IVi可扩展至所需长度)
for i =1 to n-1 do Ci = Pi⊕Si ;
Cn = Pn⊕MSBτ (Sn) ; (加密)
for i =1 to n-1 do Pi = Ci⊕Si ;
Pn = Cn⊕MSBτ (Sn) ; (解密)
其中, MSBτ (Sn) 表示截取Sn的前τ位。由上述算法可知, CTR模式是通过将明 (密) 文同密码流相异或进行加 (解) 密的。因此, CTR模式没有完整性
《2.2CCM的认证模式——CBC-MAC模式》
2.2CCM的认证模式——CBC-MAC模式
(Y0一般为计数器, 或为不重复的伪随机数)
MAC = MSBm (Yn) ;
当最后一组明文长度τ小于分组长度T时, 可采用补位或密文挪用等措施。当m=T时, 一般要采用可选进程, 以减轻穷举攻击的威胁。CBC模式既可作为加密模式, 又可作为认证模式, 还可同时实现加密和认证。当CBC模式同时作为加密和认证模式时, 需要采用可选进程。CBC模式作为认证模式时称为CBC-MAC模式
《3 基于双重分组的并行认证模式及其与PMAC模式的性能比较》
3 基于双重分组的并行认证模式及其与PMAC模式的性能比较
《3.1基于双重分组的并行认证模式 (PKCB) 》
3.1基于双重分组的并行认证模式 (PKCB)
以AES为例。众所周知, FIPS 197
(初始向量IV一般为计数器, 或为不重复的伪随机数, ‖ 表示串联)
(明文当密钥, 不能作为加密模式, IVi可扩展至所需长度)
该并行模式的思路是部分明文当密钥, 可称为PKCB (并行密钥密码分组) 模式。在128 MB内存环境下, AES-PKCB算法的串行速率可达140~170 Mb/s, 比常用散列函数快。PKCB (并行双重分组) 模式在思想上与P. Rogaway提出的PMAC (并行MAC) 模式
《3.2PMAC模式》
3.2PMAC模式
PMAC是P. Rogaway提出的并行认证模式
定义a (x) +b (x) = a (x) ⊕b (x) ,
⊙表示模乘, ntz (i) 表示二进制数i从右边数连0的个数, f (L, i) 表示
《3.3PMAC模式的安全性》
3.3PMAC模式的安全性
PMAC模式是一种高效的并行认证模式, 安全性较高。
分析认证模式的安全性必须结合加密模式。假设分组密码算法分别采用CTR和PMAC作为加密和认证模式。
令δij = Zi⊕Zj , Δij = Si⊕Sj⊕δij ;
解密得P*i = C*i⊕Si = Pj⊕δij,
则Y*i = EK (P*i⊕Zi) = Yj ,
即密文差分互换后MAC值不变。
虽然Δij是个伪随机数, 但任意2组密文 (最后一组或最后2组除外) 满足线性差分互换关系, 是其不足之处。因此, PMAC模式的安全性明显低于CBC-MAC。假设PMAC模式中密文篡改成功的概率为PPMAC。
《3.4PKCB认证模式的安全性》
3.4PKCB认证模式的安全性
假设分组密码算法分别采用CTR和PKCB作为加密和认证模式, 不管可选进程, 以AES-128为例, P2i-1 = Pi1, P2i = Pi2 。
令 Δ2i-1, 2j-1 = S2i-1⊕S2j-1,
解密得
也就是说, 要同时猜测2个伪随机数Δ2i, 2j和Δ2i-1, 2j-1, 才能确保密文篡改成功。因此, PKCB认证模式采用AES-128算法时密文篡改成功的概率约为PPKCB = P
《4 计数器认证模式及其与PMAC, PKCB模式的性能比较》
4 计数器认证模式及其与PMAC, PKCB模式的性能比较
《4.1计数器认证模式 (KCTR-MAC) 》
4.1计数器认证模式 (KCTR-MAC)
由于CTR模式是纯加密模式, 不能同时作为认证模式, 可将它改造成认证模式 (如果最后一组明文长度小于分组长度, 可采用补位或密文挪用等措施) :
(IV为计数器, 或为不重复的伪随机数)
(可预处理, IVi可扩展至所需长度)
(密文可互换, 不能同时作为加密模式)
该模式只能作为认证模式, 采用密钥计数思想, 可称为密钥计数认证 (KCTR-MAC) 模式。CBC-MAC算法采用相同密钥加密, 而KCTR-MAC算法采用变密钥加密, 因此, KCTR-MAC模式的安全性更高些。KCTR-MAC模式描述比PMAC模式简单, 但KCTR-MAC模式需进行多次密钥编排 (可预处理) , 计算量和PMAC模式差不多。
《4.2KCTR-MAC模式的安全性》
4.2KCTR-MAC模式的安全性
由于CTR加密模式是通过将明 (密) 文同密码流相异或进行加 (解) 密的, 而PMAC和PKCB认证模式又有一定的差分线性, 这样就可通过密文差分互换实现明文差分互换, 而MAC值不变。
假设分组密码算法分别采用CTR和KCTR-MAC作为加密和认证模式。KCTR-MAC模式对不同顺序的明文采用不同的密钥进行处理, 即采用密钥计数方式对数据进行定位, 可以抵抗密文的增删和互换攻击。虽然密钥的计数是线性的, 但经过加密算法的非线性处理, 数据的偏移不存在差分线性关系, 可以抵抗密文差分互换攻击。虽然PKCB认证模式也采用不同的密钥对不同顺序的明文进行处理, 但引入部分明文当密钥, 可通过修改数据控制密钥。因此, KCTR-MAC模式的安全性比PMAC和PKCB模式高。不过, KCTR-MAC模式不能与相同的加密模式共存 (PMAC模式也不能与相同的加密模式共存) 。
PMAC模式中的伪随机序列Zi实质上是计数值的伪随机变换;PMAC模式实质上也是一种计数器模式。因此, KCTR-MAC模式是PMAC模式的改进模式。当然, 也可把PMAC模式中的伪随机序列Zi引入到KCTR-MAC模式中, 以增强复杂度;这样需增加存储空间以便预处理。
KCTR-MAC算法是陷门单向函数, 不能作为无陷门单向散列函数, 可采用它来构造并行的无陷门单向散列函数。另外, KCTR-MAC模式可扩展为同时实现加密和认证的全工作模式。
《5 CCM并行模式》
5 CCM并行模式
CCM模式
《5.1CCM并行模式1 (CTR with PKCB-MAC) 》
5.1CCM并行模式1 (CTR with PKCB-MAC)
将PKCB认证模式与CTR加密模式结合构成分组密码算法的一种全工作模式, 称为CPK模式。CPK模式加解密和认证都可并行处理, 但安全性明显低于CCM模式。
《5.2CCM并行模式2 (2CTR) 》
5.2CCM并行模式2 (2CTR)
KCTR-MAC只能作为认证模式, 而CTR只能作为加密模式, 将KCTR-MAC与CTR结合构成分组密码算法的一种全工作模式, 称为2CTR (双计数器) 模式。2CTR (CTR with KCTR-MAC) 模式与CCM模式相比, 安全性未降低, 至少未明显降低, 而加解密和认证都可并行处理, 因此, 2CTR模式的综合性能不亚于标准模式CCM。
《6 结语》
6 结语
笔者给出了一种基于双重分组的并行认证模式 (PKCB) ;PKCB模式与PMAC模式相比, 安全性和速率都有显著提高;PKCB认证模式与CTR加密模式结合可构成分组密码算法的一种全工作模式 (CPK) ;CPM模式加解密和认证都可并行处理, 但安全性明显低于CCM模式。在此基础上给出了一种基于密钥计数的并行认证模式 (KCTR-MAC) ;KCTR-MAC模式安全性比PMAC模式高得多, 而速率未降低;KCTR-MAC认证模式和CTR加密模式结合也可构成分组密码算法的一种全工作模式 (2CTR) ;2CTR模式解决了CCM认证 (CBC-MAC) 不可并行处理的问题。2种新工作模式描述简单, 便于性能评估, 其中2CTR模式的综合性能不亚于标准模式CCM。