NESSIE是欧洲在本世纪初的一项为期三年的密码标准评选计划,无数的分组密码、流密码、公钥密码、杂凑函数等算法纷纷入选,规模堪比AES算法征集。今天我们要了解的就是入选NESSIE计划的分组密码算法——MISTY1加密算法。

MISTY1算法简介

MISTY1算法是由日本学者M.Matsui设计的一个分组密码算法,它是第一个基于抵抗差分密码分析和线性密码分析的可证安全性理论而设计的实用分组密码。MISTY1算法被NESSIE选定为过渡型的建议分组密码,同时也被国际组织在ISO和IEC列为分组密码标准之一。

MISTY1加密算法

MISTY1算法的加密原理

MISTY1算法的分组长度是64比特,密钥长度是128比特,轮数是可变的,但必须是4的倍数,一般使用的是八轮MISTY 1算法。它有下面三个特点:

  1. 它是第一个基于抵抗差分密码分析和线性密码分析的可证安全性理论而设计的实用分组密码算法;
  2. 使用了相关却有别于Feistel结构的一种结构,从而在保持同等安全强度的条件下增大算法运行的并行性;
  3. MISTY1算法使用规模不同的S盒--7×7的S盒S7和9×9的S盒S9,与8×8的S盒相比,所选择的S盒具有较高的安全系数。

MISTY1加密算法

MISTY1算法的加密过程

以8轮MISTY1算法为例,64比特的明文P64,被拆分成等长的L0和R0两部分,即P64=L0||R0,加密过程如下:

(1)对于奇数轮i(i=1,3,5,7),执行:

Ri=FLi(Li-1,KLi),Li=FLi+1(Ri-1,KLi+1)⊕F0(Ri,KOi,KIi

(2)对于偶数轮I(i=2,4,6,8),执行:

Ri=Li-1,Li=Ri-1⊕F0(Ri,KOi,KIi

(3)然后执行:

R9=FL9(L8,KL9),L9=FL10(R8,KL10

(4)最后输出64比特密文:

C64=L9||R9

MISTY1加密算法

MISTY1算法的解密过程

MISTY1算法解密过程和加密过程类似,它是加密过程的逆运算,差别仅限于每轮子密钥的使用,解密子密钥可以由加密子密钥计算得到。

MISTY1算法的应用

MISTY1算法广泛适用于电子政务等部门,此外,MISTY1算法在许多产品的安全算法中得到广泛的应用,如Ukey等。而用于3GPP移动通信的保密算法f8和完整性检验算法f9中的密码算法KASUMI算法,也是基于MISTY1算法设计的。因此,对MISTY1算法安全性分析具有重要的理论意义和现实意义。

免责声明:素材源于网络,如有侵权,请联系删稿。