图解密码技术学习-第四章 分组密码的模式

概述

什么是模式

第三章介绍的对称密码算法DES、AES都属于分组密码,分组密码的特点是分组的长度是固定的。但是由于明文的长度不固定且基本超过分组长度,所以就需要进行多轮的迭代加密。
模式就是指的多轮迭代的方式。

模式的种类

目前模式分成5种:

  • ECB模式:Electronic CodeBook mode(电子密码本模式)
  • CBC模式:Cipher Block Chaining mode(密码分组链接模式)
  • CFB模式:Cipher FeedBack mode(密文反馈模式)
  • OFB模式:Output FeedBack mode(输出反馈模式)
  • CTR模式:CounTeR mode(计数器模式)

ECB模式

概述

ECB模式应该是最直观的模式,简单的说就是直接将每个分组进行加密即可。
假设有一个35字节的明文,如果使用AES的算法,则分成三个分组。其中第三个分组需要填充成16字节。
然后针对这3个分组分别进行AES加密,加密完成后,组合起来就成为密文。

风险

  • 相同明文加密出来的密文是相同的。因为参与加密的只有明文和密钥,所以只能得出相同的密文。这个可以给攻击者通过推测猜测出明文的内容。
  • 存在被篡改的风险,可以实现无需破解密文,即可以操纵明文。
    这个风险的根本原因是因为,在加密的过程中,每个分组是互相独立的。
    例子:
    假设有明文被分成三个分组,恰好代表三个意思:
    分组1:付款人
    分组2:收款人
    分组3:金额
    怎样通过密文操纵明文呢?
    我们可以截获密文,然后将密文的分组2和分组1调整一下先后顺序,先发送分组2,再发送分组1。这样付款人和收款人就互相调换了位置。

CBC模式

概述

  • CBC模式跟上面的ECB模式的最大区别是,分组的加密不再是互相无关的独立行为,而是互相影响。
    简单的说,当前分组不再直接进行加密运算,而是先和前一个分组加密后的密文进行XOR运算后,再进行加密运算。对于第一个分组,则给定一个初始化向量进行XOR运算。
    因为前后分组是链接在一起的,所以才被称为链接模式。
  • 解密的过程是密文用密钥解密后,再和前一个分组的密文进行XOR得到最终的明文。如果是第一个分组,则和初始化向量进行XOR运算即可。
  • 解密的过程实际上只需要知道密钥即可,因为前一个分组的密文和本分组的密文是早就存在的,所以解密的过程支持分布式运算

风险

  • 如果其中一个密文的分组受到损坏,则会影响到此密文分组对应的明文解密,以及其后面一个分组的明文解密。因为这个密文分组参与到了后面分组的密文加解密的过程。
  • 如果对初始化向量的某个比特进行反转,则会对第一个分组的明文造成攻击,使得其明文的对应的比特反转,原因是参与了异或。
  • 如果是对某个密文进行比特反转,会造成其后面的分组对应比特反转,但同时会造成其对应明文的多个比特进行反转。
  • 对CBC模式的攻击效果基本是破坏性的,相对而言ECB模式的攻击效果更明显。

CFB模式

概述

  • 相对CBC模式而言,不变的地方是前面分组的结果仍旧参与到后面分组的加解密过程中,形成一个链式结构。
    改变的地方是参与的方式,更确切的说是加密的对象。
  • CBC模式是分组1的密文和分组2的明文XOR后,再针对XOR的结果进行加密。
    而CFB模式是,分组的明文不参与到加密过程中!
  • 加密过程是。分组1输出的密文进行加密,然后和分组2的明文进行XOR运算,得到分组2的密文。
    对于第一个分组,则是用初始化向量进行加密后,再和第一个分组的明文进行XOR,得到密文。
  • 解密的过程,不用解密。
    对于第一个分组而言,解密是把初始化向量进行加密,然后和密文进行XOR,就得到了明文。其他分组类似,只是初始化向量换成其前一个分组的密文。
  • 和CBC模式一样,解密的过程支持分布式运算。

风险

  • 重放攻击。CFB模式存在着被重放攻击的可能性的。
    1、假设发送了4个分组,其中攻击者保存了后三个分组(分组2、3、4)。
    2、再假设又发送了4个分组,而且加密密钥不变。
    3、攻击者将今天的后三个分组用之前保存的分组进行替换。
    4、接收者接收到了这4个分组之后,进行解密操作会得到什么情况呢?
    4.1 分组2的解密一定会失败。因为分组2的解密依赖于分组1的密文,但是由于分组1的密文已经变化,所以分组2必然失败。
    4.2 分组3、分组4的解密会成功,成功解密成之前保存的明文。因为分组3的解密依赖于分组2的密文,这个由于已经保存,所以完全没有变化,加上加密密钥不变,自然解密是成功的。同样的道理也发生在分组4上。
    至此,针对CFB模式的重放攻击就完成了。
  • 和CBC模式一样,如果某一个分组的密文存在某个比特的问题,那么会影响此分组的明文和后一个分组的明文解密。

能够造成重放攻击的根本原因在于,密文本身作为加密活动的唯一两个因子,而攻击者恰恰能获取到这两个因子

OFB模式

概述

  • OFB模式和CFB模式相同的地方是,都不是针对明文本身进行加密,明文只是作为XOR运算的因子参与进来。
  • OFB模式和CFB模式最大的区别在于,密文不再参与到XOR的运算中来,而仅仅是通过初始化向量产生的数据与明文进行XOR运算得到密文。
  • 加密流程。
    初始化向量进行加密得到加密向量1,和分组1的明文进行XOR运算,得到密文1;
    加密向量1再进行加密得到加密向量2,和分组2的明文进行XOR运算,得到密文2.
    以此类推。
  • 解密流程。向量的运算跟加密一样,只是跟密文进行XOR得到明文罢了。

特点

  • 生成XOR对象的过程跟明文没有关系,是直接通过初始化向量得到的。这可以被称为是密钥流。
  • CFB模式的那种重放攻击的风险消失了,因为密文没有参与到XOR运算中来。
  • 运算更加高效。在CBC模式和CFB模式中,后面的分组加密是必须等待前面的分组加密完成后才能进行,因为需要等待前一个分组的密文参与运算。但OFB模式中参与运算的不是前一个分组的密文,而是通过初始化向量得到的密钥流。所以完全可以提前就准备好密钥流,然后快速进行分组加密。也就是说生成密钥流和XOR远算可以并行
  • 由于密文不再参与其他分组的加解密过程,所以如果一个分组密文的某个比特受损,则不会再影响到其他分组的明文结果。

CTR模式

概述

  • CTR和OFB的相同点在于,密文同样不参与到XOR的运算中来。
  • CTR和OFB的不同点在于,OFB的密钥流是通过初始化向量的不断加密得到,而CTR是通过生成计数器不断增长+1后加密得到。
  • CTR计数器,长度是128比特(16字节)。前8个字节是叫做nonce的初始值,这个值每次加密都不相同。后8个字节则是分组序号,也就是不断+1得到的值。
  • 加密的过程就是生成一个初始的计数器。假设有8个分组,就通过初始计数器不断+1得到8个计数器值,然后再加密得到密钥流。剩下的步骤和OFB一样。

特点

  • 支持并行计算。OFB模式中,密钥流必须由前一个密钥密文加密得到,所以只能单线程等待。CTR模式中,计数器可以通过分组个数先准备好,然后后续的加密过程是相互独立的,所以可以支持并行运算。
  • 速度最快。支持并行运算自然就加快了速度。
  • 由于密文不再参与其他分组的加解密过程,所以如果一个分组密文的某个比特受损,则不会再影响到其他分组的明文结果。

分组模式的实际使用

  • ECB模式,这个已经禁止使用。
  • CBC模式,推荐使用。并没有什么特别的风险(从原理上分析,CFB模式被重放攻击的条件下,其实CBC模式应该也会被重放攻击,但是不知道为什么书中没有提到。),但是也不太清楚为什么有了CTR,还需要推荐CBC,特别的优势没看到。
  • CFB模式,目前不使用,推荐用CTR替代。这个其实是OFB/CTR 和 CBC之间的一个模式。
  • OFB模式,和CTR比较起来几乎是一回事。OFB有的CTR都有,CTR有的OFB没有。所以不适用,推荐CTR替代。
  • CTR模式,推荐使用。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,457评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,837评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,696评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,183评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,057评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,105评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,520评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,211评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,482评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,574评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,353评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,897评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,489评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,683评论 2 335

推荐阅读更多精彩内容

  • 前言 本文章是对《图解密码技术》一书第一部分的一个总结。 密码分类 密码算法需要密钥,根据密钥的使用方法,可以将密...
    发仔很忙阅读 1,385评论 1 2
  • 对称加密算法,即加密和解密使用一样的密钥的加解密算法。分组密码(block cipher),是每次只能处理特定长度...
    linjinhe阅读 11,843评论 3 16
  • 前言 《图解密码技术》一书介绍了很多关于密码的知识,通读一遍需要不少时间。为了方便学习,我对书中关键的部分进行了总...
    咖枯阅读 7,096评论 1 25
  • 分组密码和流密码 分组密码:每次只能处理特定bit长度的一块数据的密码算法,这里的“一块”就是分组(block)。...
    TonyLiu623阅读 1,806评论 0 0
  • 必要的基础知识 编码 将现实世界的内容(文字、图片、视频等所有的信息)转换成比特序列的过程就叫做编码。例如,ASC...
    JMasche阅读 1,309评论 0 2