分组密码是将消息作为数据分组来加密或解密的,而实际应用中大多数消息的长度是不定的,数据格式也不同。因此,在分组密码的实际应用中,需要灵活运用分组密码。大于分组长度的消息需要分成几个分组分别进行处理。
在实际应用中,分组密码算法也需要采用适当的工作模式来隐蔽明文的统计特性、数据格式,增加分组密码算法的随机性,控制错误传播等,以提高整体的安全性,降低删除、重放、插入和伪装成功的几率。所采用的运行模式应当力求简单、有效和易于实现。
本节介绍5个常用的运行模式,即电码本(ECB)模式、密码分组链接(CBC)模式、输出反馈(OFB)模式、密码反馈(CFB)模式和计数器(CTR)模式。
在描述中,将使用以下符号。
1)ε(.):基本分组密码的加密算法。
2)υ():基本分组密码的解密算法。
3)n:基本分组密码算法的消息分组的二进制长度。
4)P1,P2,…,Pm:输入到运行模式中明文消息的m个连续分段。
●第m分段的长度可能小于其他分段的长度,在这种情况下,可对第m分段进行添加,使其与其他分段长度相同。
●在某些运算模式中,消息分段的长度等于n(分组长度),而在其他的运算模式中,消息分段的长度小于或等于n。
5)C1,C2,…,Cm:从运算模式输出的密文消息的m个连续分段。
6)LSBu(B),MSBv(B):分别是分组B中最低u位比特和最高v位比特,例如,
LSB2(1010011)=11,MSB5(1010011)=10100
7):数据分组A和B的链接,例如,
LSB2(1010011)||MSB5(1010011)=11||10100=1110100
1.电码本模式
电码本模式直接利用分组密码算法对消息的各个分组进行加密或解密。在给定密钥的情况下,每个分组P可能的取值有2n种,对应的密文C也有2n种可能的取值,各个(P,C)彼此独立,类似于构成一个巨大的电码本,因而称其为电码本模式(ECB)。ECB模式定义如下。
ECB加密:
Ci←ε(Pi),i=1,2,…,m
ECB解密:
Pi←υ(Ci),i=1,2,…,m
ECB模式是确定性的,也就是说,如果在相同的密钥下将P1,P2,…,Pm加密两次,那么输出的密文分组也是相同的。在实际应用中,如果明文消息是可猜测的,那么由确定性加密方案得到的密文就会使攻击者猜测出明文。因此,通常不希望使用确定性密码,因此在大多数应用中不使用ECB模式。
2.密码分组链接模式
密码分组链接(CBC)模式是一种用于一般数据加密的模式。使用CBC模式,输出是n bit密码分组的一个序列,这些密码分组链接在一起使得每个密码分组不仅依赖于所对应的原文分组,而且依赖于所有以前的数据分组。CBC模式的加密和解密运算如下。
CBC加密如下。
输入:IV,P1,P2,…,Pm;输出:IV,C1,C2,…,Cm;
C0←IV;
Ci←ε(Pi⊕Ci−1),i=1,2,…,m。
CBC解密如下。
输入:IV,C1,C2,…,Cm;输出:P1,P2,…,Pm;
C0←IV;
Pi←υ(Ci)⊕Ci−1,i=1,2,…,m。
第一个密文分组C1的计算需要一个特殊的输入分组C0,称为“初始向量”(IV)。IV是一个随机的n bit分组,每次会话加密时都要使用一个新的随机IV,由于IV可看作密文分组,因此无须保密,但一定是不可预知的。由加密过程可知,由于IV的随机性,第一个密文分组C1被随机化,同样,依次后续的输出密文分组都将被前面紧接着的密文分组随机化,因此,CBC模式输出的是随机化的密文分组。发送给接收者的密文消息应包括IV。所以,对于m个分组的明文,CBC模式将输出m+1个密文分组。
令Q1,Q2,…,Qm是对密文分组C0,C1,C2,…,Cm解密得到的数据分组输出,则由
Qi=υ(Ci)⊕Ci−1=(Pi⊕Ci−1)⊕Ci−1=Pi
可知,解密正确。图2-14为CBC模式的示意图。CBC模式通过反馈使输出密文与以前的各明文相关,从而实现了隐藏明文图样的目的。但是CBC模式由于反馈的作用而对线路中的差错比较敏感,会出现错误传播。密文中任何一位发生变化都会影响到后面分组的解密。
图2-14 密码分组链接模式
3.密码反馈模式
若加密消息必须按字符或bit处理时,可采用密码反馈(CFB)模式。CFB模式的特点在于反馈相继的密码分段,这些分段从模式的输出返回作为基础分组密码算法的输入。消息(明文或密文)分组长为s,其中1≤s≤n。CFB模式要求IV作为初始的nbit随机输入分组,因为在系统中IV是在密文的位置中,所以它不必保密。CFB模式的加密和解密运算如下。
CFB加密如下。(www.xing528.com)
输入:IV,P1,P2,…,Pm;输出:IV,C1,C2,…,Cm;
I←IV;
Ii←LSBn−s(Ii−1)||Ci−1i=2,…,m;
Oi←ε(Ii) i=1,2,…,m;
Ci←Pi⊕MSBs(Oi) i=1,2,…,m。
CFB解密如下。
输入:IV,C1,C2,…,Cm;输出:P1,P2,…,Pm;
I←IV;
Ii←LSBn−s(Ii−1)||Ci−1i=2,…,m;
Oi←ε(Ii) i=1,2,…,m;
Pi←Ci⊕MSBs(Oi) i=1,2,…,m。
在CFB模式中,观察到基本分组密码的加密函数用在加密和解密的两端,因此,基本密码函数E可以是任意(加密的)单向变换,如单向杂凑函数。CFB模式可以考虑作为流密码的密钥流生成器,加密变换是作用在密钥流和消息分段之间的弗纳姆密码。类似于CBC模式,密文分段是前面所有的明文分段的函数值和IV,图2-15为CFB模式的示意图。
图2-15 密码反馈模式
图2-16 输出反馈模式
4.输出反馈模式
输出反馈(OFB)模式的特点是将基本分组密码的连续输出分组回送。这些反馈分组构成了一个比特串,被用作弗纳姆(Vernam)密码的密钥流的比特串,就是密钥流与明文分组相“异或”。OFB模式要求IV作为初始的随机nbit输入分组。因为在系统中,IV是在密文的位置中,所以它不必保密。OFB模式的运算如下。
OFB加密如下。
输入:IV,P1,P2,…,Pm;输出:IV,C1,C2,…,Cm;
I1←IV;
Ii←Oi−1i=2,…,m;
Oi←ε(Ii) i=1,2,…,m;
Ci←Pi⊕Oii=1,2,…,m。
OFB解密如下。
输入:IV,C1,C2,…,Cm;输出:P1,P2,…,Pm;
I1←IV;
Ii←Oi−1i=2,…,m;
Oi←ε(Ii) i=1,2,…,m;
Pi←Ci⊕Oii=1,2,…,m。
在OFB模式中,加密和解密是相同的:将输入消息分组与由反馈电路生成的密钥流相“异或”。反馈电路实际上构成了一个有限状态机,其状态完全由基础分组密码算法的加密密钥和IV决定。如果密码分组发生了传输错误,那么只有相应位置上的明文分组会发生错乱,因此,OFB模式适宜不可能重发的消息加密,如无线电信号。类似于CFB模式,基础分组密码算法可用加密的单向杂凑函数代替。图2-16为OFB模式的示意图。
5.计数器模式
计数器(CTR)模式的特征是将计数器从初始值开始计数所得到的值反馈给基础分组密码算法。随着计数的增加,基础分组密码算法输出连续的分组来构成一个比特串,该比特串被用作弗纳姆密码的密钥流,也就是密钥流与明文分组相“异或”。CTR模式运算如下(这里Ctr1是计数器初始的非保密值)。
CTR加密如下。
输入:Ctr1,P1,P2,…,Pm;输出:Ctr1,C1,C2,…,Cm;
Ci←Pi⊕ε(Ctri), i=1,2,…,m。
CTR解密如下。
输入:Ctr1,C1,C2,…,Cm;输出:P1,P2,…,Pm;
Pi←Ci⊕ε(Ctri), i=1,2,…,m。
因为没有反馈,CTR模式的加密和解密能够同时进行,这是CTR模式比CFB模式和OFB模式优越的地方。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。