原创 【密码学05】加密模式

2009-2-25 15:05 2263 5 5 分类: FPGA/CPLD


大多数密码算法都是将明文切成固定长度的多个块,以块为单位进行加密,而不是逐个字节地加密数据。不管什么样的密码算法,任何时候当同样的明文块从算法前端输入,同样的密文块就从后端输出。入侵者可以充分发掘这种特性来协助攻破密码系统。下面举个例子来说明。<?XML:NAMESPACE PREFIX = O />


下面这个表描述的是三个人的年终奖金额度。



<?XML:NAMESPACE PREFIX = ST1 />Alice


8000


Bob


12000


Trudy


3000


老板授权秘书MM整理好这张表后,秘书MM将其加密,然后提交给财务部门。为了清楚地描述问题,这里假设这张表的每个字段都是64位,而且刚好秘书MM用的加密算法的加密块长度也是64位,那么加密结果可能就是像下面这个样子:



As9d8912h3a98q 9SDJKVNI


9d89821as89982mHSLkp[anm


09djhASDFQWER78sdfHD,zx


0812UtWEQ23][;[]X/;;\DSKg5p


78723G/CC;D;LFSDF/;LXPASh


/.,;ISOFIWERIIOC7kjJKJDFNSAn


假设在秘书MM发送这段密文之前,不巧让Trudy看到了。尽管Trudy看不懂这个表的内容,但是当秘书MM抱怨就两个字段的表为什么么要定死每个字段长度为64位的时候,Trudy获得了足够的信息。她知道由于自己刚和老板吵过嘴,奖金肯定没有其它人高,于是她尝试将这些密文块的顺序调整了一下,变成下面这个样子:



As9d8912h3a98q 9SDJKVNI


0812UtWEQ23][;[]X/;;\DSKg5p


09djhASDFQWER78sdfHD,zx


/.,;ISOFIWERIIOC7kjJKJDFNSAn


78723G/CC;D;LFSDF/;LXPASh


9d89821as89982mHSLkp[anm


仅仅是调整一下密文块的顺序,财务部解密消息的时候完全察觉不到有任何异常。尽管Trudy还是不知道奖金是多少,但是可以很有把握地相信自己的奖金会比原来高。


为了对抗这种问题,需要采取某种加密模式,需要把各个密文块关联起来,使得密文任何一处有异常更改,都会导致整个密文作废。常见的加密模式有以下这。


1) 电子密码本模式。这个不用再介绍了,就上面讲的有问题的这种模式,每块明文都对应自己的密文块,互不相干。虽然有问题,但它也是一种模式,呵呵。


2) 密码块链模式。每个纯文本块在加密前,通过按位异或操作与前一个块的密码文本结合。这样确保了即使纯文本包含许多相同的块,这些块中的每一个也会加密为不同的密码文本块。在加密块之前,初始化向量通过按位异或操作与第一个纯文本块结合。如果密码文本块中有一个位出错,相应的纯文本块也将出错。此外,后面的块中与原出错位的位置相同的位也将出错。下图是CBC加密模式示意图。




3) 密码反馈模式。将少量递增的纯文本处理成密码文本,而不是一次处理整个块。该模式使用在长度上为一个块且被分为几部分的移位寄存器。例如,如果块大小为 8 个字节,并且每次处理一个字节,则移位寄存器被分为 8 个部分。如果密码文本中有一个位出错,则一个纯文本位出错,并且移位寄存器损坏。这将导致接下来若干次递增的纯文本出错,直到出错位从移位寄存器中移出为止。CFB加密模式示意图如下。


 


4) 输出反馈模式。将少量递增的纯文本处理成密码文本,而不是一次处理整个块。此模式与 CFB 相似;这两种模式的唯一差别是移位寄存器的填充方式不同。如果密码文本中有一个位出错,纯文本中相应的位也将出错。但是,如果密码文本中有多余或者缺少的位,则那个位之后的纯文本都将出错。


5) 流密码模式。用一个密钥加密一个初始向量生成一个输出块,然后用同样的密钥对这个输出块进行加密以得到第二个输出块,再用同样的密钥对这个输出块进行加密得到第三个输出块,以此类推。所有这些块的序列叫做密钥流。逐块输出密钥流时,就逐块与明文异或,输出的就是密文。


6) 计数器模式。用一个密钥加密一个初始向量生成输出块,然后将初始向量加1再用同样的密钥加密输出第二个输出块,以此类推。输出的块序列也是密钥流,逐块输出密钥流时,就逐块与明文异或,输出的就是密文。


7) CTS(密码文本窃用模式)。处理任何长度的纯文本并产生长度与纯文本长度匹配的密码文本。除了最后两个纯文本块外,对于所有其他块,此模式与 CBC 模式的行为相同。

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
5
关闭 站长推荐上一条 /3 下一条