密码算法应用实践
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.12 MISTY算法

MISTY是日本Mitsubishi电气公司的Mitsuru Matsui于1997年提出的一个分组密码,它采用递归结构,整个结构分成了三个等级,但加密算法的主框架仍采用平衡Feistel结构。MISTY加密算法的分组长度为64比特,密钥长度为128比特,迭代层数是可变的,但要求必须是4的整数倍。MISTY加密算法采用能有效抵御差分攻击和线性攻击的理论,具有在各种硬件平台(如ATM网络)和软件环境(如IC卡)中高速运行的能力,是第一个被证明能有效抵御差分攻击和线性攻击的实用分组密码。

MISTY加密算法的递归结构如下:第一级是n层的主框架,每一层包含加乱(如按位异或操作⊕、按位或操作∪、按位与操作∩)、左右两边异或,以及层函数FO变换。第一级的层函数FO是一个由加乱(⊕)、左右两边异或和子函数FI变换构成的三层迭代过程,这个过程就是第二级。第二级的层函数FI又是一个由加乱(⊕)、左右两边扩展和压缩后异或,以及表 S9S7代替构成的,这个过程是第三级。从第一级到第三级,虽然结构逐渐简单,但运算次数比较繁复,每层要加乱9次(1次∪运算、1次∩运算、7次⊕运算),代替9次(6次S9代替、3次S7代替),左右两半进行16次⊕运算,但是这种递归结构能通过对简单函数的分析非常容易地估计出算法的安全程度。

MISTY加密算法有MISTY1加密算法和MISTY2加密算法两种,它们具有非常相似的结构。对于相同层数的MISTY1加密算法和MISTY2加密算法,如果不考虑并行运算,则二者在总的算法复杂度上是完全相同的;如果考虑并行计算,则二者的运行时间就有差异,因为MISTY1加密算法能同时执行2个FI函数,而MISTY2加密算法能同时执行4个FI函数。

MISTY1加密算法和MISTY2加密算法的结构如图1.12.1所示。

图1.12.1(a)和图1.12.1(b)分别给出了MISTY1加密算法和MISTY2加密算法的结构,在递归结构中的第一级,64比特的输入被均分成32比特的左右两个部分,经过异或运算,以及层函数FOi(1≤in)和FLi(1≤in+2)转换成64比特密文。FOi使用64比特的子密钥KOi和48比特的子密钥KIi, FLi使用32比特的子密钥KLi

图1.12.1 MISTY1加密算法和MISTY2加密算法的结构

图1.12.2(a)是层函数FOi的结构,即递归结构中的第二级。32比特的输入被均分成16比特的左右两部分,经过⊕运算,以及层函数FIij(1≤j≤3)转换成32比特的输出。图中的KOij(1≤j≤4)和KIij(1≤j≤3)分别是子密钥KOi和KIi的从左边数的第j个16比特。

图1.12.2(b)是层函数FIij的结构,即递归结构中的第三级,16比特的输入被分成9比特和7比特的左右两部分,经过⊕运算、一个长度为27S7代替和一个长度为29S9代替后转换成16比特的输出。在第一和第三个⊕运算中,右边的7比特在高位添加2个“0”扩展成9比特,在第二个⊕运算中,右边的9比特去掉高位的2比特后被截短成7比特。图1.12.2(b)中的KIij1和KIij2分别是子密钥KIij的左边7比特和右边9比特。

图1.12.2 MISTY1加密算法和MISTY2加密算法层函数的结构

图1.12.3是层函数FLi的结构。32比特输入被均分成16比特的左右两部分,经过⊕操作、与操作(∩)、或操作(∪)后变成32比特的输出。KLij(1≤j≤2)是KLi从左边数第j个16比特。

图1.12.3 层函数FLi结构

MISTY的子密钥生成过程利用了前面介绍的层函数FI,记Ki为输入密钥K的从左边数的第i个16比特,分别以Ki作为层函数FIi的输入,以Ki+1作为层函数FI的密钥,FIi的16比特输出记为Ri,其中1≤i≤8,则子密钥与KiRi的对应关系如下。

KOi1KOi2KOi3KOi4KIi1KIi2KIi3KLi1KLi2

KiKi+2Ki+7Ki+4Ri+5Ri+1Ri+3K(i+1)/2R(i+1)/2+6i为奇数)

Ri/2+2Ki/2+4i为偶数)

上面下角中的加法表示模8加。

MISTY加密算法中使用的S7S9如下:

S7

27   50   51   90   59   16   23   84   91   26  114  115  107   44  102   73
31   36   19  108   55   46   63   74   93   15   64   86   37   81   28    4
11   70   32   13  123   53   68   66   43   30   65   20   75  121   21  111
14   85    9   54  116   12  103   83   40   10  126   56    2    7   96   41
25   18  101   47   48   57    8  104   95  120   42   76  100   69  117   61
89   72    3   87  124   79   98   60   29   33   94   39  106  112   77   58
  1  109  110   99   24  119   35    5   38  118    0   49   45  122  127   97
80   34   17    6   71   22   82   78  113   62  105   67   52   92   88  125

S9

451  203  339  415  483  233  251   53  385  185  279  491  307    9   45  211
199  330   55  126  235  356  403  472  163  286   85   44   29  418  355  280
331  338  466   15   43   48  314  229  273  312  398   99  227  200  500   27
  1  157  248  416  365  499   28  326  125  209  130  490  387  301  244  414
467  221  482  296  480  236   89  145   17  303   38  220  176  396  271  503
231  364  182  249  216  337  257  332  259  184  340  299  430   23  113   12
  71   88  127  420  308  297  132  349  413  434  419   72  124   81  458   35
317  423  357   59   66  218  402  206  193  107  159  497  300  388  250  406
481  361  381   49  384  266  148  474  390  318  284   96  373  463  103  281
101  104  153  336    8    7  380  183   36   25  222  295  219  228  425   82
265  144  412  449   40  435  309  362  374  223  485  392  197  366  478  433
195  479   54  238  494  240  147   73  154  438  105  129  293   11   94  180
329  455  372   62  315  439  142  454  174   16  149  495   78  242  509  133
253  246  160  367  131  138  342  155  316  263  359  152  464  489    3  510
189  290  137  210  399   18   51  106  322  237  368  283  226  335  344  305
327   93  275  461  121  353  421  377  158  436  204   34  306   26  232    4
391  493  407   57  447  471   39  395  198  156  208  334  108   52  498  110
202   37  186  401  254   19  262   47  429  370  475  192  267  470  245  492
269  118  276  427  117  268  484  345   84  287   75  196  446  247   41  164
  14  496  119   77  378  134  139  179  369  191  270  260  151  347  352  360
215  187  102  462  252  146  453  111   22   74  161  313  175  241  400   10
426  323  379   86  397  358  212  507  333  404  410  135  504  291  167  440
321   60  505  320   42  341  282  417  408  213  294  431   97  302  343  476
114  394  170  150  277  239   69  123  141  325   83   95  376  178   46   32
469   63  457  487  428   68   56   20  177  363  171  181   90  386  456  468
  24  375  100  207  109  256  409  304  346    5  288  443  445  224   79  214
319  452  298   21    6  255  411  166   67  136   80  351  488  289  115  382
188  194  201  371  393  501  116  460  486  424  405   31   65   13  442   50
  61  465  128  168   87  441  354  328  217  261   98  122   33  511  274  264
448  169  285  432  422  205  243   92  258   91  473  324  502  173  165   58
459  310  383   70  225   30  477  230  311  506  389  140  143   64  437  190
120    0  172  272  350  292    2  444  162  234  112  508  278  348   76  450