现代密码学——分组密码

目录

1.分组密码概述

1.1 定义

1.2 分组密码的设计原则

1.3 分组密码的迭代结构

1.Feistel网络

2.SP网络

2.数据加密标准(DES)

2.1 DES的基本结构

2.2 DES的初始置换和逆初始置换

2.3 DES的F函数

1.扩展置换

2.密钥加

3.代换盒

4.置换运算(P盒)

2.4 三重DES

3.AES算法

(未完待续) 


 

1.分组密码概述

1.1 定义

      分组密码是将明文消息编码表示后的二进制序列,划分成固定大小的块,每块分别在密钥的控制下变换成等长的二进制序列。

      分组密码属于对称密码体制,所以加密密钥空间与解密密钥空间相同,加解密的设计应满足以下要求:

  1. 分组要足够长,以防明文穷举攻击。
  2. 密钥长度要足够长,以防止密钥穷举攻击。但又不能过长,这不利于密钥的管理和影响加解密的速度。
  3. 由密钥确定的置换算法要足够复杂,足以抗击各种已知攻击,使攻击者除了使用穷举法之外无其他更好的攻击方法。
  4. 加解密运算简单,易于软件和硬件的快速实现。一个复杂的算法由许多相对简单的运算构成,为了便于软件编程或通过逻辑电路实现,算法中的运算应该尽量简单。
  5. 一般无数据扩展,即明文与密文长度相同。

1.2 分组密码的设计原则

        为了抵抗攻击者对密码体制的攻击,Shannon提出了三个基本设计思想——混乱、扩散以及乘积密码

  • 扩散

        扩散是指使每1比特明文的变化尽可能多地影响到输出密文序列的比特,以便隐蔽明文的统计特性。简单来说就是扩散的目的在于使密文中的任一比特都要尽可能与明文和密钥的每一比特相关联。

  • 混乱

        混乱是指在加密变换过程中明文、密钥以及密文之间的关系尽可能地复杂,以防密码破译者采用统计分析方法进行破译攻击。

        混乱可以用“搅拌机”来形象解释,将一组明文和一组密钥输入到算法中,经过充分混合,变成密文。同时要求这种混乱作业的每一步都必须是可逆的,即明文混乱后得到密文,密文经过逆向的混乱操作后恢复出明文

  • 乘积密码体制

设S1=(M1,C1,K1,E1,D1)和S2=(M2,C2,K2,E2,D2)是两个密码体制。

  • M:明文(Message)
  • C:密文(Ciphertext)
  • K:密钥(Key)
  • E:加密算法(Encryption Algorithm)
  • D:解密算法(Decryption Algorithm)

S1和S2的乘积定义了乘积密码体制 \left ( M1\times M2 , C1\times C2, K1\times K2,E1\times E2,D1\times D2 \right )

记为S1×S2。在实际应用中,明文空间和密文空间往往相同,即M1=M2=C1=C2,则乘积密码体制S1×S2可简化为\left ( M , M, K1\times K2,E,D \right ),其中E=E1×E2,D=D1×D2。

如果S1×S2=S2×S1,那么乘积密码体制S1×S2和S2×S1是两个相同的密码体制,则称密码体制S1和S2是可交换的。

显然,密码体制的乘积运算满足结合律,即对任意的明文空间与密文空间相同的密码体制S1,S2以及S3,都有: 

\left ( S1\times S2 \right )\times S3=S1\times \left ( S2\times S3 \right )

   设S是一个明文空间和密文空间都相同的密码体制

    称{S}^{n}为迭代密码体制,如果{S}^{2}=S,则称S是等幂的密码体系。

        如果S不是一个幂等的密码体制,则对于n>1,迭代密码体制{S}^{n}的安全强度会比S高,这种通过对一个密码体制进行迭代来提高其安全强度的思想被广泛应用于对称密码体制的设计,通常称之为密码体制的迭代结构。具体的,就是在密钥控制下扩散和混乱两种基本密码操作的多次迭代,每次迭代的各种基本密码操作总体,称之为轮函数

一般来说,决定迭代轮数的准则是:使密码分析的难度大于简单穷举攻击的难度

1.3 分组密码的迭代结构

1.Feistel网络

       Feistel网络结构是一种应用于分组密码的对称结构,被用于很多分组密码算法,如DES、GOST28147-89等。

       Feistel的优点在于加解密相似性,它只需一个逆转的密钥编排算法,其加解密算法部分几乎相同。因此,在实施过程中,对编码量和线路传输的要求都几乎减半,Feistel结构在物理上的重复使得它在硬件上的实施非常容易,尤其是支持DES计算的硬件。

以F表示轮函数,K0,K1,....,Kn分别表示第1,2,...,n+1轮的子密钥,那么基本加解密过程如下:

  •  加密

(1)将明文分组分割成长度相同的两块(L0,R0);

(2)对每一轮,i=0,1,...,n,

{L}_{i+1}=R_{i}\\ R_{i+1}=L_{i}\bigoplus F\left ( L_{i+1},K_{i} \right )

(3)加密后的密文为\left ( R_{n+1},L_{n+1} \right )

  • 解密

(1)对于密文\left ( R_{n+1},L_{n+1} \right )的解密,每一轮,i=n,n-1,...,0,

R_{i}=L_{i+1}\\ L_i=R_{i+1}\bigoplus F(L_{i+1},K_i)

(2)最终得出(L_0,R_0)为解密后的明文。

2.SP网络

       代换-置换网络,简称SP网络,是由S代换和P置换交替进行多次迭代而形成的变换网络,它属于迭代密码,也是乘积密码的一种常见表现形式。S代换(也称S盒)和P置换(也称P盒)是分组密码中的基本构件。

        SP网络结构是由多重S盒和P盒组合成的变换网络。其中S盒起到混乱作用,P盒起到扩散作用。每一轮迭代中,分组先经过S盒进行代换,再通过P盒进行置换。

       置换不等同于扩散。置换不改变明文在单个字符或置换分组上的统计性质。不过,多轮迭代与代换结合,置换能够产生扩散作用。

        在SP网络结构中,S盒是许多密码算法唯一的非线性部件,它的密码强度决定了整个密码算法的安全强度。

       SP网络结构和Feistel网络结构都具有雪崩效应。雪崩效应指的是:输入(明文或密钥)即使只有很小的变化,也会导致输出(密文)产生巨大的变化。

2.数据加密标准(DES)

2.1 DES的基本结构

DES是一个对称密码体制,加密和解密使用同一密钥,有效密钥长度为56位。DES是一个分组密码算法,分组长度位64位,即对数据进行加解密的单位是64位,明文和密文长度相同。

DES的初始密钥长度也为64位,但有效的密钥为56位,因为第8、16、24、40、48、56和64位都是奇校验位。

加密过程主要有3个阶段 

(1)64位的明文经过初始置换(IP)而被重新排列,并将其分为左右两个分组L0和R0,各为32位。
(2)在密钥的参与下,对左右两个分组进行16轮相同轮函数的选代,每轮送代都有置换和代换。注意最后一轮选代的输出为64位,左半部分和右半部分不进行交换。
(3)最后的预输出再通过逆初始置换(TP-1)产生64位的密文。

2.2 DES的初始置换和逆初始置换

初始置换(IP)是在第一轮迭代之前进行的,目的是将原明文块的位进行换位,其置换表是固定的。

逆初始置换(IP^{-1})是初始置换的逆置换,数据块经过初始置换和逆初始置换后恢复到原来的位置。

如上图,经过IP置换后,明文块第1位被置换到第40位的位置,在经过IP^{-1}置换后,第40位又回到了第1位的位置。 

2.3 DES的F函数

DES的轮函数F由四个部分组成:扩展置换(E盒)、密钥加非线性代换(S盒)、线性置换(P盒)。

1.扩展置换

        扩展置换又称E盒,它将 32 位输入扩展为 48 位输出。其扩展方法为:将 48 位输出按8行6 列的次序排列,排列时,将输入位序号按 3212··. 31 的次序依次排列,但上一行的后两位依次在下一行的起始位置得到重用,如第一行的最后两位的 4 5 同时出现在第二行的头两位(最后一行的下一行是第一行)。


       由于这个置换改变了位的次序,重复了某些位,故称为扩展置换。E 盒产生与子密钥相同长度的数据使得能进行异或运算,同时,扩展后的数据在 S盒的作用下能进行压缩,实现了非线性变换。但是,E盒在 DES算法上的目的不仅如此,由于 E盒输入的 1位可能影响 2个S盒的输人,所以输出对输人的依赖性将传播更快,从而快速实现雪崩效应。

2.密钥加

       密钥加层扩散简单,E扩展输出的48位数据与48位子密钥进行逐位异或运算,输出48位数据。

3.代换盒

       代换盒又称作 S盒,其功能是进行非线性代换。S盒是 DES 中唯一的非线性部分,经过S
盒代换之后,E 盒扩展生成的 48 位数据又重新被压缩成 32 位数据。DES的S盒是一个查表运算,8个 S 盒分别对应8 个非线性的代换表,每个 S 盒的输入均为6位,输出为4位。在查表前,将输入的 48 位数据分成8组,每组 6位,然后分别进人8个S盒进行运算。

       S盒的具体查表方法如下:假设 S 盒的6 位输人为 b1b2b3b4b5b6,则将b1和b6位组合,形成 1个两位数,这两位数可以转换成十进制的 0~3 的某个数,它对应表的行号,其余4位b2b3b4和b5,构成了1个 4位数,可转化为0~15 的某个数,对应表的列号,这样,通过这个6位输人确定的行号和列号所对应位置的值作为输出。例如,对于输入 110011,则行号是11(第3 行),而列是1001(第9列),若查找 S表,第 3行、第 9 列所对应的数是14,因此输应是1110。

S 盒的设计有如下的特点:

  1.  具有良好的非线性,即输出的每一个比特与全部输入比特有关;
  2. 每一行包括所有 16 种 4 位二进制;
  3. 两个输人相差 1比特时,输出至少相差 2 比特;
  4. 如果两个输人刚好在中间 2 个比特上不同,则输出至少有 2 个比特不同;
  5. 如果两个输人前 2 位不同而最后 2 位相同,则输出一定不同;
  6. 相差6比特的输人共有 32 对,在这 32 对中有不超过8 对的输出相同。

S盒的输出结果是 8个4 位分组,它们重新合并在一起形成了一个 32 位的分组。这个分组将输人到 P盒中进行置换。 

4.置换运算(P盒)

置换运算只是进行简单位置换,而不进行扩展盒压缩。

P 盒的设计满足如下条件:

  1. 每个S盒的4 位输出影响下一轮 6个不同的 S盒,但是没有 2位影响同一 S盒;
  2. 在第i轮 S盒的4位输出中,2位将影响i+1轮中间位,其余 2位将影响两端位;
  3. 如果一个S盒的 4 位输出影响另一个 S盒的中间的1位,则后一个的输出位不会影响前面一个 S 盒的中间位。

2.4 三重DES

多重DES就是使用多个不同的DES密钥利用DES算法对明文进行多次加密。使用多重DES可以增加密钥量,从而大大提高抵抗对密钥的穷举搜索攻击能力。

二重DES是多重DES的最简单形式。由于使用了两个DES密钥,二重DES的密钥长度为112位,其密钥量能够抵御目前的穷举攻击,但是不能抵抗中途相遇攻击,其攻击原理如下:

二重DES的加解密算法简化表示如下:

加密算法:C=E_{K_2}(E_{K_1}(P))

解密算法:P=D_{K_1}(D_{K_2}(C))

中间值X:X=E_{K_1}(P)=D_{K_2}(C)

       对于给定的明密文对(P,C),可采取如下攻击步骤:首先,将 P 按所有可能的密钥 K1加密,得到的加密结果排序放在表 T内;然后将 C 用所有可能的密 K2解密,每解密一次就将解密结果与 T中的值比较。如果有相等者,就用刚才测试的两个密对 P 加密,若结果为C则认定这两个密钥是正确的密钥K1和 K2。

       因此,已知明文攻击可以成功攻击密钥长度为112 位的二重 DES,其计算量级为 2^{56},与攻击 DES 所需的计算复杂度 2^{55}相当。换句话说,利用中途相攻击搜索,二重 DES 的钥与单 DES 的密的复杂度基本上在同一数量级,因而,二重 DES 并不能从根本上提高其安全性。

为了抵抗中途相遇攻击,可以使用三重 DES。三重 DES有 4 种模式:

  1. DES-EEE3 模式;在该模式中共使用3 个不同密顺序使用3次 DES 加密算法
  2. DES-EDE3 模式:在该模式中共使用 3 个不同密,依次用加密一解密一加密
  3. DES-EEE2 模式:在该模式中共使用 2个不同的密钥,顺序使用 3 次 DES 加密算法其中第一次和第三次加密使用的密钥相同。
  4. DES-EDE2 模式:在该模式中共使用2 个不同的密,依次使用加密一解密一加密法,其中加密算法使用的密钥相同。

 三重 DES 的优点如下:

  1. 密钥长度增加到 112 位或168位,可以有效克服DES 面临的穷举攻击
  2.  相对于 DES,增强了抗差分分析和线性分析的能力。
  3. 由于 DES 的软硬件产品已经在世界上大规模使用,升级到三重 DES 比更换新的算法的成本小得多。
  4. DES 比任何其他加密算法受到的分析时间要长得多,但是仍然没有发现比穷举攻击更有效的基于算法本身的密码分析攻击方法;相应地,三重 DES 对密码分析攻击有很强的免疫力。

由于是 DES 的改进版本,三重 DES 也具有许多先天不足:

  1. 三重 DES 的处理速度较慢,尤其是软件实现。这是因为 DES 最初的设计是基于硬件实现的,使用软件实现本身就偏慢,而三重 DES 使用了3 次 DES运算,故实现速度更慢。
  2. 虽然密钥的长度增加了,不过明文分组的长度没有变化,仍为 64 位,就效率和安全性而言,与密钥的增长不相匹配。因此,三重 DES 只是在 DES变得不安全的情况下的一种临时解决方案,根本的解决办法是开发能够适应当今计算能力的新算法。 

3.AES算法

(未完待续) 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值