5.1 密码学专题 - 对称加密算法 - DES 算法

密码学专题 - 对称加密算法 - DES 算法

5.1 DES 算法

数据加密标准 (DES) 是应用最广泛的一种分组密码算法,但由于它仅仅 56 位的密钥长度和 64 位的分组长度严重地限制了算法的安全性,已经不适合今天的快速计算机和大量数据运算的情况了。随之取代它的是一种称为 3DES 的分组密码算法,它以某种特殊的顺序使用两个密钥执行三次 DES 加密,用第一个 56 位密钥执行 DES,然后用第二个 56 位密钥执行 DES 逆运算即解密函数,最后用第一个 56 位密钥进行加密。这种算法解决了位数过少的密钥带来的安全问题,但是并没有解决数据分组长度过短的问题。DES 已经不是现行标准下的快速加密方法。3DES 也只有 DES 执行速度的三分之一。可能在很多系统中会遇到 DES 算法,但是在新的设计中并不推荐使用 DES 或者 3DES。但是,DES 作为一个经典的设计本身就很值得研究。

图 3-1 给出了一个单轮的 DES。这是一个 DES 算法的具体流程图,在有关密码学文献中经常看到类似的图。每个盒执行一个特定的功能,线段表示所使用的值。有一些符号规定:异或运算有时也称为按位加法或者无进位加法,在图中显示为 \bigoplus 运算符。有些图中还包含整数加法,用运算符 田 表示。

一轮 DES 的结构.jpg

DES 算法有 64 位明文,首先将明文进行 IP 置换。然后将明文从中间分成左右两部分,分别是 32 位的 LR。似乎很难理解为什么要将明文进行 IP 置换,从密码设计的角度来讲并没有增强算法的安全性,但是 DES 算法的确是这样定义的。在一轮加密结束后同样交换 LR 的序列以得到 64 位的密文。

DES 算法有 16 轮加密,分别被编号为 1 至 16.每一轮使用一个 48 位的轮密钥 K_i。这 16 个轮密钥是从分组密码的 56 位密钥 K 中选择 48 位生成的,对于每一轮密钥,选择方式都是不同的。这个由主分组密码密钥生成轮密钥的算法称为子密钥生成器 (key schedule)。

如图 3-1 所示,虚线框之内的表示轮函数 F。轮函数通过一系列的运算改变 (L, R) 的值。32 位的 R 值首先要经过扩展函数得到 48 位的输出。然后和轮密钥 K_i 进行异或并将结果输入 S 盒。 S 盒 (S 表示替代,是 substituion 首字母) 是一个公开的查找表。48 位的输入被分成一些组,每组大小约为 4 ~ 6 位。S 盒将 48 位的向量通过非线性映射成为 32 位的向量。这 32 位经过位变换函数后与 L 异或得到新的 L,将此 LR 的值互换,进入新一轮的加密。如此重复 16 轮就是一个完整的 DES 加密。

DES 算法的基本结构称为 Feistel 结构。这是一个巧妙的设计。每一轮通过 LF(K_i,R) 的异或生成新的 L,然后将 LR 交换,该设计的巧妙之处在于解密函数可以使用相同的运算,只需要将 LR 的值交换。所以在分析时,只需要分析加密函数或者解密函数中的一个。还有一点需要注意的是最后一轮计算后的输出结果不需要交换 LR,因此除了轮密钥的顺序之外,加密和解密函数几乎相同。这种设计对于硬件实现是非常有好处的,因为可以使用相同的电路进行加密和解密的计算。

DES 加密算法的不同部分有不同的功能,这种设计简单的 Feistel 结构使得 LR 两部分混合在一起。用密钥来进行异或主要是通过密钥和数据进行混合运算来打乱消息。S 盒提供非线性变换。如果没有以上这些部分,密码就可以表示成二进制加法,从而很容易遭受到基于线性代数的数学攻击。最后,S 盒、扩展函数、位变换函数的结合起到了扩散的作用。扩散是指输入 F 的任何一位发生变化都影响到输出密文的许多位。在接下来一轮的计算中就会影响到更多位。如果没有良好的扩散性能,明文微小的变化也只能导致密文的某些位发生变化,攻击者很容易检测出这些变化。

根据安全定义,DES 算法有很多特有的性质。比如,每一轮的轮密钥都是由分组密码的主密钥的某些位生成的。如果主密钥为 0,那么所有的轮密钥都是相同的,也都为 0。上面提到加密和解密的唯一区别就是轮密钥的顺序,因为所有轮密钥都是 0,所以所有的加密密钥和密钥密钥也都相同了。

DES 算法也有互补的性质:
\overline{E} (\overline{K},\overline{P}) = \overline{E(K,P)}

K 为密钥,P 为明文,\overline{X} 是指 X 的所有位取反后的值。如果使用取反的密钥加密取反后的明文值,那么所得到的密文是原密文的取反。

这是很容易理解的。试想在图 3-1 中如果将 LRK_i 的所有位均取反会出现何种情况。取反输入经过扩展与取反的 K_i 的进行异或,会得到和之前相同的输入,经过 S 盒和位变换后输出还是与未取反时的输出相同。但是 L 的值取反,所以异或后得到的取反结果作为新的 R 值。因此得到结论:如果将 LR 以及加密的密钥均取反,那么得到的输出值也是原来值的取反结果。

总之,DES 因为具备这些特殊性质,按照前面对分组密码安全的定义,可以排除 DES 是一个安全的分组密码。但是即使忽略这些性质,DES 的密钥长度也是远远不能保证安全性的。目前已经能够通过简单的穷举搜索破译出 DES 的密钥。

3DES 算法具有更长一些的密钥,但是它继承了 DES 算法的弱密钥和互补性质,其中每一项都不符合我们的标准。而且,也受到分组长度只有 64 位的限制,这使单个密钥加密的数据量受到限制。有些时候,由于一些原因不得不使用 3DES 算法,但是需要仔细使用,因为这个算法具有分组长度的限制,而且它并非是一个理想分组密码。

项目源代码

项目源代码会逐步上传到 Github,地址为 https://github.com/windstamp

Contributor

  1. Windstamp, https://github.com/windstamp
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,593评论 6 513
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,080评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 167,025评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,317评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,329评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,036评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,639评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,557评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,089评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,197评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,330评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,006评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,689评论 3 332
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,189评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,313评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,676评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,339评论 2 358